上云无忧 > 文档中心 > 百度智能云云手机SDK文档
百度智能云云手机SDK文档

文档简介:
云手机Android SDK文档v1.5.5 云手机Android SDK主要功能是为APP赋予云手机使用能力,可以通过SDK连接云手机,完成对云手机的一系列操作。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠



云手机Android SDK文档v1.5.5

云手机Android SDK主要功能是为APP赋予云手机使用能力,可以通过SDK连接云手机,完成对云手机的一系列操作。

简介

云游戏Android SDK 发行版包括aar包、javadoc文档、完整的Demo示例。以下使用表示SDK解压根目录。

  • AAR文件:/aar,开发时导入
  • mapping:/mapping,mapping文件
  • javadoc文档:/javadoc,javadoc文档
  • 示例项目源码:/demoSrc,完整的demo目录。帮助您快速熟悉开发SDK
  • 示例项目APK:/demo.apk,demo apk
  • 用户手册:本文档

运行环境

可运行于 Android 4.2( API Level 16) 及 以 上 版 本

SDK导入及配置

申请APPID

开发者请向运营申请创建App并获取sdk使用的appid和seckey。

####导入aar包 SDK包含gameboxlib-veriosn-xxx.aar和android-support-v4.jar,请将aar文件复制到项目libs目录,并根据如下代码配置build.gradle

android {
   //android标签内添加aar目录
    repositories {
        flatDir {
            dirs 'libs'
        }
    }
}

dependencies {
    //添加依赖
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile(name: 'cloudphonelib-veriosn-xxx', ext: 'aar')
}

SDK权限配置


<uses-permission android:name="android.permission.INTERNET"
 /> <uses-permission android:name="android.permission.
WRITE_EXTERNAL_STORAGE" /> <uses-permission 
android:name="android.permission.READ_EXTERNAL_STORAGE"
 /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" 
/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />


代码混淆


-keepattributes SourceFile,LineNumberTable,Signature -keepclasseswithmembernames 
class * { native <methods>; } -keep class com.alibaba.fastjson.**
 { *; } -keep class com.redfinger.playsdk.fragment.**{*;} -keep 
class com.redfinger.playsdk.widget.**{*;} -keep class com.gc.redfinger.** { *; }


SDK初始化

在Application的onCreate方法中调用如下代码完成初始化:

/**
     * 初始化sdk
     *
     * @param ak appKey
     * @param sk secKey
     */ public void init(String ak, String sk, String dc);

###切换pass服务,isNewPass为true使用新的pass,false使用老的,不传默认是使用新的.

useCache是否缓存云手机,会把token存在本地,下次连接直接通过本地token


/**
     * 初始化sdk
     *
     * @param ak appKey
     * @param sk secKey
     * @param sk isNewPass
     */ CloudPhoneManager.getInstance(this).init(appKey, secKey, YOUR_CHANNEL, true);
 public void init(String ak, String sk, String dc, boolean isNewPass, boolean useCache) 


云手机连接

申请云手机设备

通过CloudPhoneManager申请云手机设备,单个用户同时只能申请一台云手机设备。如申请设备成功则返回状态码:

APIConstants.APPLY_DEVICE_SUCCESS和DeviceControl用于控制设备,否则返回对应错误码。


