我正在开发一个应用程序,使用融合位置提供程序在谷歌地图上跟踪自己。现在我想在操作栏上有一个按钮来打开/关闭位置服务。
我尝试了下面的代码,但它说它的描述。有更好的方法吗?
public void turnGPSOn()
{
Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE");
intent.putExtra("enabled", true);
ctx.sendBroadcast(intent);
String provider = Settings.Secure.getString(ctx.getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if(!provider.contains("gps")){ //if gps is disabled
final Intent poke = new Intent();
poke.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider");
poke.addCategory(Intent.CATEGORY_ALTERNATIVE);
poke.setData(Uri.parse("3"));
this.ctx.sendBroadcast(poke);
}
}
// automatic turn off the gps
public void turnGPSOff()
{
String provider = Settings.Secure.getString(ctx.getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if(provider.contains("gps")){ //if gps is enabled
final Intent poke = new Intent();
poke.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider");
poke.addCategory(Intent.CATEGORY_ALTERNATIVE);
poke.setData(Uri.parse("3"));
this.ctx.sendBroadcast(poke);
}
}
}
答案 0 :(得分:1)
现在我想在操作栏上设置一个按钮来打开/关闭位置服务。
您的代码不会尝试“打开/关闭位置服务”。它尝试启用和禁用位置服务。幸运的是,由于隐私和安全原因非常明显,这是不可能的。用户可以通过“设置”应用程序或通过其他特定于设备的方式启用和禁用用户想要的任何位置技术。
您的应用通过LocationClient
控制是否收到或未收到位置更新。反过来,Play服务引擎将使用该信息来确定是否需要打开GPS无线电。