Главная » Разработка для Android » Приложение Where Am I?

0

Данный пример1 — приложение Where Am I? — имеет новую Активность, ко- торая ищет текущее местоположение устройства с помощью LocationProvider, использующего данные GPS. Далее в этой главе вы улучшите приведенный пример, когда изучите новые географические возможности.

ПРИМЕЧАНИЕ

Чтобы пример работал, нужно включить LocationProvider типа GPS_ PROVIDER, как это показано ранее, или запустить его на устройстве, которое поддерживает GPS (при условии, что он включен).

1. Создайте новый проект Where Am I? с Активностью WhereAmI. В этом примере используется источник GPS (неважно, виртуальный или реаль- ный), поэтому нужно отредактировать файл с манифестом,  включив

1     Все фрагменты  кода в этом примере — часть проекта Where  Am I? из главы 8, их можно загрузить с сайта Wrox.com.

в него тег <uses-permission>с именем ACCESS_FINE_LOCATION

и INTERNET.

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.paad.whereami">

<application android:icon="@drawable/icon">

<activity android:name=".WhereAmI" 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_FINE_LOCATION"

/>

</manifest>

2. Отредактируйте файл main.xml, содержащий ресурс разметки, вклю- чив атрибут  android:ID в тег элемента  TextView,  чтобы получить доступ к нему из Активности.

<?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:id="@+id/myLocationText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello"

/>

<uses permission android:name="android.permission.INTERNET

/>

</LinearLayout>

3. Переопределите метод onCreate, принадлежащий Активности WhereAmI, для того чтобы получить ссылку на LocationManager. Вызовите метод getLastKnownLocation, чтобы извлечь последнее зафиксированное значение  местоположения, и передайте  результат  в качестве  пара- метра для заглушки  updateWithNewLocation.

package com.paad.whereami;

import android.app.Activity;

import android.content.Context;

import android.location.Location;

import android.location.LocationManager;

import android.os.Bundle;

import android.widget.TextView;

public class WhereAmI extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);

LocationManager locationManager;

String context = Context.LOCATION_SERVICE;

locationManager = (LocationManager)getSystemService(context);

String provider = LocationManager.GPS_PROVIDER; Location location =

locationManager.getLastKnownLocation(provider);

updateWithNewLocation(location);

}

private void updateWithNewLocation(Location location) {}

}

4. Наполните кодом заглушку  updateWithNewLocation. Этот  метод должен выводить  полученное  местоположение с помощью элемента TextView, извлекая значения  широты и долготы.

private void updateWithNewLocation(Location location) { String latLongString;

TextView myLocationText;

myLocationText = (TextView)findViewById(R.id.myLocationText);

if (location != null) {

double lat = location.getLatitude(); double lng = location.getLongitude(); latLongString = "Lat:" + lat + "\nLong:" + lng;

} else {

latLongString = "No location found";

}

myLocationText.setText("Your Current Position is:\n" +

latLongString);

}

При запуске Активность должна выглядеть, как на рис. 8.2.

Рис. 8.2.

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

  • Комментарии