Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中播放声音_Android_Audio_Media Player - Fatal编程技术网

如何在android中播放声音

如何在android中播放声音,android,audio,media-player,Android,Audio,Media Player,我正在创建一个扰码文字游戏应用程序,它根据成功与否播放两种声音。猜测成功后,游戏将播放一个声音文件。如果猜不到,游戏将播放另一个声音文件。我已经编写了以下代码 public void checkWord() { MediaPlayer mp; if(abcd.equals(etGuessedWord.getText().toString())) { WordLibrary.setMyInt(WordLibrary.getMyInt() + 10);

我正在创建一个扰码文字游戏应用程序,它根据成功与否播放两种声音。猜测成功后,游戏将播放一个声音文件。如果猜不到,游戏将播放另一个声音文件。我已经编写了以下代码

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之类的异常。应用程序在两者之间停止,并给出“强制关闭”。代码有什么问题?是否有其他编程方式来加载声音?请帮帮我。

我通常使用
声音池
播放声音,这对我来说更舒适。您可以检查此链接:


祝你好运

确保您尝试播放的声音文件具有正确的扩展名(例如,
clap.wav
)。

问题在于您用于创建对象的上下文,“这”是活动上下文,在某些情况下,不包含对原始对象的引用。我遇到了同样的问题,我通过使用应用程序上下文而不是活动上下文解决了这个问题

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

Context-appContext=getApplicationContext()


mp=MediaPlayer.create(appContext,resid)

声音文件位于res/raw文件夹中。它是通过R.raw.clapI确定的,这意味着文件名应该是
clap.wav
,而不仅仅是
clap
(当然,假设它是wav格式)。