在我的应用中,我使用网络提供商获取当前位置。在这方面我开发了一些代码,你可以在下面看到它。
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
对象为空的原因。请帮助我这方面。提前谢谢。
答案 0 :(得分:0)
当设备获取位置时,它将调用onLocationChanged
侦听器。在上述情况下,您尝试获取lastKnownLocation
。如果没有lastKnownLocation
,则会返回null
。
所以请保存onLocationChanged
听众的位置。
答案 1 :(得分:0)
public Location getLastKnownLocation(String provider)在API中添加 1级
返回指示上一个已知位置的数据的位置 从给定的提供者处获得的修复。
这可以在不启动提供程序的情况下完成。请注意这一点 位置可能已过时,例如,如果设备已转动 关闭并搬到另一个地方。
如果当前禁用了提供程序,则返回null。参数 provider提供者的名称返回
the last known location for the provider, or null
答案 2 :(得分:0)
您是否设置了权限? 表现 uses-permission android:name =“android.permission.ACCESS_FINE_LOCATION” 清单
http://developer.android.com/guide/topics/location/strategies.html