package com.ingenvis.omkareshwar;
公共类MantraActivity扩展ActionBarActivity实现OnPreparedListener,MediaController.MediaPlayerControl,View.OnClickListener { android.support.v7.app.ActionBar actionBar; ScrollView sv; private static final String TAG =“AudioPlayer”; 私人MediaPlayer mediaPlayer; private MediaController mediaController; private String audioFile; private Handler handler = new Handler(); int length,length1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mantra);
Log.d("Reached here ", "Reached here");
// Button playButton = (Button)findViewById(R.id.button2);
TextView headingMantra2 = (TextView)findViewById(R.id.textHeading);
TextView mantra2 = (TextView)findViewById(R.id.text_Mantra);
TextView meaningTitleMantra2 = (TextView)findViewById(R.id.text_mean);
TextView meaningMantra2 = (TextView)findViewById(R.id.textMeaning);
sv = (ScrollView)findViewById(R.id.scrollView1);
sv.scrollTo(0, 0);
actionBar = getSupportActionBar();
actionBar.setTitle("मंत्र ");
actionBar.setIcon(R.drawable.om);
actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#707069")));
mediaPlayer = MediaPlayer.create(this, R.raw.record20140514130231);
mediaPlayer.setOnPreparedListener(this);
mediaController = new MediaController(this);
// mediaController.show();
headingMantra2.setOnClickListener(this);
mantra2.setOnClickListener(this);
actionBar.setDisplayHomeAsUpEnabled(true);
meaningTitleMantra2.setOnClickListener(this);
meaningMantra2.setOnClickListener(this);
actionBar.setHomeButtonEnabled(true);
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()) {
case android.R.id.home: {
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivityIfNeeded(intent, 0);
return true;
}
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onPause(){
super.onPause();
pause();
}
@Override
public void onResume(){
super.onResume();
resume();
}
@Override
public boolean onTouchEvent(MotionEvent event){
mediaController.show();
return false;
}
@Override
public void onClick(View v) {
if(mediaPlayer.isPlaying())
mediaController.show();
}
@Override
protected void onStop(){
super.onStop();
mediaController.hide();
mediaPlayer.stop();
mediaPlayer.release();
// mediaPlayer = null;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.mantra, menu);
return true;
}
@Override
public void onPrepared(MediaPlayer mp) {
mediaController.setMediaPlayer(this);
mediaController.setAnchorView(findViewById(R.id.button2));
}
@Override
public void start() {
mediaPlayer.start();
}
public void play(View v){
start();
}
@Override
public void pause() {
mediaPlayer.pause();
SharedPreferences prefs = this.getSharedPreferences("<com.ingenvis.omkareshwar>", Context.MODE_PRIVATE);
Editor editor = prefs.edit();
mediaPlayer.pause();
length = mediaPlayer.getCurrentPosition();
length1 = mediaPlayer.getDuration();
editor.putInt("length", length); //assuming length is an integer
editor.putInt("length1", length);
editor.commit();
}
public void resume(){
SharedPreferences prefs = this.getSharedPreferences("<com.ingenvis.omkareshwar>", Context.MODE_PRIVATE);
int length = prefs.getInt("length", 0); //0 is the default value
// mediaPlayer.start();
mediaPlayer.seekTo(length);
}
@Override
public int getDuration() {
return mediaPlayer.getDuration();
}
@Override
public int getCurrentPosition() {
return mediaPlayer.getCurrentPosition();
}
@Override
public void seekTo(int pos) {
mediaPlayer.seekTo(pos);
}
@Override
public boolean isPlaying() {
return mediaPlayer.isPlaying();
}
@Override
public int getBufferPercentage() {
return 0;
}
@Override
public boolean canPause() {
return true;
}
@Override
public boolean canSeekBackward() {
return true;
}
@Override
public boolean canSeekForward() {
return true;
}
@Override
public int getAudioSessionId() {
return 0;
}
public void onBackPressed(){
// mediaPlayer.stop();
finish();
}
}
答案 0 :(得分:1)
您可以使用SharedPreferences存储和检索length
的值。
这是您修改后的onPause()
@Override
public void pause() {
SharedPreferences prefs = this.getSharedPreferences("<com.your.app>", Context.MODE_PRIVATE);
Editor editor = prefs.edit();
mediaPlayer.pause();
length = mediaPlayer.getCurrentPosition();
length1 = mediaPlayer.getDuration();
editor.putInt("length", length); //assuming length is an integer
editor.putInt("length1", length);
editor.commit();
}
您可以在onResume()
这样的
public void resume(){
SharedPreferences prefs = this.getSharedPreferences("<com.your.app>", Context.MODE_PRIVATE);
int length = prefs.getInt("length", 0); //0 is the default value
mediaPlayer.start();
mediaPlayer.seekTo(length);
}
答案 1 :(得分:0)
在onPause()中,保存播放器的当前位置,例如在共享偏好中。在onResume()中,检索该值,然后使用MediaPlayer.seekTo()进行定位。
This developer.android.com link可能会为您提供更多见解。
@Override
protected void onPause() {
Log.d(App.TAG, "onPause called");
if(mMediaPlayer==null){
Log.d(App.TAG, "Returning from onPause because the mediaplayer is null");
super.onPause();
return;
}
// the OS is pausing us, see onResume() for resume logic
settings = getSharedPreferences(Dawdle.TAG, MODE_PRIVATE);
SharedPreferences.Editor ed = settings.edit();
mMediaPlayer.pause();
ed.putInt("LAST_POSITION", mMediaPlayer.getCurrentPosition()); // remember where we are
ed.putBoolean("PAUSED", true);
ed.commit();
Log.d(App.TAG, "LAST_POSITION saved:" + mMediaPlayer.getCurrentPosition());
super.onPause();
releaseMediaPlayer();
}
@Override
public void onResume() {
Log.d(App.TAG, "onResume called");
try {
if (mMediaPlayer==null){
setupMediaPlayer();
}
// if we were paused (set in this.onPause) then resume from the last position
settings = getSharedPreferences(Dawdle.TAG, MODE_PRIVATE);
if (settings.getBoolean("PAUSED", false)) {
// resume from the last position
startPosition= settings.getInt("LAST_POSITION", 0);
Log.d(App.TAG,"Seek to last position:" + startPosition);
}
mMediaPlayer.setDataSource(path);
mMediaPlayer.setDisplay(holder);
// this is key, the call will return immediately and notify this when the player is prepared through a callback to onPrepared
// so we do not block on the UI thread - do not call any media playback methods before the onPrepared callback
mMediaPlayer.prepareAsync();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void startVideoPlayback() {
Log.v(App.TAG, "startVideoPlayback at position:" + startPosition);
mMediaPlayer.seekTo(startPosition);
mMediaPlayer.start();
}