我有两项活动,家庭作业和更接近。我在家庭作业中播放了一首歌,但是当按下按钮时,媒体播放器会暂停,然后打开更近的按钮。在家庭作业的onResume功能中,我试图再次启动媒体播放器,但没有播放声音。任何人都可以帮我解决这个问题吗?
package com.cis.lab4;
import java.io.IOException;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.content.res.AssetFileDescriptor;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class Homework extends Activity {
final MediaPlayer mediaplayer = new MediaPlayer();
int media_length;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_homework);
setContentView(R.layout.activity_homework);
AssetFileDescriptor afd;
try {
afd = getAssets().openFd("rev.mp3");
mediaplayer.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
mediaplayer.prepare();
} catch (IOException e) {
e.printStackTrace();
}
mediaplayer.start();
Button next = (Button) findViewById(R.id.homeworkContinue);
final Intent openCloser = new Intent(this, EndActivity.class);
next.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
mediaplayer.pause();
media_length = mediaplayer.getCurrentPosition();
startActivity(openCloser);
}
});
}
public void onResume(Bundle savedInstanceState){
super.onResume();
mediaplayer.seekTo(media_length);
mediaplayer.start();
}
}
答案 0 :(得分:3)
尝试在活动的onPause()
方法中保存媒体状态,而不是在onClick()
事件中保存。这保证了每次调用onResume()
时onPause()
都将在此之前被调用(活动第一次运行除外,在这种情况下onResume()
将在onStart()
之后被调用{1}}。
答案 1 :(得分:0)
如果媒体播放器为空,为什么不尝试检查onResume()
。
如果为null,则需要调用mediaPlayer.prepare()
。
或许把这段代码放入它自己的函数中:
try {
afd = getAssets().openFd("rev.mp3");
mediaplayer.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
mediaplayer.prepare();
} catch (IOException e) {
e.printStackTrace();
}
这样您就可以在onResume()
/ onCreate()
中调用它。在onResume()
尝试进行空检查。如果它为null,则调用您的新函数来准备mediaPlayer。