UIKit Android 使用说明
简介
UIKit,是基于萤石开放平台OpenSDK封装的UI组件,使用过程中不必学习专业的业务概念,更不用调用繁琐的接口,能够以极简的嵌入方式,快速在您的应用中集成视频功能。 详细了解EZOpen协议
UIKit覆盖的平台包含:iOS、Android、H5/Web、ActiveX(IE)。
环境准备
支持 Android Studio 1.4
支持 JDK 7.0 以上版本
支持 Android 手机系统 4.0 以上版本
点击此处下载UIKit
创建应用
首先,你需要在萤石开放平台官网的 “ 开发者服务-我的应用-应用秘钥 ” 查看Appkey。
安装 SDK
使用 Gradle 获得
如果是之前采用过直接下载方式的需要删除之前拷贝进来的所有so库文件以及jar包
dependencies {
compile 'com.ezviz.sdk:ezuikit:2.2.1'
}
配置 Android 权限
在 AndroidMainfest.xml 文件中添加:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.FLASHLIGHT"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
配置 build.gradle
defaultConfig {
...
ndk {
abiFilters "armeabi-v7a"//自2.2版本开始支持arm64-v8a
}
}
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
在需要显示播放的地方添加UI布局
<com.ezvizuikit.open.EZUIPlayer
android:id="@+id/player_ui"
android:layout_width="match_parent"
android:background="#FF000000"
android:layout_height="wrap_content"/>
播放代码
//获取EZUIPlayer实例
EZUIPlayer mPlayer = (EZUIPlayer) findViewById(R.id.player_ui);
//初始化EZUIKit
EZUIKit.initWithAppKey(application,appkey);
//设置授权token
EZUIKit.setAccessToken(accessToken);
//设置播放回调callback
mPlayer.setCallBack(callback);
//设置播放参数
mPlayer.setUrl(playUrl);
开始播放
mPlayer.startPlay();
当callbakc收到准备完成时即可开始播放,回放在收到准备完成时可以通过getPlayList获取回放文件列表
@Override
public void onPrepared() {
mPlayer.startPlay();
}
获取EZUIPlayer实例;
//获取EZUIPlayer实例
EZUIPlayer mPlayer = (EZUIPlayer) findViewById(R.id.player_ui);
初始化EZUIKit
/**
* 初始化EZUIKit
* @param application 应用application
* @param appkey 开发者申请的appkey
* @return
*/
EZUIKit.initWithAppKey(application,appkey);
/**
* 初始化EZUIKit 海外用接口
* @param application 应用application
* @param appkey 开发者申请的appkey
* @param areaDomain 海外域名
* @return
*/
EZUIKit.initWithAppKeyGlobal(Application application, String appkey,String areaDomain) {
设置授权述accesstoken
/**
* 设置授权accesstoken,当app获取到token后需要传入到EZUIKit,底层sdk获得授权
* @param accessToken
*/
EZUIKit.setAccessToken(accessToken);
设置播放回调callback
/**
* 设置回调callback
* @param callBack 播放回调callback
*/
void setCallBack(EZUIPlayer.EZUIPlayerCallBack callBack);
设置播放url
目前支持预览和回放,开发者可以调用EZUIPlayer.getUrlPlayType(url)获取当前是回放还是预览
/**
* 根据url获取播放模式
*
* @param url 播放url
* @return EZUIKitPlayMode播放模式
*/
public static EZUIKitPlayMode getUrlPlayType(String url)
/**
* 设置回放参数url
*
* @param url ezopen私有协议回放URL
*/
void setUrl(String url);
开始播放
当收到回调onPrepared()时可以开始播放
开始播放
mPlayer.startPlay();
注意事项
需要在界面消失时调用停止播放:
activity实例:
@Override
protected void onStop() {
super.onStop();
//停止播放
mPlayer.stopPlay();
}
需要再界面销毁时调用释放资源:
activity实例:
@Override
@Override
protected void onDestroy() {
super.onDestroy();
//释放资源
mPlayer.releasePlayer();
}
播放异常查询
播放回调中有播放失败的回调
/**
* 播放失败
*
* @param ezuiError 错误信息
*/
public void onPlayFail(EZUIError ezuiError);
开发者可以用ezuiError.errorString来获取错误信息,具体请查询错误码
扩展接口功能
设置播放区域宽高,可以用来进行横竖屏切换功能
activity实例:
mPlayer.setSurfaceSize(int width, int height);
动态设置播放区域大小当width等于0(或者height等于0)时,播放区域以height(或者width)为标准,宽高按视频分辨率比例适配播放
设置加载中显示的loadingUI
如果需要自定义loading时显示的UI,可以在播放前设置加载显示的UI
activity实例:
//创建loadingview
ProgressBar mLoadView = new ProgressBar(mContext);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.CENTER_IN_PARENT);
mLoadView.setLayoutParams(lp);
//设置loadingview
mPlayer.setLoadingView(mLoadView);
代码混淆
目前SDK在打包时不能混淆,请添加以下内容!
#========SDK对外接口=======#
-keep class com.ezviz.opensdk.** { *;}
#========以下是hik二方库=======#
-dontwarn com.ezviz.**
-keep class com.ezviz.** { *;}
-dontwarn com.videogo.**
-keep class com.videogo.** { *;}
-dontwarn com.hik.TTSClient.**
-keep class com.hik.TTSClient.** { *;}
-dontwarn com.hik.stunclient.**
-keep class com.hik.stunclient.** { *;}
-dontwarn com.hik.streamclient.**
-keep class com.hik.streamclient.** { *;}
-dontwarn com.hik.CASClient.**
-keep class com.hik.CASClient.** { *;}
-dontwarn com.hikvision.sadp.**
-keep class com.hikvision.sadp.** { *;}
-dontwarn com.hikvision.netsdk.**
-keep class com.hikvision.netsdk.** { *;}
-dontwarn com.hikvision.audio.**
-keep class com.hikvision.audio.** { *;}
-dontwarn com.hikvision.wifi.**
-keep class com.hikvision.wifi.** { *;}
-dontwarn com.hikvision.keyprotect.**
-keep class com.hikvision.keyprotect.** { *;}
-dontwarn com.hikvision.audio.**
-keep class com.hikvision.audio.** { *;}
-dontwarn org.MediaPlayer.PlayM4.**
-keep class org.MediaPlayer.PlayM4.** { *;}
#========以上是hik二方库=======#
#========以下是第三方开源库=======#
# JNA
-dontwarn com.sun.jna.**
-keep class com.sun.jna.** { *;}
# Gson
-keepattributes *Annotation*
-keep class sun.misc.Unsafe { *; }
-keep class com.idea.fifaalarmclock.entity.***
-keep class com.google.gson.stream.** { *; }
# OkHttp
# JSR 305 annotations are for embedding nullability information.
-dontwarn javax.annotation.**
# A resource is loaded with a relative path so the package of this class must be preserved.
-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
# Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java.
-dontwarn org.codehaus.mojo.animal_sniffer.*
# OkHttp platform used only on JVM and when Conscrypt dependency is available.
-dontwarn okhttp3.internal.platform.ConscryptPlatform
# 必须额外加的,否则编译无法通过
-dontwarn okio.**
#========以上是第三方开源库=======#
EZUIPlayer接口定义
/**
* 设置回调callback
* @param callBack 播放回调callback
*/
void setCallBack(EZUIPlayer.EZUIPlayerCallBack callBack);
/**
* 设置回放参数url
*
* @param url ezopen私有协议回放URL
*/
void setUrl(String url);
/**
* 获取当前状态:
* EZUIPlayer.STATUS_INIT = 0;
* EZUIPlayer.STATUS_START = 1;
* EZUIPlayer.STATUS_STOP = 2;
* EZUIPlayer.STATUS_PLAY = 3;
* EZUIPlayer.STATUS_PAUSE = 4;
* @return
*/
int getStatus();
/**
* 开始播放
*/
void startPlay();
/**
* seek播放位置,回放使用
* @param calendar
*/
void seekPlayback(Calendar calendar);
/**
* 获取当前OSD时间
* @return
*/
Calendar getOSDTime();
/**
* 停止播放
*/
void stopPlay();
/**
* 暂停播放,回放专用接口
*/
void pausePlay();
/**
* 恢复播放,回放专用接口
*/
void resumePlay();
/**
* 释放资源
*/
void releasePlayer();
/**
* 获取播放的文件列表
* @return
*/
List getPlayList();
/**
* 动态设置播放区域大小
* 当width等于0(height等于0)时,播放区域以height(width)为标准,宽高按视频分辨率比例播放
*
* @param width 播放区域宽
* @param height 播放区域高
*/
void setSurfaceSize(int width, int height);
/**
* 设置加载需要显示的view
*
* @param view
*/
void setLoadingView(View view);
参考资料
若文档有未尽之处,请参考以下资料。 1.萤石SDK demo,点击跳转到github下载