2016-09-06 5 views
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 

私はすでにそれが特定のモデルといくつかのいたずらかもしれない考え、複数のデバイスを試してみましたが、彼らすべて同じ問題があるので、私のコードは正しくないようです。衛星を手に入れるためには何が必要ですか?

答えて

2

GPSを開始していないためです。 getLastKnownLocationはGPSをオンにしません。キャッシングされた値があればそれを返します。これを行うには、LocationUpdatesをリクエストする必要があります。

+0

私はアクティビティのonResumeメソッドでrequestLocationUpdates()を呼び出していますが、私が投稿したコードはonLocationChangedメソッドの内側にあります。 – SVM

+0

あなたはonLocationChangedでgetLastKnownLocationを呼び出すことはありますか?最後の場所 –

+0

また、getGpsStatusドキュメントから: "GPSエンジンの現在のステータスに関する情報を取得します。これはonGpsStatusChanged(int)コールバックから呼び出され、データがアトミックにコピーされることを確実にする必要があります。 GpsStatusオブジェクトを渡して最新のステータス情報を設定するか、nullを渡して新しいGpsStatusオブジェクトを作成してください。 –

関連する問題