我从GPS或网络获取位置。问题是我已经在htc欲望高清上测试了它并且它工作得非常好,但是现在我开始在三星星系位置的其他设备上进行测试总是无效。
以下是我获取位置的代码
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
currentLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if( currentLocation == null){
currentLocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
}
提前致谢
答案 0 :(得分:0)
您是否有任何GPS工作示例?我认为如果应用程序已经设置了位置监听器,并且等待第一个位置到达,则某些电话将仅向应用程序提供最后已知位置。你的代码不会这样做。
public class YourActivity extends Activity implements LocationListener {
private LocationManager lm;
@Override public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
startLocating();
}
private void startLocating(){
lm.requestLocationUpdates("gps", 0, 10, this);
}
@Override
public void onLocationChanged(Location arg0) {
lm.removeUpdates(this);
/*
* put your code here
*/
}
@Override public void onProviderDisabled(String arg0) {}
@Override public void onProviderEnabled(String provider) {}
@Override public void onStatusChanged(String provider, int status, Bundle extras) {}
}
答案 1 :(得分:0)
您需要注册一个侦听器以进行位置更改。添加如下内容:
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
if (location != null) {
doSomethingWithLocation();
}
}
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);
请确保在请求位置更新时添加正确的等待时间。使用零而不是1000,系统将没有足够的时间来获取新位置。
运行上面的代码后调用getLastKnownLocation()应该会删除你的null问题。