Android:在给定时间禁用/启用连接(网络,蓝牙)

时间:2017-12-12 07:01:12

标签: android service background task scheduler

为了省电,我想在给定的时间(例如晚上11点)关闭所有连接(蓝牙,wifi,移动网络)和其他耗电功能。

最好的方法是什么?我正在考虑启动后启动的服务,所以我不必手动重启服务。一开始我甚至不需要UI的应用程序 - 我可以硬编码关闭的时间。也许以后能够通过GUI更改时间会很好,但这不是必需的。

因此,服务需要做的事情的唯一时间是在我想要的时间,但是为了检测它需要在后台连续运行而不消耗太多能量的时间。

这种工作的最佳方式是什么?

1 个答案:

答案 0 :(得分:1)

我想这就是你要找的东西:

https://developer.android.com/reference/android/app/AlarmManager.html

您可以发送重复警报,该警报将在一天中的特定时间触发服务(或您想要的任何操作)。请参阅下面的具体时间设置时间:

Intent myIntent = new Intent(AndroidAlarmService.this, KillNetworkService.class);
pendingIntent = PendingIntent.getService(AndroidAlarmService.this, 0, myIntent, 0);

AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);

Calendar calendar = Calendar.getInstance();

calendar.setTimeInMillis(System.currentTimeMillis());

calendar.set(Calendar.HOUR_OF_DAY, 23); //23 for 11pm
calendar.set(Calendar.MINUTE, 00);
calendar.set(Calendar.SECOND, 0);

alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);

对于我的示例,它将在每天晚上11点启动KillNetworkService.class,从该服务,您现在可以关闭您的网络。

警报管理器教程参考: http://android-er.blogspot.com/2010/10/simple-example-of-alarm-service-using.html

相关问题