我有一个应用程序可以精确定位地图上的用户位置。这在我的Nexus 4& 5,但不再适用于我的Nexus 7.
它确实在7上运行,但随后设备在执行期间关机,现在应用程序将无法运行。
我已将设备重置为出厂设备,并已在其上运行所有更新。
以下是我的onCreate方法的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
map.setMyLocationEnabled(true);
Criteria criteria = new Criteria();
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
String provider = locationManager.getBestProvider(criteria, false);
Location location = locationManager.getLastKnownLocation(provider);
double lat = location.getLatitude();
double lng = location.getLongitude();
LatLng coordinate = new LatLng(lat, lng);
CameraUpdate center = CameraUpdateFactory.newLatLng(coordinate);
CameraUpdate zoom=CameraUpdateFactory.zoomTo(16);
map.moveCamera(center);
map.animateCamera(zoom);
}
它说我在** ** double lat = location.getLatitude();
获得了NullPointerException我能理解一个问题,如果它会在我的所有设备上发生,但我无法解决为什么只有这一个设备(特别是在它之前工作之后)?
答案 0 :(得分:2)
根据getLastKnownLocation documentation:
如果当前禁用了提供程序,则返回null。
当您使用getBestProvider(criteria, false)
时,您说您允许未启用的提供程序(false
表示的意思) - 如果您只想查看已启用的提供程序,请将其切换为true
(这将确保getLastKnownLocation不返回null)。
请注意,getLastKnownLocation
可能已过期,如果您需要获取最近的位置,您可能仍希望查找位置更新。
答案 1 :(得分:0)
使用gsp或网络位置进行处理时,需要注意几点。
* - 数据需要一段时间才能到达您的设备:是的,重新启动设备的当前位置可能需要1分钟。这就是为什么你应该使用LocationListener
* - 可能听起来很疯狂,但要确认您的智能手机已连接到互联网