Как использовать MediaController.MediaPlayerControl?

Я пытаюсь использовать MediaController.MediaPlayerControl для отображения MediaController в нижней части моего пользовательского представления, но я не могу заставить его работать , Это происходит сбой в ctrl.show (); со следующим исключением, когда я пытаюсь загрузить это представление:

E / AndroidRuntime (3007): вызвано: android.view.WindowManager $ BadTokenException: невозможно добавить окно - токен null недействителен; ваша деятельность запущена?

вот мой код.

public class MediaPlayerView extends ImageView implements MediaPlayerControl {

    private MediaPlayer mp;
    private MediaController ctrl;
    private Uri data;
    private Context mContext;

    public MediaPlayerView(Context context, Uri data) {
        super(context);
        this.mContext = context;
        this.data = data;
        init();
    }

    public void init() {
        mp = new MediaPlayer();
        try {
            mp.setDataSource(mContext, data);
            mp.prepare();
        } catch(IOException e) {
            e.printStackTrace();
        }
        ctrl = new MediaController(mContext);
        ctrl.setMediaPlayer(this);
        ctrl.setAnchorView(this);
        ctrl.setEnabled(true);
        ctrl.show();
    }

    public boolean canPause() {
        return true;
    }

    public boolean canSeekBackward() {
        return false;
    }

    public boolean canSeekForward() {
        return false;
    }

    public int getBufferPercentage() {
        return (mp.getCurrentPosition()*100)/mp.getDuration();
    }

    public int getCurrentPosition() {
        return mp.getCurrentPosition();
    }

    public int getDuration() {
        return mp.getDuration();
    }

    public boolean isPlaying() {
        return mp.isPlaying();
    }

    public void pause() {
        mp.pause();
    }

    public void seekTo(int pos) {
        mp.seekTo(pos);
    }

    public void start() {
        mp.start();
    }
}

Любая помощь с благодарностью!

5
задан dave.c 19 December 2012 в 15:53
поделиться