借助 YouTube 移动直播深层链接,Android 应用可以直接从移动设备启动 YouTube 直播。应用只需提供一个入口点(例如用户可以点击的按钮),通过 Android intent 机制启动移动直播流程即可。
示例
此流程展示了深层链接到 YouTube 应用的应用的用户体验,用户会进入“移动直播设置”界面。
- 首先,用户需要配置直播,设置标题、隐私模式和其他直播选项。
- 然后,用户前往“缩略图照片”屏幕,为数据流设置缩略图图片。
- 最后,用户开始直播,并从前置或后置摄像头广播视图。
设备要求
Android 设备必须满足以下要求才能正确支持 YouTube 直播和移动直播深层链接:
- Android 版本:Marshmallow (API 23) 或更高版本
- 摄像头:至少一个能够以至少 30Hz 的速率录制 720p 的摄像头
- 麦克风:板载麦克风
- 音频编码器:硬件加速音频编码器,能够将 8 位 PCM 单声道音频编码为 44.1KHz 或更高分辨率的 AAC
- 视频编码器:硬件加速视频编码器,能够以 30Hz 或更高的速率将 720P 原始视频编码为 H.264/AVC
- 已安装 YouTube 应用:13.02 或更高版本
移动实时 intent 规范
如需关联到 YouTube 移动直播流程,您的 Android 应用会启动 Intent。Intent 通过在 YouTube 应用中启动 activity 来启动直播流程。
intent 格式
移动直播 intent 使用自定义 Action
字符串转到 YouTube 应用中的直播创建 activity。它还指定了 YouTube 移动应用的软件包名称。
intent extra
YouTube 应用设置流程会处理数据流配置。以下 intent extra 会设置与直播相关联的参数:
Params | |
---|---|
Intent.EXTRA_REFERRER | 必需。此参数用于指定一个 URI,表示启动直播 activity 的应用。此值必须遵循 android-app: scheme 格式以及软件包名称。此值有助于准确归因和核算。 |
Intent.EXTRA_SUBJECT | 可选。此参数提供直播的文本说明。它会作为 String 放置在 intent extra 软件包中。此值可用于为直播添加带有品牌信息的注释,例如“从设备直播”。 |
启动直播流程
第 1 步:检查是否有支持
您的客户端应先确认是否可以启动移动直播 intent,方法是验证设备上是否安装了 YouTube 应用,以及 YouTube 应用版本是否支持直播。以下代码示例定义了两种方法来实现此目的:
canResolveMobileLiveIntent
方法用于验证设备是否支持 Mobile Live Intent。validateMobileLiveIntent
在if-else
语句的上下文中调用canResolveMobileLiveIntent
方法。- 如果设备支持 intent,则可以启动直播流程。
- 如果设备不支持 intent,则可能会提示用户安装或升级 YouTube 应用。
private boolean canResolveMobileLiveIntent(Context context) { Intent intent = new Intent("com.google.android.youtube.intent.action.CREATE_LIVE_STREAM") .setPackage("com.google.android.youtube"); PackageManager pm = context.getPackageManager(); ListresolveInfo = pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); return resolveInfo != null && !resolveInfo.isEmpty(); } private void validateMobileLiveIntent(Context context) { if (canResolveMobileLiveIntent(context)) { // Launch the live stream Activity } else { // Prompt user to install or upgrade the YouTube app } }
第 2 步:启动直播 activity
为了启动直播流程,您的客户端应用需要创建并启动一个 Intent,如以下代码示例所示:
private Intent createMobileLiveIntent(Context context, String description) { Intent intent = new Intent("com.google.android.youtube.intent.action.CREATE_LIVE_STREAM") .setPackage("com.google.android.youtube"); Uri referrer = new Uri.Builder() .scheme("android-app") .appendPath(context.getPackageName()) .build(); intent.putExtra(Intent.EXTRA_REFERRER, referrer); if (!TextUtils.isEmpty(description)) { intent.putExtra(Intent.EXTRA_SUBJECT, description); } return intent; } private void startMobileLive(Context context) { Intent mobileLiveIntent = createMobileLiveIntent(context, "Streaming via ..."); startActivity(mobileLiveIntent); }