0

Android GPS のコツをつかみ、学校のプロジェクトでバッテリーがどのように影響されるかを確認するための小さなテスト プログラムを作成しています。最後に検出された既知の場所の緯度を出力して、デバイスに自分の場所を検出させたいだけです。ただし、場所は常に onResume() コールバックで null を返します。

どんな助けでも大歓迎です。

TextView Updates;
long start = -1;
long battStart = -1;
long stop = -1;
PowerManager.WakeLock wl;
LocationManager locationManager; 
LocationListener locationListener;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Updates = (TextView) findViewById(R.id.textView);
    Updates.append("\n onCreate()");

    batteryLevel();
    start = System.currentTimeMillis(); 

    locationManager = (LocationManager)getSystemService(LOCATION_SERVICE);
    locationListener = new LocationListener() {
        public void onLocationChanged(Location location) {
          // Called when a new location is found by the network location provider.
          Updates.append("\n Found a place! "+location.getLatitude()+","+location.getLongitude());
        }
        public void onStatusChanged(String provider, int status, Bundle extras) {}
        public void onProviderEnabled(String provider) {
            Updates.append("yes"+provider);
        }
        public void onProviderDisabled(String provider) {
            Updates.append("No"+provider);
        }
    }; 
}

protected void onStart() {
    super.onStart();
    Updates.append("\n onStart()");

    // Set up a wake lock 
    PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
    this.wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag2");
    this.wl.acquire();

    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
}


protected void onResume() {
    super.onResume();
    batteryLevel();
    Location loc = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    if (loc != null) {
        Updates.append(String.valueOf(loc.getLatitude()));
    } else {
        Updates.append("loc is null");
    }
}
4

3 に答える 3

2

私はそれを考え出した!

結局、私は外に出なければなりませんでした:)

于 2012-06-18T19:34:36.227 に答える
1

GPS が無効になっている場合、常に null が返されます。LocationManager.getLastKnownLocationについては、Android ドキュメントを参照してください。

于 2012-06-18T19:24:11.790 に答える
0

その場合は、LocationListenerを使用する必要があります。getLastKnownLocation()から場所を取得できない場合があるためです。

requestLocationUpdatesを呼び出すだけで、LocationListenerでコールバックを取得できます

于 2012-06-18T19:26:13.820 に答える