
# 启动云手机串流
#### 方法名称
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协议                                                                                                  |
     
  **注意事项**
  1. 标有**必填**的参数必须提供有效值，否则可能导致连接失败。
  
  2. 加密参数在公有云部署环境下强制生效。
  
  3. 分辨率参数仅在LAUNCH_KEY_FREE_ASPECT=true时生效。
  
  4. 通过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包裹该方法调用，以捕获可能的异常。
 
