4

固定位置に問題があります。私は使用しますgetLastKnownLocation(LocationManager.NETWORK_PROVIDER); が、常に null を返しますAndroidManifest.xml

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

[設定] --> [場所とセキュリティ] --> [ネットワーク経由の場所] で有効にします。

TextView locationShow = (TextView) this.findViewById(R.id.location);
    double latitude = 0.0, longitude = 0.0;
    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
        Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        if (location != null) {
            latitude = location.getLatitude();
            longitude = location.getLongitude();
        }
    }
    else {
        LocationListener locationListener = new LocationListener() {
            public void onLocationChanged(Location location) {
                if (location != null) {
                    Log.i("SuperMap", "Location changed : Lat: " + location.getLatitude() + " Lng: " +
                        location.getLongitude());
                }
            }

            public void onProviderDisabled(String provider) {
            }

            public void onProviderEnabled(String provider) {
            }

            public void onStatusChanged(String provider, int status, Bundle extras) {
            }
        };
        locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0,
                                               locationListener);
        Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
        if (location != null) {
            latitude = location.getLatitude();
            longitude = location.getLongitude();
        }
        locationShow.setText("经度:" + latitude + "纬度:" + longitude);

他のアプリが場所を正しく表示できることがわかったので、コードに問題がある可能性があります。

4

1 に答える 1

4

getLastKnownLocation()最後にキャッシュされた有効な場所を示します。

ネットワーク プロバイダーからキャッシュされた場所を取得しようとしています。有効な修正が得られるまで、数分間待つ必要があります。Network Provider のキャッシュが空であるため、明らかにnullそこに到達しています。

于 2011-07-28T06:19:44.617 に答える