【问题标题】:Android 2.2.1 crash on music start()Android 2.2.1 在音乐开始时崩溃()
【发布时间】:2014-03-24 05:39:11
【问题描述】:

在我的应用中我有这个代码:

@Override
public void onBackPressed() {
    MediaPlayer buttonBack = MediaPlayer.create(this, R.raw.button_back);   
    buttonBack.start();
    super.onBackPressed();
}

当你点击返回按钮时,它基本上会播放声音。我已经在我的模拟器(Android 4.1.2)和我的三星 Galaxy SIII Mini(Android 4.1.2)上试过了。一切正常,所以我已将应用程序发送给我的朋友,他拥有三星 Galaxy Mini (Android 2.2.1)。他告诉我当他点击返回按钮时有时会崩溃,所以他给我发了 LogCat,它告诉我它在 buttonBack 行上抛出 NullPointerException .start(); .

LogCat 图片:http://i.stack.imgur.com/Jgz5t.jpg

我尝试将 *MediaPlayer buttonBack = MediaPlayer.create(this, R.raw.button_back);* 更改为 *MediaPlayer buttonBack = MediaPlayer.create(getApplicationContext(), R.raw.button_back);*,但是没有任何作用。

有解决这个问题的办法吗?

【问题讨论】:

    标签: android audio


    【解决方案1】:

    你可以解决这个问题:

    @Override
    public void onBackPressed() {
        MediaPlayer buttonBack = MediaPlayer.create(this, R.raw.button_back);   
        if (buttonBack != null) {
            buttonBack.start();
        }
        super.onBackPressed();
    }
    

    问题是 MediaPlayer.create 有时会返回 null。 但我想你可以忍受在 MediaPlayer.create 返回 null 的情况下不播放声音。或者,您可以尝试使用SoundPool 或尝试播放不同的声音文件。

    【讨论】:

    • 好吧,你给了我一个想法——在那个 if 语句之前,这个怎么样:“for(int i = 0; backButton == null && i
    • 既然你说它可以在较新的 Android API 中工作,我实际上怀疑 Android 2.2.1 在处理您的音频文件格式方面存在问题,而较新版本的 Android 已经对此进行了改进。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 2019-10-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-05
    • 2013-11-13
    相关资源
    最近更新 更多