You need to enable JavaScript to run this app.
导航
云手机操控
最近更新时间:2024.10.29 19:42:43首次发布时间:2024.08.23 11:16:35
复制全文
我的收藏
有用
有用
无用
无用

阅读本文,您可以获取 Java SDK 云手机操控的接口调用示例,实现快速开发。

说明

本文的调用示例包含接口的部分参数。由于参数间可能存在互斥关系,在调用时,请您参考注释,进行调整。

调用说明

  • 本文提供的接口调用示例均通过 AK 和 SK 初始化实例。
  • 接口的参数说明和错误码等信息可通过接口文档查看。

前提条件

调用接口前,请先完成 Java SDK 的安装及初始化操作。

调用示例

本节为您介绍云手机操控相关接口的功能和调用示例。

截图 ScreenShot

您可以调用 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。详细的参数说明可参见 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。详细的参数说明可参见 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。详细的参数说明可参见 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。详细的参数说明可参见 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。详细的参数说明可参见 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。详细的参数说明可参见 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。详细的参数说明可参见 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。详细的参数说明可参见 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();
    }
  }
}