环境要求

    Android 5.0 或以上版本的 Android 真机或模拟器
    IDE:Android Studio(推荐使用最新版本)
    JDK 版本需要1.8+

添加 Maven 仓库地址

1.在 Project 根目录下的 build.gradle 文件中的 repositories 中配置了 maven 仓库地址,参考以下示例:

    repositories {
          maven {
            url "https://maven.vmos.cn"
        }
    }
}

2.在项目 build.gradle 文件中引入 ArmCloudSDK:

implementation "net.armcloud.armcloudsdk:armcloudsdkv3:1.0.6"

3.设置 Java 版本到1.8,参考以下示例:

android {
    // ...
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

权限声明

根据实际场景在 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.ACCESS_COARSE_LOCATION"/>
    <!--用于访问GPS定位-->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <!--用于采集音频信息-->
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <!--用于采集视频信息-->
    <uses-permission android:name="android.permission.CAMERA" />
	<!--用于震动控制-->
    <uses-permission android:name="android.permission.VIBRATE" />
	<!--文件读写权限 用于上传文件-->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!--文件管理权限(Android 11 (API level 30) 及以上) 用于上传文件-->
    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />

快速开始

初始化

调用 prepare 方法,初始化 ArmCloudEngine:

        ArmCloudEngine.prepare(this, object : ICloudCoreManagerStatusListener {
            override fun onPrepared() {
               Log.i("ArmCloudEngine", "初始化完成")
            }
        })

配置 PhonePlayConfig

配置启动云手机需要的参数:

        val builder: PhonePlayConfig.Builder = PhonePlayConfig.Builder()
        
        builder.context(this)
            .userId(dto.userId) //必填参数 自定义客户端用户 ID
            .padCode(dto.padCode) // 必填参数, 云手机实例 ID
            .token(dto.token) // 必填参数,临时鉴权 token
            .clientType(dto.clientType) //必填参数 客户端类型
            .container(container) // 必填参数,用来承载画面的 Container
			.enableMultiControl(isMultiControl) // 选填参数 是否开启群控
			.setPadCodes(mChosePadCodes) // 选填参数 群控设备号集合
            .rotation(rotation) // 选填参数 屏幕的横竖屏 默认竖屏
            .videoStreamProfileId(videoStreamProfileId) // 选填参数,清晰度档位ID 默认高清
            .enableGyroscopeSensor(enableGyroscopeSensor) // 选填参数 打开陀螺仪开关 默认false
            .enableVibrator(enableVibrator) // 选填参数 打开本地振动开关 默认false
            .enableLocationService(enableLocationService) // 选填参数 打开本地定位功能开关 默认false
            .enableLocalKeyboard(enableLocalKeyboard) // 选填参数 打开本地键盘开关 默认false
			.enableClipboardCloudPhoneSync(isEnable) // 选填参数 打开云机剪切板同步至真机 默认true
            .enableClipboardLocalPhoneSync(isEnable) // 选填参数 打开真机剪切板同步至云机 默认true
            .enableCamera(isEnable) // 选填参数 开启相机权限 默认 true
            .enableMic(isEnable) // 选填参数 开启麦克风权限 默认 false
            .streamType(streamType) // 选填参数 指定启动云手机时拉取音视频流类型 默认拉取音视频流
            .videoRenderMode(renderMode) // 选填参数 指定视频流渲染模式 默认等比缩放居中模式
            .videoRotationMode(videoRotationMode) // 选填参数 指定视频旋转模式 默认非SDK处理旋转
			.autoRecycleTime(autoRecycleTime) // 选填参数 指定无操作回收时间 单位s 默认300s

        val phonePlayConfig: PhonePlayConfig = builder.build()

启动云手机

调用 start 接口,启动云手机:

ArmCloudEngine.start(phonePlayConfig, IPlayerListener playerListener)