HTTP経由でそのストリームを送信する前に、マイク経由でオーディオを録音し、生のPCMデータをLAME経由でMP3に直接エンコードするアプリケーションがあります(ほとんどのパフォーマンス用に構成されています)。
私のGalaxy S5では、画面がオンになっている間は問題なく動作していますが、画面をオフにしてから数秒後、CPU不足のためにプロセスが苦労します.
デバイスがスリープしないようにするために既知の必要なすべてのオプションを使用しています。理論的には、CPU がスリープしないため動作していますが、CPU のスケーリングが低すぎるだけです。
- サービスはフォアグラウンド状態で実行されています
- 私は-ロックを持ってい
WIFI_MODE_FULL_HIGH_PERF
ます PARTIAL_WAKE_LOCK
CPU がスリープ状態にならないようにする- 影響を受けるすべてのスレッドの優先度が
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO);
アプリケーションは理論的には非常にうまく機能しており、その間に数十万台のデバイスで使用されています.
しかし、ユーザーが MP3 エンコーダーを使用して画面をオフにしている場合、CPU がデータをスムーズにエンコードしてストリーミングするのに十分な電力を供給できなくなる可能性があります。
S5 の CPU ガバナーは「インタラクティブ」です。「パフォーマンス」に設定すると、問題はなくなりました。
アプリの使用中に常にルートを使用してガバナーを変更せずに、Android がスリープ状態にならないようにする方法を知っている人はいますか?