2

ヘッドセットが接続されているときにトーンを再生するために、タブレットで音量レベルを設定するために使用できる Android API はどれですか。現在、ヘッドセットが接続されているときに動作しないように見える次の API を使用しています。

audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 9, AudioManager.FLAG_SHOW_UI);

ヘッドセットが接続されているときにスピーカーを介してオーディオをルーティングするように次の設定を行いました(これは私のアプリの要件です) audioManager.setMode(AudioManager.MODE_IN_CALL); audioManager.setSpeakerphoneOn(true);

この設定の後に目的のトーンを再生すると、オーディオはスピーカーを介してルーティングされますが (ヘッドセットが接続されていても)、音量が高すぎsetStreamVolumeます。音量レベル 9 のみに設定しているため、API が機能していないようです。かなり低い。ヘッドセットを取り外してユース ケースを実行すると、この API は正常に動作します。つまり、トーンは低い音量で再生されます。

ヘッドセットが接続されているときに Android でトーンを再生するための音量を設定するために使用できる他の A​​PI はありますか?

4

1 に答える 1

2

アプリがセルラー通話に代わるものでない限り、MODE_IN_CALL を使用すると、セルラー オーディオが実際に最適化され、STREAM_MUSIC のリソースが不足します。MODE_IN_CALL で STREAM_MUSIC オーディオを使用している場合、AudioPolicyManagerBase の電話メーカー/キャリア拡張によっては、おそらくあなたが見ているケースなど、多くの奇妙な動作が見られます。

まず、STREAM_MUSIC でオーディオの再生を指定していることを確認してください。あなたのボリュームコントロールが実際に正しいストリームを制御しているように.

次に、MODE_IN_CALL の代わりに MODE_IN_COMMUNICATION を使用することをお勧めします。多くのメーカー/通信事業者固有のオーディオ ポリシーは、MODE_IN_CALL (セルラー コール) のみに固有です。

第 3 に、問題が解決しない場合は、別の電話メーカー/キャリアでアプリをテストして、問題を特定する必要があります。場合によっては、修正できないデバイス固有の欠陥です。私自身、このような事例をいくつか見てきました。

于 2013-09-21T07:41:58.770 に答える