2011-03-23 159 views
0

我在仿真器上有一个工作应用程序,但是当我尝试在手机上时,它没有。 在模拟器上,我发一个假的位置到手机并使用此代码收到它没有问题:GPS在我的Android手机上无法正常工作

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

设备上是否启用GPS? – 2011-03-23 13:40:25

+0

是的,当我发送一个虚拟位置时,信号在仿真器上的“顶栏”上触发。我的手机在Google地图上的GPS功能非常棒。 – Swan 2011-03-23 13:44:18

+0

你有没有试穿标准?因为最后的LocationProvider可能不是你的GPS。 – papachan 2011-03-23 14:01:03

回答

0

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

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

要获取位置,请首先检查您是否有GPS定位,然后从网络提供商处获得修复。

相关问题