1

我有一个应用程序,它通过麦克风记录音频,并通过 LAME 将原始 PCM 数据直接编码为 MP3(为大多数性能而配置),然后通过 HTTP 发送该流。

在我的 Galaxy S5 上,它在屏幕打开时可以正常工作,但在关闭屏幕几秒钟后,由于 CPU 不足,该过程变得很困难。

我正在使用所有已知的必需选项来防止设备进入睡眠状态,理论上它可以工作,因为 CPU 不会睡眠,但只是将 CPU 缩放得太低:

  1. 服务正在前台状态运行
  2. 我有一个WIFI_MODE_FULL_HIGH_PERF-lock
  3. 和一个PARTIAL_WAKE_LOCK防止CPU休眠
  4. 所有受影响线程的优先级设置为android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO);

该应用程序理论上运行良好,同时在数十万台设备上使用。

但如果用户使用 MP3 编码器 + 屏幕关闭,则 CPU 可能无法再提供足够的功率来平滑地编码 + 流式传输数据。

我的 S5 的 CPU 控制器是“交互式的”——如果我将它设置为“性能”,问题就消失了。

任何人都知道如何防止Android进入睡眠状态,而无需在应用程序使用时一直使用root来更改调速器?

4

0 回答 0