云 APK 支持参数传递,需要云端 APK 应用进行一定改造,响应相关参数。
参数传递方式
在调用云渲染的
CreateSession API 时,需在 ApplicationParams 参数中按固定格式填写:--es key value
格式说明:
--es、key、value 三个字段之间需以空格分隔。该参数将随任务传递至客户端容器。
示例:
--es ParamKey {value1,value2} xxx
参数接收与获取流程
1. 广播触发
云渲染任务发起后,云端 Android 容器会自动将业务 App 置于前台运行,并发出广播:
android.intent.action.CLOUD_GAMING_STARTED
2. 接收与解析
业务 APK 需在
MainActivity 中注册该广播。接收到广播后,可通过以下方式获取数据:String data = intent.getStringExtra("key");
示例说明:
传递参数 | 获取方式 | 最终值 |
--es ParamKey {value1,value2} xxx | intent.getStringExtra("ParamKey") | {value1,value2} xxx |
获取数据后,业务 APK 可据此参数进行业务处理,例如直播间跳转。
本地测试方法
业务 APK 完成广播注册后,可使用以下
adb 命令在本地模拟测试跳转功能是否正常:adb shell am broadcast -a android.intent.action.CLOUD_GAMING_STARTED -e tencent_scheme Tencent://autoAuth
核心实现建议
1. 创建广播接收器
需创建
BroadcastReceiver 类监听 android.intent.action.CLOUD_GAMING_STARTED 广播,并通过 intent.getExtras() 提取携带的额外数据。2. 动态注册
在
MainActivity 或 Service 中动态注册该 Receiver,确保在容器拉起时能正确响应并解析参数。完整代码示例
1. 广播接收处理类
import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.util.Log;import android.os.Bundle;public class CloudGamingBroadcastReceiver extends BroadcastReceiver {private static final String TAG = "CloudGamingReceiver";@Overridepublic void onReceive(Context context, Intent intent) {// 检查广播Action是否匹配目标if (intent == null || !"android.intent.action.CLOUD_GAMING_STARTED".equals(intent.getAction())) {return;}// 打印广播的完整信息(包括额外数据)Log.d(TAG, "接收到CLOUD_GAMING_STARTED广播,来源: " + intent.getSourceFilters());// 提取广播携带的额外数据(根据实际场景调整键名)Bundle extras = intent.getExtras();if (extras != null) {Log.d(TAG, "广播携带的额外数据: ");for (String key : extras.keySet()) {Object value = extras.get(key);Log.d(TAG, " Key: " + key + ", Value: " + value);}} else {Log.d(TAG, "广播未携带额外数据");}}}
2. 在 Activity 中动态注册
import android.content.IntentFilter;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;public class MainActivity extends AppCompatActivity {private CloudGamingBroadcastReceiver receiver;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 实例化广播接收器receiver = new CloudGamingBroadcastReceiver();// 创建IntentFilter并添加ActionIntentFilter filter = new IntentFilter();filter.addAction("android.intent.action.CLOUD_GAMING_STARTED");// 动态注册广播接收器registerReceiver(receiver, filter);}@Overrideprotected void onDestroy() {super.onDestroy();// 注销广播接收器,防止内存泄漏if (receiver != null) {unregisterReceiver(receiver);}}}
3. 关键说明
项目 | 说明 |
作用 | 配合云渲染任务发起时传递的参数,在业务 APK 被云渲染 Android 容器拉起后,自动接收广播、解析参数。 |
广播 Action | android.intent.action.CLOUD_GAMING_STARTED |
参数格式 | --es key value |
本地测试命令 | adb shell am broadcast -a android.intent.action.CLOUD_GAMING_STARTED -e tencent_scheme Tencent://autoAuth |