阅读本文,您可以获取 Java SDK 云手机操控的接口调用示例,实现快速开发。
说明
本文的调用示例包含接口的部分参数。由于参数间可能存在互斥关系,在调用时,请您参考注释,进行调整。
调用接口前,请先完成 Java SDK 的安装及初始化操作。
本节为您介绍云手机操控相关接口的功能和调用示例。
您可以调用 ScreenShot 接口截图 ScreenShot。详细的参数说明可参见 ScreenShot 接口文档。
接口调用示例如下所示。
package com.volcengine.ACEP.demo; import com.volcengine.model.acep.*; import com.volcengine.service.acep.ACEPService; public class ScreenShotDemo { public static void main(String[] args) { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY ACEPService service = ACEPService.getInstance(); service.setAccessKey(System.getenv("VOLC_ACCESSKEY")); service.setSecretKey(System.getenv("VOLC_SECRETKEY")); ScreenShotBody body = new ScreenShotBody(); // 实例 ID,可通过调用 ListPod 接口获取。 body.setPodId("7299381659819xxxxxx"); // 实例所属业务 ID,可在「云手机控制台-业务管理-业务详情」中获取。 body.setProductId("1608456935646xxxxxx"); // 截图请求的唯一标识,防止由于网络等原因造成重复请求,同一 RoundId 在 5 分钟内只可使用一次。 body.setRoundId("01"); // 是否保存截图文件在云手机实例: // <li> true:上传截图文件到火山引擎对象存储,并保存截图文件在云手机实例中。 </li> // <li> false:默认值,上传截图文件到火山引擎对象存储,上传完成后,删除保存在云手机实例中的文件。 </li> // // 截图文件保存和清理逻辑如下: // <li> 当保存截图文件在云手机实例时,截图超过 1000 张时会清理之前保存的截图文件; </li> // <li> 当上传截图文件到火山引擎对象存储时,截图上传到对象存储成功后再清理云手机实例中的截图文件; </li> // <li> 当云手机存储空间小于 600MB 时: </li> // <li> 若设置该参数为 true,则不可执行截图操作; </li> // <li> 若设置该参数为 false,可执行截图操作。 </li> body.setIsSavedOnPod(true); // 截图画面横竖屏旋转: // <li> 0:默认值,截图方向不做处理; </li> // <li> 1:截图画面旋转为竖屏: </li> // <li> 手机竖屏的截图,不做处理; </li> // <li> 手机横屏的截图,截图顺时针旋转 90 度。 </li> body.setRotation(0); // 截图事件是否广播: // <li> true:默认值,广播; </li> // <li> false:不广播。 </li> body.setIsBroadcasted(true); // 设置截图地址回调触发的频次: // <li> 0/1/置空:当前行为/默认行为,表示每次调用本接口发起截图,都会刷新 URL,触发新的截图地址回调; </li> // <li> -1:URL 固定不刷新,直到 7 天刷新一次 URL(由于 TOS 的 URL 链接有效期为 7 天); </li> // <li> 其他数值:截图累计 xx 次后,再刷新 URL,刷新 URL 再触发回调。URL 不变,则不触发新的回调。 </li> body.setInterval(0); try { ScreenShotRes resp = service.screenShot(body); System.out.println(resp); } catch (Exception e) { e.printStackTrace(); } } }
您可以调用 BatchScreenShot 接口批量截图 BatchScreenShot。详细的参数说明可参见 BatchScreenShot 接口文档。
接口调用示例如下所示。
package com.volcengine.ACEP.demo; import com.volcengine.model.acep.*; import com.volcengine.service.acep.ACEPService; import java.util.ArrayList; import java.util.List; public class BatchScreenShotDemo { public static void main(String[] args) { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY ACEPService service = ACEPService.getInstance(); service.setAccessKey(System.getenv("VOLC_ACCESSKEY")); service.setSecretKey(System.getenv("VOLC_SECRETKEY")); BatchScreenShotBody body = new BatchScreenShotBody(); // 需要发起截图请求的实例 ID 列表,批量操作的最大实例数量为 100。 List<String> PodIdList = new ArrayList<>(); PodIdList.add("7299381659819xxxxxx"); PodIdList.add("7299405883363xxxxxx"); body.setPodIdList(PodIdList); // 实例所属业务 ID,可在「云手机控制台-业务管理-业务详情」中获取。 body.setProductId("1608456935646xxxxxx"); // 是否保存截图文件在云手机实例: // <li> true:上传截图文件到火山引擎对象存储,并保存截图文件在云手机实例中。 </li> // <li> false:默认值,上传截图文件到火山引擎对象存储,上传完成后,删除保存在云手机实例中的文件。 </li> // // 截图文件保存和清理逻辑如下: // <li> 当保存截图文件在云手机实例时,截图超过 1000 张时会清理之前保存的截图文件; </li> // <li> 当上传截图文件到火山引擎对象存储时,截图上传到对象存储成功后再清理云手机实例中的截图文件; </li> // <li> 当云手机存储空间小于 600MB 时: </li> // <li> 若设置该参数为 true,则不可执行截图操作; </li> // <li> 若设置该参数为 false,可执行截图操作。 </li> body.setIsSavedOnPod(true); // 截图画面横竖屏旋转: // <li> 0:默认值,截图方向不做处理; </li> // <li> 1:截图画面旋转为竖屏: </li> // <li> 手机竖屏的截图,不做处理; </li> // <li> 手机横屏的截图,截图顺时针旋转 90 度。 </li> body.setRotation(0); // 截图事件是否广播: // <li> true:默认值,广播; </li> // <li> false:不广播。 </li> body.setIsBroadcasted(true); // 设置截图地址回调触发的频次: // <li> 0/1/置空:当前行为/默认行为,表示每次调用本接口发起截图,都会刷新 URL,触发新的截图地址回调; </li> // <li> -1:URL 固定不刷新,直到 7 天刷新一次 URL(由于 TOS 的 URL 链接有效期为 7 天); </li> // <li> 其他数值:截图累计 xx 次后,再刷新 URL,刷新 URL 再触发回调。URL 不变,则不触发新的回调。 </li> body.setInterval(0); try { BatchScreenShotRes resp = service.batchScreenShot(body); System.out.println(resp); } catch (Exception e) { e.printStackTrace(); } } }
您可以调用 StartRecording 接口开始录屏 StartRecording。详细的参数说明可参见 StartRecording 接口文档。
接口调用示例如下所示。
package com.volcengine.ACEP.demo; import com.volcengine.model.acep.*; import com.volcengine.service.acep.ACEPService; public class StartRecordingDemo { public static void main(String[] args) { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY ACEPService service = ACEPService.getInstance(); service.setAccessKey(System.getenv("VOLC_ACCESSKEY")); service.setSecretKey(System.getenv("VOLC_SECRETKEY")); StartRecordingBody body = new StartRecordingBody(); // 实例所属业务 ID,可在「云手机控制台-业务管理-业务详情」中获取。 body.setProductId("1608456935646xxxxxx"); // 实例 ID,可通过调用 ListPod 接口获取。 body.setPodId("7299381659819xxxxxx"); // 设置最大录屏时长,单位:秒。 // 支持设置的最大值为 14400,即 4 小时。 body.setDurationLimit(120); // 录屏请求的唯一标识。 // 为避免由于网络等原因造成重复请求,同一 RoundId 在 5 分钟内只可使用一次。 body.setRoundId("01"); // 是否保存录屏文件在云手机实例: // <li> true:上传录屏文件到火山引擎对象存储,并保存录屏文件在云手机实例中; </li> // <li> false:默认值,上传录屏文件到火山引擎对象存储,上传完成后,删除保存在云手机实例中的文件。 </li> body.setIsSavedOnPod(true); try { StartRecordingRes resp = service.startRecording(body); System.out.println(resp); } catch (Exception e) { e.printStackTrace(); } } }
您可以调用 StopRecording 接口停止录屏 StopRecording。详细的参数说明可参见 StopRecording 接口文档。
接口调用示例如下所示。
package com.volcengine.ACEP.demo; import com.volcengine.model.acep.*; import com.volcengine.service.acep.ACEPService; public class StopRecordingDemo { public static void main(String[] args) { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY ACEPService service = ACEPService.getInstance(); service.setAccessKey(System.getenv("VOLC_ACCESSKEY")); service.setSecretKey(System.getenv("VOLC_SECRETKEY")); StopRecordingBody body = new StopRecordingBody(); // 实例所属业务 ID,可在「云手机控制台-业务管理-业务详情」中获取。 body.setProductId("1608456935646xxxxxx"); // 实例 ID,可通过调用 ListPod 接口获取。 body.setPodId("7299381659819xxxxxx"); try { StopRecordingRes resp = service.stopRecording(body); System.out.println(resp); } catch (Exception e) { e.printStackTrace(); } } }
您可以调用 PushFile 接口上传文件 PushFile。详细的参数说明可参见 PushFile 接口文档。
接口调用示例如下所示。
package com.volcengine.ACEP.demo; import com.volcengine.model.acep.*; import com.volcengine.service.acep.ACEPService; import java.util.ArrayList; import java.util.List; public class PushFileDemo { public static void main(String[] args) { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY ACEPService service = ACEPService.getInstance(); service.setAccessKey(System.getenv("VOLC_ACCESSKEY")); service.setSecretKey(System.getenv("VOLC_SECRETKEY")); PushFileBody body = new PushFileBody(); // 业务 ID,可在「云手机控制台-业务管理-业务详情」中获取。 body.setProductId("1608456935646xxxxxx"); // 需要推送文件的实例 ID 列表,长度上限为 200。 List<String> PodIdList = new ArrayList<>(); PodIdList.add("7299381659819xxxxxx"); body.setPodIdList(PodIdList); // (TosBucket 填写时,必填)存储桶下的目录或文件名称(不能以 / 开头),正确示例:cloudphone/gameApk/my_photo.jpg。 body.setTosFilePath("files/file01.pdf"); // (TosBucket 填写时,必填)对象存储服务地址,例如:tos-cn-beijing.volces.com。 body.setEndpoint("tos-cn-beijing.volces.com"); // (TosBucket 填写时,必填)对象存储服务区域,例如:cn-beijing。 body.setRegion("cn-beijing"); // 从对象存储推送文件到云手机实例,指定保存源文件的火山引擎对象存储中的存储桶名称,例如:test-bucket。 // > 说明:与 DownloadUrl 二选一,如果 TosBucket 填写,则会忽略 DownloadUrl 参数。 body.setTosBucket("my-bucket"); // 推送文件至云手机实例中的目标路径(不包括文件名),支持的目标路径包括以下目录: // <li> /sdcard/ </li> // <li> /data/local/ </li> body.setTargetDirectory("/data/local/"); // 是否自动解压推送的压缩文件: // <li> 0:推送 zip 文件后,自动解压文件(默认); </li> // <li> 1:推送 zip 文件后,不自动解压文件。 </li> body.setAutoUnzip(1); try { PushFileRes resp = service.pushFile(body); System.out.println(resp); } catch (Exception e) { e.printStackTrace(); } } }
您可以调用 PullFile 接口下载文件 PullFile。详细的参数说明可参见 PullFile 接口文档。
接口调用示例如下所示。
package com.volcengine.ACEP.demo; import com.volcengine.model.acep.*; import com.volcengine.service.acep.ACEPService; public class PullFileDemo { public static void main(String[] args) { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY ACEPService service = ACEPService.getInstance(); service.setAccessKey(System.getenv("VOLC_ACCESSKEY")); service.setSecretKey(System.getenv("VOLC_SECRETKEY")); PullFileBody body = new PullFileBody(); // 业务 ID,可在「云手机控制台-业务管理-业务详情」中获取。 body.setProductId("1608456935646xxxxxx"); // 实例 ID,可通过调用 ListPod 接口获取。 body.setPodId("7299381659819xxxxxx"); // 火山引擎对象存储中的存储桶名称。 body.setTosBucket("my-bucket"); // 存储桶下保存文件的完整路径,包括文件名,并且指定的路径必须存在(不能以 / 开头),例如:cloudphone/screen_record/record.mp4 // > 说明:当下载文件夹时,会将文件夹以 .zip 文件的格式下载,TosFilePath 也要指定为以 .zip 文件格式结尾。 body.setTosFilePath("files/download.zip"); // 对象存储服务地址。 body.setEndpoint("tos-cn-beijing.volces.com"); // 对象存储服务区域。 body.setRegion("cn-beijing"); // 实例中待下载文件的路径或文件名,支持从以下路径下载文件: // <li> /sdcard/ </li> // <li> /data/misc/logd/ + 日志文件名/ </li> body.setFilePath("/data/misc/logd"); try { PullFileRes resp = service.pullFile(body); System.out.println(resp); } catch (Exception e) { e.printStackTrace(); } } }
您可以调用 RunCommand 接口异步执行命令 RunCommand。详细的参数说明可参见 RunCommand 接口文档。
接口调用示例如下所示。
package com.volcengine.ACEP.demo; import com.volcengine.model.acep.*; import com.volcengine.service.acep.ACEPService; import java.util.ArrayList; import java.util.List; public class RunCommandDemo { public static void main(String[] args) { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY ACEPService service = ACEPService.getInstance(); service.setAccessKey(System.getenv("VOLC_ACCESSKEY")); service.setSecretKey(System.getenv("VOLC_SECRETKEY")); RunCommandBody body = new RunCommandBody(); // 实例所归属的业务 ID,可在「云手机控制台-业务管理-业务详情」中获取。 body.setProductId("1608456935646xxxxxx"); // 实例 ID 列表,对多个实例批量执行命令操作时,支持的最大实例数量为 100。 List<String> PodIdList = new ArrayList<>(); PodIdList.add("7299381659819xxxxxx"); PodIdList.add("7297074858797xxxxxx"); body.setPodIdList(PodIdList); // 待执行的命令,支持的最大长度为 1024 字节。 body.setCommand("ls"); // 权限类型。 body.setPermissionType("root"); // 异步命令执行的超时时长,单位为 s,默认值为 300,取值范围为 [0,21600]。 body.setTimeoutSeconds(300); try { RunCommandRes resp = service.runCommand(body); System.out.println(resp); } catch (Exception e) { e.printStackTrace(); } } }
您可以调用 RunSyncCommand 接口同步执行命令 RunSyncCommand。详细的参数说明可参见 RunSyncCommand 接口文档。
接口调用示例如下所示。
package com.volcengine.ACEP.demo; import com.volcengine.model.acep.*; import com.volcengine.service.acep.ACEPService; import java.util.ArrayList; import java.util.List; public class RunSyncCommandDemo { public static void main(String[] args) { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY ACEPService service = ACEPService.getInstance(); service.setAccessKey(System.getenv("VOLC_ACCESSKEY")); service.setSecretKey(System.getenv("VOLC_SECRETKEY")); RunSyncCommandBody body = new RunSyncCommandBody(); // 实例所归属的业务 ID,可在「云手机控制台-业务管理-业务详情」中获取。 body.setProductId("1608456935646xxxxxx"); // 实例 ID 列表,对多个实例批量执行命令操作时,支持的最大实例数量为 100。 List<String> PodIdList = new ArrayList<>(); PodIdList.add("7299381659819xxxxxx"); PodIdList.add("7297074858797xxxxxx"); body.setPodIdList(PodIdList); // 待执行的命令,支持的最大长度为 1024 字节。 body.setCommand("ls"); // 权限类型。 body.setPermissionType("root"); try { RunSyncCommandRes resp = service.runSyncCommand(body); System.out.println(resp); } catch (Exception e) { e.printStackTrace(); } } }
您可以调用 BanUser 接口封禁用户 BanUser。详细的参数说明可参见 BanUser 接口文档。
接口调用示例如下所示。
package com.volcengine.ACEP.demo; import com.volcengine.model.acep.*; import com.volcengine.service.acep.ACEPService; public class BanUserDemo { public static void main(String[] args) { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY ACEPService service = ACEPService.getInstance(); service.setAccessKey(System.getenv("VOLC_ACCESSKEY")); service.setSecretKey(System.getenv("VOLC_SECRETKEY")); BanUserBody body = new BanUserBody(); // 业务 ID,可在「云手机控制台-业务管理-业务详情」中获取。 body.setProductId("1608456935646957568"); // 实例 ID。 body.setPodId("7299381659819563817"); // 目标封禁用户的 ID。 body.setUserId("user01"); // 封禁时长,单位:秒,取值范围为 [60, 259290]: // <li> 若传入值为空或 0 表示允许该用户重新连接云手机; </li> // <li> 若传入值大于 0,且小于 60,自动调整为 60; </li> // <li> 若传入值大于 259290,自动调整为 259290。 </li> body.setForbiddenInterval(120); try { BanUserRes resp = service.banUser(body); System.out.println(resp); } catch (Exception e) { e.printStackTrace(); } } }