android - 如何在android中播放声音

标签 android audio media-player

我正在创建一个打乱文字游戏应用程序,它根据成功或失败播放两种声音。猜测成功后,游戏会播放一个声音文件。如果猜测失败,游戏会播放另一个声音文件。我写了下面的代码

public void checkWord()
{
    MediaPlayer mp;
    if(abcd.equals(etGuessedWord.getText().toString()))
    {
        WordLibrary.setMyInt(WordLibrary.getMyInt() + 10);
        tvScore.setText(String.valueOf(WordLibrary.getMyInt()));

        new AlertDialog.Builder(JumbledWords.this).setMessage("Awesome!!!") 
        .setPositiveButton("OK", new DialogInterface.OnClickListener() { 

        @Override 
        public void onClick(DialogInterface dialog, int which) { 
        // TODO Auto-generated method stub 
            wordIdx = (wordIdx + 1) % getSize();
            sWord = getScrambledWord(word_list[wordIdx]);
            tvScrambledWord.setText(sWord);
            abcd = word_list[wordIdx];
            ++word_array_length;
            etGuessedWord.setText("");

            if(word_array_length >= word_list.length)
            {
                new AlertDialog.Builder(JumbledWords.this).setMessage("Level Complete!!! ")
                .setPositiveButton("OK", new DialogInterface.OnClickListener() { 

                @Override 
                public void onClick(DialogInterface dialog, int which) { 
                // TODO Auto-generated method stub 
                    start = 0;
                    finish();           
                } 
                }).create().show();     
            }


        } 
        }).create().show();
        **mp = MediaPlayer.create(this, R.raw.clap);**
        mp.start();

    }
    else
    {

        new AlertDialog.Builder(JumbledWords.this).setMessage("Wrong. Try Again")
        .setPositiveButton("OK", new DialogInterface.OnClickListener() { 

        @Override 
        public void onClick(DialogInterface dialog, int which) { 
        // TODO Auto-generated method stub

            etGuessedWord.setText("");
        } 
        }).create().show(); 
        **mp = MediaPlayer.create(this, R.raw.oop);**
        mp.start();
    }
}

代码 mp = MediaPlayer.create(this,R.raw.oop) 给出异常。我已尽力避免出现 IOException 等异常。应用程序在中间停止并给出“强制关闭”。代码有什么问题吗?还有其他编程方式来加载声音吗?请帮助我。

最佳答案

问题是您用来创建对象的上下文,“this”是一个 Activity 上下文,在某些条件下,不包含对原始对象的引用。我遇到了同样的问题,我通过使用应用程序上下文而不是 Activity 上下文解决了这个问题。

尝试将您的创建代码更改为以下内容:

上下文appContext = getApplicationContext();

mp = MediaPlayer.create(appContext, resid);

关于android - 如何在android中播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6280669/

相关文章:

java - 在java中连续播放.wav : Invalid Format Exception

iphone - iPhone Objective C-铃声音量和应用内音量之间的差异

javascript - 带有 XML 和按钮的动态 HTML5 播放器

android - 使用 MediaPlayer 的 OnCompletion 监听器

android - NotificationCompat.Builder addAction 丢失了吗?

java - URLConnection.setDoOutput() 究竟有什么影响?

android - 动态更改 Activity 背景

Android - dimens.xml 文件的别名?

ios - wowza如何直播多个音频输入?

Android MediaPlayer 导致游戏卡住并显示 "AudioHardware pcm playback is going to standby"