测试开发者电话上的GPS坐标

时间:2011-07-27 15:59:22

标签: android gps coordinates

我的代码在给定时间获取位置坐标,然后显示纬度/经度坐标。我认为我的代码是正确的,但问题在于给手机提供GPS许可。我使用的是三星Nexus S,我安装了所有正确的驱动程序,但手机上没有网络。我被告知GPS应该仍然可以工作,并且应该能够检索坐标。我启用了“使用GPS卫星”设置,并在清单中给出了权限,如清单文件夹中所示

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"></uses-permission> 

我投入了所有可能的位置权限,以防万一我错过了什么,希望这不是问题。

至于我的代码我在onCreate方法中有这个(类?我不确定它的正确名称)

    double[] gps = getGPS();
    TextView tv = (TextView) this.findViewById(R.id.gpsCoordinates);
    tv.setText("Latitude: " + gps[0] + "\nLongitude: " + gps[1]);

然后GPS类中的私有方法实际获取坐标

    private double[] getGPS() {
        LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);  
        List<String> providers = lm.getProviders(true);

        /* Loop over the array backwards, and if you get an accurate location, then break out the loop*/
        Location l = null;

        for (int i=providers.size()-1; i>=0; i--) {
                l = lm.getLastKnownLocation(providers.get(i));
                if (l != null) break;
        }

        double[] gps = new double[2];
        if (l != null) {
                gps[0] = l.getLatitude();
                gps[1] = l.getLongitude();
        }
        return gps;

我相信我从stackoverflow和其他一些论坛中删除了这段代码然后稍微调整一下。

2 个答案:

答案 0 :(得分:1)

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.LOCATION"></uses-permission>

添加以上权限。可能会对您有帮助。

答案 1 :(得分:0)

您需要提供以下权限

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> 

价: http://developer.android.com/reference/android/Manifest.permission.html#ACCESS_FINE_LOCATION