解决方案 »
- 用android sdk4.0 开发的软件可以在2.3的系统上运行吗?
- 一个android4.0上widget的问题
- 安装eclipse插件ADT报错!请教高手!
- 如何设置扇形的点击范围
- android cupcake中framework-res.apk下图片不能调用。。
- android 怎么实现上层Java和下面C++ 共享一个特殊标记?
- 如何用android实现http服务器
- xmlPullParser 的setInput()方法参数问题~~求解
- 隐式调用intent报错,找不到原因,请指点,谢谢
- 想在fragment中嵌入一个Xlistview,具体应该怎么做?
- 我又心痒痒了,想学移动开发
- google code 上奇怪的 out of quota提示
因为getLastKnownLocation方法获取的是上一次已知的位置
但是你的apk运行的时候 从来没有获取位置数据 所以每次运行都获取不到数据 每次location都是为Null解决办法:使用new LocationListener()接口
locationManager.requestLocationUpdates(locationprovider, 2000, 2, listener); //注册监听位置改变
然后再 location=locationManager.getLastKnownLocation(locationprovider);
就可以获取数据了
LocationManager locationManager22 ;
String serviceName = BaiduActivity.LOCATION_SERVICE;
locationManager22 = (LocationManager)BaiduActivity.this.getSystemService(serviceName); // 查找到服务信息
String provider=LocationManager.GPS_PROVIDER; //指定用GPS查询服务
//设置监听器,自动更新的最小时间为间隔2秒或最小位移变化超过2米
locationManager22.requestLocationUpdates(provider, 2000, 2, ll);
try{
Location location1 = locationManager22.getLastKnownLocation(provider); // 通过GPS获取位置
int lng = (int) (location1.getLongitude() * 1E6);
Toast.makeText(this, lng, Toast.LENGTH_SHORT).show();
// center = new GeoPoint(lat, lng);
}
catch(Exception es)
{
Toast.makeText(this, "出现未知错误,获取当前位置不到", Toast.LENGTH_SHORT).show();
}
}
//创建位置监听器
// LocationListener
private LocationListener ll = new LocationListener(){
//位置发生改变时调用
public void onLocationChanged(Location location) {
center = new GeoPoint((int) (location.getLatitude() * 1e6),
(int) (location.getLongitude() * 1e6));
} //provider失效时调用
public void onProviderDisabled(String provider) {
Log.d("Location", "onProviderDisabled");
System.out.print("wwwww");
} //provider启用时调用
public void onProviderEnabled(String provider) {
Log.d("Location", "onProviderEnabled");
System.out.print("eeeee");
}
//状态改变时调用
public void onStatusChanged(String provider, int status, Bundle extras) {
Log.d("Location", "onStatusChanged");
System.out.print("rrrr");
}
};是这样吗?可是还是没用?是什么原因,我是刚接触的所以很笨。麻烦指点一下。
但是你的Location location1 = locationManager22.getLastKnownLocation(provider); // 通过GPS获取位置
只运行了一次 就是说 即使 public void onLocationChanged(Location location) {
center = new GeoPoint((int) (location.getLatitude() * 1e6),
(int) (location.getLongitude() * 1e6));
}
执行了之后 但是你的location1 还是为空的 所以获取不到数据
你可以在public void onLocationChanged(Location location) {
location1=location;
//然后再来显示你的位置
}