GPS无法在我的Android手机上运行

时间:2011-03-23 13:35:36

标签: android mobile gps

我在模拟器上有一个工作应用程序,但是当我尝试使用手机时,它不是。 在模拟器上,我向手机发送了一个假位置,它接收到了这个代码没有问题:

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]

我做错了什么?我在室内/室外尝试过,谷歌地图让我很快就能找到我的房子。

1 个答案:

答案 0 :(得分:0)

正确检测GPS坐标始终是Android中的一个问题。在尝试了很多东西后,我终于看到了Android camera app如何在点击的图像中嵌入坐标。最好的办法是注册NETWORK_PROVIDER和GPS_PROVIDER,并在请求位置更新时将minDistance保持为0。

通常需要一些时间才能获得GPS修复,因此如果您的活动中的某些内容取决于位置,那么请在每隔250毫秒后检查一个位置。

要获取该位置,首先要检查是否有来自GPS的修复程序,然后是网络提供商。