启动云手机串流
方法名称
boolean start(PlayerFragment fragment, final Bundle bundle)
功能描述
启动云手机串流。该方法用于启动云手机的串流功能,将云机画面和音频传输到本地设备。
参数说明
|
字段名 |
类型 |
说明 |
|---|---|---|
|
fragment |
PlayerFragment |
播放器Fragment,用于显示云机画面,可以为null |
|
bundle |
Bundle |
启动参数,包含云机连接信息,如IP地址、端口、用户ID等 |
以下参数可通过Bundle对象在启动云手机串流时进行自定义配置:
- 基础连接参数(必填)
参数键
类型
默认值
说明
LAUNCH_KEY_ADDRESS
String
无
云机IP地址(必填),由后台返回的服务端地址
LAUNCH_KEY_PORT
int
0
云机端口号(必填),由后台返回的服务端口
LAUNCH_KEY_TOKEN
String
随机生成
认证令牌(必填),用于云机身份校验,校验失败返回错误码100002
LAUNCH_KEY_USERID
String
无
用户标识(必填),多云机场景下的用户唯一ID
- 音视频配置参数(选填)
参数键
类型
默认值
说明
LAUNCH_KEY_FREE_ASPECT
boolean
true
自由比例开关,true:允许自定义分辨率
LAUNCH_KEY_WIDTH
int
1080
画面宽度(像素),自由比例开启时生效
LAUNCH_KEY_HEIGHT
int
1920
画面高度(像素),自由比例开启时生效
LAUNCH_KEY_ASAM_INV
int
10
音频采样间隔(毫秒),可选值:10或20
LAUNCH_KEY_ASAM_RATE
int
48000
音频采样率,可选值:8000/44100/48000
LAUNCH_KEY_ACH_COUNT
int
2
音频声道数
- 1:单声道
- 2:双声道
LAUNCH_KEY_ABUF_SIZE
int
0
音频缓冲区大小
- 0:自动调整
- 1:最小缓冲
- 高级配置
参数键
类型
默认值
说明
LAUNCH_KEY_VIDEO_PERF
int
2
性能日志开关,开启后收集视频性能数据
LAUNCH_KEY_EVENT_EXECUTOR
int
0
执行器选择
- 1:Ignition执行器(IGNITION_EXECUTOR),任务会通过Ignition策略调度执行, 适用于端侧低算力场景
- 0:EventLoop执行器(LOOP_EXECUTOR),任务通过传统的EventLoop策略执行, 适用于大部分普通场景
LAUNCH_KEY_HIDE_STREAM_AT_START_UP
boolean-
false
启动时串流画面选项,用于控制串流启动时是否显示画面的配置项,通过设置该值为true,可以实现串流启动时隐藏画面,便于开发者进行页面初始化或动画加载等操作
注意事项
- 标有必填的参数必须提供有效值,否则可能导致连接失败。
- 加密参数在公有云部署环境下强制生效。
- 分辨率参数仅在LAUNCH_KEY_FREE_ASPECT=true时生效。
- 通过createBundle(userId, Map)可扩展自定义参数。
Bundle初始化参数配置示例:
public Bundle createBundle(String address, int aport, int atype, String token, String userId, int width, int height) { Bundle bundle = new Bundle(); // 基础连接参数 bundle.putString(LAUNCH_KEY_ADDRESS, address); // 云机ip,后台返回 bundle.putInt(LAUNCH_KEY_PORT, aport); // 云机端口,后台返回 bundle.putInt(LAUNCH_KEY_TYPE, atype); // 后台返回 bundle.putString(LAUNCH_KEY_TOKEN, token); // 校验token,后台返回,云机校验失败会返回100002异常码 bundle.putString(LAUNCH_KEY_USERID, userId); // 多云机共用用户id,可用用户登录id,也可自定义 // 个性化视频配置 bundle.putBoolean(LAUNCH_KEY_FREE_ASPECT, true); // 开启自由比例 bundle.putInt(LAUNCH_KEY_WIDTH, width); // 任意分辨率宽 bundle.putInt(LAUNCH_KEY_HEIGHT, height); // 任意分辨率高 // 个性化音频配置 bundle.putInt(LAUNCH_KEY_ASAM_INV, 10); // 音频采样间隔:10或20 bundle.putInt(LAUNCH_KEY_ASAM_RATE, 48000); // 音频采样率:8000、44100、48000 bundle.putInt(LAUNCH_KEY_ACH_COUNT, 2); // 音频声道数:1-单声道,2-双声道 bundle.putInt(LAUNCH_KEY_ABUF_SIZE, 0); // 端侧音频缓冲大小:0-自动大小,1-最小 // 高级配置 bundle.putInt(LAUNCH_KEY_VIDEO_PERF, 2); // 开启性能日志 return bundle; }
返回值
boolean:成功返回true,失败返回false。
调用示例
// 启动自定义串流Activity
private void startCloudPhoneStream() {
// 准备串流参数(这些参数通常从服务器获取)
String address = "192.168.1.100"; // 云机IP
int aport = 10000; // 云机端口
int atype = 1; // 类型
String token = "your_token_here"; // 认证token
String userId = "user_123"; // 用户ID
int width = 1080; // 分辨率宽
int height = 1920; // 分辨率高
// 创建Bundle参数
Bundle bundle = createBundle(address, aport, atype, token, userId, width, height);
// 启动Activity
Intent intent = new Intent(this, CustomCloudPhoneActivity.class);
intent.putExtras(bundle);
startActivity(intent);
}
注意事项:
- 必须先调用init方法,否则SDK未初始化将导致启动失败。
- bundle必须包含必要的连接参数,否则启动失败。
- 建议使用try-catch包裹该方法调用,以捕获可能的异常。