0

Androidデバイス(Samsung Galaxy Note N7000)でLastKnownLocationsを取得できません。これは、常にnullであり、タワーはネットワークとして検出されるため、問題ありません。誰かが私の場所を取得する方法を知っていますか?

    d = getResources().getDrawable(R.drawable.songs_gray);

    //Placing pinpoint at location
    lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    Criteria crit = new Criteria();

    towers = lm.getBestProvider(crit, false);

    Toast.makeText(LocationActivity.this, "Towers: " + towers, Toast.LENGTH_SHORT).show();

    Location location = lm.getLastKnownLocation(towers);

    Toast.makeText(LocationActivity.this, "Location: " + location, Toast.LENGTH_SHORT).show();

    if(location !=null){
        lat = (int) (location.getLatitude()*1E6);
        longi = (int) (location.getLongitude()*1E6);
        GeoPoint ourLocation = new GeoPoint(lat, longi);
        OverlayItem overlayItem = new OverlayItem(ourLocation, "What's up", "2nd String");
        CustomPinpoint custom = new CustomPinpoint(d, LocationActivity.this);
        custom.insertPinPoint(overlayItem);
        overlayList.add(custom);    
    }else{
        Toast.makeText(LocationActivity.this, "Couldn't get provider", Toast.LENGTH_SHORT).show();
    }

マニフェスト

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
4

3 に答える 3

1

を使用すると、指定されたロケーションプロバイダーがアクティブな場合にgetLastKnownLocation()のみオブジェクトを取得できます。Location

ドキュメントには次のように書かれています。

指定されたプロバイダーから取得した最後の既知のロケーションフィックスからのデータを示すロケーションを返します。これは、プロバイダーを起動せずに実行できます。たとえば、デバイスの電源がオフになって別の場所に移動した場合、この場所は古くなっている可能性があることに注意してください。

プロバイダーが現在無効になっている場合は、nullが返されます。

最後に検出された位置ではなく現在の位置を検出するには、ロケーションプロバイダーを有効にする必要があります。このチュートリアルは、GPSやネットワークなどのロケーションプロバイダーと連携する方法を理解するのに役立ちます。

于 2012-07-28T16:54:21.377 に答える
0

最後の既知の場所は、電話をかける前に別のアプリによって場所が決定されている場合にのみ利用できます。地図やその他のアプリを起動して、場所をロックします。次に、アプリを実行します。

アプリ内の場所が本当に必要な場合は、他の方法にフォールバックする必要があります。これは、最後に既知の場所があることに依存できないためです。

補足として、ACCESS_MOCK_LOCATIONここでは必要ありません。ドキュメントから、

アプリケーションがテスト用の模擬ロケーションプロバイダーを作成できるようにします

于 2012-07-28T16:52:53.117 に答える
0

私の問題を気にしないでください!私の電話でGoogleの位置情報サービスを利用する必要があります

于 2012-07-28T16:57:02.350 に答える