Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.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 错误(-19,0)Mediaplayer_Android_Android Mediaplayer - Fatal编程技术网

Android 错误(-19,0)Mediaplayer

Android 错误(-19,0)Mediaplayer,android,android-mediaplayer,Android,Android Mediaplayer,我正在尝试制作一个在点击按钮时播放特定声音的应用程序,我得到了100个静态创建的按钮,而不是数组或任何东西,我将声音正确分配给了每个按钮问题是,在播放了许多按钮后,它给了我一个错误,我的问题是 我有没有可能从这堆乱七八糟的代码中切换到通用代码 无论如何,我可以停止得到这个错误和声音,继续在每个按钮上工作,无论播放多少声音?? 下面是我的代码: package com.example.buttonsdemo; import android.media.MediaPlayer; import

我正在尝试制作一个在点击按钮时播放特定声音的应用程序,我得到了100个静态创建的按钮,而不是数组或任何东西,我将声音正确分配给了每个按钮问题是,在播放了许多按钮后,它给了我一个错误,我的问题是

我有没有可能从这堆乱七八糟的代码中切换到通用代码 无论如何,我可以停止得到这个错误和声音,继续在每个按钮上工作,无论播放多少声音?? 下面是我的代码:

   package com.example.buttonsdemo;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


       Button messageButton_0 = (Button) findViewById(R.id.akali);
       final MediaPlayer mpButtonClick_0= MediaPlayer.create(this,R.raw.akali) ;
       messageButton_0.setOnClickListener(new View.OnClickListener() {

           @Override
           public void onClick(View arg0) {

              mpButtonClick_0.start();
              if(!mpButtonClick_0.isPlaying()){
                 mpButtonClick_0.stop();
                 mpButtonClick_0.release();
              }

     }  
});
它继续像这样为100多个按钮或任何帮助plz

Logcat:
03-04 16:21:21.925: E/MediaPlayer(5769): error (-19, 0)
03-04 16:21:21.925: E/MediaPlayer(5769): stop called in state 0
03-04 16:21:21.925: E/MediaPlayer(5769): error (-38, 0)
03-04 16:21:22.067: W/MediaPlayer(5769): mediaplayer went away with unhandled events
03-04 16:21:22.067: W/MediaPlayer(5769): mediaplayer went away with unhandled events
03-04 16:21:22.115: D/AndroidRuntime(5769): Shutting down VM
03-04 16:21:22.115: W/dalvikvm(5769): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
03-04 16:21:22.145: E/AndroidRuntime(5769): FATAL EXCEPTION: main
03-04 16:21:22.145: E/AndroidRuntime(5769): java.lang.IllegalStateException
03-04 16:21:22.145: E/AndroidRuntime(5769):     at android.media.MediaPlayer._start(Native Method)
03-04 16:21:22.145: E/AndroidRuntime(5769):     at android.media.MediaPlayer.start(MediaPlayer.java:1025)
03-04 16:21:22.145: E/AndroidRuntime(5769):     at com.example.buttonsdemo.MainActivity$39.onClick(MainActivity.java:766)
03-04 16:21:22.145: E/AndroidRuntime(5769):     at android.view.View.performClick(View.java:4204)
03-04 16:21:22.145: E/AndroidRuntime(5769):     at android.view.View$PerformClick.run(View.java:17355)
03-04 16:21:22.145: E/AndroidRuntime(5769):     at android.os.Handler.handleCallback(Handler.java:725)
03-04 16:21:22.145: E/AndroidRuntime(5769):     at android.os.Handler.dispatchMessage(Handler.java:92)
03-04 16:21:22.145: E/AndroidRuntime(5769):     at android.os.Looper.loop(Looper.java:137)
03-04 16:21:22.145: E/AndroidRuntime(5769):     at android.app.ActivityThread.main(ActivityThread.java:5041)
03-04 16:21:22.145: E/AndroidRuntime(5769):     at java.lang.reflect.Method.invokeNative(Native Method)
03-04 16:21:22.145: E/AndroidRuntime(5769):     at java.lang.reflect.Method.invoke(Method.java:511)
03-04 16:21:22.145: E/AndroidRuntime(5769):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-04 16:21:22.145: E/AndroidRuntime(5769):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-04 16:21:22.145: E/AndroidRuntime(5769):     at dalvik.system.NativeStart.main(Native Method)

您需要查看和的文档


您可能正在调用MediPlayer,而它处于无效状态{Idle,Initialized,Stopped,Error},这将导致异常

您需要查看和的文档


您可能正在调用MediPlayer,而它处于无效状态{Idle,Initialized,Stopped,Error},这将导致异常

从错误消息中可以明显看出,当MediaPlayer处于错误状态时,会调用它的start。从你的留言中

03-04 16:21:21.925: E/MediaPlayer(5769): stop called in state 0
状态0对应于媒体\播放器\状态\错误

错误编号-38对应于MediaPlayer::start的无效_操作。请注意,无效的_操作被设置为-ENOSYS,这是errno.h中的-38


您可能需要调查MediaPlayer处于错误状态的原因。

从错误消息中可以看出,当MediaPlayer处于错误状态时,会调用启动MediaPlayer。从你的留言中

03-04 16:21:21.925: E/MediaPlayer(5769): stop called in state 0
状态0对应于媒体\播放器\状态\错误

错误编号-38对应于MediaPlayer::start的无效_操作。请注意,无效的_操作被设置为-ENOSYS,这是errno.h中的-38


您可能需要调查MediaPlayer处于错误状态的原因。

您可能需要添加logcat,以查看您到底遇到了什么样的错误刚刚添加了logcatError-19,如果我没有弄错的话,应该不会出现错误。这可能会发生,例如,如果MediaPlayer无法创建基础音轨,如果setDataSource失败,或者在初始化MediaPlayer之前调用了某些方法。因此,您建议我尝试播放X个按钮,但不要将它们重叠??您可能需要添加logcat,以查看得到的错误类型。如果我没有错的话,只需添加logcatError-19就不应该出现错误。这可能会发生,例如,如果MediaPlayer无法创建基础音轨,如果setDataSource失败,或者您在初始化MediaPlayer之前调用了某些方法。因此,您建议我尝试播放X个按钮,但不要重叠它们??我相信,因为播放完成后它不会删除创建的文件,我不知道如何做,我尝试了.release和.stop、.reset,但仍然没有任何结果,因为我猜它们在onclick方法中,当文件播放完成时,您将收到一个onCompletionListener回调,在该回调中,您可以调用stop和release来释放MediaPlayer,然后您可以创建播放器的新实例。@KarimBibars您真的应该看看状态图。MediaPlayer的流程并不像你想象的那么简单。你能给我一个关于如何在之前的代码中使用oncompletionlistner的例子吗?你可以参考这个问题:我相信,因为播放完成后它不会删除创建的文件,我不知道如何做,我尝试了.release和.stop,.reset,但仍然没有,因为我猜它们在onclick方法中。当文件播放完成时,您将收到onCompletionListener回调,在该回调中,您可以调用停止和释放来释放MediaPlayer,之后,您可以创建播放器的新实例。@KarimBibars您真的应该看看状态图。MediaPlayer的流程并不像你想象的那么简单。你能给我一个关于如何在之前的代码中使用oncompletionlistner的例子吗?你可以参考这个问题: