当前位置: 首页 > 面试题库 >

Android-无法在模拟器上获取GPS位置

钦高峯
2023-03-14
问题内容

我正在尝试在android模拟器上使用gps,我有以下代码:

public class NL extends Activity {

 private LocationManager locmgr = null;

 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.nl);

        locmgr = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

        Criteria crit = new Criteria();
        crit.setAccuracy(Criteria.ACCURACY_FINE);
        String provider = locmgr.getBestProvider(crit, true);
        Location loc = locmgr.getLastKnownLocation(provider);


        Toast msg = Toast.makeText(this, "Lon: " + Double.toString(loc.getLongitude()) + " Lat: " + Double.toString(loc.getLatitude()), Toast.LENGTH_SHORT);
        msg.show();
    }
}

我在清单中添加了以下行:

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

并且我已经使用DDMS方法和geo
fix方法设置了gps位置,但是当我运行代码时,我在Toast行上得到了一个N​​ullPointerExeption,可能是因为loc为空。

我不知道错误在哪里…您能帮我吗?

更新!

感谢您的帮助,现在我使用以下代码,但没有收到任何错误,但是它不会在onChangeLocation内运行该代码…它不会运行Toast,并且不会在日志中返回任何消息!

 public class NL extends Activity {

        private LocationManager locmgr = null;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.nl);

            locmgr = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

         // Define a listener that responds to location updates
            LocationListener locationListener = new LocationListener() {
                public void onLocationChanged(Location loc) {
                  // Called when a new location is found by the network location provider.
                    Log.i("NOTIFICATION","onLocationChenged Triggered");

                    Toast msg = Toast.makeText(NetworkLocator.this, "Lon: " + Double.toString(loc.getLongitude()) + " Lat: " + Double.toString(loc.getLatitude()), Toast.LENGTH_SHORT);
                    msg.show();
                }

                public void onStatusChanged(String provider, int status, Bundle extras) {}

                public void onProviderEnabled(String provider) {}

                public void onProviderDisabled(String provider) {}
              };

            // Register the listener with the Location Manager to receive location updates
            locmgr.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
        }
    }

谢谢!


问题答案:

找到解决方案:

LocationManager.NETWORK_PROVIDER错误。

更正:LocationManager.GPS_PROVIDER



 类似资料:
  • 问题内容: 我正在尝试通过GPS功能获取用户的当前位置, 编写了一个实现的简单类 通过一个简单的动作,我正在访问这些经度和纬度值 但是它总是返回0.0作为结果。无法找出问题所在。 问题答案: 您必须在onCreate()返回之后才能触发您的位置更新回调。如果您将经纬度变量初始化为虚拟值,则可能会看到您正在打印这些值。 在onLocationChanged中添加一些日志记录,以便可以看到它已被触发,

  • 在eclipse中,您可以使用以下命令为模拟器设置GPS位置: 选择窗口 在模拟器控制面板中,在位置控制下输入GPS坐标作为单独的经纬度坐标,并使用GPX文件进行路线回放,或使用KML文件进行多个地点标记。(确保您在“设备”面板中选择了一个设备——可从窗口访问 这在Android Studio可能吗?

  • 问题内容: 干杯,我正在尝试通过Android获取当前的GPS位置。我也遵循了这篇教程和Vogellas的文章。虽然没有用。使用LocationManager.NETWORK_PROVIDER时,无论我站在哪里,我总能得到51的纬度和9的经度。当使用LocationManager.GPS_PROVIDER时,我什么也没得到。 虽然使用GMaps时一切正常::S不知道为什么。如何像GMaps一样获取

  • 我有一个问题,而试图使用Android模拟位置,我的主要目标是设置Android GPS认为我们在一个不同的地方,又名假GPS。 我目前尝试了两种不同的类似解决方案,可在这两个网站上使用: 编程丛林 莫比亚奇 这两个教程都是2012年的,我不知道它们是否过时,或者我很难实现它们。 首先,我要确保我有权限: ACCESS_COARSE_LOCATION ACCESS_FINE_LOCATION AC

  • 问题内容: 我正在开发一个可获取用户指定的纬度,经度和海拔高度的APP,然后在手机上伪造该GPS位置,并在Google地图中显示我位于该位置。我对清单文件具有必需的权限,并且在开发人员设置中启用了模拟位置。 但是看起来我的GPS位置在Google地图上根本没有改变,这是什么问题? 更新:我刚刚在手机上安装了一个名为“ fake GPS location”的应用程序,该应用程序可以正常运行,但是我仍

  • 我正在尝试制作一个简单的GPS应用程序,因此我想在我的设备模拟器上进行检查。 因此,我通过工具在android studio中启用ADB集成 然后,我按绿色箭头运行我的应用程序,它在模拟器上启动,但由于某种原因,在设备监视器模拟器中,所有选项都被禁用,如下图所示: 所有选项都被禁用 任何想法,以便我可以改变坐标?