Я пытаюсь сделать медиаплеер для воспроизведения музыки. Но после игры 3-4 песни он останавливается. И дает следующую ошибку. И я получаю ошибку именно в current = mp.getCurrentPosition();
Мой код:Android-Media player Показывает ошибку при current = mp.getCurrentPosition();
public class player extends AppCompatActivity implements View.OnClickListener {
ArrayList<File> mysong;
static MediaPlayer mp;
SeekBar sb;
int position;
Uri u;
TextView tv;
Thread updateseek;
Button btplay, btFF, btBB, btnext, btpreviout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_player);
sb = (SeekBar) findViewById(R.id.seekBar);
btplay = (Button) findViewById(R.id.button);
btFF = (Button) findViewById(R.id.button3);
btBB = (Button) findViewById(R.id.button2);
btnext = (Button) findViewById(R.id.button5);
btpreviout = (Button) findViewById(R.id.button4);
tv = (TextView)findViewById(R.id.textView2);
tv.setVisibility(View.INVISIBLE);
btpreviout.setOnClickListener(this);
btnext.setOnClickListener(this);
btBB.setOnClickListener(this);
btFF.setOnClickListener(this);
btplay.setOnClickListener(this);
if (mp != null) {
mp.stop();
mp.release();
}
updateseek = new Thread(){
@Override
public void run() {
int total = mp.getDuration();
int current = 0;
sb.setMax(total);
while(current < total){
try {
sleep(500);
current = mp.getCurrentPosition();
sb.setProgress(current);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
super.run();
}
};
Intent i = getIntent();
Bundle b = i.getExtras();
mysong = (ArrayList) b.getParcelableArrayList("mysonglist");
position = b.getInt("pos", 0);
u = Uri.parse(mysong.get(position).toString());
mp = MediaPlayer.create(getApplicationContext(), u);
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.start();
sb.setMax(mp.getDuration());
updateseek.start();
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});
sb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(sb.getProgress()>(mp.getDuration()/2)){
tv.setVisibility(View.VISIBLE);
}else tv.setVisibility(View.INVISIBLE);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
btplay.setText("p");
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
mp.seekTo(seekBar.getProgress());
}
});
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
if (mp.isPlaying()) {
mp.pause();
} else mp.start();
break;
case R.id.button2:
mp.seekTo(mp.getCurrentPosition() - 5000);
break;
case R.id.button3:
mp.seekTo(mp.getCurrentPosition() + 5000);
break;
case R.id.button4:
mp.stop();
mp.release();
position = (position - 1 < 0) ? mysong.size() - 1 : (position - 1) % mysong.size();
u = Uri.parse(mysong.get(position).toString());
mp = MediaPlayer.create(getApplicationContext(), u);
sb.setProgress(0);
mp.start();
sb.setMax(mp.getDuration());
break;
case R.id.button5:
mp.stop();
mp.release();
position = (position + 1) % mysong.size();
u = Uri.parse(mysong.get(position).toString());
mp = MediaPlayer.create(getApplicationContext(), u);
sb.setProgress(0);
mp.start();
sb.setMax(mp.getDuration());
break;
}
}
}
Мой журнал кот здесь:
12-18 18: 04: 37,483 4846-4846/com.bucketlist. dell.musicplayer W/Resources: Преобразование в строку: TypedValue {t = 0x12/d = 0x0 a = 3 r = 0x7f0c0057} 12-18 18: 04: 37.483 4846-4846/com.bucketlist.dell.musicplayer W/Ресурсы: Преобразование в строку : TypedValue {t = 0x12/d = 0x0 a = 3 r = 0x7f0c0058} 12-18 18: 04: 37.493 4846-4846/com.bucketlist.dell.musicplayer W/Resources: Преобразование в строку : TypedValue {t = 0x12/d = 0x0 a = 3 r = 0x7f0c0072} 12-18 18: 04: 37.493 4846-4846/com.bucketlist.dell.musicplayer W/Resources: Преобразование в строку : TypedValue {t = 0x12/d = 0x0 a = 3 r = 0x7f0c0073} 12-18 18: 04: 37.493 4846-4846/com.bucketlist.dell .musicplayer D/AbsSeekBar: AbsSeekBar Конструктор: mAllowedSeeBarAnimation = false 12-18 18: 04: 37.503 4846-4846/com.bucketlist.dell.musicplayer W/Resources: Преобразование в строку : TypedValue {t = 0x12/d = 0x0 a = 3 r = 0x7f0c0074} 12-18 18: 04: 37.503 4846-4846/com.bucketlist.dell.musicplayer W/Resources: Преобразование в строку : TypedValue {t = 0x12/d = 0x0 a = 3 r = 0x7f0c0075} 12-18 18: 04: 37.503 4846-4846/com.bucketlist.dell.musicplayer W/Resources: Преобразование в строку : TypedValue {t = 0x12/d = 0x0 a = 3 r = 0x7f0c0076} 12-18 18: 04: 37.513 4846-4846/com.bucketlist.dell.musicplayer W/Resources: Преобразование в строка: TypedValue {t = 0x12/d = 0x0 a = 3 r = 0x7f0c0077} 12-18 18: 04: 37.513 4846-4846/com.bucketlist.dell .musicplayer W/Resources: Преобразование в string: TypedValue {t = 0x12/d = 0x0 a = 3 r = 0x7f0c0078} 12-18 18: 04: 37.513 4846-4846/com.bucketlist.dell.musicplayer W/Resources : Преобразование в строка: TypedValue {t = 0x12/d = 0x0 a = 3 r = 0x7f0c0079} 12-18 18: 04: 37.513 4846-4846/com.bucketlist.dell.musicplayer I/MediaPlayer: sendBroadcast CONTEXT_AWARE_MUSIC_INFO - тип (стоп) - id (573) 12-18 18: 04: 37.633 4846-4846/com.bucketlist.dell.musicplayer E/MediaPlayer-JNI: Медиаплеер QCMediaPlayer НЕ присутствует 12-18 18: 04: 37.693 4846-4856/com.bucketlist.dell.musicplayer W/MediaPlayer: информация/предупреждение (973, 0) 12-18 18: 04: 37.703 4846-5528/com.bucketlist.dell.musicplayer E/AndroidRuntime: FATAL EXCEPTION: Thread-26716 Процесс: com.bucketlist.dell.musicplayer, PID: 4846 java.lang.IllegalStateException на android.media.MediaPlayer.getCurrentPosition (Native Method) в com.bucketlist.dell.musicplayer.player $ 1.Run (player.java:65) 12-18 18: 04: 37,703 4846 -4846/com.bucketlist.dell.musicplayer E/MediaPlayer: Если есть контроллер субтитров уже установлено 12-18 18: 04: 37,813 4846-4846/com.bucketlist.dell.musicplayer D/PhoneWindow: FMB isFloatingMenuEnabled mFloatingMenuBtn: нуль 12-18 18: 04: 37,813 4846- 4846/com.bucketlist.dell.musicplayer D/PhoneWindow: FMB isFloatingMenuEnabled return false 12-18 18: 04: 37.843 4846-4846/com.bucketlist.dell.musicplayer D/SRIB_DCS: log_dcs ThreadedRenderer :: initialize введен! 12-18 18: 04: 37.863 4846-4846/com.bucketlist.dell.musicplayer I/MediaPlayer: Не отправляйте намерение. msg.arg1 = 0, msg.arg2 = 0 12-18 18: 04: 37.863 4846-4846/com.bucketlist.dell.musicplayer E/MediaPlayer: Должен иметь контроллер субтитров уже установлен 12-18 18: 04: 37.883 4846-4846/com.bucketlist.dell.musicplayer I/MediaPlayer: отправить контекст известно событие 12-18 18: 04: 37,893 4846-4846/com.bucketlist.dell.musicplayer I/MediaPlayer: sendBroadcast CONTEXT_AWARE_MUSIC_INFO - тип (начало) - id (574) 12-18 18: 04: 39.623 4846-5528/com.bucketlist.dell.musicplayer I/Process: сигнал отправки. ПИД: 4846 Sig: 9
12-18 18: 04: 37,633 4846-4846/com.bucketlist.dell.musicplayer Е/MediaPlayer-JNI: QCMediaPlayer медиаплеер НЕ присутствует 12-18 18: 04: 37,693 4846-4856/com.bucketlist.dell.musicplayer W/MediaPlayer: информация/предупреждение (973, 0) 12-18 18: 04: 37.703 4846-5528/com.bucketlist.dell.musicplayer E/AndroidRuntime: FATAL ИСКЛЮЧЕНИЕ: Thread-26716 Процесс: com.bucketlist.dell.musicplayer, PID: 4846 java.lang.IllegalStateException на android.media.MediaPlayer.getCurrentPosition (собственный метод) at com.bucketlist.dell.musicplayer.player $ 1.run (player.java:65) 12-18 18: 04: 37.703 4846-4846/com.bucketlist.dell.musicplayer E/MediaPlayer: Должен иметь контроллер субтитров уже набор