Android 实现系统深度休眠笔记,app保活双进程守护

  • DC连接汽车12V永不掉电,熄火时ACC发出掉电信号时,行车记录装置采用不关机,深度休眠策略。关闭屏幕,停止录像,记录轨迹的同时,需要打开飞行模式(蓝牙,WiFi),关闭FM发射,关闭GPS。如果此时有音乐播放和后台导航,也需要关闭。

  • 深度休眠时,待机电流降到10-30mA,此时底层摄像头已不再断电,所以在此步骤进行之前,要停掉Camera预览。否则机器唤醒的时候预览区域会出现卡死。

  • 关闭屏幕,发送自定义广播:

context.sendBroadcast(new Intent(“tchip.intent.action.ACTION_KEY_POWER”));

接收的应用,需要具备INJECT_EVENTS权限:

和系统的userId:

android:sharedUserId=“android.uid.system”

接收到此广播后,发出对应的key即可:

sendKeyCode(KeyEvent.KEYCODE_POWER);

  • 打开/关闭飞行模式,同样发送自定义广播给拥有系统uid的应用,同时需要具备权限写入WRITE_SECURE_SETTINGS,打开setting.db可以看到三个表,其中secure表是一些敏感字段:

这里写图片描述

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: STM32F407可以通过以下步骤实现系统的定时休眠与工作。首先,我们需要设置定时器和睡眠模式。 1. 设置定时器: 首先,选择一个合适的定时器,例如TIM2。然后,配置定时器的预分频和计数值,以设置定时的周期。假设我们要设置周期为1秒,系统时钟为72MHz,则可以设置预分频为7199,计数值为9999。这样,当计数值从0计到9999时,定时器溢出,触发定时中断。 2. 设置中断: 在定时器的溢出中断函数中,我们可以编写休眠与工作的逻辑代码。例如,我们可以在定时器中断触发时,将系统设置为休眠模式,进入低功耗状态,以节省能耗。同时,在其他需要工作的条件满足时,例如外部中断触发时,可以唤醒系统,使其恢复正常工作模式。 3. 设置低功耗模式: 在进入休眠模式之前,我们需要设置低功耗模式。STM32F407提供了多种低功耗模式,例如待机模式、停止模式等。我们可以根据实际需求选择合适的低功耗模式。例如,使用停止模式,在进入休眠模式时,将系统时钟关闭,只保留必要的外设时钟,以进一步降低功耗。在唤醒系统时,我们需要重新初始化系统时钟。 总结: 通过设置定时器、中断和低功耗模式,我们可以实现STM32F407的定时休眠与工作。定时器用于定期触发中断,中断函数用于判断是否进入休眠模式,低功耗模式用于降低系统功耗。这样,可以在一定时间内让系统处于休眠状态,以节省能耗,而在需要工作时又能及时唤醒系统,进行相应的任务处理。 ### 回答2: STM32F407是一款高性能的Cortex-M4处理器芯片,具有强大的定时休眠和工作功能。通过编程配置STM32F407的系统时钟和相关的外设模块,我们可以实现系统的定时休眠与工作。 首先,我们可以使用STM32CubeMX来配置系统的时钟源和时钟分频系数,以确保系统的稳定运行。然后,我们可以使用定时器模块来生成定时中断,以控制系统的工作与休眠。通过配置定时器的计数器和预分频系数,我们可以设置定时的时间间隔。 在工作模式下,我们可以通过重置定时器的计数器和使能定时器中断来启动定时器,当定时器计数器达到设定的值时,会触发定时中断,可以在中断服务函数中进行相应的工作。 而在休眠模式下,我们可以使用STM32F407的低功耗模式来实现系统的节能。通过将系统设置为待机模式或停机模式,系统会进入低功耗状态,具体的模式选择取决于所需的休眠功耗和唤醒的速度。在休眠模式下,定时器和其他外设会被暂时关闭,以降低能耗,但系统的部分功能仍然可以保持运行,例如外部中断可以唤醒系统。 通过结合定时器的工作和休眠模式,我们可以实现系统的定时休眠与工作。定时器可以周期性地唤醒系统,执行工作任务,并在工作完成后进入休眠模式,以节省能耗。 总之,STM32F407的定时休眠与工作功能可以通过配置定时器和系统的低功耗模式来实现。这样的设计可以获得较高的灵活性和低功耗特性,适用于需要周期性工作和休眠的应用场景。 ### 回答3: STM32F407是一种基于ARM Cortex-M4内核的微控制器,具有丰富的外设和功能。为了实现系统的定时休眠与工作,可以采取以下步骤: 1. 配置一个定时器:通过STM32CubeMX等工具配置一个定时器,设置一个合适的定时周期和预分频,以便实现精确的定时中断。 2. 编写定时中断处理函数:在定时中断处理函数中,可以通过设置相应的标志位或执行具体的操作来实现系统的定时休眠与工作的切换。 3. 定时休眠:在定时中断处理函数中,设置一个标志位表示需要休眠,然后调用相关的休眠函数,如WFI(Wait for Interrupt)指令,以使系统进入低功耗模式,从而降低功耗。 4. 定时工作:在定时中断处理函数中,设置一个标志位表示需要工作,然后恢复相关的外设和功能的工作状态,以使系统正常运行。 5. 不断循环:在主循环中,检查定时休眠和工作的标志位,根据标志位的状态来执行相应的操作,以实现系统的定时休眠与工作。 需要注意的是,在实现过程中还需要结合具体的应用场景和需求,灵活地配置和调整休眠和工作的时间间隔和模式。另外,为了保证系统的稳定性和可靠性,还需要合理设计和处理其他中断,并考虑外设和功能的初始化和配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_64382743

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值