android - 当视频未开始时启动一个对话框以返回主要 Activity

标签 android android-videoview rtsp

这是我的 videoview 代码

try {

            // Start the MediaController
            MediaController mediacontroller = new MediaController(
                    SingleItemView.this);
            mediacontroller.setAnchorView(videoview);
            // Get the URL from String VideoURL
            videoview.setMediaController(mediacontroller);
            videoview.setVideoURI(Uri.parse(video));
            videoview.requestFocus();
            videoview.setKeepScreenOn(true);

            videoview
                    .setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                        // Close the progress bar and play the video
                        public void onPrepared(MediaPlayer mediaPlayer) {
                            mProgressDialog.dismiss();
                            videoview.start();
                        }
                    });
        } catch (Exception e) {
            mProgressDialog.dismiss();
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }

但是如果视频流不起作用,对话框仍然存在。

如果视频不起作用,我想将对话框返回到主要 Activity ..

我怎样才能做到这一点?

我尝试放置对话框,但仍然无法工作,我不知道为什么..

预先感谢:)

编辑:我也尝试这样做,但仍然不起作用

try {
                    // Start the MediaController
                    MediaController mediacontroller = new MediaController(
                            SingleTrackActivity.this);
                    mediacontroller.setAnchorView(videoview);
                    // Get the URL from String VideoURL
                    videoview.setMediaController(mediacontroller);
                    videoview.setVideoURI(Uri.parse(duration));
                    videoview.requestFocus();
                    videoview.setKeepScreenOn(true);

                    videoview
                            .setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                                // Close the progress bar and play the video
                                public void onPrepared(
                                        MediaPlayer mediaPlayer) {
                                    pDialog.dismiss();
                                    videoview.start();
                                }
                            });
                } catch (Exception e) {
                    AlertDialog alertDialog = new AlertDialog.Builder(
                            SingleTrackActivity.this).create();

                    // Setting Dialog Title
                    alertDialog.setTitle("Alert Dialog");

                    // Setting Dialog Message
                    alertDialog.setMessage("Video Play Error :"
                            + e.toString());

                    pDialog.dismiss();

                    System.out.println("Video Play Error :" + e.toString());
                    finish();
                }

最佳答案

媒体播放器的工作是与您的代码异步完成的。如果媒体设置失败,则在代码完成您的方法后将发生失败。同时,由于媒体未进入 PREPARED 状态,因此未调用 onPreparedListener。 所以尝试添加一个 OnErrorListener :

videoview.setOnErrorListener(new MediaPlayer.OnErrorListener(){
    public boolean onError(MediaPlayer mp, int what, int extra) {
        // inform the user something went wrong
        mProgressDialog.dismiss();
        return true;
    }
});

如果这不起作用,请检查您的媒体播放器/视频 View 收到的回调。

关于android - 当视频未开始时启动一个对话框以返回主要 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19131734/

相关文章:

JavaCV 获取 RTSP 遇到 "avcodec_open2() error -40: Could not open audio codec"错误

rtp - 检测 RTP 流中的 MPEG4/H264 I-Frame (IDR)

android - 如何使用 MediaCodec 解码来自 RTSP 服务器的数据?

android - 如何在 Android 中删除自动启动任务

android - 将 listItem 消息添加到 SnackBar

java - VideoView,为视频添加再次播放按钮

android - videoview 是否支持 android 中的自适应流?

java - AndroidManifest 文件的问题

java - 如何在特定时间段后将新 url 加载到 web View 中?

android - VideoView getDrawingCache 返回黑色