いつもお世話になっています。
Android で GPS 検索を行うシステムの勉強をしています。
LocationManager の requestLocationUpdates を行い現在の位置を検索しています。
これを5秒検索して見つからなければremoveUpdatesを呼んで終了としたいです。
new Handler()).postDelayed(new Runnable(){...}); を使ってみましたが上手くいきません。
ご教授お願いします。
環境
- Windows7 32bit Pro
- Android Studio 2.1.1
- APIレベル 19
java
1public class MainActivity extends Activity { 2 private static final String TAG = "GPS"; 3 private Button btn; 4 private LocationManager mLocationManager; 5 6 @Override 7 protected void onCreate(Bundle savedInstanceState) { 8 super.onCreate(savedInstanceState); 9 setContentView(R.layout.activity_main); 10 11 // ボタン 12 btn =(Button)findViewById(R.id.gps_btn); 13 btn.setOnClickListener(new OnClickListener(){ 14 15 @Override 16 public void onClick(View v) { 17 onBtnGpsClicked(v); 18 } 19 }); 20 21 // GPS 22 mLocationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 23 boolean gpsFlg = mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); 24 Log.d(TAG, "GPS Enabled" + (gpsFlg?"OK":"NG") ); 25 } 26 27 // GPSボタン 28 public void onBtnGpsClicked(View view){ 29 mLocationManager.requestLocationUpdates( 30 LocationManager.GPS_PROVIDER, 31 3000, // 通知のための最小時間間隔(ミリ秒) 32 10, // 通知のための最小距離間隔(メートル) 33 new LocationListener(){ 34 35 @Override 36 public void onLocationChanged(Location location) { 37 String msg = "Lat" + location.getLatitude() 38 + "\nLng" + location.getLongitude(); 39 Log.d(TAG, msg); 40 mLocationManager.removeUpdates(this); 41 } 42 43 @Override 44 public void onProviderDisabled(String provider) { 45 Log.d(TAG, "onProviderDisabled"); 46 } 47 @Override 48 public void onProviderEnabled(String provider) { 49 Log.d(TAG, "onProviderEnabled"); 50 } 51 @Override 52 public void onStatusChanged(String provider, int status, 53 Bundle extras) { 54 Log.d(TAG, "onStatusChanged"); 55 } 56 57 }); 58 } 59 60 61} 62

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/22 15:43