我有一个应用程序,它通过麦克风记录音频,并通过 LAME 将原始 PCM 数据直接编码为 MP3(为大多数性能而配置),然后通过 HTTP 发送该流。
在我的 Galaxy S5 上,它在屏幕打开时可以正常工作,但在关闭屏幕几秒钟后,由于 CPU 不足,该过程变得很困难。
我正在使用所有已知的必需选项来防止设备进入睡眠状态,理论上它可以工作,因为 CPU 不会睡眠,但只是将 CPU 缩放得太低:
- 服务正在前台状态运行
- 我有一个
WIFI_MODE_FULL_HIGH_PERF
-lock - 和一个
PARTIAL_WAKE_LOCK
防止CPU休眠 - 所有受影响线程的优先级设置为
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO);
该应用程序理论上运行良好,同时在数十万台设备上使用。
但如果用户使用 MP3 编码器 + 屏幕关闭,则 CPU 可能无法再提供足够的功率来平滑地编码 + 流式传输数据。
我的 S5 的 CPU 控制器是“交互式的”——如果我将它设置为“性能”,问题就消失了。
任何人都知道如何防止Android进入睡眠状态,而无需在应用程序使用时一直使用root来更改调速器?