0
私のアプリケーションでは、私は現在の場所を取得するために10秒のタイマーを設定していますlocationManager.requestLocationUpdates();が、問題助けて...以下は更新された場所を取得できませんでした
がサービスで書かれた私のコードです..私が更新された場所ではなく、それはアプリケーションが起動している同じ緯度と経度を与え得るcouldntのことであると提案が
public class DemoService extends Service{
LocationManager locationManager;
public Timer timer;
public static int i;
private String FILE_NAME = "location.txt";
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
super.onStart(intent, startId);
locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
Toast.makeText(getApplicationContext(), "onStart()....", Toast.LENGTH_SHORT).show();
timer = new Timer();
timer.schedule(new mainTask(), 0, 10*1000);
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
Toast.makeText(getApplicationContext(), "onCreate()....", Toast.LENGTH_SHORT).show();
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Toast.makeText(getApplicationContext(), "onDestroy()....", Toast.LENGTH_SHORT).show();
timer.cancel();
}
private class mainTask extends TimerTask
{
public void run()
{
toastHandler.sendEmptyMessage(0);
}
}
private final Handler toastHandler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
Toast.makeText(getApplicationContext(), "test "+(i), Toast.LENGTH_SHORT).show();
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, new MyLocationListerner());
}
};
public class MyLocationListerner implements LocationListener{
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
i++;
Toast.makeText(DemoService.this, "\nLat : "+location.getLatitude()+"\nLog : "+location.getLongitude(), Toast.LENGTH_SHORT).show();
saveToFile(location);
locationManager.removeUpdates(this);
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
Toast.makeText(DemoService.this,"Got onLocationChanged..",Toast.LENGTH_SHORT).show();
System.out.println("Got onStatusChanged");
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
Toast.makeText(DemoService.this,"Got onLocationChanged..",Toast.LENGTH_SHORT).show();
System.out.println("Got onProviderEnabled");
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
Toast.makeText(DemoService.this,"Got onLocationChanged..",Toast.LENGTH_SHORT).show();
System.out.println("Got onProviderDisabled");
}
の少ない消費でアラームマネージャの助けを借りて、現在位置を取得した場所によってCWAC Location pollerによって生じた効果を達成し、これを試してみてください。ただ、この行を追加します。 locationManager.requestLocationUpdates( LocationManager.G PS_PROVIDER、refreshInterval、50、locationListener); –
現在位置を高精度または低精度で取得する方法はいくつかありますが、ネットワークプロバイダを使用していますので、移動するビット幅が同じであることがわかります。 GPSをポーリングする必要があるかもしれません。この投稿をチェックしてくださいhttp://stackoverflow.com/a/6775456/28557 –
こんにちはmayurは動作していないとそれはGPSをオンにする必要があります。場所のネットワークプロバイダを取得することはできません... – NullPointerException