如何在每10分钟后以编程方式开启和关闭GPS?

时间:2014-05-15 07:18:05

标签: android gps location

我正在使用Gps并获取位置并在每10分钟后发送到服务器但是对Gps,电池耗尽。所以我希望在每10分钟Gps应该打开并获取位置并且在此Gps应该关闭之后。

2 个答案:

答案 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);
}
}