この記事の例では、Android が GPS を使用してユーザーの地理的位置を取得し、位置の変化を監視する方法について説明します。参考までに皆さんと共有してください。詳細は次のとおりです。
LocationActivity.java
/* LocationActivity.java * @author octobershiner * 2011 7 22 * SE.HIT * 一个演示定位用户的位置并且监听位置变化的代码 * */ package uni.location; import android.app.Activity; import android.content.Context; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.os.Vibrator; import android.util.Log; import android.widget.TextView; public class LocationActivity extends Activity { /** Called when the activity is first created. */ //创建lcoationManager对象 private LocationManager manager; private static final String TAG = "LOCATION DEMO"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //获取系统的服务, manager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); Location location = manager.getLastKnownLocation(LocationManager.GPS_PROVIDER); //第一次获得设备的位置 updateLocation(location); //重要函数,监听数据测试 manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 6000, 10, locationListener); } /*此处更新一下,当activity不处于活动状态时取消GPS的监听*/ public void onPause(){ super.onPause(); locationManager.removeListener(locationListener); } //创建一个事件监听器 private final LocationListener locationListener = new LocationListener() { public void onLocationChanged(Location location) { updateLocation(location); } public void onProviderDisabled(String provider){ updateLocation(null); Log.i(TAG, "Provider now is disabled.."); } public void onProviderEnabled(String provider){ Log.i(TAG, "Provider now is enabled.."); } public void onStatusChanged(String provider, int status,Bundle extras){ } }; //获取用户位置的函数,利用Log显示 private void updateLocation(Location location) { String latLng; if (location != null) { double lat = location.getLatitude(); double lng = location.getLongitude(); latLng = "Latitude:" + lat + " Longitude:" + lng; } else { latLng = "Can't access your location"; } Log.i(TAG, "The location has changed.."); Log.i(TAG, "Your Location:" +latLng); } }
Android システムのセキュリティのため、サービスには認証メカニズムが使用されているため、アクティビティ ファイルを変更するだけでは十分ではありません。 manifest.xml ファイルを変更する必要があります
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="uni.location" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".LocationActivity" 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>
多くの友人が疑問を持っているかもしれません。つまり、Android 仮想マシン上の GPS 測位のデバッグ問題は、仮想マシンを起動してからデバイスを開くことでシミュレートできるということです。左側の列には、仮想マシン上のサービスが動的に表示されます。起動の場合、仮想マシンのロック解除インターフェイスを終了した後、単一マシンのデバイス列の下にあるエミュレータの行に移動します。下のエミュレータコントロールの下にある位置コントロールです。笑、経度と緯度が変更できることがわかりました。プログラムを実行し、設定した緯度と経度を使用して送信ボタンをクリックして、新しい地理的位置の受信をシミュレートします。
このデモでは、Log を使用してステータスを表示しました。詳しく知りたい場合は、Log の上手な使い方を学ぶことができます。 sundyzlh の解説ビデオをご覧ください。
LOGの使い方については、前回の記事「Androidプログラミング:ログに基づいたアクティビティライフサイクルインスタンスのデモを詳しく解説」を参照してください
最終的な効果は下図のようになります
と願っていますこの記事は、あらゆる人の Android プログラミング設計に役立ちます。
Android が GPS を使用してユーザーの地理的位置を取得し、位置の変化を監視する方法に関するその他の関連記事については、PHP 中国語 Web サイトに注目してください。