Мне не удается найти способ сохранить MediaController на экране при использовании его с VideoView. Я хочу воспроизвести аудиофайл, который находится в папке res / raw в моем приложении. Файл воспроизводится, но я хотел бы, чтобы контроллер отображался на экране, чтобы пользователь мог видеть длину файла, сколько времени осталось до его окончания и т. Д. Я много раз встречал на форумах, что мы должны использовать метод .show (время) для этого, но я не могу понять, как заставить это работать.
Вот код, который я использую:
package com.sample.VideoViewExample;
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.widget.MediaController;
import android.widget.VideoView;
public class VideoViewExample extends Activity implements SurfaceHolder.Callback{
private VideoView mVideoView;
private MediaController mMedia;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
mVideoView = (VideoView) findViewById(R.id.surface_view);
//mVideoView.getHolder().addCallback(this);
//mMedia.show(50000);
//mVideoView.setMediaController(mMedia);
MediaController mMedia = new MediaController(this);
mMedia.setMediaPlayer(mVideoView);
mMedia.setAnchorView(mVideoView);
mVideoView.setMediaController(mMedia);
mVideoView.setVideoURI(Uri.parse("android.resource://" + getPackageName() +"/"+R.raw.osa_patient));
mVideoView.requestFocus();
mVideoView.start();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
mMedia.show(500000);
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
}
Когда я добавляю строку mVideoView.getHolder (). AddCallback (this); ошибка приложения, я не знаю почему.
Любая помощь или альтернатива тому, что я хотел бы сделать, более чем приветствуются :)
Спасибо, JB