# 快速集成
Juphoonn 视频客服除了提供 Android SDK 与 iOS SDK 之外,也提供主流的开发平台及工具集成插件、示例。
可灵活适配 Android 、iOS、Windows 终端。只需调用几个接口,几行代码即可拥有视频通话能力。另外还支持对接行内通知管理平台等,业务集成更加灵活。
本文为您介绍了 Android 端集成 Plugin 的操作步骤,帮助您快速集成 Plugin 并实现音视频通话(访客侧)的基本功能。
# 1. 概览
如果你是第一次使用菊风视频能力平台的服务,我们推荐观看下面的视频,了解关于菊风服务的基本信息以及如何快速集成示例项目。
# 2. 开发环境要求
Android SDK API 等级 21 或以上
Android Studio 3.5及以上版本
支持 Android 5.0 或以上版本的移动设备(非AndroidX)
TIP
注:我们提供的 aar 库都是依赖 Android Support 库的,如果您的工程需要用AndroidX集成,可以通过 Google 官网提供的独立工具 Jetifier (opens new window) 将依赖于Android Support 的库迁移为依赖于等效的 AndroidX 软件包。
# 3. 下载 Juphoon_Rtc_Plugin 库
通过下面链接下载最新的集成插件包,并解压其中 Juphoon_Rtc_Plugin_for_Android_vXXX_CallCenter 文件,解压后 Plugin 文件如下图所示
# 4. 项目配置
# 导入库
在工程目录新建存放 aar 的目录,将 JCCGuestPlugin.aar、JRTCKit.aar 和 JRTCSDK.aar 文件拷入
repositories {
flatDir {
dirs '../libs'
}
}
dependencies {
implementation(name:'JRTCSDK', ext: 'aar')
implementation(name: 'JRTCKit', ext: 'aar')
implementation(name:'JCCGuestPlugin', ext: 'aar')
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:2.0.4'
implementation 'com.android.support:design:28.0.0'
}
# 权限说明
插件内部已经配置好权限
<uses-feature android:name="android.hardware.microphone"/>
<uses-feature android:name="android.hardware.audio.output"/>
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature
android:name="android.hardware.bluetooth"
android:required="false" />
<uses-feature android:name="android.hardware.bluetooth_le"
android:required="false"/>
<!-- 网络权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 网络状态 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- WiFi 状态 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 允许程序访问电话状态 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- 允许程序在手机屏幕关闭后后台进程仍然运行 -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- 摄像头权限 -->
<uses-permission android:name="android.permission.CAMERA" />
<!-- 允许程序录制声音通过手机或耳机的麦克 -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<!-- 允许程序修改声音设置信息 -->
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<!-- 写SD权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 允许程序振动 -->
<uses-permission android:name="android.permission.VIBRATE" />
<!-- 允许程序连接配对过的蓝牙设备 -->
<!--Android 12 以及以上需要动态申请 android.permission.BLUETOOTH_CONNECT 权限-->
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH"/>
<!-- 6.0之后判断是否有悬浮窗权限,没有则申请权限 -->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<!-- 6.0之后判断是否有悬浮窗权限,没有则申请权限 -->
<uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />
//如果Android tagetVersion 设置29及以上,则需要添加前台服务权限,屏幕共享需要
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
//如果Android tagetVersion 设置29以下,则需要注册activity,屏幕共享需要
<activity
android:name="com.justalk.cloud.zmf.ZmfActivity"
android:theme="@android:style/Theme.Dialog" />
//如果Android tagetVersion 设置29或以上,则需要注册service,屏幕共享需要
<service
android:name="com.justalk.cloud.zmf.CaptureScreenService"
android:enabled="true"
android:foregroundServiceType="mediaProjection"/>
# 关于蓝牙权限
- Android 12 以下,配置蓝牙权限只要在 AndroidManifest.xml 中 添加 android.permission.BLUETOOTH
- Android 12 以及以上需要在 AndroidManifest.xml中 添加android.permission.BLUETOOTH_CONNECT,同时需要动态申请,具体参考官网说明,Android 12 中的新蓝牙权限 (opens new window)
# 混淆规则
将 JRTCSDK 类加入不混淆名单
-keep class com.juphoon.rtc.MtcEngine {
private static int notified(java.lang.String , int , java.lang.String );
}
-keep class com.juphoon.rtc.MtcEngineRoom {
static void onAudioOutput(java.lang.String , byte[] ,
int , int , int );
}
-keep interface com.justalk.cloud.zmf.ZmfVideo$*Callback { *; }
-keep interface com.justalk.cloud.zmf.Zmf$*Callback { *; }
-keep interface com.justalk.cloud.lemon.MtcImageFilter { *; }
-keep class com.justalk.cloud.lemon.MtcNumber { *; }
-keep class com.justalk.cloud.zmf.Zmf { *; }
-keep class com.justalk.cloud.zmf.CamDrv { *; }
-keep class com.justalk.cloud.zmf.UVCCamera { *; }
-keep class com.justalk.cloud.zmf.I420Image { *; }
-keep class com.justalk.cloud.lemon.MtcPathCb { *; }
-keep class com.justalk.cloud.avatar.** { *; }