現在のGPS位置を更新するバックグラウンドサービスを作成しようとしています。私はNullPointerException
ラインを取得していますLocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
HomeActivityがサービスを開始
startService(new Intent(getApplicationContext(), ForHire.class));
サービス(ForHire)はTimerTaskUpdatesを作成します
public class ForHire extends Service {
...
private Timer getUpdatesNow = new Timer();
private Updates updates = new Updates(getUpdatesNow);
@Override
public void onCreate() {
...
getUpdatesNow.schedule(updates, God.KM20TIME);
Log.v("Taxeeta", "Notification created");
}
private class Updates extends TimerTask implements LocationListener {
private Timer getUpdatesNow;
public Updates(Timer newGetUpdatesNow) {
super();
getUpdatesNow = newGetUpdatesNow;
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,
God.KM20TIME, God.KM20DISTANCE, (LocationListener) this);
}
public void run() {
...
//do some cleanup
}
@Override
public void onLocationChanged(Location location) {
Log.v("Taxeeta", "Location changed");
// do a update of the current location.
}
最初の問題は、そのNullPointerExceptionが発生することです。LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, God.KM20TIME, God.KM20DISTANCE, (LocationListener) this);
2番目の問題は、これらの2行をコメントアウトすると、onLocationChangedが呼び出されないことです。
私のマニフェスト
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<application ...>
...
<uses-library android:name="com.google.android.maps" />
</application>
ここで何が欠けていますか?
編集:Values of KM20TIME = 5000
(5秒)、およびKM20DISTANCE = 1
(1メートル)。以下の修正とは別に、私は家を出てGPSを有効にし、バルコニーの隅から隅まで歩いた。5秒ごとに1つのコーナーから別のコーナーに移動すると、GPS(LSB)が変化することに気付きました。