我无法在Android上运行应用程序,但模拟器可以

时间:2010-12-27 14:26:25

标签: android android-emulator gps

protected void showCurrentLocation(){
 Location lc = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
 if(lc != null){
  String msg = String.format("Current Location \n Logitude: %1$s \n Latitude: %2$s",lc.getLongitude(),lc.getLatitude());
  Toast.makeText(Test1.this,msg,3000).show();
 }
 Toast.makeText(Test1.this,"location is null",3000).show();
} 

从上面的代码中,当我在Android手机上运行时,它可以运行,但它只显示位置为null。 我不知道为什么它无法从getLastKnownLocation()

获取位置

http://www.javacodegeeks.com/2010/09/android-location-based-services.html

这是我必须尝试的源代码。请帮我。谢谢你:))

聚苯乙烯。我已经有ACCESS_FINE_LOCATION,ACCESS_MOCK_LOCATION和ACCESS_COARSE_LOCATION

2 个答案:

答案 0 :(得分:1)

您的应用程序是否具有使用GPS的权限?

http://developer.android.com/reference/android/Manifest.permission.html

P.S: 这里(http://stackoverflow.com/questions/1608632/android-locationmanager-getlastknownlocation-returns-null)建议如下 - 使用LocationListener

private final LocationListener locationListener = new LocationListener() {
    public void onLocationChanged(Location location) {
    //TODO:enter your code here
    }
}

您也可以使用LocationOverlay:

 final MyLocationOverlay overlay = new MyLocationOverlay(this, mapView);
        overlay.enableMyLocation();
        overlay.runOnFirstFix(new Runnable() {
           public void run() {
             //TODO: update some model, etc
           }
        });

答案 1 :(得分:0)

Daisy,我认为你正在努力的是getLastKnownLocation()的概念。在模拟器中,您手动发送模拟位置,并且在运行代码时确实存在最后一个已知位置。在您的实际手机上,可能没有最后一个已知的位置,但是......

你可能在想“但我的手机总是不知道它的位置”,答案可能并非总是如此。

如上所述,您确实需要编写代码来侦听位置管理器的位置更新