0

サービスに次のコードがあります。

    LocationManager locationManager = 
         (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    String provider = 
          locationManager.getProvider(LocationManager.GPS_PROVIDER).getName();
    Location location = locationManager.getLastKnownLocation(provider);
    while(true)
     {
       if(...)//every 5 seconds it gets into
         {
                ....//control if the location is not null
            lat = location.getLatitude();
            lon = location.getLongitude();
            alt = location.getAltitude();
            Log.i(TAG, "Latitude: "+lat+"\nLongitude: "+lon+"\nAltitude: "+alt);

         }
        else {
            Log.i(TAG, "Error!");
            }
    }

このコードは、私のエミュレーター (GPS が に挿入されているLog) では機能しますが、私のモバイル デバイスでは、このコードはelseブランチに到達します。誰かがどこに問題があるか教えてもらえますか? コードまたはモバイル デバイスで? 前もって感謝します。

PS: GPS はオンになっており、別のアプリでは動作します。

4

1 に答える 1

1

getLastKnownLocation()GPSプロバイダーから後続の位置を取得しません。(名前が示すように)コードによって要求された最後の既知の場所を返します。null私はあなたがあなたのコードに示されていない状態にない場所をチェックすると仮定します。最後の既知の場所が古すぎる、または他の手段で信頼できないとデバイスが「判断」した場合、その場所はnullになります。位置情報の更新を要求し、位置情報を繰り返し取得するために位置情報リスナーを提供する必要があります。

利用可能なチュートリアルがたくさんあります。これが1つです。そのうちの。

于 2013-03-01T13:33:07.737 に答える