自制一个移动的监控-安卓实现mjpeg-streamer客户端APP
前文章提到,用mjpeg-streamer做视频服务器,于是乎,就想弄一个随时可以看的APP出来,利用安卓的webview,再配合HTML嵌入imgsrc,一个像模像样的客户端就出来了.
主要部分代码
private void initWebView(){
ip="http://172.9.19.10:8080/?action=stream"
Log.d(TAG,ip);
//准备一个html页面,这里可以做成文件读取.
html="<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\"\"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\"><html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\"><head><title>MJPG-streamer</title><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no\" /><meta http-equiv=\"content-type\" content=\"text/html; charset=iso-8859-1\" /></head><body align=\"center\" style=\"background:black;margin:0px;padding:0px;\"><img style=\"width:100%;height:auto; id=\"streamimage\" src=\""+ip+"\" /></body></html>";
webView = (WebView) findViewById(R.id.webview);
//加载HTML字符内容,由加载出来的网页img标签展示网络视频画面
webView.loadDataWithBaseURL("", html, "text/html","UTF-8", "");
webView.setWebViewClient(webViewClient);
WebSettings webSettings=webView.getSettings();
//允许使用js,可以不设置
webSettings.setJavaScriptEnabled(true);
//防止乱码
webSettings.setDefaultTextEncodingName("UTF-8");
/**
* LOAD_CACHE_ONLY: 不使用网络,只读取本地缓存数据
* LOAD_DEFAULT: (默认)根据cache-control决定是否从网络上取数据。
* LOAD_NO_CACHE: 不使用缓存,只从网络获取数据.
* LOAD_CACHE_ELSE_NETWORK,只要本地有,无论是否过期,或者no-cache,都使用缓存中的数据。
*/
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);//不使用缓存,只从网络获取数据.
//不需要屏幕缩放
webSettings.setSupportZoom(false);
webSettings.setDisplayZoomControls(false);
//支持viewport属性
webSettings.setUseWideViewPort(true);
}
OK,打包运行,效果就出来了,还可以配个按钮,做个刷新