我正在尝试通过Web应用程序访问摄像机。如果我以XML创建WebView,则可以正常工作。但是,如果我尝试动态创建WebView,则不会起作用。空白部分即将到来[图片如下]。 Camera Streams无法更新视图。
这是WebView类文件
public class PageView extends WebView {
public PageView(Context context) {
super(context);
init();
}
public PageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
public PageView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public void init() {
setWebChromeClient(new CustomizedWebChromeClient());
setWebViewClient(new WebViewClient());
//File access
getSettings().setAllowFileAccessFromFileURLs(true);
getSettings().setAllowFileAccess(true);
getSettings().setAllowContentAccess(true);
getSettings().setAllowUniversalAccessFromFileURLs(true);
//Video playbacks
getSettings().setMediaPlaybackRequiresUserGesture(false);
getSettings().setJavaScriptEnabled(true);
getSettings().setDomStorageEnabled(true);
getSettings().setAppCacheEnabled(true);
setupHardwareAcceleration();
setWebContentsDebuggingEnabled(true);
}
class CustomizedWebChromeClient extends android.webkit.WebChromeClient
{
@Override
public void onPermissionRequest(PermissionRequest request) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
request.grant(request.getResources());
}
}
}
@TargetApi(11)
private void setupHardwareAcceleration() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
if (isHardwareAccelerated()) {
setLayerType(View.LAYER_TYPE_NONE, null);
} else {
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
}
}}
这是MainActivity类
private WebView webView = null;
private String url = "https://www.onlinemictest.com/webcam-test/";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addWebViewToActivity();
}
public void addWebViewToActivity() {
LinearLayout ll = (LinearLayout) findViewById(R.id.linearlayout);
WebView web = new PageView(this);
web.loadUrl("https://www.onlinemictest.com/webcam-test/");
ll.addView(web);
}
注意:在某些测试网络摄像头的网站中,测试结果正常。我的网络摄像头(Android摄像头)的所有详细信息也正常显示。我们甚至可以拍照。但是从摄像机到视图的视频流并没有到来。仅作为空白。另外,空白区域中的数字表示帧数。
答案 0 :(得分:0)
发现了问题。
我认为该问题是由于动态创建WebView与从XML创建WebView之间存在差异。但是问题的真正原因是,当我们创建自定义的WebView之类的
public CustomizedWebView extends WebView
和Webview的普通对象
Webview webview = new Webview(context);
两者之间的区别是图层类型。对于Web视图,“图层类型”设置为“ LAYER_TYPE_NONE” 。因此,我的屏幕变黑了。