Android Mediaplayer

Android Mediaplayer,android,android-mediaplayer,Android,Android Mediaplayer,你好,我是android的新程序员。我有一个程序可以“播放”“暂停”和“停止”本地.mp3文件。我在这里找到了这个网站的信息来源 所以我在代码中发布,所有的东西看起来都很好,直到我真正点击play并得到一个错误 我试着读懂错误,但不知道它到底在说什么 我的错误是(logcat): 阶级 Xml 编辑修复程序: 当我把我原来的mp3转换成压缩格式时,它是如何在复制到原始文件夹的过程中被破坏的。所以我只是重新压缩了拷贝,然后砰的一声。一切正常!感谢@MattWolfe在调用其方法之前,找出第5

你好,我是android的新程序员。我有一个程序可以“播放”“暂停”和“停止”本地.mp3文件。我在这里找到了这个网站的信息来源

所以我在代码中发布,所有的东西看起来都很好,直到我真正点击play并得到一个错误

我试着读懂错误,但不知道它到底在说什么

我的错误是(logcat):

阶级

Xml


编辑修复程序:


当我把我原来的mp3转换成压缩格式时,它是如何在复制到原始文件夹的过程中被破坏的。所以我只是重新压缩了拷贝,然后砰的一声。一切正常!感谢@MattWolfe

在调用其方法之前,找出第53行上的内容并添加一个检查,以确保任何对象(位于左侧)都不为null。

在调用初始化mediaPlayer()的方法之前,您正在设置onClickListener。由于mediaPlayer未在onClickListener中初始化,因此会抛出NullPointerException


在onCreate中,在设置onClickListeners之前调用initMediaPlayer。

使用
MediaPlayer
s
create()
方法:


你的情况就是这样。有关解决问题的更多信息,请阅读本文档和本文档。

您的媒体资源是否正常?用一个uri试试看它是否有效(你可以使用一些在线mp3文件的url)

第53行是mediaPlayer.start()看不出有什么问题吗?用你自己的话说明将我的答案应用于你找到的行意味着什么。你的mediaPlayer为空,这意味着每当你创建mediaPlayer时,都会出现问题。^^^我知道这一点,chris我想看到的是我在整个项目中没有看到1个null?看起来你的mediaPlayer对象是null。从上面的代码中,我看不出这是怎么可能的。有没有其他你没有发布的代码(可能是关于Pause或onDestroy方法?@Mattwolve没有,就这些了。也不会对我产生任何影响。尝试更改:mediaPlayer=mediaPlayer.create(cookine.this,R.raw.cookine);for mediaPlayer=mediaPlayer.create(getApplicationContext(),R.raw.com)@Raykud同样的错误:
06-12 12:33:44.551:E/AndroidRuntime(5046):java.lang.NullPointerException 06-12 12:33:44.551:E/AndroidRuntime(5046):在com.reg.ihigh.Cocaine$1.onClick(Cocaine.java:54)
您能将文件更改为使用从中复制代码的示例应用程序中的文件吗?更改引用以同时使用另一个文件,并查看其是否有效。这并不重要,因为您不可能在调用initMediaPlayer之前单击,因为所有事件都会通过UI线程,而在onCreate中不会拾取事件。^^这些问题声音至少播放一次,我的问题甚至不会播放。不知道这是否重要?尝试记录create方法返回的内容。这会让你知道它是否成功,同样重要的是,在崩溃之前是否尝试过。你确定你的文件是有效的mp3吗?另外,您是在模拟器上测试还是在真实设备上测试?Emulator可能不支持此功能。@Reg试试Chris说的话。@Mattwolve Real device(droid x)和mp3文件在windows media player和vlc中播放。
06-12 12:02:38.810: E/AndroidRuntime(4190): FATAL EXCEPTION: main
06-12 12:02:38.810: E/AndroidRuntime(4190): java.lang.NullPointerException
06-12 12:02:38.810: E/AndroidRuntime(4190):atcom.reg.ihigh.Cocaine$1.onClick(Cocaine.java:53)
06-12 12:02:38.810: E/AndroidRuntime(4190): at android.view.View.performClick(View.java:2485)
06-12 12:02:38.810: E/AndroidRuntime(4190): at android.view.View$PerformClick.run(View.java:9089)
06-12 12:02:38.810: E/AndroidRuntime(4190): at android.os.Handler.handleCallback(Handler.java:587)
06-12 12:02:38.810: E/AndroidRuntime(4190): at android.os.Handler.dispatchMessage(Handler.java:92)
06-12 12:02:38.810: E/AndroidRuntime(4190): at android.os.Looper.loop(Looper.java:123)
06-12 12:02:38.810: E/AndroidRuntime(4190): at android.app.ActivityThread.main(ActivityThread.java:3806)
06-12 12:02:38.810: E/AndroidRuntime(4190): at java.lang.reflect.Method.invokeNative(Native Method)
06-12 12:02:38.810: E/AndroidRuntime(4190): at java.lang.reflect.Method.invoke(Method.java:507)
06-12 12:02:38.810: E/AndroidRuntime(4190): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
06-12 12:02:38.810: E/AndroidRuntime(4190): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
06-12 12:02:38.810: E/AndroidRuntime(4190): at dalvik.system.NativeStart.main(Native Method)
package com.reg.ihigh;

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class Cocaine extends Activity {
    MediaPlayer mediaPlayer;
     Button buttonPlayPause, buttonQuit;
     TextView textState;

     private int stateMediaPlayer;
     private final int stateMP_NotStarter = 0;
     private final int stateMP_Playing = 1;
     private final int stateMP_Pausing = 2;

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

          buttonPlayPause = (Button)findViewById(R.id.playButton);
          buttonQuit = (Button)findViewById(R.id.quitButton);
          textState = (TextView)findViewById(R.id.state);

          buttonPlayPause.setOnClickListener(buttonPlayPauseOnClickListener);
          buttonQuit.setOnClickListener(buttonQuitOnClickListener);

          initMediaPlayer();

      }

      private void initMediaPlayer()
      {
       mediaPlayer = new  MediaPlayer();
          mediaPlayer = MediaPlayer.create(Cocaine.this, R.raw.cocaine);
          stateMediaPlayer = stateMP_NotStarter;
          textState.setText("- IDLE -");
      }

      Button.OnClickListener buttonPlayPauseOnClickListener
       = new Button.OnClickListener(){

       @Override
       public void onClick(View v) {
        // TODO Auto-generated method stub
        switch(stateMediaPlayer){
        case stateMP_NotStarter:
         mediaPlayer.start();
         buttonPlayPause.setText("Pause");
         textState.setText("- PLAYING -");
         stateMediaPlayer = stateMP_Playing;
         break;
        case stateMP_Playing:
         mediaPlayer.pause();
         buttonPlayPause.setText("Play");
         textState.setText("- PAUSING -");
         stateMediaPlayer = stateMP_Pausing;
         break;
        case stateMP_Pausing:
         mediaPlayer.start();
         buttonPlayPause.setText("Pause");
         textState.setText("- PLAYING -");
         stateMediaPlayer = stateMP_Playing;
         break;
        }

       }
      };

      Button.OnClickListener buttonQuitOnClickListener
     = new Button.OnClickListener(){

      @Override
      public void onClick(View v) {
       // TODO Auto-generated method stub
       mediaPlayer.stop();
       mediaPlayer.release();
       finish();
      } 
      };

}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"

/>
<Button
android:id="@+id/playButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"

android:text="Play"/>
<Button
android:id="@+id/quitButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"

android:text="Quit"/>
<TextView
android:id="@+id/state"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
Returns a MediaPlayer object, or null if creation failed