Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.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
Java Mediaplayer不适用于所有按钮_Java_Android_Button_Media Player - Fatal编程技术网

Java Mediaplayer不适用于所有按钮

Java Mediaplayer不适用于所有按钮,java,android,button,media-player,Java,Android,Button,Media Player,我正在研制一款多点触控鼓。我使用了一个扩展按钮的内部类: package dubstep.brendan; import android.content.Context; import android.media.MediaPlayer; import android.util.AttributeSet; import android.view.MotionEvent; import android.widget.Button; public class TestButton extends

我正在研制一款多点触控鼓。我使用了一个扩展按钮的内部类:

package dubstep.brendan;

import android.content.Context;
import android.media.MediaPlayer;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.Button;

public class TestButton extends Button {
private MediaPlayer mpButtonClick =MediaPlayer.create(getContext(),R.raw.firework);


public TestButton(final Context context, final AttributeSet attrs) {
    super(context, attrs);
    // TODO Auto-generated constructor stub
}

@Override
public boolean onTouchEvent(final MotionEvent event) {

    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        mpButtonClick.start();



    }
    if (event.getAction()==MotionEvent.ACTION_UP){
        mpButtonClick.pause();
        mpButtonClick.reset();
        mpButtonClick = MediaPlayer.create(getContext(), R.raw.firework);

    }
    return super.onTouchEvent(event);
}
}
我还有12个扩展按钮和使用mediaplayer的类,但其中只有7个可以工作。其余的人没有。虽然如果我从7个工作类中的任何一个删除mediaplayer对象,其中一个不工作的类就会开始工作

此外,我的日志中还出现以下错误:

MediaPlayer(226):   info/warning (1, 26)
PlayerDriver(30):   Command PLAYER_PREPARE completed with an error or info             PVMFErrResource
MediaPlayer(226):   error (1, -17)
PlayerDriver(30):   PVMFInfoErrorHandlingComplete
MediaPlayer(226):   create failed:
MediaPlayer(226):   java.io.IOException: Prepare failed.: status=0x1
MediaPlayer(226):   at android.media.MediaPlayer.prepare(Native Method)
MediaPlayer(226):   at android.media.MediaPlayer.create(MediaPlayer.java:644)
MediaPlayer(226):   at dubstep.brendan.TestButton8.<init>(TestButton8.java:11)
MediaPlayer(226):   at java.lang.reflect.Constructor.constructNative(Native Method)
MediaPlayer(226):   at java.lang.reflect.Constructor.newInstance(Constructor.java:446)
MediaPlayer(226):   at android.view.LayoutInflater.createView(LayoutInflater.java:500)
MediaPlayer(226):   at  android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565)
MediaPlayer(226):   at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
MediaPlayer(226):   at android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
MediaPlayer(226):   at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
MediaPlayer(226):   at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
MediaPlayer(226):   at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
MediaPlayer(226):   at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198)
MediaPlayer(226):   at android.app.Activity.setContentView(Activity.java:1622)
MediaPlayer(226):   at      dubstep.brendan.MultitouchtestActivity.onCreate(MultitouchtestActivity.java:33)
MediaPlayer(226):   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
MediaPlayer(226):   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
MediaPlayer(226):   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
MediaPlayer(226):   at android.app.ActivityThread.access$2200(ActivityThread.java:119)
MediaPlayer(226):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
MediaPlayer(226):   at android.os.Handler.dispatchMessage(Handler.java:99)
MediaPlayer(226):   at android.os.Looper.loop(Looper.java:123)
MediaPlayer(226):   at android.app.ActivityThread.main(ActivityThread.java:4363)
MediaPlayer(226):   at java.lang.reflect.Method.invokeNative(Native Method)
MediaPlayer(226):   at java.lang.reflect.Method.invoke(Method.java:521)
MediaPlayer(226):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
MediaPlayer(226):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
MediaPlayer(226):   at dalvik.system.NativeStart.main(Native Method)
MediaPlayer(226):信息/警告(1,26)
PlayerDriver(30):命令玩家准备完成,但出现错误或信息PVMFErrResource
MediaPlayer(226):错误(1,-17)
PlayerDriver(30):PVMFInfoErrorHandlingComplete
MediaPlayer(226):创建失败:
MediaPlayer(226):java.io.IOException:准备失败:状态=0x1
MediaPlayer(226):在android.media.MediaPlayer.prepare(本机方法)
MediaPlayer(226):在android.media.MediaPlayer.create上(MediaPlayer.java:644)
MediaPlayer(226):位于dubstep.brendan.TestButton8.(TestButton8.java:11)
MediaPlayer(226):位于java.lang.reflect.Constructor.constructNative(本机方法)
MediaPlayer(226):位于java.lang.reflect.Constructor.newInstance(Constructor.java:446)
MediaPlayer(226):位于android.view.LayoutInflater.createView(LayoutInflater.java:500)
MediaPlayer(226):位于android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565)
MediaPlayer(226):位于android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
MediaPlayer(226):位于android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
MediaPlayer(226):在android.view.LayoutInflater.inflate(LayoutInflater.java:407)
MediaPlayer(226):在android.view.LayoutInflater.inflate(LayoutInflater.java:320)
MediaPlayer(226):在android.view.LayoutInflater.inflate(LayoutInflater.java:276)
MediaPlayer(226):位于com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198)
MediaPlayer(226):位于android.app.Activity.setContentView(Activity.java:1622)
MediaPlayer(226):位于dubstep.brendan.multi-touchtestactivity.onCreate(multi-touchtestactivity.java:33)
MediaPlayer(226):位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
MediaPlayer(226):位于android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
MediaPlayer(226):位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
MediaPlayer(226):位于android.app.ActivityThread.access$2200(ActivityThread.java:119)
MediaPlayer(226):位于android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
MediaPlayer(226):位于android.os.Handler.dispatchMessage(Handler.java:99)
MediaPlayer(226):位于android.os.Looper.loop(Looper.java:123)
MediaPlayer(226):位于android.app.ActivityThread.main(ActivityThread.java:4363)
MediaPlayer(226):位于java.lang.reflect.Method.Invokenactive(本机方法)
MediaPlayer(226):位于java.lang.reflect.Method.invoke(Method.java:521)
MediaPlayer(226):位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
MediaPlayer(226):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
MediaPlayer(226):位于dalvik.system.NativeStart.main(本机方法)

请注意,我的第八个按钮的“TestButton8”类有一个错误,后面的所有类也有相同的问题,正如我前面提到的,如果我删除mediaplayer对象,例如,如果我从上面的TestButton类中删除mediaplayer,“TestButton8”类将开始工作。为什么会发生这种情况?

我没有解决的办法,但是你可能想考虑一个鼓垫的<代码>声库< /代码>,我认为这是更合适的。mediaplayer是一个相当重的对象,而SoundPool应该更适合同时发出多个短声音。谢谢你的回复!我确实试过soundpool,但由于一些奇怪的原因,我不能在button类中使用它。你能给我举个例子吗?也许我做错了。我没有解决的办法,但是你可能想考虑一个鼓垫的<代码>声库< /代码>,我认为它更合适。mediaplayer是一个相当重的对象,而SoundPool应该更适合同时发出多个短声音。谢谢你的回复!我确实试过soundpool,但由于一些奇怪的原因,我不能在button类中使用它。你能给我举个例子吗?也许我做错了。