0
GPSの修正で使用されている衛星を取得しようとしていますが、GpsStatus.getSatellites()メソッドは空のイテレータを返します。経度/高度は正常です。Android GpsStatusは常にゼロの衛星を持っています
LocationManager locationManager = (LocationManager) this.getSystemService(LOCATION_SERVICE);
Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location != null) {
//get location coordinates
mLatitude = location.getLatitude();
mLongitude = location.getLongitude();
double altitude = location.getAltitude();
Log.d("test2", "lat : " + mLatitude);
Log.d("test2", "long : " + mLongitude);
//get satellite data
GpsStatus gpsStatus = locationManager.getGpsStatus(null);
int satellites = 0;
int satellitesInFix = 0;
int timetofix = gpsStatus.getTimeToFirstFix();
Log.d("test2", "Time to first fix = " + timetofix);
for (GpsSatellite sat : gpsStatus.getSatellites()) {
if(sat.usedInFix()) {
satellitesInFix++;
}
satellites++;
}
Log.d("test2", "Satellites: " + satellitesInFix + "/" + satellites);
}
私はデバッグログに取得するすべては何度も繰り返し、以下の通りである:
09-06 18:42:48.093 6842-6842/com.android.example.gpstest D/test2: lat : 39.509401143731274
09-06 18:42:48.093 6842-6842/com.android.example.gpstest D/test2: long : -9.064780960816815
09-06 18:42:48.094 6842-6842/com.android.example.gpstest D/test2: Time to first fix = 0
09-06 18:42:48.095 6842-6842/com.android.example.gpstest D/test2: Satellites: 0/0
私はすでにそれが特定のモデルといくつかのいたずらかもしれない考え、複数のデバイスを試してみましたが、彼らすべて同じ問題があるので、私のコードは正しくないようです。衛星を手に入れるためには何が必要ですか?
私はアクティビティのonResumeメソッドでrequestLocationUpdates()を呼び出していますが、私が投稿したコードはonLocationChangedメソッドの内側にあります。 – SVM
あなたはonLocationChangedでgetLastKnownLocationを呼び出すことはありますか?最後の場所 –
また、getGpsStatusドキュメントから: "GPSエンジンの現在のステータスに関する情報を取得します。これはonGpsStatusChanged(int)コールバックから呼び出され、データがアトミックにコピーされることを確実にする必要があります。 GpsStatusオブジェクトを渡して最新のステータス情報を設定するか、nullを渡して新しいGpsStatusオブジェクトを作成してください。 –