[Android] なんでisMusicActive自アプリが出す音も検知してしまうん?

音楽が再生されているかどうかを判定する

バックグラウンドで音楽が再生されている時に自アプリの効果音を出さないようにする的な実装でAudioManagerのisMusicActive()を使ってみた。

isMusicActive()は音楽が再生されているかどうかを判定するってメソッドなんだけど、どうやらバックグラウンドの音楽だけでなく、自アプリが出してる音も検知してしまうっぽい。

リファレンスにはこう書いてある

リファレンスの説明は以下のとおり。

public boolean isMusicActive ()

Checks whether any music is active.

Returns
true if any music tracks are active.

AudioManager | Android Developers

説明少な過ぎだけど、とにかく何かしら音楽が再生されてたらtrue返すってことですかね。

う〜ん、イマイチ使い勝手が悪いな…

イケてる実装方法が知りたい

とりあえず今回は再生する効果音が比較的短いため、効果音の再生が終わるまでスリープかけてから判定を入れるようにしてみた。正直イケてるやり方ではないと思うので、他に良さげな実装方法があればご教示いただきたいところです。

ゲーム系アプリだとこの辺りうまいことやってそうな気がする。知らんけど。

Effective Android