Работа с GPS на Android

Создадим новый проект Android в Eclipse. Дадим ему название, например: GPSTest, а активности — GPSTestAction.
Откроем GPSTestAction.java и добавим строчки:

import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;


В определении класса добавим после extends Activity — implements LocationListener. Должно получиться:

public class GUIDETestAction extends Activity implements LocationListener{
    /** Called when the activity is first created. */


В onCreate добавим следующие строки
myManager = (LocationManager) getSystemService(LOCATION_SERVICE);
myManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
предварительно объявив переменную
private LocationManager myManager;


Создадим событие реагирования на изменения координат:

@Override
	public void onLocationChanged(Location location) {
		// TODO Auto-generated method stub
		TextView tx = (TextView) findViewById(R.id.tv1);
		tx.setText("Широта: "	+ location.getLatitude()  + "\nДолгота: " + location.getLongitude() + 
				   "\nСкорость: " + location.getSpeed() + "\n");
	}


Кинем на форму TextView для вывода координат нашего местоположения. Добавим свойство для этого TextView
android:id="@+id/tv1" 
в main.xml.

Добавим две строки
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
	<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
в AndroidManifest.xml перед
</manifest>
.

Все можно запускать приложение.

Чтобы проверить получаем ли мы координаты используя для тестирования эмулятор надо сделать следующее:

1. Запустили приложение на эмуляторе;
2. Запустить программу DDMS. Она лежит где-то «C:\Program Files\Android\android-sdk\tools\ddms.bat»;
3. После запуска программы найти вкладку Emulator Control (вверху справа);
3. Найти поля для ввода координат широты и долготы, ввести координаты, нажать кнопку Send.
4. Проверить получила ли наша программа координаты.

Полный текст GPSTestAction.java:

package ru.nansoft;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;

public class GPSTestAction extends Activity implements LocationListener{
    /** Called when the activity is first created. */
	
	private LocationManager myManager;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        myManager = (LocationManager) getSystemService(LOCATION_SERVICE);
        myManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
    }

	@Override
	public void onLocationChanged(Location location) {
		// TODO Auto-generated method stub
		TextView tx = (TextView) findViewById(R.id.tv1);
		tx.setText("Широта: "	+ location.getLatitude()  + "\nДолгота: " + location.getLongitude() + 
				   "\nСкорость: " + location.getSpeed() + "\n");
	}

	@Override
	public void onProviderDisabled(String provider) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void onProviderEnabled(String provider) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void onStatusChanged(String provider, int status, Bundle extras) {
		// TODO Auto-generated method stub
		
	}
}


Полный текст main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
 <TextView android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    android:id="@+id/tv"
    />
 <TextView android:text="   " android:id="@+id/tv1" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
</LinearLayout>


Полный текст AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="ru.nansoft"
      android:versionCode="1"
      android:versionName="1.0">


    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".GUIDETestAction"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
	<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest>

Комментарии (2)

RSS свернуть / развернуть
+
+1
Спасибо за статью! Помогла.
Еще неплохой ресурс в тему — www.enterra.ru/blog/%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0-%D1%81-gps-%D0%BD%D0%B0-android/
avatar

warcraft10

  • 19 сентября 2011, 18:56
+
0
Всегда рад видеть новых пользователей на сайте. Заходите еще, задавайте вопросы, публикуйте свои материалы. Проект только развивается. Удачи Вам в Ваших делах!
avatar

admin

  • 19 сентября 2011, 19:08

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.