0

在我的应用程序中,我正在使用网络提供商获取当前位置。在这方面我已经开发了一些代码,你可以在下面看到它。

public class MyGPS extends Service implements LocationListener
{
    protected LocationManager locationManager;
    private final Context mContext;

    public MyGPS (Context context) {
        this.mContext = context;

        getLocation();
    }

    public Location getLocation() {
        try {

            locationManager = (LocationManager) mContext.getSystemService(LOCATION_SERVICE);

            // Check network status
            if(locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
                Log.e("Location ", "Network enabled");

                locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,1000,1, this);
                if (locationManager != null) 
                {
                    Log.e("Location ", "Location manager is not null");
                    Location networkLocation= locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                    if (networkLocation != null) {
                        return networkLocation;
                    }
                    else
                    {
                        Log.e("Location ", "networkLocation object is null");
                    }
                }
            }
        }
        catch(Exception e) {
            Log.e("Location ", "Problum in getLocation()");
        }
        return null;

    }

    @Override
    public void onLocationChanged(Location arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onProviderDisabled(String arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onProviderEnabled(String arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
        // TODO Auto-generated method stub

    }

    @Override
    public IBinder onBind(Intent arg0) {
        // TODO Auto-generated method stub
        return null;
    }

}

通过运行上面的代码,它会显示调试消息 Log.e("Location ", "networkLocation object is null");

现在我的问题是为什么networkLocation对象为空。请在这方面帮助我。提前致谢。

4

3 回答 3

0

当设备获得位置时,它将调用onLocationChanged侦听器。在上述情况下,您试图获取lastKnownLocation. 如果没有lastKnownLocation,它将返回为null.

所以请从onLocationChanged监听器中保存位置。

于 2013-11-12T09:31:57.760 回答
0

公共位置 getLastKnownLocation(字符串提供者)在 API 级别 1 中添加

返回一个 Location 指示从给定提供程序获得的最后一个已知位置修复的数据。

这可以在不启动提供程序的情况下完成。请注意,此位置可能已过时,例如,如果设备已关闭并移动到另一个位置。

如果提供程序当前被禁用,则返回 null。参数 provider 提供者的名称 返回

the last known location for the provider, or null
于 2013-11-12T09:34:42.507 回答
0

你设置权限了吗?manifest uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" manifest

http://developer.android.com/guide/topics/location/strategies.html

于 2013-11-12T09:36:22.587 回答