我在模拟器上有一个工作应用程序,但是当我尝试使用手机时,它不是。 在模拟器上,我向手机发送了一个假位置,它接收到了这个代码没有问题:
private class GPSListener implements LocationListener{
private ProgressDialog waitingDialog;
public GPSListener(Context c) {
this.waitingDialog = ProgressDialog.show(c, "", c.getString(R.string.sWaitingMessage), true);
}
@Override
public void onLocationChanged(Location loc){
int longitude = (int) Math.round(loc.getLongitude() * 1000000);
int latitude = (int) Math.round(loc.getLatitude() * 1000000);
this.waitingDialog.dismiss();
GeoPoint currentLocation = new GeoPoint(latitude, longitude);
GPSPosition.this.whenPositionFound(currentLocation);
}
@Override
public void onProviderDisabled(String provider){}
@Override
public void onProviderEnabled(String provider){}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {}
}
但是,当我尝试使用手机时,永远不会调用onLocationChanged()。 我用这个激活GPS搜索:
LocationManager locManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
GPSListener gpsListner = new GPSListener(c);
locManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, gpsListner);
这是我的日志,充满了这个:
03-23 14:04:28.411: VERBOSE/GpsLocationProvider(148): SV count: 0 ephemerisMask: 0 almanacMask: ffffffff
03-23 14:04:28.411: DEBUG/RPC(148): written RPC packet size: [24]
03-23 14:04:28.421: DEBUG/RPC(148): read RPC packet
03-23 14:04:28.431: DEBUG/RPC(148): read RPC packet size: [284]
03-23 14:04:28.431: VERBOSE/libgps(148): DeferredActionThread pthread_cond_wait returned
03-23 14:04:28.431: DEBUG/RPC(148): written RPC packet size: [24]
03-23 14:04:28.431: DEBUG/RPC(148): read RPC packet
03-23 14:04:28.431: DEBUG/RPC(148): read RPC packet size: [284]
03-23 14:04:28.431: VERBOSE/libgps(148): DeferredActionThread pthread_cond_wait returned
03-23 14:04:28.431: DEBUG/RPC(148): written RPC packet size: [24]
03-23 14:04:28.441: DEBUG/RPC(148): read RPC packet
03-23 14:04:28.441: DEBUG/RPC(148): read RPC packet size: [284]
03-23 14:04:28.441: VERBOSE/libgps(148): DeferredActionThread pthread_cond_wait returned
03-23 14:04:28.441: DEBUG/RPC(148): written RPC packet size: [24]
03-23 14:04:28.451: DEBUG/RPC(148): read RPC packet
03-23 14:04:28.451: DEBUG/RPC(148): read RPC packet size: [284]
我做错了什么?我在室内/室外尝试过,谷歌地图让我很快就能找到我的房子。
答案 0 :(得分:0)
正确检测GPS坐标始终是Android中的一个问题。在尝试了很多东西后,我终于看到了Android camera app如何在点击的图像中嵌入坐标。最好的办法是注册NETWORK_PROVIDER和GPS_PROVIDER,并在请求位置更新时将minDistance保持为0。
通常需要一些时间才能获得GPS修复,因此如果您的活动中的某些内容取决于位置,那么请在每隔250毫秒后检查一个位置。
要获取该位置,首先要检查是否有来自GPS的修复程序,然后是网络提供商。