gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:55:49 24 4
gpt4 key购买 nike

我想在 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();
}
}

我在 list 中添加了以下行:

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

并且我已经使用 DDMS 方法或使用 geo fix 方法设置了 gps 位置,但是当我运行代码时,我在 Toast 行得到一个 NullPointerExeption,这可能是因为 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);
}
}

谢谢!

最佳答案

模拟器在开始时没有任何位置。根据doc , 'getLastKnownLocation' 方法可以返回null,所以没问题。在这种情况下,您应该等待位置更新(您可以使用 LocationManager 中的 requestLocationUpdates 方法)。您可以通过以下命令在模拟器的 gps 模块上触发位置更新:

adb -e emu geo fix 50 50

关于java - Android - 无法在模拟器上获取 gps 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4745670/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com