Posted at

Android7に更新すると音が鳴らなくなる・音が消える

More than 1 year has passed since last update.

手持ちのAndroid端末をAndroid7(Nougat)に更新したところ

現在開発中のアプリ(レトロゲーム風RPG)の効果音が鳴らなくなった。

https://play.google.com/store/apps/details?id=com.game.sh_crew.rebuildingsaga

アプリ起動直後には効果音が鳴っているのだが

あるタイミングを境に、効果音がまったく鳴らなくなってしまった。

戦闘のBGMなどは影響がないため

原因を調査したところ

BGM・効果音ともにMediaPlayerクラスを用いていたが

効果音のみMediaPlayerインスタンスの解放処理を実施していないことが原因だった。

■修正前

       try

{
mp = MediaPlayer.create(activity.getApplicationContext(), res);
mp.start();
}
catch (Exception e)
{
RsLogger.error("Music Error.", e);
}

■修正後

       try

{
// すでにMediaPlayerが生成されているか?
if (mp != null)
{
// リリース
mp.reset();
mp.release();
mp = null;
}
mp = MediaPlayer.create(activity.getApplicationContext(), res);
mp.start();
}
catch (Exception e)
{
RsLogger.error("Music Error.", e);
}

BGMの方はrelease処理が実装されているため、きちんと音が流れ続けていた。

Android7以前はreleaseしなくても問題なかったのだが……。

きちんとリソースは解放しなきゃいけないということですね。

(そもそも効果音ならSoundPoolクラスを用いるべきだったのかも)

ネットを調べると、音が鳴らなくなる現象が結構発生しているみたい。

同じような現状が発生しているアプリは

リリース処理が漏れているのかもしれないなあ。