2011-07-05 9 views
0

ここにコードがあります。携帯電話の起動後にAndroidがGPSの場所を取得しましたが、サービスで取得しようとしていますが、場所がnullとして返されました。

nullの代わりにalwasysが返されることを確認するにはどうすればよいですか。

package com.test.location; 
import android.app.Service; 
import android.content.Context; 
import android.content.Intent; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.os.IBinder; 
import android.os.Looper; 
import android.util.Log; 
public class NotifyOnBoot extends Service { 
     Location location; 

     @Override 
     public IBinder onBind(Intent arg0) { 
     return null; 
     } 

     @Override 
     public void onCreate() { 
        super.onCreate(); 

        updateNotification(); 

        Thread th = new Thread(null, task, "myService"); 
        th.start(); 
     } 

     private Runnable task = new Runnable() { 
     public void run() { 

      if(location == null) 
      { 
       Log.d("location","No location"); 
      } 
      else 
       Log.d("location",location.toString()); 


      NotifyOnBoot.this.stopSelf(); 
     } 
    }; 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
    } 

    @Override 
    public int onStartCommand (Intent intent, int flags, int startId){ 
      return START_STICKY; 
    } 


    protected void updateNotification() 
    { 
     LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     LocationListener locationListener = new MyLocationlistener(); 
     lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener); 
     location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
    } 
    private class MyLocationlistener implements LocationListener{ 
     public void onLocationChanged(Location location){} 
     public void onProviderDisabled(String provider){} 
     public void onProviderEnabled(String provider){} 
     public void onStatusChanged(String provider, int status, Bundle extras){} 
    } 
} 

答えて

0

私はインターフェイスをコールバック作成し、場所を初めて開始した瞬間に戻って、その呼び出しを通知onLocationChangedを使用することをお勧めします。

LocationProvider locationProvider = LocationManager.NETWORK_PROVIDER; 
// Or use LocationManager.GPS_PROVIDER 

Location lastKnownLocation = locationManager.getLastKnownLocation(locationProvider); 

私はこれがあなたに役立つことを願っています。

+0

あなたは具体的にしてください:) –

+0

ハンドラを作成し、コールバックとしてそれを使用することができます。したがって、ハンドラが呼び出されたときには、単純にlong long座標を使用します。 –

+0

hmm、任意のコード例は大丈夫 –

関連する問題