工程配置

最近更新时间:2019-09-30 16:57:32

本文档将引导您完成 SDK 的配置。

配置步骤

SDK 下载

您可以前往 SDK 下载 文档下载对应的 SDK 文件。

下载完的 SDK 解压后有以下几个部分:

文件名 说明
LiteAVSDK_Professional_xxx.aar 包含 arr 的SDK
LiteAVSDK_Professional_xxx.zip 包含 so 和 jar 的SDK
Demo 示例工程
Demo/player 超级播放器的使用范例
Demo/libsuperplayer 超级播放器的 UI module
Android 开发包使用指引.pdf 介绍 SDK 的基本功能
工程配置(Android).pdf 介绍 SDK 的接入

系统要求

SDK 支持在 Android 4.0.3(API 15)及以上系统运行,但只有 Android 4.3 (API 18)以上的系统才能开启硬件编码。

工程设置

以 aar 集成为例。

1. 新建工程

新建一个工程,取名为 SuperPlayerTest,工程如下图所示:

Android SuperPlayerTest工程示意图

2. 修改工程 gradle

修改工程的 build.gralde ,内容如下:

flatDir {
    dirs 'libs'
    dirs project(':app').file('libs')
}

如图所示:

Android 工程gradle修改示意图

注意:

增加该代码段是为了工程中所有的 Module 都可以查到我们后续导入的 aar 文件,避免编译错误。

3. 导入aar

将开发包中提供的 aar 文件,导入到 app/libs/LiteAVSDK_XXX.aar (本例使用的是 LiteAVSDK_Professional_4.9.206.aar),并且在您的项目中指明使用该库:

android {
    defaultConfig {
        ndk {
            abiFilters "armeabi", "armeabi-v7a"
        }
    }
    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }
}
dependencies {
    //LiteAVSDK_XXX请按照下载的对应版本填写具体版本号,否则会出现编译错误。(本例使用的是 LiteAVSDK_Professional_4.9.206)
    compile(name: 'LiteAVSDK_Professional_4.9.206', ext: 'aar')
}

如图所示:

Android app gradle修改示意图

注意:

compile(name: 'LiteAVSDK_Professional_4.9.206', ext: 'aar') 请勿写成 compile(name: 'LiteAVSDK_Professional_4.9.206.aar', ext: 'aar') ,无需加上后缀名。

4. 导入 UI 资源 Module

为了减少您开发的工作量,推荐您导入开发包提供的 libsuperplayer Module 到工程中去,复用 UI 部分的代码。

Android Studio 操作流程:【File】>【New】>【Import Module】,如图所示:

Android 导入Module示意图1

Android 导入Module示意图2

当前工程结构如图所示:

Android 导入lib后工程结构示意图

5. 工程添加依赖

修改 app 中的 build.gradle 添加对 libsuperplayer module 的依赖。

compile project(':libsuperplayer')

如图所示:

Android app gralde增加依赖

6. 修改 module 的依赖

修改 libsuperplayer module 中的 build.gralde 添加步骤2中的 aar 依赖。

// LiteAVSDK
compile(name: 'LiteAVSDK_Professional_4.9.206', ext: 'aar')
// 超级播放器弹幕组件依赖
compile 'com.github.ctiao:DanmakuFlameMaster:0.5.4'

如图所示:

Android lib_tcsuperplayer gralde增加依赖

注意:

  • libsuperplayer 所依赖的 aar 版本必须与步骤2中的 aar 版本一致,否则会出现错误。
  • 若您的项目也使用了 com.github.ctiao:DanmakuFlameMaster:0.5.4 该依赖库,在保证兼容的前提下,建议将库的版本号统一。

7. Rebuild Project

rebuild 一下 project 若没有发生错误,则工程配置成功。若提示Could not find :LiteAVSDK_xxx,请检查 libsuperplayer 的依赖,LiteAVSDK 的名字应该和 app gradle 中一致。

配置 App 权限

在 AndroidMainfest.xml 中配置 App 的权限:

<!--网络权限-->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--点播播放器悬浮窗权限-->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<!--存储-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
注意:

  • 测试 Demo 工程为了简单起见, targetSdkVersion 设置为 API 21 ( Android 6.0 以下),不涉及动态权限的申请。
  • 若您的 App 工程 targetSdkVersion 在 API 23 ( Android 6.0 )及以上,请动态申请相关权限,避免引起 crash。

