# InitGlobalConfig

> 建议使用 [WMPFSettingApi.setSetting](/doc/oplatform/Miniprogram_Frame/api/cli/setting/setSetting)、WMPFUiApi 接口.

## 调用参数

| 属性             | 说明                                     |
| ---------------- | ---------------------------------------- |
| globalConfigJson | 传入的配置 json ，最大化的配置示例见下方 |

### JSON 参数

| 属性                   | 类型         | 说明                                                                                                                                  | 最低版本   |
| ---------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
| uiZoom                 | number/float | 调整小程序原生 ui 的显示大小，设置后下一次启动小程序生效。默认 1.0，建议值为 `0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0`，但可设置为任意值 | | 
| usbCameraName          | string       | 要使用 USB 摄像头的名称                                                                                                               | |
| usbCameraProductId     | number/int   | 要使用 USB 摄像头的 productId                                                                                                         | |
| usbCameraVendorId      | number/int   | 要使用 USB 摄像头的 vendorId                                                                                                          | |
| usbSerialNumber        | string       | 要使用 USB 摄像头的 serialNumber                                                                                                      | |
| internalCameraName     | string       | 指定要使用的内置摄像头的 cameraId（从安卓系统获取到的 cameraId），未传入时则自动选择摄像头                                                | WMPF 2.0.0  |
| usbCameraPushFlip      | boolean      | USB 摄像头**推流画面**是否旋转 180 度                                                                                                     | |
| usbCameraRotationAngle | number/int   | USB 摄像头**预览和推流画面**显示时的旋转角度，默认为 0                                                                                       | |
| cameraPushFlip         | boolean      | 系统摄像头**推流画面**是否旋转 180 度                                                                                                     | |
| cameraRotationAngle    | number/int   | 系统摄像头**推流画面**的旋转角度，默认为 0                                                                                                    | |
| reverseLandscape       | boolean      | 是否将小程序画面旋转 180 度，默认为 false                                                                                                    | WMPF 1.2.0 |
| closeButtonActionType  | number/int   | 胶囊按钮关闭小程序的行为（需申请权限）。传 10 时，用户点击胶囊按钮关闭会弹框提示小程序不允许关闭。默认为 0                                            |   |
| reloadButtonActionType | number/int   | 菜单中重新进入小程序的行为（需申请权限）。传 1 时，用户点击重新进入小程序会弹框提示小程序不允许重新进入。默认为 0                                      | WMPF 2.0.0  |

**关于摄像头参数的说明**
- 指定 USB 摄像头名称可以使用 `usbCameraName`，或 `usbCameraProductId + usbCameraVendorId + usbSerialNumber`，两种方式二选一即可。仅在指定 USB 摄像头的情况下，才会使用 USB 摄像头，其他情况下会使用系统摄像头。
- 指定内置摄像头可以使用 `internalCameraName` 传入从安卓系统获取到的 cameraId。
- 使用 USB 摄像头时，需使用 `usbCameraPushFlip` 和 `usbCameraRotationAngle` 设置画面旋转
- 使用系统摄像头时，需使用 `cameraPushFlip` 和 `cameraRotationAngle` 设置画面旋转，指定 `usb` 开头的配置项无效。
- 预览画面是指当前设备看到的摄像头拍到的画面，推流画面是指微信客户端内看到的当前设备拍摄的画面。
- 使用系统摄像头时，预览画面的方向是系统 API 提供的，不支持调整。

**关于胶囊按钮与重新进入小程序按钮行为控制**

使用 `closeButtonActionType` 和 `reloadButtonActionType` 控制按钮行为时需要申请权限，如有相关业务需求请[联系我们](/doc/oplatform/Miniprogram_Frame/contactus)。

**配置示例**

```json
{
  "uiZoom": 1.0
}
```

## 返回参数

无参数

## 示例代码

```kotlin
val request = WMPFInitGlobalConfigRequest().apply {
    this.baseRequest = WMPFBaseRequestHelper.checked()
    this.globalConfigJson = config
}

val result =
    WMPFIPCInvoker.invokeAsync(
        request,
        IPCInvokerTask_InitGlobalConfig::class.java,
        object : IPCInvokeCallbackEx {
            override fun onCallback(response: WMPFInitGlobalConfigResponse) {
                if (isSuccess(response)) {
                    it.onSuccess(response)
                } else {
                    it.onError(TaskErrorException(createTaskError(response)))
                }
            }

            override fun onBridgeNotFound() {
                it.onError(Exception("bridge not found"))
            }

            override fun onCaughtInvokeException(exception: java.lang.Exception?) {
                if (exception != null) {
                    it.onError(exception)
                } else {
                    it.onError(java.lang.Exception("null"))
                }
            }

        }
    )
if (!result) {
    it.onError(Exception("invoke initGlobalConfig fail"))
}
```
