UIKit Android 使用说明

简介

UIKit,是基于萤石开放平台OpenSDK封装的UI组件,使用过程中不必学习专业的业务概念,更不用调用繁琐的接口,能够以极简的嵌入方式,快速在您的应用中集成视频功能。 详细了解EZOpen协议

UIKit覆盖的平台包含:iOSAndroidH5/WebActiveX(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、拷贝/libs/armeabi-v7a目录下so文件到自己工程对应目录;
2、拷jar包到自己工程对应目录;

配置 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下载

results matching ""

    No results matching ""