PDA

View Full Version : حرکت نکردن seekbar به هنگام پخش صدا در MediaController



hmahdavi921
دوشنبه 30 شهریور 1394, 17:58 عصر
سلام
من در پروژم میخوام یک فایل صوتی رو با ویگت mediacontroller خود اندروید پخش کنم.در کدی که نوشتم فایل صوتی رو از مموری گوشی میخونه و mediacontroller در صفحه نشون داده میشه و میتونم صدا رو پخش کنم ، جلو و عقب ببرم . اما یک مشکل وجود داره اونم این که seekbar خود mediacontroller به هنگام پخش صدا حرکت نمیکنه و تایمر نشان دهنده زمان فعلی صدا هم تغییر نمیکنه اگر seekbar رو جلو عقب ببریم تایمر درست کار میکنه . یک نکته ای که لازم میدونم بگم اینه که در فایل xml اکتیویتی کد یک mediacontroller رو اضافه کردم و به هنگام تعریف mediacontroller از این کد استفاده کردم:



mController = (MediaController)findViewById(R.id.mediaController 1);



اگر نکته ای به نظرتون میاد لطفا راهنمایی کنین.

اینم کدهای اکتیویتی :

public class Show_subject_Activity extends Activity

implements MediaController.MediaPlayerControl, MediaPlayer.OnBufferingUpdateListener {
private RatingBar box_litner;
private MediaController mController;
private MediaPlayer mPlayer;
private Cursor cur;
int bufferPercent = 0;
DB_Nabege_helper db_nabege = new DB_Nabege_helper(this);
private String voicefileName;

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

box_litner = (RatingBar) findViewById(R.id.ratingBar1);
mController = (MediaController) findViewById(R.id.mediaController_voice);
mController.setAnchorView(null);
db_nabege.open();
cur = db_nabege.getSubject(Intent_values.id_subject);
voicefileName = getVoiceFileName();
db_nabege.close();
}

@Override
public void onResume() {
super.onResume();
mPlayer = new MediaPlayer();
// Set the audio data source
try {
mPlayer.setDataSource(this, getUriVoice());
mPlayer.prepare();
} catch (Exception e) {
e.printStackTrace();
}
// Set an image for the album cover
// coverImage.setImageResource(R.drawable.icon);

mController.setMediaPlayer(this);
mController.setEnabled(true);
}

private Uri getUriVoice() {
File voiceFile = null;
try {
voiceFile = new File(Environment.getExternalStorageDirectory().get Path() + "/nabege" + File.separator
+ "audio" + File.separator + voicefileName);
} catch (Exception e) {
Log.d("log", e.toString());
}
Uri voiceUri = Uri.fromFile(voiceFile);
return voiceUri;
}

@Override
public void onPause() {
super.onPause();
mPlayer.release();
mPlayer = null;
}

@Override
public boolean onTouchEvent(MotionEvent event) {
mController.show();
return super.onTouchEvent(event);
}

// MediaPlayerControl Methods
@Override
public int getBufferPercentage() {
return bufferPercent;
}

@Override
public int getCurrentPosition() {
return mPlayer.getCurrentPosition();
}

@Override
public int getDuration() {
return mPlayer.getDuration();
}

@Override
public boolean isPlaying() {
return mPlayer.isPlaying();
}

@Override
public void pause() {
mPlayer.pause();
}

@Override
public void seekTo(int pos) {
mPlayer.seekTo(pos);
}

@Override
public void start() {
mPlayer.start();
}

// BufferUpdateListener Methods
@Override
public void onBufferingUpdate(MediaPlayer mp, int percent) {
bufferPercent = percent;
}

public boolean canPause() {
return true;
}

public boolean canSeekBackward() {
return true;
}

public boolean canSeekForward() {
return true;
}

@Override
public int getAudioSessionId() {
return 0;
}
}