本章节为您介绍如何集成云游戏 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);