Androidで単一のGPS修正を取得したい場合は、実際には、LocationManager.GPS_PROVIDERで既知の関数requestSingleUpdate()を使用します。
今、私はGPSをオンにして関数getLocation()でこれを正確に行っていましたが、手動でGPSをオフにしてから再度オンにしない限り、デバイスは自動的に接続を確立しません。ネットワークプロバイダーのrequestSingleUpdate()は問題なく機能しますが、GPSの修正にこれが当てはまらない理由がわかりません。
これが私のソースコードの一部です:
getLocation()は、2分ごとにタイマー付きの別のオブジェクトによって実行されます。getLocation()では、GPSとネットワークがオンの場合、最初の1分間にGPS修正を取得しようとし、ネットワークの位置がない場合は取得します。 GPS修正が利用可能です。
public boolean getLocation() {
// DEBUG
Log.d("GPS Connection", "Entering getLocation()");
gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
networkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if(!gpsEnabled && !networkEnabled)
return false;
if(gpsEnabled && networkEnabled) {
// DEBUG
Log.d("GPS Connection", "Request GPS Data");
locationManager.requestSingleUpdate(LocationManager.GPS_PROVIDER, gpsLocationListener, Looper.getMainLooper());
gpsGetLocationTimeout = new Timer();
gpsGetLocationTimeout.schedule(new GetNetworkLocation(), GPS_MAX_CONNECTION_TIME_MS);
}
...