繁体   English   中英

Android-IntelliJ模拟器问题中的模拟位置

[英]Android - Mock Locations in IntelliJ Emulator Issues

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

奇怪的是,当我打开仿真器,然后通过终端telnet并通过“ 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);

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

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的时间则没有。 当它起作用时,当我通过输入字段和按钮更改坐标时,它永远不会更新坐标。

请对我好一点,因为我对这些东西还很陌生。 ;)预先感谢您提供的任何帮助!

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM