Help us understand the problem. What is going on with this article?

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

More than 3 years have 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クラスを用いるべきだったのかも)

ネットを調べると、音が鳴らなくなる現象が結構発生しているみたい。
同じような現状が発生しているアプリは
リリース処理が漏れているのかもしれないなあ。

sadak
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away