本章节为您介绍如何集成云游戏 SDK。
build.gradle
文件中的 repositories
中配置 maven 仓库地址,参考以下示例:buildscript {
repositories {
maven {
url 'https://artifact.bytedance.com/repository/Volcengine/'
}
}
}
allprojects {
repositories {
maven {
url 'https://artifact.bytedance.com/repository/Volcengine/'
}
}
}
cloudgame-release.aar
文件拷贝到 libs
目录下。在应用模块的 build.gradle
文件中的 dependencies
中加入:repositories {
flatDir {dirs 'libs'}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
// 云游戏 SDK
implementation files('libs/cloudgame-release.aar')
implementation 'androidx.annotation:annotation:1.1.0'
// 选择引用以下三种框架中的任意一种
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.alibaba:fastjson:1.1.72.android'
implementation 'com.fasterxml.jackson.core:jackson-databind:2.7.0'
implementation 'com.fasterxml.jackson.core:jackson-core:2.7.0'
}
build.gradle
文件中的 dependencies
中添加 veGameSDK 的依赖,参考以下示例:implementation 'com.volcengine.vegame:vegame:1.47.7'
build.gradle
文件中的 dependencies
中添加 veGameSDK 以及插件包的依赖,参考以下示例:implementation 'com.volcengine.vegame:vegame:1.47.7'
implementation 'com.volcengine.vegame:core-full:1.47.7'
android {
// ...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
org.java-websocket:Java-WebSocket:x.x.x
RTCVideo.startVideoCapture
接口时,需要引入 Kotlin 依赖。根据实际场景在 AndroidManifest.xml
文件中声明 SDK 需要的权限,参考以下示例:
//网络权限,使用场景:音视频传输等
<uses-permission android:name="android.permission.INTERNET" />
//WiFi网络状态,使用场景:用户手机网络状态变化监听
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
//设置播放模式的权限:外放 / 听筒
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
//同步定位信息,使用场景:当有些游戏需要获取用户的地理位置时,我们需要获取用户的地理位置信息
//并传送给远端Pod
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
//读写存储
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
说明:
- 存储写入权限需动态申请。参考:https://developer.android.com/training/permissions/requesting
- 如果 App 指向 Android 10 以上 (targetSdkVersion >= 29),而且还未适配 “Scoped Storage”。请将
AndroidManifest.xml
中的requestLegacyExternalStorage
设置为true
。参考: https://developer.android.com/training/data-storage/use-cases#opt-out-scoped-storage
<manifest> <application android:requestLegacyExternalStorage="true"> </application> </manifest>
在接入云游戏 SDK 之前,需要获取火山引擎账号对应的原始 Access Key ID(ak)和 Secret Access Key(sk),用于生成临时鉴权密钥(登录火山引擎控制台后,点击页面右上角用户信息,选择 账号 > API访问密钥)。
调用 签发临时 Token 接口,获取用于鉴权的临时密钥(ak、sk 和 token 的获取方式,参考 快速入门)。
获取到临时鉴权密钥之后,将其填入 配置 GamePlayConfig 中的对应位置。
在 app/src/main/AndroidManifest.xml
文件的 meta-data
中填入注册的火山引擎用户账号(可通过火山引擎官网页面右上角 用户 > 账号管理 > 主账号信息 获取)。参考以下示例:
<meta-data
android:name="VOLC_ACCOUNT_ID"
android:value="21000xxxxx" />
调用 init
接口,初始化 VeGameEngine:
VeGameEngine.getInstance().init();
配置启动游戏需要的参数:
GamePlayConfig.Builder builder = new GamePlayConfig.Builder();
builder.userId(userId) // 自定义客户端用户 ID
.ak(ak) // 必填参数,临时鉴权 ak
.sk(sk) // 必填参数,临时鉴权 sk
.token(token) // 必填参数,临时鉴权 token
.container(mContainer) // 必填参数,用来承载画面的 Container, 参数说明: layout 需要是 FrameLayout 或者 FrameLayout 的子类
.roundId(intent.getStringExtra(KEY_ROUND_ID)) // 必填参数,自定义游戏生命周期标识
.videoStreamProfileId(intent.getIntExtra(KEY_ClARITY_ID, 1)) // 选填参数,清晰度档位
.gameId(intent.getStringExtra(KEY_PARAM_GAME_ID)) // 必填参数, 游戏 ID
.enableAcceleratorSensor(false) // 打开加速度传感器开关
.enableGravitySensor(false) // 打开重力传感器开关
.enableGyroscopeSensor(false) // 打开陀螺仪开关
.enableMagneticSensor(false) // 打开磁力传感器开关
.enableOrientationSensor(false) // 打开方向传感器开关
.enableVibrator(false) // 打开本地振动开关
.enableLocationService(true) // 打开本地定位功能开关
.enableLocalKeyboard(true) // 打开本地键盘开关
.enableFileChannel(true) // 打开文件通道开关
.streamListener(IStreamListener streamListener); // 获取音视频流信息回调监听
GamePlayConfig gamePlayConfig = builder.build();
调用 start
接口,启动游戏:
veGameEngine.start(gamePlayConfig, IGamePlayerListener playerListener);