私は、オーディオファイルを再生するためにMediaPlayerを使用し、テキストを出力するためにTTSエンジンを使用します。いいえ、私は2つのタイプの音量を同じレベルに設定します。 私は、MediaPlayersのsetVolume-Methodともっと一般的なsetVolumeControlStreamを設定しようとしましたが、努力はしていませんでした。誰かにその問題のアイデアやサンプルコードがありますか?Android MediaPlayer TTS問題
Fesp
私は、オーディオファイルを再生するためにMediaPlayerを使用し、テキストを出力するためにTTSエンジンを使用します。いいえ、私は2つのタイプの音量を同じレベルに設定します。 私は、MediaPlayersのsetVolume-Methodともっと一般的なsetVolumeControlStreamを設定しようとしましたが、努力はしていませんでした。誰かにその問題のアイデアやサンプルコードがありますか?Android MediaPlayer TTS問題
Fesp
私はこれが動作することを確認していないが、あなたは現在のボリュームを取得し、その後、TTSのAPIにそのボリュームを渡すためにAudioManagerクラスを使用して試してみました。これは私が同様のシナリオに近づく方法です。
シングルトンパターンを使用して独自のボリュームマネージャ(MediaPlayer/TTS /などのボリューム管理を担当)を作成しました。私は次の方法でMediaPlayerのボリュームを取得します。
AudioManager audioManager = (AudioManager) Context.getSystemService(Context.AUDIO_SERVICE);
int volume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
また、あなたはおそらく、あなたがオーディオTTSとないのMediaPlayerのホールドを持っていることを確認していますので、TTSが開いているときAudioManagerの新しいインスタンスを取得する必要があります。申し訳ありませんが、これは動作しない場合は、ちょっとした考え。
その後、TTSを開くと、AudioManager APIを使用して手動で音量を変更できます。
audioManager.setStreamVolume(streamType, index, flags);
ユーザーがTTSのボリューム、ボリュームマネージャのインターセプト、それを変更し、独自のプロセスを行います。私はこれが理想的な解決策ではないことを知っていますが、これを迅速な回避策として使用しました。音量を設定するとき、AudioManagerの新しいインスタンスを取得して、MediaPlayerではなくTTSを保持していることを確認しなければなりませんでした。申し訳ありませんが、これは動作しない場合は、ちょっとした考え。