Java 无法创建媒体播放器

Java 无法创建媒体播放器,java,android,android-mediaplayer,Java,Android,Android Mediaplayer,我在试着弹e音 原始文件夹中有一个e.wav文件 xml文件夹中有一个按钮id/E 这是项目中唯一的类 当我运行应用程序并单击按钮时,它会显示“意外关闭” 怎么了 这是LOGCAT package com.example.instrumentapp; import android.app.Activity; import android.support.v7.app.ActionBarActivity; import android.support.v7.app.ActionBar; imp

我在试着弹e音

原始文件夹中有一个e.wav文件

xml文件夹中有一个按钮id/E

这是项目中唯一的类

当我运行应用程序并单击按钮时,它会显示“意外关闭”

怎么了

这是LOGCAT

 package com.example.instrumentapp;

import android.app.Activity;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.os.Build;

    public class MainActivity extends Activity {

        private Button E;
        private MediaPlayer play;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            E=(Button)findViewById(R.id.E);
            E.setOnClickListener(new View.OnClickListener()
            {

                @Override
                public void onClick(View v)
                {
                    // TODO Auto-generated method stub
                    play=MediaPlayer.create(MainActivity.this, R.raw.e);
                    play.start();
                    play.setOnCompletionListener(new OnCompletionListener()
                    {


                        @Override
                        public void onCompletion(MediaPlayer mp)
                        {
                            // TODO Auto-generated method stub
                            play.release();
                        }

                });
            }
            });




        }
    }

显然,MediaPlayer对象没有成功创建。下面是API MediaPlayer.create()的实现:

显然,
mp.setDataSource
抛出一个IOException,从而返回一个空的MediaPlayer对象。请仔细检查原始目录中的e.wav:

  • 它在正确的目录中吗
  • 或者它是一个有效的wav文件

你说的这个MediaPlayer是什么?我不知道它是否是一个对象,或者它是否是一个应用程序,或者它可能是什么……好吧,没关系。我唯一需要的是使用raw文件夹作为源文件夹来调用wav文件,但它说raw无法解析。这将很难帮助您。我们甚至不知道你在说什么语言。好吧,我知道没有足够的细节。这是eclipse adt。我在res中创建了raw文件夹。它不可见。为了您的缘故,您可能希望为您的问题添加更多细节。比如你使用哪种语言,你使用哪种语言版本,你使用哪种框架来支付媒体费用,这些都是有帮助的。我想做的是播放一个短的wav声音。通过使用7个不同的短音符,我将创建一个简单的钢琴应用程序。这本来是件容易的事,但我做不到。显然,soundpool方法更适合于短文件。但是我发现的样品不起作用。请问你有什么例子吗?如果我可以通过点击一个按钮来播放一个声音,我想我也可以播放其中的7个。这是非常重要的,如果你能告诉我一个方法,我将非常感激
05-13 23:04:29.374: E/MediaPlayer(469): Unable to to create media player
05-13 23:04:29.384: D/MediaPlayer(469): create failed:
05-13 23:04:29.384: D/MediaPlayer(469): java.io.IOException: setDataSourceFD failed.: status=0x80000000
05-13 23:04:29.384: D/MediaPlayer(469):     at android.media.MediaPlayer.setDataSource(Native Method)
05-13 23:04:29.384: D/MediaPlayer(469):     at android.media.MediaPlayer.create(MediaPlayer.java:645)
05-13 23:04:29.384: D/MediaPlayer(469):     at com.example.instrumentapp.MainActivity$1.onClick(MainActivity.java:34)
05-13 23:04:29.384: D/MediaPlayer(469):     at android.view.View.performClick(View.java:2408)
05-13 23:04:29.384: D/MediaPlayer(469):     at android.view.View$PerformClick.run(View.java:8816)
05-13 23:04:29.384: D/MediaPlayer(469):     at android.os.Handler.handleCallback(Handler.java:587)
05-13 23:04:29.384: D/MediaPlayer(469):     at android.os.Handler.dispatchMessage(Handler.java:92)
05-13 23:04:29.384: D/MediaPlayer(469):     at android.os.Looper.loop(Looper.java:123)
05-13 23:04:29.384: D/MediaPlayer(469):     at android.app.ActivityThread.main(ActivityThread.java:4627)
05-13 23:04:29.384: D/MediaPlayer(469):     at java.lang.reflect.Method.invokeNative(Native Method)
05-13 23:04:29.384: D/MediaPlayer(469):     at java.lang.reflect.Method.invoke(Method.java:521)
05-13 23:04:29.384: D/MediaPlayer(469):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-13 23:04:29.384: D/MediaPlayer(469):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-13 23:04:29.384: D/MediaPlayer(469):     at dalvik.system.NativeStart.main(Native Method)
05-13 23:04:29.384: D/AndroidRuntime(469): Shutting down VM
05-13 23:04:29.384: W/dalvikvm(469): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
05-13 23:04:29.394: E/AndroidRuntime(469): FATAL EXCEPTION: main
05-13 23:04:29.394: E/AndroidRuntime(469): java.lang.NullPointerException
05-13 23:04:29.394: E/AndroidRuntime(469):  at com.example.instrumentapp.MainActivity$1.onClick(MainActivity.java:35)
05-13 23:04:29.394: E/AndroidRuntime(469):  at android.view.View.performClick(View.java:2408)
05-13 23:04:29.394: E/AndroidRuntime(469):  at android.view.View$PerformClick.run(View.java:8816)
05-13 23:04:29.394: E/AndroidRuntime(469):  at android.os.Handler.handleCallback(Handler.java:587)
05-13 23:04:29.394: E/AndroidRuntime(469):  at android.os.Handler.dispatchMessage(Handler.java:92)
05-13 23:04:29.394: E/AndroidRuntime(469):  at android.os.Looper.loop(Looper.java:123)
05-13 23:04:29.394: E/AndroidRuntime(469):  at android.app.ActivityThread.main(ActivityThread.java:4627)
05-13 23:04:29.394: E/AndroidRuntime(469):  at java.lang.reflect.Method.invokeNative(Native Method)
05-13 23:04:29.394: E/AndroidRuntime(469):  at java.lang.reflect.Method.invoke(Method.java:521)
05-13 23:04:29.394: E/AndroidRuntime(469):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-13 23:04:29.394: E/AndroidRuntime(469):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-13 23:04:29.394: E/AndroidRuntime(469):  at dalvik.system.NativeStart.main(Native Method)
  public static MediaPlayer create(Context context, int resid) {
    try {
        AssetFileDescriptor afd = context.getResources().openRawResourceFd(resid);
        if (afd == null) return null;

        MediaPlayer mp = new MediaPlayer();
        mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
        afd.close();
        mp.prepare();
        return mp;
    } catch (IOException ex) {
        Log.d(TAG, "create failed:", ex);
        // fall through
    } catch (IllegalArgumentException ex) {
        Log.d(TAG, "create failed:", ex);
       // fall through
    } catch (SecurityException ex) {
        Log.d(TAG, "create failed:", ex);
        // fall through
    }
    return null;
}