0

我对 Android 开发相当陌生,我正在尝试开发一个应用程序以跟上进度,我遇到了一个奇怪的问题。有时这个应用程序似乎可以正常工作,但大多数时候它不能。我正在尝试从应用程序中简单地设置设备的 GPS 纬度/经度;仅此而已。我利用了从其他帖子中收集的大量知识,但最后,我不确定我的应用程序是否由于模拟器怪癖而无法运行,或者它是否是我的代码。作为参考,我使用的是 IntelliJ,我的目标是 2.3.3,我确实在我的模拟器上启用了 GPS,并且我确实在我的清单中设置了适当的权限。

奇怪的是,当我打开模拟器时它有时工作正常,然后我通过终端远程登录并通过“geo fix”设置地理位置,然后返回应用程序,它显示我输入的 GPS 纬度/经度。但通常它根本不起作用。当我尝试通过代码中的模拟位置以编程方式执行此操作时,我得到了相同的结果。

这是我在 onCreate() 方法顶部的代码(locationManager 是一个类级字段):

    locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
    locationManager.addTestProvider(LocationManager.GPS_PROVIDER, false, false, false, false, false, true, true, 0, 5);

..当用户在 UI 中输入纬度/经度并点击提交按钮时,在提取字段并完成一些轻度验证后调用以下代码:

Location mLocation = new Location(LocationManager.GPS_PROVIDER);
mLocation.setLatitude(Float.valueOf(inputLat));
mLocation.setLongitude(Float.valueOf(inputLong));
mLocation.setTime(System.currentTimeMillis());

locationManager.setTestProviderEnabled(LocationManager.GPS_PROVIDER, true);
locationManager.setTestProviderLocation(LocationManager.GPS_PROVIDER, mLocation);

refreshTheLocation();

作为参考, refreshTheLocation() 方法是:

public void refreshTheLocation() {
    LocationResult locationResult = new LocationResult(){
        @Override
        public void gotLocation(Location location){
            final Location finalLoc = location;

            if (location != null) {
                runOnUiThread(new Runnable() {
                    public void run() {
                        TextView gpsTextView = (TextView) findViewById(R.id.gps_label);
                        gpsTextView.setText("GPS DATA FOUND:\nLatitude: " + finalLoc.getLatitude() + "\nLongitude: " + finalLoc.getLongitude());
                     }
                });
            } else {
                runOnUiThread(new Runnable() {
                   public void run() {
                      TextView gpsTextView = (TextView) findViewById(R.id.gps_label);
                      gpsTextView.setText("GPS data not found");
                   }
                });
            }
        }
   };
   MyLocation myLocation = new MyLocation();
   myLocation.getLocation(this, locationResult);
}  

“MyLocation”类只是从这篇文章中最受好评的答案复制/粘贴:

在 Android 上获取用户当前位置的最简单、最可靠的方法是什么?

关于我的问题可能是什么的任何想法?似乎大约有 1/5 的时间,它获取 GPS 坐标并显示它们,但其他 4/5 的时间,它没有。当它确实工作时,当我通过输入字段和按钮更改坐标时,它永远不会更新坐标。

请放轻松,因为我对这些东西还很陌生。;) 提前感谢你们提供的任何帮助!

4

1 回答 1

1

如果您的目标是 2.3.3 版本并且已经在 2.3.3 版本的 AVD 上进行测试,我建议您切换到 2.3.3 Google APIs 版本的 API,然后尝试模拟位置。

于 2012-07-26T03:06:46.577 回答