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.hikvision.ezviz:ezuikit:2.1'
 }

使用Maven中央仓库获得

如果是之前采用过直接下载方式的需要删除之前拷贝进来的所有so库文件以及jar包

<dependency>
    <groupId>com.hikvision.ezviz</groupId>
    <artifactId>ezuikit</artifactId>
    <version>2.0</version>
</dependency>

直接下载

打开下载好的包 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"//只支持32位
        }
    }
     sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }

注意: 目前提供所有so均为32位,只能在armeabi-v7a引用,所以需要添加


    ndk {
    abiFilters "armeabi-v7a"//只支持32位
}

注意!

如果当前应用的TargetVersion>=28(Android 9.0),则必须在应用的AndroidManifest.xml文件中添加以下标签,否则sdk在运行过程中将可能出现崩溃问题(NoClassDefFoundError: Failed resolution of: Lorg/apache/http/impl/client/DefaultHttpClient)。

        <uses-library android:name="org.apache.http.legacy"
            android:required="false"/>

上述标签添加到应用的AndroidManifest.xml的application标签下,添加后的效果如下:


    <application >
            ******
            <uses-library android:name="org.apache.http.legacy"
                android:required="false"/>
            ******
    </application>

在需要显示播放的地方添加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在打包时不能混淆,请添加以下内容!

-dontwarn com.ezviz.player.**
-keep class com.ezviz.player.** { *;}

-dontwarn com.ezviz.statistics.**
-keep class com.ezviz.statistics.** { *;}

-dontwarn com.ezviz.stream.**
-keep class com.ezviz.stream.** { *;}

-dontwarn com.ezviz.hcnetsdk.**
-keep class com.ezviz.hcnetsdk.** { *;}


-dontwarn com.ezviz.opensdk.**
-keep class com.ezviz.opensdk.** { *;}

-dontwarn com.hik.**
-keep class com.hik.** { *;}

-dontwarn com.hikvision.**
-keep class com.hikvision.** { *;}

-dontwarn com.videogo.**
-keep class com.videogo.** { *;}

-dontwarn org.MediaPlayer.PlayM4.**
-keep class org.MediaPlayer.PlayM4.** { *;}

-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.* { *; }

#引用mars的xlog,混淆配置
-keep class com.tencent.mars.** {
 public protected private *;
}

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);

results matching ""

    No results matching ""