【发布时间】:2011-03-01 17:36:21
【问题描述】:
您好,我正在尝试编写一个小部件来显示 GPS 状态。 如果用户更改 GPS 启用状态,我希望更新我的小部件。
换句话说:我想更新我的小部件当 gps 状态发生变化时。 我需要写一个广播接收器吗?如果是,它将收到什么操作?
感谢您的回答。
【问题讨论】:
标签: android gps listener broadcastreceiver
您好,我正在尝试编写一个小部件来显示 GPS 状态。 如果用户更改 GPS 启用状态,我希望更新我的小部件。
换句话说:我想更新我的小部件当 gps 状态发生变化时。 我需要写一个广播接收器吗?如果是,它将收到什么操作?
感谢您的回答。
【问题讨论】:
标签: android gps listener broadcastreceiver
以下是我最近用来执行此操作的方法,但我必须警告您,当根本没有 GPS 硬件时,我发现它(至少在一台设备上)返回 true。传入一个像 LocationManager.GPS_PROVIDER 这样的值。 locationManager 是 LocationManager 的一个实例。希望您会发现此代码很有用,但尽管在我当前的情况下它适用于我,但我希望您需要对其进行改进。
// Checks whether the specified location provider is enabled on the device
public static boolean isLocationProviderEnabled(String provider)
{
if ( locationManager.isProviderEnabled(provider) )
{
if (provider.toLowerCase().equals(LocationManager.GPS_PROVIDER))
{
return haveGPS();
}
else
{
return true;
}
}
else
{
return false;
}
}
// Checks whether the GPS hardware is present in the device
private static boolean haveGPS()
{
PackageManager pmgr = SpondleApplication.getInstance().getPackageManager();
boolean gotGPS = pmgr.hasSystemFeature("android.hardware.location.gps");
return gotGPS;
}
【讨论】: