我正在使用Gps并获取位置并在每10分钟后发送到服务器但是对Gps,电池耗尽。所以我希望在每10分钟Gps应该打开并获取位置并且在此Gps应该关闭之后。
答案 0 :(得分:1)
每10分钟通过AlarmManager设置一次报警。在警报中,为GPS提供商调用locationManager.requestSingleUpdate。这将打开GPS足够长的时间来获得一次修复,然后将其关闭(除非其他程序正在使用它)。当它得到修复时,它将通过您在requestSingleUpdate中注册的回调来调用您。然后,您可以对结果执行任何操作(例如通过AsyncTask将其发送到服务器)。
答案 1 :(得分:-1)
public void turnGPSOn()
{
Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE");
intent.putExtra("enabled", true);
this.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);
}
}
//关闭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);
}
}