android p wifi一直在扫描_Android再次解读萤石云视频

点击上方蓝字关注 ??

3677a246e6138a095fc6ed14eb6561c1.gif

前言

我之前写过一篇萤石云的集成文章,很多人问我有没有demo, 今天我再次总结一下, 并加个些功能。

  • 集成步骤

  • 视频预览播放

  • 视频放大缩小

  • 视频的质量切换

  • 截图

之前的文章大家可以看下面的链接:

https://mp.weixin.qq.com/s/V4F2_bkY8QFN167KY9gSDg

效果图:(因为压缩的缘故,请忽略图片质量)

1a2caafb874b6ee7cf81846adacc53c2.gif

集成步骤

1.安装SDK

dependencies {compile 'com.hikvision.ezviz:ezviz-sdk:4.8.6.2'
}

2.配置工程

(1).权限配置

在 AndroidMainfest.xml 文件中添加:

//网络权限<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.RECORD_AUDIO"/><uses-permission android:name="android.permission.READ_PHONE_STATE"/>
//存储权限<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
//wifi 状态权限<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/><uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/><uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>
//热点配网扫描wifi需要使用<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

(2).配置build.gradle

defaultConfig {
...
ndk {
abiFilters "armeabi-v7a"//只支持v7a
}
}
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}

(3).配置 AndroidManifest.xml

添加如下activity定义,用于sdk中间页显示,包含登录、开通云存储等。

android:name="com.videogo.main.EzvizWebViewActivity"
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden">activity>

具体可以参考官方集成网站

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).播放主要代码

实现代码:

设置token

EZOpenSDK.getInstance().setAccessToken("你的token");

布局主要控件是SurfaceView,SurfaceView的用法大家应该都知道吧,主要实现了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:id="@+id/realplay_sv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:background="@android:color/transparent" />

实现Handler.Callback,来监听播放结果回调:

@Overridepublic boolean handleMessage(Message msg) {switch (msg.what){
}return false;
}

配置播放质量与序列号等:

//用来存储萤石云的播放质量、序列号
mCameraInfo=new 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;
}

视频质量切换

效果图:

2f5cb0cefd3fb3ccb2ee7f3069feac4a.gif

核心方法

// 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()

源码获取:

加我的微信备注源码,我的微信:

bcbc62456084840500d18390e2c38a0a.png

—————END—————

518c780ad2e16075e80902e44a2d16e0.png     

   创作不易,点个“在看95814b9421369b067a8f7752fbc72acb.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260612.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第5章 Python 数字图像处理(DIP) - 图像复原与重建7 - 周期噪声 余弦噪声生成方法

