我一直在努力获取当前位置的GPS坐标,但我的应用程序从未锁定GPS卫星。
通知区域中的GPS图标一直闪烁。
虽然我尝试在Android上使用谷歌地图(预安装的应用程序),并且该东西能够在大约60秒内锁定!在这两种情况下,我的3G数据连接都已打开并正常工作。
更新:我使用的是Android 2.3.3(HTC Desire S(工厂安装的操作系统;未应用更新))Logcat输出为here。现在没有设置LocationUpdates()
的最小时间和更新到0,0之间的最小距离。
更新#2:我之前的代码是here(PasteBin Link)。
更新#3:现在,我在显示Toast后收到一个强制关闭..“可用”..在onStatusChanged()
上。
更新#4:最后......我让它发挥作用。
-
那么,谷歌地图的应用程序是否使用一些专有代码来锁定GPS信号?我尝试过使用各种版本的代码。尝试使用标准,但从未让他们使用GPS。对于我来说,通过GPS获得精确(约50英尺精度)位置坐标是必须的。
我的代码:
public class LocationDemoActivity extends Activity implements LocationListener {
LocationManager locationManager;
StringBuilder builder;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000l, 50.0f, this);
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
locationManager.removeUpdates(this);
locationManager = null;
Intent i = new Intent(
android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(i);
}
@Override
public void onLocationChanged(Location location) {
// builder = new StringBuilder();
double lati=location.getLatitude();
double longi=location.getLongitude();
double alti=location.getAltitude();
float acc=location.getAccuracy();
float speed=location.getSpeed();
long time=location.getTime();
System.out.println(lati);
System.out.println(longi);
System.out.println(alti);
System.out.println(acc);
System.out.println(speed);
System.out.println(time);
/*Toast.makeText(this, "Lati: " + lati,Toast.LENGTH_SHORT).show();
Toast.makeText(this, "Long: " + longi,Toast.LENGTH_SHORT).show();
Toast.makeText(this, "Alti: " + alti,Toast.LENGTH_SHORT).show();
Toast.makeText(this, "Acc.: " + acc,Toast.LENGTH_SHORT).show();
Toast.makeText(this, "Speed: " + speed,Toast.LENGTH_SHORT).show();
Toast.makeText(this, "Time: " + time,Toast.LENGTH_SHORT).show();*/
builder.append("Longitide: " + location.getLongitude());
builder.append('\n');
builder.append("Latitude: " + location.getLatitude());
builder.append('\n');
builder.append("Altitude: " + location.getAltitude());
builder.append('\n');
builder.append("Accuracy: " + location.getAccuracy());
builder.append('\n');
builder.append("TimeStamp:" + location.getTime());
builder.append('\n');
System.out.println(builder.toString());
Toast.makeText(this, builder.toString(), Toast.LENGTH_LONG).show();
}
@Override
public void onProviderDisabled(String provider) {
System.out.println("Provider Disabled:");
Intent intent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent);
}
@Override
public void onProviderEnabled(String provider) {
System.out.println("Provider Enabled:");
Toast.makeText(this, "GPS is now enabled...", Toast.LENGTH_LONG).show();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
switch (status) {
case LocationProvider.OUT_OF_SERVICE:
System.out.println("Status Changed: Out of Service");
Toast.makeText(this, "Status Changed: Out of Service",
Toast.LENGTH_SHORT).show();
break;
case LocationProvider.TEMPORARILY_UNAVAILABLE:
System.out.println("Status Changed: Temporarily Unavailable");
Toast.makeText(this, "Status Changed: Temporarily Unavailable",
Toast.LENGTH_SHORT).show();
break;
case LocationProvider.AVAILABLE:
System.out.println("Status Changed: Available");
Toast.makeText(this, "Status Changed: Available",
Toast.LENGTH_SHORT).show();
break;
}
}
}
请回答,因为这对我来说非常紧急,任何帮助都非常明显:)
谢谢..
答案 0 :(得分:1)
很明显,你不会得到任何位置更新,因为你已经将minDistance设置为50米或164.042英尺。看来你已经把它与准确性混淆了。
minDistance
参数是位置更新之间的最小距离。因此,您必须移动至少50米才能获得位置更新。
还要确保您拥有清晰的天空视野才能获得GPS信号。
阅读文档
中的更多内容http://developer.android.com/reference/android/location/LocationManager.html
答案 1 :(得分:1)
我问了一个相关问题here。
对我来说,看起来你手机上的GPS无法看到坐着的。你需要把你的办公室/家里露天。就我而言,由于GPS太笨拙,我搬到了NetworkProvider
。
另请注意,您为距离和时间提供的参数不是文字,而是api所做的best guess
。所以不要指望API回调的响应时间/距离。
答案 2 :(得分:0)
您是否拥有所有这些明显的权限?
ACCESS_COARSE_LOCATION
ACCESS_FINE_LOCATION
ACCESS_LOCATION_EXTRA_COMMANDS
ACCESS_MOCK_LOCATION
CONTROL_LOCATION_UPDATES
INTERNET