Android 安卓GPS:“;“未找到位置”;

Android 安卓GPS:“;“未找到位置”;,android,gps,geolocation,Android,Gps,Geolocation,由于某些不清楚的原因,我没有获取任何位置,并且没有调用onLocationChanged() package com.example.gpsexample; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.os.Handler;

由于某些不清楚的原因,我没有获取任何位置,并且没有调用onLocationChanged()

package com.example.gpsexample;

import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.Menu;

public class GPS_Location extends Activity implements LocationListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Log.d("~~~","~~~ GPS_Location onCreate");
        LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
        locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);
        Location l1 = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        Location l2 = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
        Log.d("~~~","~~~ GPS_Location getLastKnownLocation ==> "+l1+" "+l2);
        r.run();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public void onLocationChanged(Location location) {
        Log.d("~~~","~~~ onLocationChanged "+location);

        int latitude = (int) (location.getLatitude());
        int longitude = (int) (location.getLongitude());

        Log.i("~~~", "### Latitude: " + latitude + ", Longitude: " + longitude+"\n\n\n###");
    }

    @Override
    public void onProviderDisabled(String provider) {
        Log.d("~~~","~~~ onProviderDisabled"+provider);
    }

    @Override
    public void onProviderEnabled(String provider) {
        Log.d("~~~","~~~ onProviderEnabled "+provider);
    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        Log.d("~~~","~~~ "+provider+" "+status+" "+extras);
    }

    final Handler handler = new Handler();
    Runnable r = new Runnable() {
        @Override
        public void run() {
            // TODO Auto-generated method stub
            LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
            Log.d("~~~","~~~ GPS_Location run");
            Location l = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
            Log.d("~~~","GPS enabled: "+locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER));
            Log.d("~~~","~~~ GPS_Location getLastKnownLocation ==> "+l);
            l = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
            Log.d("~~~","Network enabled: "+locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER));
            Log.d("~~~","~~~ Network_Location getLastKnownLocation ==> "+l);
            handler.postDelayed(this, 5000);
        }
    };
}
权限为:

<uses-permission
     android:name="android.permission.WRITE_EXTERNAL_STORAGE"
     />
<uses-permission
     android:name="android.permission.ACCESS_COARSE_LOCATION"
     />
<uses-permission
     android:name="android.permission.ACCESS_FINE_LOCATION"
     />
<uses-permission
    android:name="android.permission.READ_PHONE_STATE"
    />
<uses-permission
    android:name="android.permission.ACCESS_NETWORK_STATE"
    />
<uses-permission
    android:name="android.permission.INTERNET"
    />
当我更改位置设置时,确实会看到onProviderEnabled()调用

如何获取位置而不是空位置?

更新位置

locationManager.requestLocationUpdates(
                        LocationManager.NETWORK_PROVIDER,
                        MIN_TIME_BW_UPDATES,
                        MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
请更新您的代码

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000 * 60 * 1, 10, this);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000 * 60 * 1, 10, this)

设备上的位置服务是否已启用?是否确实已连接?是否尝试重新启动设备一次?启用位置服务:设置->位置和安全->在“我的位置”下->选择“使用无线并使用gps”。@GrIsHu--重新启动未成功help@blackbelt--我完全按照阿马尔比特的建议启用了它。但你说的“连接”是什么意思?我想你是在模拟器中做的,而不是在真实的环境中。我想你需要用户的lat lang来改变位置HTC One mini,一个真正的设备我还创建了许多应用程序来获取lat long please InTall应用程序并去任何地方查看Toast更改lat long可能在您的代码中没有问题genrate Toast for Location Change and go anywhere
locationManager.requestLocationUpdates(
                        LocationManager.NETWORK_PROVIDER,
                        MIN_TIME_BW_UPDATES,
                        MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000 * 60 * 1, 10, this);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000 * 60 * 1, 10, this)