标题周期噪声周期噪声 周期噪声通常是在获取图像期间由电气或机电干扰产生的 def add_sin_noise(img, scale1, angle0):"""add sin noise for imageparam: img: input image, 1 channel, dtypeuint8param: scale: sin scaler, smaller than 1, will enlarge, …

python写文字方法_Transcrypt: 用Python写js的方法

Transcrypt是一个很有意思的工具&#xff1a; 它让你告别手写繁复的JavaScript代码&#xff0c;使用相对简明清晰的Python代替这一工作。 之后使用这个工具&#xff0c;可以把Python编写的代码转换成JavaScript。 1. 为什么不直接写JavsScript? JavaScript本身不算是很难的编程…

第5章 Python 数字图像处理(DIP) - 图像复原与重建8 - 估计噪声参数

标题估计噪声参数估计噪声参数 周期噪声的参数通常是通过检测图像的傅里叶谱来估计的。 只能使用由传感器生成的图像时&#xff0c;可由一小片恒定的背景灰度来估计PDF的参数。 来自图像条带的数据的最简单用途是&#xff0c;计算灰度级的均值和方差。考虑由SSS表示的一个条…

python 随机获取数组元素_Python创建二维数组的正确姿势

List &#xff08;列表&#xff09;是 Python 中最基本的数据结构。在用法上&#xff0c;它有点类似数组&#xff0c;因为每个列表都有一个下标&#xff0c;下标从 0 开始。因此&#xff0c;我们可以使用 list[1] 来获取下标对应的值。如果我们深入下列表的底层原理&#xff0c…

Qt学习笔记1

1.Qt引用API时&#xff0c;QString到LPCWSTR的转换&#xff1a; ::GetPrivateProfileIntW(QString(tr("相关设置")).utf16(),QString(tr("时间间隔")).utf16(),5,filePath.utf16())); 2.引用LPRECT时&#xff1a; RECTappRect; ::GetWindowRect(AppWnd,(LP…

在ubunut下使用pycharm和eclipse进行python远程调试

我比较喜欢Pycharm&#xff0c;因为这个是JetBrains公司出的python IDE工具&#xff0c;该公司下的java IDE工具——IDEA&#xff0c;无论从界面还是操作上都甩eclipse几条街&#xff0c;但项目组里有些人使用eclipse比较久了&#xff0c;一时让他们转pycharm比较困难&#xff…

CSS:页脚紧贴底部

2019独角兽企业重金招聘Python工程师标准>>> 我的练习来源于《CSS揭秘》这本书第7章-41紧贴底部的页脚这部分内容以及书中提到的链接。 方案一 描述&#xff1a;以下方案简单、干净、现代并且没有hack&#xff0c;适用于IE8, Chrome, Firefox, Opera等浏览器&#x…

第5章 Python 数字图像处理(DIP) - 图像复原与重建9 - 空间滤波 - 均值滤波器 - 算术平均、几何平均、谐波平均、反谐波平均滤波器

标题只存在噪声的复原 - 空间滤波均值滤波器算术平均滤波器几何均值滤波器谐波平均滤波器反&#xff08;逆&#xff09;谐波平均滤波器只存在噪声的复原 - 空间滤波 仅被加性噪声退化 g(x,y)f(x,y)η(x,y)(5.21)g(x, y) f(x, y) \eta(x, y) \tag{5.21}g(x,y)f(x,y)η(x,y)(5…

librosa能量_librosa与python_speech_features

在语音识别领域&#xff0c;比较常用的两个模块就是librosa和python_speech_features了。最近也是在做音乐方向的项目&#xff0c;借此做一下笔记&#xff0c;并记录一些两者的差别。下面是两模块的官方文档LibROSA - librosa 0.6.3 documentation​librosa.github.ioWelcome t…

java Unicode转码

1 //中文转UNICODE2 public static String chinaToUnicode(String str) {3 String result "";4 for (int i 0; i < str.length(); i) {5 int chr1 (char) str.charAt(i);6 if (chr1 > 19968 && ch…

oracle-备份工具exp-imp

虽然是按照用户的方式导出的&#xff0c;但导入之前&#xff0c;还是必须要有相同的用户存在&#xff0c;删除用户以后&#xff0c;是无法进行导入的 --重新创建回zlm用户 SQL> create user zlm identified by zlm; 尽管zlm用户的默认表空间是USERS&#xff0c;但是用imp导入…

继承String?

不能继承&#xff0c;因为 public final class String extends Objectimplements Serializable, Comparable<String>, CharSequence final修饰的类是不能被继承的转载于:https://www.cnblogs.com/crane-practice/p/3666006.html

python中字典数据的特点_Python数据类型(字典)

Python 字典(Dictionary) 字典是另一种可变容器模型&#xff0c;且可存储任意类型对象。 字典的每个键值(key>value)对用冒号(:)分割&#xff0c;每个对之间用逗号(,)分割&#xff0c;整个字典包括在花括号({})中 ,格式如下所示&#xff1a; d {key1: value1, key2: value2}…

第5章 Python 数字图像处理(DIP) - 图像复原与重建10 - 空间滤波 - 统计排序滤波器 - 中值、最大值、最小值、中点、修正阿尔法均值滤波器

标题统计排序滤波器中值、最大值、最小值、中点 滤波器修正阿尔法均值滤波器统计排序滤波器 中值、最大值、最小值、中点 滤波器 f^(x,y)median{g(r,c)}(5.27)\hat{f}(x, y) \text{median} \{g(r,c)\} \tag{5.27}f^​(x,y)median{g(r,c)}(5.27) f^(x,y))max{g(r,c)}(5.28)\ha…

如何设置坐标原点值_氨气检测仪电化学原理及报警值如何设置

氨气体检测仪检定规程&#xff1a;一般氨气体检测仪检定规程主要是针对技术参数设定的一些标准&#xff0c;具体包含有规程的名称和范围、仪器示值误差、充分性标准差、响应时间、稳定性、报警功能、流量控制器、检定项目表、检定操作有数值误差、重复性、响应时间、稳定性等。…

统计信息及相关说明

统计信息&#xff1a;0 recursive calls20434 db block gets 317970511 consistent gets 0 physical reads 3759764 redo size 382 bytes sent via SQL*Net to client 1061 bytes received via SQL*Net from client 3 SQL*Ne…

Android横竖屏切换的生命周期

关于Android手机横竖屏切换时Activity的生命周期问题&#xff0c;网上有很多相似的文章&#xff0c;大多数都是说明在竖屏切换横屏时Activity会重启一次&#xff0c;而在横屏切换竖屏时Activity会重启两次。 我本身不太理解这样设计的意义&#xff0c;并且觉得新版本会解决这个…

python 随机字符串_python生成随机数、随机字符串

python生成随机数、随机字符串 import random import string # 随机整数&#xff1a; print random.randint(1,50) # 随机选取0到100间的偶数&#xff1a; print random.randrange(0, 101, 2) # 随机浮点数&#xff1a; print random.random() print random.uniform(1, 10) # 随…

ACM 会场安排问题

会场安排问题 时间限制&#xff1a;3000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;4描述学校的小礼堂每天都会有许多活动&#xff0c;有时间这些活动的计划时间会发生冲突&#xff0c;需要选择出一些活动进行举办。小刘的工作就是安排学校小礼堂的活动&#xff0c;…

第5章 Python 数字图像处理(DIP) - 图像复原与重建11 - 空间滤波 - 自适应滤波器 - 自适应局部降噪、自适应中值滤波器

标题自适应滤波器自适应局部降噪滤波器自适应中值滤波器自适应滤波器 自适应局部降噪滤波器 均值是计算平均值的区域上的平均灰度&#xff0c;方差是该区域上的图像对比度 g(x,y)g(x, y)g(x,y)噪声图像在(x,y)(x, y)(x,y)处的值 ση2\sigma_{\eta}^2ση2​ 为噪声的方差&am…