私がやりたいことは、私が開始できるサービスです。サービスを開始すると、GPS 位置情報の更新をリッスンする必要があります。だから私は次のサービスを実装しました:
public class TrackingService extends Service {
protected LocationManager locationManager;
protected PendingIntent locationReceiverPendingIntent;
protected Intent locationIntent;
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
locationIntent = new Intent(this, LocationReceiver.class);
locationReceiverPendingIntent = PendingIntent.getBroadcast(this, 0, locationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE); // FINE tries to use GPS
long minimumWaitBetweenLocationUpdatesInMilliSeconds = 15000;
float minimumLoctaionChangeInMeters = 50;
locationManager.requestLocationUpdates(minimumWaitBetweenLocationUpdatesInMilliSeconds, minimumLoctaionChangeInMeters, criteria, locationReceiverPendingIntent);
}
@Override
public void onDestroy() {
super.onDestroy();
locationManager.removeUpdates(locationReceiverPendingIntent);
}
}
次のような開始アクティビティでこのサービスを開始します。
@Override
protected void onResume() {
super.onResume();
Intent serviceIntent = new Intent(this, TrackingService.class);
this.startService(serviceIntent);
}
LocationReceiver は BroadcastReceiver です。次のコードの行で次の NullPointerExpection を取得しますlocationManager.requestLocationUpdates(minimumWaitBetweenLocationUpdatesInMilliSeconds, minimumLoctaionChangeInMeters, criteria, locationReceiverPendingIntent);
。
VM が監視情報を提供しない
スレッド [<1> メイン] (一時停止 (例外 RuntimeException))
ActivityThread.handleCreateService(ActivityThread$CreateServiceData) 行: 2539 ActivityThread.access$1600(ActivityThread, ActivityThread$CreateServiceData) 行: 141
ActivityThread$H.handleMessage (メッセージ) 行: 1316
ActivityThread$H(Handler).dispatchMessage(メッセージ) 行: 99 Looper.loop() 行: 137 ActivityThread.main(String[]) 行: 5041
Method.invokeNative(Object, Object[], Class , Class[], Class, int, boolean) 行: 利用不可 [ネイティブメソッド] Method.invoke(Object, Object...) 行: 511 ZygoteInit$MethodAndArgsCaller.run() 行: 793
ZygoteInit.main(String[]) 行: 560 NativeStart.main(String[]) 行: 利用不可 [ネイティブメソッド]
これの原因は何ですか?