【问题标题】:Android: Disabling/enabling connections (network, bluetooth) at a given timeAndroid:在给定时间禁用/启用连接(网络、蓝牙)
【发布时间】:2017-12-12 07:01:11
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: android service background task scheduler


    【解决方案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

    【讨论】:

    • 您好 Tenten Ponce,感谢您提供示例以及教程链接。我看了一眼参考链接,我认为这就是我要去的地方。
    • 乐于助人。抱歉刚才的简短回答。
    • 没问题。不幸的是,我遇到了另一个扼杀了我的想法的问题。我想关闭移动网络或飞行模式,但谷歌很久以前就决定不再允许无根设备使用此功能。为了更改飞行模式,我需要修改需要 android.permission.WRITE_SECURE_SETTINGS-privlege 的 Settings.Global-settings ,它只授予系统应用程序......所以我能做的最大事情是禁用 wifi 和蓝牙 - 但是这些在我的手机上默认都是关闭的......太糟糕了......
    • 是的,因为这可能会导致安全漏洞,而且:不允许应用在没有用户直接参与的情况下更改此设置的原因是为了保护用户免于在恶意应用“决定”之后支付意外账单在漫游时或为没有数据统一费率的用户打开移动数据。参考:stackoverflow.com/a/20700138/9038584 但是,如果它们是使用以下代码 root 的,您仍然可以提供一个 OPTION:Runtime.getRuntime().exec("su -c svc data disable"); (也可以参考链接)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多