旅游网站做seo,电子商务网站建设的市场分析,网站建设设计制作维护,最好的建站公司点击上方蓝字关注 ??前言我之前写过一篇萤石云的集成文章#xff0c;很多人问我有没有demo#xff0c; 今天我再次总结一下#xff0c; 并加个些功能。集成步骤视频预览播放视频放大缩小视频的质量切换截图之前的文章大家可以看下面的链接#xff1a;https://mp.weixin.q… 点击上方蓝字关注 ??前言我之前写过一篇萤石云的集成文章很多人问我有没有demo 今天我再次总结一下 并加个些功能。集成步骤视频预览播放视频放大缩小视频的质量切换截图之前的文章大家可以看下面的链接https://mp.weixin.qq.com/s/V4F2_bkY8QFN167KY9gSDg效果图(因为压缩的缘故请忽略图片质量)集成步骤1.安装SDKdependencies {compile com.hikvision.ezviz:ezviz-sdk:4.8.6.2 }2.配置工程(1).权限配置在 AndroidMainfest.xml 文件中添加//网络权限uses-permission android:nameandroid.permission.INTERNET/ uses-permission android:nameandroid.permission.ACCESS_NETWORK_STATE/uses-permission android:nameandroid.permission.RECORD_AUDIO/uses-permission android:nameandroid.permission.READ_PHONE_STATE///存储权限uses-permission android:nameandroid.permission.WRITE_EXTERNAL_STORAGE///wifi 状态权限uses-permission android:nameandroid.permission.ACCESS_WIFI_STATE/uses-permission android:nameandroid.permission.CHANGE_WIFI_STATE/uses-permission android:nameandroid.permission.CHANGE_WIFI_MULTICAST_STATE///热点配网扫描wifi需要使用uses-permission android:nameandroid.permission.ACCESS_FINE_LOCATION/(2).配置build.gradledefaultConfig { ... ndk { abiFilters armeabi-v7a//只支持v7a } } sourceSets { main { jniLibs.srcDirs [libs] } }(3).配置 AndroidManifest.xml添加如下activity定义用于sdk中间页显示包含登录、开通云存储等。 android:namecom.videogo.main.EzvizWebViewActivity android:screenOrientationportrait android:configChangesorientation|keyboardHiddenactivity具体可以参考官方集成网站https://open.ys7.com/doc/zh/book/4.x/android-sdk.html视频预览播放播放与之前版本不同加入设备的验证码mEZPlayer.setPlayVerifyCode(验证码);(1).SDK初始化(在application中初始化)/** * sdk日志开关正式发布需要去掉 */EZOpenSDK.showSDKLog(true);/** * 设置是否支持P2P取流,详见api */EZOpenSDK.enableP2P(false);/** * APP_KEY请替换成自己申请的 */EZOpenSDK.initLib(this, APP_KEY);(2).播放主要代码实现代码:设置tokenEZOpenSDK.getInstance().setAccessToken(你的token);布局主要控件是SurfaceViewSurfaceView的用法大家应该都知道吧主要实现了implements SurfaceHolder.Callback接口声明SurfaceView 对象并实方法代码如下private SurfaceView mRealPlaySv null;private SurfaceHolder mRealPlaySh null;mRealPlaySh mRealPlaySv.getHolder();mRealPlaySh.addCallback(VideoActivity.this);Overridepublic void surfaceCreated(SurfaceHolder holder) {if (mEZPlayer ! null) { mEZPlayer.setSurfaceHold(holder); } else { } mRealPlaySh holder;}Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {}Overridepublic void surfaceDestroyed(SurfaceHolder holder) {if (mEZPlayer ! null) { mEZPlayer.setSurfaceHold(null); } mRealPlaySh null;}android:idid/realplay_svandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:layout_alignParentLefttrueandroid:layout_alignParentStarttrueandroid:layout_alignParentToptrueandroid:backgroundandroid:color/transparent /实现Handler.Callback来监听播放结果回调Overridepublic boolean handleMessage(Message msg) {switch (msg.what){ }return false; }配置播放质量与序列号等//用来存储萤石云的播放质量、序列号 mCameraInfonew EZCameraInfo();// 2-高清1-标清0-流畅 mCameraInfo.setVideoLevel(2);//序列号 mCameraInfo.setDeviceSerial(你的设备序列号); mCameraInfo.setCameraNo(1);开始播放private void startRealPlay() { mEZPlayer YourApplication.getOpenSDK().createPlayer(mCameraInfo.getDeviceSerial(), mCameraInfo.getCameraNo()); mEZPlayer.setPlayVerifyCode(mVerificationCode); mEZPlayer.setHandler(mHandler); mEZPlayer.setSurfaceHold(mRealPlaySh); mEZPlayer.startRealPlay(); tvPlay.setEnabled(true); }视频放大缩小在播放成功的回调里加上 setRealPlaySvLayout();方法方法的代码如下:private void setRealPlaySvLayout() throws InnerException, PlaySDKException { DisplayMetrics dm new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm);int whdth dm.widthPixels;int height dm.heightPixels; mRealPlayTouchListener.setSacaleRect(Constant.MAX_SCALE, 0, 0, whdth, height); setPlayScaleUI(1, null, null);}private void setPlayScaleUI(float scale, CustomRect oRect, CustomRect curRect) {if (scale 1) {try {if (mEZPlayer ! null) { mEZPlayer.setDisplayRegion(false, null, null); } } catch (BaseException e) {// TODO Auto-generated catch block e.printStackTrace(); } } else {if (mPlayScale scale) {try {if (mEZPlayer ! null) { mEZPlayer.setDisplayRegion(true, oRect, curRect); } } catch (BaseException e) {// TODO Auto-generated catch block e.printStackTrace(); }return; }try {if (mEZPlayer ! null) { mEZPlayer.setDisplayRegion(true, oRect, curRect); } } catch (BaseException e) {// TODO Auto-generated catch block e.printStackTrace(); } } mPlayScale scale;}视频质量切换效果图核心方法// 2-高清1-标清0-流畅 mCameraInfo.setVideoLevel切换画面/** * 码流配置 清晰度 2-高清1-标清0-流畅 * * see * since V2.0 */private void setQualityMode(final EZConstants.EZVideoLevel mode) {if (mEZPlayer ! null) { mWaitDialog.setWaitText(正在设置画面质量…); mWaitDialog.show(); Thread thr new Thread(new Runnable() {Overridepublic void run() {try {// need to modify by yudan at 08-11 APP.getOpenSDK().setVideoLevel(mCameraInfo.getDeviceSerial(), mCameraInfo.getCameraNo(), mode.getVideoLevel()); mCurrentQulityMode mode; Message msg Message.obtain(); msg.what MSG_SET_VEDIOMODE_SUCCESS; mHandler.sendMessage(msg); } catch (BaseException e) { mCurrentQulityMode EZConstants.EZVideoLevel.VIDEO_LEVEL_FLUNET; e.printStackTrace(); Message msg Message.obtain(); msg.what MSG_SET_VEDIOMODE_FAIL; mHandler.sendMessage(msg); } } }) { }; thr.start(); } }切换画质结果//切换画质成功case EZConstants.EZRealPlayConstants.MSG_SET_VEDIOMODE_SUCCESS: handleSetVedioModeSuccess();break;//切换画质失败case EZConstants.EZRealPlayConstants.MSG_SET_VEDIOMODE_FAIL: handleSetVedioModeFail(msg.arg1);break;其他 1.声音开关mLocalInfo.setSoundOpen(false);2.截图mEZPlayer.capturePicture()源码获取加我的微信备注源码我的微信—————END————— 创作不易点个“在看”