启动云手机串流
方法名称
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或20,默认值:10
LAUNCH_KEY_ASAM_RATE
int
音频采样率,可选值:8000/44100/48000,默认值: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
启动时串流画面选项,用于控制串流启动时是否显示画面的配置项,通过设置该值为true,可以实现串流启动时隐藏画面,便于开发者进行页面初始化或动画加载等操作,默认值:false
LAUNCH_KEY_PROTOCOL_MODE
int
网络传输协议配置,默认值:0
- 0:mright协议
- 1:mlight协议
注意事项
- 标有必填的参数必须提供有效值,否则可能导致连接失败。
- 加密参数在公有云部署环境下强制生效。
- 分辨率参数仅在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包裹该方法调用,以捕获可能的异常。