में रोकें और ढूंढें मेरे पास SeekBar
और MediaPlayer
है। मैं थोड़ी देर रुके तलाश करना चाहते हैं, लेकिन लगता है है कि डॉक्स मेरे लिए निहित है:एंड्रॉइड मीडियाप्लेयर
कृपया ध्यान दें कि seekTo (int) भी अन्य राज्यों में कहा जा सकता है, तैयार किया गया, रोका और PlaybackCompleted राज्य जैसे।
हमेशा की तरह, Android पर मैं कोड के बजाय समाधान लिखने के लिए है (और जिसमें राज्य इस समय मुझे पता नहीं कर सकते पर MediaPlayer
है, इसलिए इस तालिका और राज्य मशीन पूरी तरह से बेकार है)। क्योंकि onSeekComplete
onCompletion
(9000 से अधिक बार, मैं मजाक नहीं कर रहा हूं) की बजाय विधि कहा जाता है! onSeekComplete
को onPrepared
(क्यों, भगवान, क्यों ???) से कॉल करने के बाद ही बुलाया जाता है। मुझे यह भी नहीं पता कि क्या करना है। मैंने इसके बारे में 5 घंटे बिताए और कुछ भी तय नहीं हुआ। मैं क्या कर सकता हूँ?
यूपीडी
यहां मेरा कोड है।
private void setupMediaPlayer() {
savedMediaPlayerState = null;
mediaPlayer = application.getMediaPlayer();
String mp3Path = "/path/to/mp3";
mediaPlayer.setOnCompletionListener(this);
mediaPlayer.setOnSeekCompleteListener(this);
mediaPlayer.setOnErrorListener(this);
mediaPlayer.setDataSource(mp3Path);
mediaPlayer.prepare();
}
@Override
public void onProgressChanged(android.widget.SeekBar sb, int i, boolean b) {
Log.i(TAG, String.format("Progress changed! %d", i));
if (b) {
mediaPlayer.seekTo(i);
updateProgressBarAndDurationLabels(i, mediaPlayer.getDuration(), false);
}
}
@Override
public void onStartTrackingTouch(android.widget.SeekBar sb) {
handler.removeCallbacks(updateTimeTask);
mediaPlayer.pause();
}
@Override
public void onStopTrackingTouch(android.widget.SeekBar sb) {
int totalDuration = mediaPlayer.getDuration();
int currentPosition = sb.getProgress();// * totalDuration/100;
mediaPlayer.seekTo(currentPosition);
mediaPlayer.start();
updateProgressBar();
isSeeking = false;
}
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
if (!isSeeking) {
Log.i(TAG, "completed"); // Called over 9000 times
audioStopped();
}
}
@Override
public boolean onError(MediaPlayer mediaPlayer, int i, int i2) {
return false; // Error -38 lol
}
@Override
public void onSeekComplete(MediaPlayer mp) {
Log.i(TAG, String.format("seek to: %d", mp.getCurrentPosition()));
isSeeking = false;
}
चलो कुछ कोड देखें। मैंने कई अवसरों पर 'seekto() 'का उपयोग किया है। – Geobits
@Geobits मैंने कुछ कोड जोड़ा होगा। – efpies