验证

在工程中调用 SDK 接口, 获取 SDK 版本信息, 以验证工程设备是否正确。在 MainActivity 的 onCreate 中调用 getSDKVersion 接口获取版本号:

String sdkver = TXLiveBase.getSDKVersionStr();
Log.d("liteavsdk", "liteav sdk version is : " + sdkver);

使用播放器

1. 修改布局文件

activity_main 中,引入 SuperPlayerView 布局并设置相关属性,完整布局如下:

?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.hans.superplayertest.MainActivity">

    <com.tencent.liteav.demo.play.SuperPlayerView
        android:id="@+id/main_super_player_view"
        android:layout_width="match_parent"
        android:layout_height="200dp" />
</LinearLayout>
注意:

com.hans.superplayertest.MainActivity 应修改为您工程对应的 ID。

2. 修改 Activity

MainActivity中,绑定 SuperPlayerView,以点播视频为例,并初始化相关配置:

public class MainActivity extends AppCompatActivity {
    private SuperPlayerView mSuperPlayerView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mSuperPlayerView = findViewById(R.id.main_super_player_view);
        // 播放器配置
        SuperPlayerGlobalConfig prefs = SuperPlayerGlobalConfig.getInstance();
        // 开启悬浮窗播放
        prefs.enableFloatWindow = true;
        // 设置悬浮窗的初始位置和宽高
        SuperPlayerGlobalConfig.TXRect rect = new SuperPlayerGlobalConfig.TXRect();
        rect.x = 0;
        rect.y = 0;
        rect.width = 810;
        rect.height = 540;
        prefs.floatViewRect = rect;
        // 播放器默认缓存个数
        prefs.maxCacheItem = 5;
        // 设置播放器渲染模式
        prefs.enableHWAcceleration = true;
        prefs.renderMode = TXLiveConstants.RENDER_MODE_ADJUST_RESOLUTION;

        // 通过URL方式的视频信息配置
        SuperPlayerModel model2 = new SuperPlayerModel();
        model2.title  = "测试视频-720P";
        model2.url = "http://1252463788.vod2.myqcloud.com/95576ef5vodtransgzp1252463788/68e3febf4564972819220421305/v.f30.mp4";
        // 开始播放
        mSuperPlayerView.playWithModel(model2);
    }

    @Override
    protected void onResume() {
        super.onResume();
        // 重新开始播放
        if (mSuperPlayerView.getPlayState() == SuperPlayerConst.PLAYSTATE_PLAY) {
            mSuperPlayerView.onResume();
            if (mSuperPlayerView.getPlayMode() == SuperPlayerConst.PLAYMODE_FLOAT) {
                mSuperPlayerView.requestPlayMode(SuperPlayerConst.PLAYMODE_WINDOW);
            }
        }
    }

    @Override
    protected void onPause() {
        super.onPause();
        // 停止播放
        if (mSuperPlayerView.getPlayMode() != SuperPlayerConst.PLAYMODE_FLOAT) {
            mSuperPlayerView.onPause();
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        // 释放
        mSuperPlayerView.release();
        if (mSuperPlayerView.getPlayMode() != SuperPlayerConst.PLAYMODE_FLOAT) {
            mSuperPlayerView.resetPlayer();
        }
    }
}

3. 修改 AndroidManifest

AndroidManifest中,对MainActivity增加一些配置:

<activity android:name=".MainActivity"
    ....
    android:screenOrientation="portrait"
    android:configChanges="orientation|keyboardHidden|screenSize"
    android:launchMode="singleTask"
    android:windowSoftInputMode="stateHidden">

</activity>
注意:

launchMode="singleTask" 必须指定为 singleTask 否则悬浮窗模式切回 Activity 界面会出现多个 Activity 导致异常。

4. 运行工程

运行工程,您可以在手机上看到视频播放的界面。

Android 全屏播放模式效果图

混淆配置

若您的 App 开启混淆配置, 那么请将以下规则加入不混淆名单。

-keep class com.tencent.** { *; }