云 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"; @Override public 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; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 实例化广播接收器 receiver = new CloudGamingBroadcastReceiver(); // 创建IntentFilter并添加Action IntentFilter filter = new IntentFilter(); filter.addAction("android.intent.action.CLOUD_GAMING_STARTED"); // 动态注册广播接收器 registerReceiver(receiver, filter); } @Override protected 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 |