用户可以在MediaController上快速触摸。 Bug只在Nexus 4上发生。

时间:2014-02-14 08:58:51

标签: android android-layout android-intent mediacontroller android-videoview

在我的活动中,我有一个VideoView,它应该在触摸时显示MediaController。如果用户在VideoView没有关注时快速触摸Controller,那么在该用户按下后退按钮后,我的应用程序将被卡住。

setContentView(R.layout.activity_play_video_fullscreen);
videoView = (VideoView) findViewById(R.id.video_view);

urlString = getIntent().getStringExtra(EXTRA_URL);
videoView.setVideoURI(Uri.parse(urlString));
videoView.setOnPreparedListener(new OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
        // video ready to play - hide progress bar
        ProgressBar pb = (ProgressBar)findViewById(R.id.progress_bar);
        pb.setVisibility(ProgressBar.INVISIBLE);
    }
});

videoView.setOnCompletionListener(new OnCompletionListener() {
    @Override
    public void onCompletion(MediaPlayer mp) {
        // video finished - terminate this activity
        AxUtils.axLog(AxUtils.eDbgLogError, AxUtils.eDbgLogGroupDialer, String.format("PlayVideoFullsreenActivity.videoView.onCompletion(): Fullscreen video playback completed.\n"));
        finish();
    }
});

// install our own error handler
videoView.setOnErrorListener(new OnErrorListener() {
    @Override
    public boolean onError(MediaPlayer mp, int what, int extra) {
        AxUtils.axLog(AxUtils.eDbgLogError, AxUtils.eDbgLogGroupDialer, String.format("PlayVideoFullsreenActivity.videoView.onError(): Playback failed. what=%d(%s) extra=%d(%s)\n", 
                what, what_toString(what), extra, extra_toString(extra)));
        String reason;
        if (what == MediaPlayer.MEDIA_ERROR_SERVER_DIED) {
            reason = "Server connection lost.";
        }
        else {
            reason = extra_toString(extra);
        }
        String message = String.format("Playback Failed. %s", reason);
        Toast.makeText(PlayVideoFullscreenActivity.this.getApplicationContext(), message, Toast.LENGTH_SHORT).show();
        finish();
        return true;
    }
});

// add playback controls
mediaController = new MediaController(this);
mediaController.setAnchorView(videoView.getRootView());
videoView.setMediaController(mediaController);

1 个答案:

答案 0 :(得分:0)

在preparedListeners中,禁用并启用媒体控制器。它应该解决你的问题。

祝你好运。