java - Android 应用程序强制关闭 SD 卡音频加载

标签 java android media-player

我正在尝试加载存储在我的 SD 卡上的 mp3 文件。我使用的是 HTC One 手机,这就是为什么这条路径看起来很有趣,但我 90% 是正确的。

有人可以帮我弄清楚为什么当我启动 Activity page2.java 时应用程序会强制关闭吗?

这是我的代码

   public class page2 extends Activity {
    MediaPlayer mediaPlayer;

    boolean isPlaying = false;  


    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.page2);

        try {

            mediaPlayer.setDataSource("/storage/emulated/0/Audio/sounds/first.mp3");
        } catch (IllegalArgumentException | SecurityException
                | IllegalStateException | IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

         mediaPlayer.start();

        final ImageView Play_button = (ImageView)findViewById(R.id.playbutton);


                Play_button.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                  if(isPlaying){
                      Play_button.setImageResource(R.drawable.stopicon);

                       isPlaying = false;

                  }else {
                      Play_button.setImageResource(R.drawable.playicon);


                       isPlaying = true;
                  }
                 }
                });

    }







}

这是我的日志

05-19 21:33:54.337: I/dalvikvm-heap(23333): Grow heap (frag case) to 20.389MB for 7322452-byte allocation
05-19 21:33:54.417: I/dalvikvm-heap(23333): Grow heap (frag case) to 27.376MB for 7322452-byte allocation
05-19 21:33:54.497: I/dalvikvm-heap(23333): Grow heap (frag case) to 34.365MB for 7322452-byte allocation
05-19 21:33:55.438: I/dalvikvm-heap(23333): Grow heap (frag case) to 129.877MB for 26873872-byte allocation
05-19 21:33:56.649: I/dalvikvm-heap(23333): Grow heap (frag case) to 155.560MB for 26873872-byte allocation
05-19 21:33:56.870: I/dalvikvm-heap(23333): Grow heap (frag case) to 164.561MB for 9437200-byte allocation
05-19 21:33:56.940: W/dalvikvm(23333): threadid=1: thread exiting with uncaught exception (group=0x416a0e18)
05-19 21:33:56.950: E/AndroidRuntime(23333): FATAL EXCEPTION: main
05-19 21:33:56.950: E/AndroidRuntime(23333): Process: com.example.app, PID: 23333
05-19 21:33:56.950: E/AndroidRuntime(23333): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.app/com.example.app.page2}: java.lang.NullPointerException
05-19 21:33:56.950: E/AndroidRuntime(23333):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2596)
05-19 21:33:56.950: E/AndroidRuntime(23333):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2653)
05-19 21:33:56.950: E/AndroidRuntime(23333):    at android.app.ActivityThread.access$800(ActivityThread.java:156)
05-19 21:33:56.950: E/AndroidRuntime(23333):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1355)
05-19 21:33:56.950: E/AndroidRuntime(23333):    at android.os.Handler.dispatchMessage(Handler.java:102)
05-19 21:33:56.950: E/AndroidRuntime(23333):    at android.os.Looper.loop(Looper.java:157)
05-19 21:33:56.950: E/AndroidRuntime(23333):    at android.app.ActivityThread.main(ActivityThread.java:5872)
05-19 21:33:56.950: E/AndroidRuntime(23333):    at java.lang.reflect.Method.invokeNative(Native Method)
05-19 21:33:56.950: E/AndroidRuntime(23333):    at java.lang.reflect.Method.invoke(Method.java:515)
05-19 21:33:56.950: E/AndroidRuntime(23333):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1069)
05-19 21:33:56.950: E/AndroidRuntime(23333):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:885)
05-19 21:33:56.950: E/AndroidRuntime(23333):    at dalvik.system.NativeStart.main(Native Method)
05-19 21:33:56.950: E/AndroidRuntime(23333): Caused by: java.lang.NullPointerException
05-19 21:33:56.950: E/AndroidRuntime(23333):    at com.example.app.page2.onCreate(page2.java:31)
05-19 21:33:56.950: E/AndroidRuntime(23333):    at android.app.Activity.performCreate(Activity.java:5312)
05-19 21:33:56.950: E/AndroidRuntime(23333):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1111)
05-19 21:33:56.950: E/AndroidRuntime(23333):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2552)
05-19 21:33:56.950: E/AndroidRuntime(23333):    ... 11 more
05-19 21:34:02.676: D/Process(23333): killProcess, pid=23333
05-19 21:34:02.676: D/Process(23333): com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException:131 java.lang.ThreadGroup.uncaughtException:693 java.lang.ThreadGroup.uncaughtException:690 

最佳答案

try 条件之前初始化 var 声明,如下所示:

mediaPlayer = new MediaPlayer();  

这将创建一个新的 MediaPlayer,由之前创建的 var 检索。

关于java - Android 应用程序强制关闭 SD 卡音频加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23746876/

相关文章:

Android mediaplayer onSeekComplete 未被调用

java - 在 Java 中一次从控制台读取一个单词

java - 使用nginx和memcached优化网站有哪些经验?

android - Libgdx中 Sprite 部分重叠检测

android - MikeOrtiz 的 TouchImageView 用于编辑原始图像

android - 如何设置 BottomNavigationBar 菜单项之间的间距相等?

Android MediaPlayer 文件的完整路径

c# - 如何在 C# 中获取播放音频(不是系统音量)的软件中的音量?

java - 无法接收 UDP 数据报

java - 如何在android中包装alertdialog?