我对Android开发还很陌生,我正在遇到一个奇怪的问题,我正在努力开发一款应用程序来提升速度。有时这个应用似乎工作正常,但大多数时候它没有。我试图从应用程序中简单地设置GPS lat / long设备;仅此而已。我已经利用了从其他帖子收集的大量知识,但最后,我不确定我的应用程序是否由于模拟器怪癖而无效,或者它是否是我的代码。作为参考,我使用IntelliJ,我的目标是2.3.3,我确实在我的模拟器上启用了GPS,我确实在我的清单中设置了相应的权限。
奇怪的是,当我打开模拟器时,它有时工作正常,然后我通过终端telnet并通过“geo fix”设置地理位置,然后返回应用程序,它显示我的GPS lat / long我进入了。但通常它根本不起作用。当我尝试通过代码中的模拟位置以编程方式执行此操作时,我得到了相同的结果。
以下是我在onCreate()方法顶部的代码(locationManager是一个类级字段):
locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
locationManager.addTestProvider(LocationManager.GPS_PROVIDER, false, false, false, false, false, true, true, 0, 5);
..当用户在lat中输入lat / long并点击提交按钮时,在提取字段并完成一些光验证后调用以下代码:
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”类只是这篇帖子中评分最高的答案的复制/粘贴:
What is the simplest and most robust way to get the user's current location on Android?
有关我的问题可能是什么的任何想法?它似乎大概是1/5的时间,它获得GPS坐标并显示它们,但是其他4/5的时间,它没有。当它工作时,当我通过输入字段和按钮更改坐标时,它永远不会更新坐标。
请放轻松,因为我对这些东西很新。 ;)提前感谢您提供的任何帮助!
答案 0 :(得分:1)
如果您的目标是2.3.3版本,并且已经在2.3.3版AVD上进行了测试,我建议您切换到API的2.3.3 Google API版本,然后尝试模拟位置。