/**
     * 根据申请云手机设备
     *
     * @param vmcode   指定设备号,如不指定,则随机申请
     * @param callback 异步回调
     */ GameBoxManager.getInstance(this).applyCloudDevice(String vmcode,
 @NonNull new APICallback<DeviceControl>(){ @Override public void
 onAPICallback(DeviceControl deviceControl, int code) { //回调 } })


获取设备控制器

在申请过设备的情况下,每次重连云手机之前,调用此接口获取设备控制器,用于连接、操作云手机。


/**
     * 获取当前设备控制器
     * @return
     */ public DeviceControl getDeviceControl() { if
 (mDeviceInfo != null && (mDeviceControl == null ||
 mDeviceControl.isReleased())) { mDeviceControl = new DeviceControlImpl(mContext, mDeviceInfo); } return mDeviceControl; }


启动云手机

在设备申请成功后,可使用返回的DeviceControl启动云手机。云手机界面需要添加到一个FragmentActivity中,

需要传入ViewGroup的id供添加云手机View。如返回状态码:APIConstants.CONNECT_DEVICE_SUCCESS则表示设备启动成功。

建议云手机界面全屏展示,参照demo中云手机界面

DeviceControl.startCloudPhone(@NonNull FragmentActivity activity, @IdRes int containerId, @NonNull 
APICallback<String> callback)

退出云手机

通过设备控制器DeviceControl退出云手机是指断开当前设备连接,但是不会释放当前设备,下次可以继续连接。

/**
     * 停止云手机连接,在退出的时候必须回调,否则无法进行下一次连接
     */ public abstract void stopCloudPhone();

释放云手机

通过CloudPhoneManager释放云手机设备,设备释放之后将无法继续连接,需要重新申请设备。

/**
     * 释放云手机设备
     * @param callback
     */ public void releaseCloudDevice(final APICallback<String> callback) ()

云手机操作

设置云手机监听

/**
 * 设置云手机监听
 * @param listener    PlayListener 回调
 */ public abstract void setPlayListener(PlayListener listener); /**
 * 云手机监听
 */ public interface PlayListener { /**
     * 网络延时反馈
     *
     * @param ping 网络延时,单位ms
     */ void onPingUpdate(int ping); /**
         * 无操作超时回调
         *
         * @param type    类型。1为后台,2为前台
         * @param timeout 超时时长,单位s
         * @return 返回true表示消耗了事件,sdk不处理超时逻辑;返回false表示未消耗事件,在倒计时结束后,sdk会停止连接
         */ boolean onNoOpsTimeout(int type, long timeout); }

设置前后台无操作超时

/**
 * 设置无操作超时  (modifyed v1.5.3)
 * @param foregroundTimeout 前台超时,单位s
 * @param backgroundTimeout 后台超时,单位s
 */ public abstract void setNoOpsTimeout(long foregroundTimeout, long backgroundTimeout);

设置清晰度,更高的清晰度效果更加,但是相对消耗流量也更多。

/**
     * 调整码率
     * @param level 等级,目前支持5档
     * {@link APIConstants#DEVICE_VIDEO_QUALITY_AUTO} 自动
     * {@link APIConstants#DEVICE_VIDEO_QUALITY_HD} 高清
     * {@link APIConstants#DEVICE_VIDEO_QUALITY_ORDINARY} 普通
     * {@link APIConstants#DEVICE_VIDEO_QUALITY_HS} 一般
     * {@link APIConstants#DEVICE_VIDEO_QUALITY_LS} 流畅
     */ public abstract void switchQuality(@APIConstants.VideoQuality String level);

设置声音开关

/**
     * 云手机声音开关
     * @param audioSwitch
     */ public abstract void setAudioSwitch(boolean audioSwitch);

按键指令发送 目前支持home、back、menu三个按键发送

/**
     * 向设备发起控制命令
     *
     * @param command {@link APIConstants#DEVICE_COMMAND_HOME},{@link APIConstants#DEVICE_COMMAND_MENU},{@link
     *                APIConstants#DEVICE_COMMAND_BACK}
     */
    public abstract void sendCommandToDevices(@APIConstants.DeviceCommand String command);

传感器采集

传感器采集,是将本地的传感器信息采集后发送到云手机上进行还原,达到本地与云手机一致。目前支持采集得传感器包含麦克风、摄像头、陀螺仪、加速器等。 备注: 1、麦克风和摄像头包含采集、编码、传输、还原、渲染等步骤,目前摄像头对480P(800*480)支持效果较好(1-2s),720p支持待优化。 2、音视频编码需要根据设备类型和需求进行适配,因此采集、编码需要开发者自行根据DEMO中hardware模块进行调整开发

传感器回调

在申请到设备之后,注册此监听,当云手机App使用到相关传感器之后,会进行回调。 回调包含:硬件ID(SensorConstants.CloudPhoneSensorId)、硬件状态(SensorConstants.SensorState)

/**
     * 注册监听,接收硬件采集信息
     *
     * @param listener
     */ public abstract void registerSensorSamplerListener(SensorSamplerListener listener); /**
     * 采集硬件信息回掉
     */ public interface SensorSamplerListener { /**
         * 采集硬件信息状态发生变化
         *
         * @param sensor 硬件类型  @SensorConstants.CloudPhoneSensorId
         * @param state  硬件状态  @SensorConstants.SensorState
         */ void onSensorSamper(@SensorConstants.CloudPhoneSensorId int sensor, @SensorConstants.SensorState int state); }

传感器数据发送

将本地数据发送至传感器,需要指定传感器类型和数据类型,具体参照DEMO

/**
     * 发送硬件信息,此接口针对摄像头和麦克风数据
     *
     * @param type 硬件类型 @{@SensorConstants.CloudPhoneSensorId}
     * @param type 数据@{@SensorConstants.CameraVideoType}
     * @return
     */
    public abstract void sendSensorInputData(@SensorConstants.CloudPhoneSensorId int sendor,
                                             @SensorConstants.AudioType @SensorConstants.CameraVideoType int type,
                                             byte[] data);

    /**
     * 发送硬件传感器信息,此接口针对陀螺仪、加速器、重力感应等传感器
     * @param sendor 传感器id @{@SensorConstants.CloudPhoneSensorId}
     * @param sensorType @{传感器类型 SensorConstants.SensorType}
     * @param data 传感器数据参数
     */
    public abstract void sendSensorInputData(@SensorConstants.CloudPhoneSensorId int sendor,
                                             @SensorConstants.SensorType int sensorType,
                                             float... data);

云手机信息修改

为了方便支持客户端同步设备信息,目前支持将IMEI、AndroidID同步到云手机上。 (added v1.5.3) 调用GameManager方法,在申请设备之进行设置。 备注:由于修改硬件信息为异步操作,成功率为99%

/**
     * 设置云手机参数信息,需要在申请设备之前进行设置
     *
     * @param key   目前支持imei,androidid
     * @param value
     */ public void addDeviceMockInfo(@APIConstants.MockInfo String key, String value) { mMockInfo.put(key, value); } /**
     * 移除云手机参数信息
     *
     * @param key 目前支持imei,androidid设置
     */ public void removeDeviceMockInfo(@APIConstants.MockInfo String key) { mMockInfo.remove(key); }

DEMO示例集成

为了方便大家快速开发使用云游戏SDK,我们在SDK中附带了一个DEMO,供大家参考使用,可以根据DEMO稍做修改快速集成到自己的产品中。 DemoApplication : 将 onCreate中初始化sdk复制到产品自定义的Application完成初始化。 HomeActivity:主界面,包含一个云手机的界面,可以进行自定义。 GameRunningActivity:云手机连接界面,已经完成了出下载外的所有逻辑。

附录

状态码说明

代码 含义
APPLY_DEVICE_SUCCESS 1000 设备申请成功
CONNECT_DEVICE_SUCCESS 1001 设备连接成功代码
RECONNECT_DEVICE_SUCCESS 1002 设备重连成功
DISCONNECT_SUCCESS 1011 断开成功
RELEASE_SUCCESS 1012 释放成功
ERROR_API_CALL_ERROR -1000 API调用失败
ERROR_NO_DEVICE -1001 无设备
ERROR_NETWORK_ERROR -1002 网络错误
ERROR_DEVICE_EXPIRED -1003 设备过期
ERROR_DEVICE_OTHER_ERROR -1004 申请设备未知错误
ERROR_OTHER_DEVICE_RUNNING -1005 有未释放的设备实例
ERROR_SDK_INIT_ERROR -1006 播放SDK初始化失败
ERROR_APP_QUERY_ERROR -1007 应用信息获取失败
ERROR_WAITING_QUEUE -1008 游戏启动失败,正在排队
ERROR_OTHER_DEVICE_WAITING -1009 有其他游戏正在排队,无法排队
ERROR_DEVICE_TOKEN_VALID_FAILED -1010 通过DeviceToke跨进程重连错误

SDK提交记录

主版提交记录:

  • 20190507: v1.0.0 首次提交
  • 20210115: v1.5.5 云手机和云游戏sdk合并



相似文档
  • 百度云游戏账号互通Android SDK主要功能是为了打通用户手机与云手机之间数据传输,将用户信息同步到云手机,实现账号登陆功能,以及将云手机上游戏支付订单发送到用户本地手机,完成订单支付。
  • 服务水平协议SLA 协议生效时间:2020年01月07日 本服务等级协议(Service Level Agreement,以下简称 "SLA")规定了百度智能云向客户提供的ARM云手机(Arm Cloud Mobilephone,简称"ARMCM")服务可用性等级指标及赔偿方案。
  • 云手机的收费标准是什么? 高配旗舰型:旗舰级ARM处理芯片,适用于大型云游戏等场景,¥99/月起 中配普通型:主流级ARM处理芯片,适用于内容监测等场景,¥69/月起 入门基础型:入门级ARM处理芯片,适用于应用托管等场景, ¥49/月起
  • 为什么不能安装、卸载、更新APP? 云手机处在连接状态上,默认有用户使用设备,不能安装、卸载、更新app,需要断开释放设备才可以进行以上操作
  • 由于客户端ak/sk存在泄漏的安全性问题,所以添加了更为安全的token校验方式。目前两种校验方式都有效,用户可以灵活的选用适合自己系统的sdk请求校验方式。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部