0

私がやりたいことは、私が開始できるサービスです。サービスを開始すると、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[]) 行: 利用不可 [ネイティブメソッド]

これの原因は何ですか?

4

1 に答える 1