現在、TTS を使用する必要があるアプリに取り組んでいます。問題は、ユーザーが音楽を聴いている場合、TTS が聞こえないことです。AudioFocus
一時的にフォーカスを取得してから解放するために使用できることがわかりました。フォーカスを取得すると、pandora (現在使用しようとしているアプリケーション) が一時停止しますが、フォーカスを離しても何も起こりません。
電話をかけると、Pandora やその他すべてを一時停止できることはわかっていますが、これを制御するソース コードは見つかりませんでした。
パンドラやその他の外部音楽プレーヤーを再開する他の方法はありますか?
これを使って音楽を一時停止します。
if(am.isMusicActive()) {
int result = am.requestAudioFocus(this, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);
if(result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED){
}
}
そして、それを解放しますonDestroy
am.abandonAudioFocus(this);
次のセクションで再開しようとしました。
Intent i = new Intent("com.android.music.musicservicecommand");
i.putExtra("command", "play");
this.sendBroadcast(i);
と
Intent downIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
KeyEvent downEvent = new KeyEvent(KeyEvent.ACTION_UP,KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE);
downIntent.putExtra(Intent.EXTRA_KEY_EVENT, downEvent);
sendOrderedBroadcast(downIntent, null);
最初の再生では、ネイティブの音楽アプリが再生されます (理由は明らかですが、試してみる価値はあると思いました)。2番目のものは何もしません。音楽を一時停止するためにも使用しましたが、うまくいきませんでした。