【问题标题】:how to play video file in popup window in android?如何在android的弹出窗口中播放视频文件?
【发布时间】:2014-11-11 09:58:08
【问题描述】:

我想在安卓设备的弹出窗口中播放任何视频文件。此外,我必须显示来自 Fragment 而不是来自 Activity 的视频。

使用mVideoDialog = new Dialog(this); 对我不起作用。它抛出这个错误:

android.view.WindowManager$BadTokenException: 无法添加窗口--token null 无效;您的活动正在运行吗?

我尝试通过将getActivity() 传递给对话框来修复它,但应用程序崩溃并出现同样的错误。我该怎么办?

【问题讨论】:

标签: android popup media-player android-videoview


【解决方案1】:

您必须使用自定义对话框,添加此代码 -

Dialog mVideoDialog;
VideoView mVideoFullScreen;
MediaController controller;

创建一个方法-

mVideoDialog = new Dialog(this);
mVideoDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
mVideoDialog.setContentView(R.layout.dialog);
mVideoDialog.setOnKeyListener(this);
mVideoFullScreen = (VideoView) mVideoDialog.findViewById(R.id.videoview1);
controller = new MediaController(this);
HelloWebViewClient webViewClient = new HelloWebViewClient();
webView.setWebViewClient(webViewClient);
}

private class HelloWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {

        if (url.contentEquals("file:///android_asset/01")) {
            showVideo(01); //check user click url from webview and pass int
        }
        else if (url.contentEquals("file:///android_asset/02")) {
            showVideo(02);//pass int to determine which video to play
        }
        else {
            System.out.println("DDD URL: "+url.toString()); view.loadUrl(url);  
        }
        return true;       
    }

显示视频播放视频文件的方法-

public void showVideo(int i) {
    // TODO Auto-generated method stub
    if (i==01) {
        mVideoDialog.show();
        mVideoFullScreen.setVideoPath("file:///sdcard/video file name.m4v");
        controller.setMediaPlayer(mVideoFullScreen);
        mVideoFullScreen.setMediaController(controller);
        mVideoFullScreen.requestFocus();
        mVideoFullScreen.setZOrderOnTop(true);
        mVideoFullScreen.start();
    } else {  }
}

【讨论】:

  • mVideoDialog = new Dialog(this);因为我必须为片段而不是 Activity 制作此代码,所以上面的行对我不起作用..这显示错误。“android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your活动进行中?”我试图通过传递 getActivity() 来解决它,但仍然是同样的错误。应用程序因同样的错误而崩溃。我该怎么办?
猜你喜欢
  • 2016-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-30
  • 1970-01-01
  • 2011-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多