gpt4 book ai didi

android - Android 媒体播放器上的错误

转载 作者:行者123 更新时间:2023-11-29 17:14:32 25 4
gpt4 key购买 nike

目前我正在研究音乐播放器。请帮我解决这些错误

public class MainActivity extends Activity {

Button playb,pauseb,stopb;

SeekBar seeker;
Handler seekhandler;
MediaPlayer player;

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

player=new MediaPlayer();//.create(MainActivity.this, R.raw.spaceman);

//Interface between code and xml
playb=(Button)findViewById(R.id.play_button);
stopb=(Button)findViewById(R.id.stop_button);
pauseb=(Button)findViewById(R.id.pause_button);
seeker=(SeekBar)findViewById(R.id.seekBar);


try {
player.prepare();
} catch (IOException e) {
Toast.makeText(getApplicationContext(),(CharSequence) e,Toast.LENGTH_SHORT ).show();
}
//Code for Play Button
playb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view){
player.stop();
player.reset();
seeker.setProgress(0);
try {
player.prepare();
} catch (IOException e) {
Toast.makeText(getApplicationContext(), (CharSequence) e,Toast.LENGTH_SHORT).show();

}
player.start();
seeker.setMax(player.getDuration());
}
});


//Code for Pause button
pauseb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
player.pause();
}
});

//code for Stop button
stopb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

player.reset();
}
});


//Code for seekbar change listner
seeker.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {

}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {

}

@Override
public void onStopTrackingTouch(SeekBar seekBar) {

}
});

Runnable runnable =new Runnable() {
@Override
public void run() {
seeker.setProgress(player.getCurrentPosition());
seekhandler.postDelayed(this,1000);

}
};
}
}

错误:

09-19 20:16:15.342 25242-25242/main.deviac.com.seekbar E/AndroidRuntime: FATAL EXCEPTION: main Process: main.deviac.com.seekbar, PID: 25242 java.lang.RuntimeException: Unable to start activity ComponentInfo{main.deviac.com.seekbar/main.deviac.com.seekbar.MainActivity}: java.lang.IllegalStateException at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2452) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2535) at android.app.ActivityThread.access$900(ActivityThread.java:154) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1380) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:152) at android.app.ActivityThread.main(ActivityThread.java:5497) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) Caused by: java.lang.IllegalStateException at android.media.MediaPlayer._prepare(Native Method) at android.media.MediaPlayer.prepare(MediaPlayer.java:1158) at main.deviac.com.seekbar.MainActivity.onCreate(MainActivity.java:42) at android.app.Activity.performCreate(Activity.java:6285) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2405) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2535)  at android.app.ActivityThread.access$900(ActivityThread.java:154)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1380)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:152)  at android.app.ActivityThread.main(ActivityThread.java:5497)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  09-19 20:16:15.344 25242-25242/main.deviac.com.seekbar D/AppTracker: App Event: crash 09-19 20:16:28.590 25409-25409/main.deviac.com.seekbar W/System: ClassLoader referenced unknown path: /data/app/main.deviac.com.seekbar-2/lib/arm64 09-19 20:16:28.669 25409-25409/main.deviac.com.seekbar W/System: ClassLoader referenced unknown path: /data/app/main.deviac.com.seekbar-2/lib/arm64

我将 mp3 文件 (spaceman) 保存在 res 目录下的 raw 文件夹中

最佳答案

欢迎使用 Android 的媒体播放器,或者我称之为“基于状态的 hell ”。

您最初的错误是由准备媒体播放器引起的,如果您在本地播放音频文件,则无需准备媒体播放器,因为 create() 方法(如果您使用此方法创建媒体播放器)会自动准备。还有其他基于媒体播放器状态的错误,但下面的代码应该可以修复它们。

现在忽略 seekbar 代码(在添加 seekbar 功能之前,我会让这个基本的播放、暂停和停止代码工作),你的播放、暂停和停止按钮的代码应该是这样的:

    public class MainActivity extends Activity {

Button playb, pauseb, stopb;

MediaPlayer mediaPlayer;

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

//Interface between code and xml
playb = (Button) findViewById(R.id.play_button);
stopb = (Button) findViewById(R.id.stop_button);
pauseb = (Button) findViewById(R.id.pause_button);

//Code for Play Button
playb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mediaPlayer = MediaPlayer.create(MainActivity.this, R.raw.file_to_play.mp3);
mediaPlayer.start();

}
});


//Code for Pause button
pauseb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mediaPlayer != null && mediaPlayer.isPlaying()) {
mediaPlayer.pause();
} else {
mediaPlayer.start();
}

}
});

//code for Stop button
stopb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

if (mediaPlayer != null && mediaPlayer.isPlaying()) {
mediaPlayer.stop();
mediaPlayer.reset();
}
}
});
}

关于android - Android 媒体播放器上的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39576213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com