如何判断 Intent 是否来自 Google Cast 通知

How to tell if Intent was from Google Cast notification

我已经通过通知控件设置了投射功能。我遇到的问题是我需要区分用户单击通知(生成 activity)和创建 activity 的任何其他时间。

我认为这可以通过向清单中的接收方实体添加 intent-filter 来完成:

    <receiver android:name=".services.CastIntentReceiver">
        <intent-filter>
           something goes here?
        </intent-filter>
    </receiver>

这基本上是必需的,因此我可以在 activity 从通知重新启动后重建我放置 Cast Controller 的视图。如果没有任何区别,该实现会干扰我为方向更改后的视图重建构建的功能(因为它们都使用 onResume()

在此先感谢您的帮助。

尝试阅读 Media Route Provider。 Media Route 允许从他们的 Android 设备播放媒体内容,允许 Android 用户即时显示图片、播放歌曲或分享视频。

Android 媒体路由器框架允许制造商通过称为 MediaRouteProvider 的标准化接口在其设备上启用播放。路由提供程序定义了用于在接收方设备上播放媒体的通用接口,从而可以从任何支持媒体路由的 Android 应用程序在您的设备上播放媒体。

媒体路由提供程序作为 Android 应用程序的一部分分发。通过扩展 MediaRouteProviderService 或使用您自己的服务包装您的 MediaRouteProvider 实现并为媒体路由提供程序声明一个 Intent 过滤器,您的路由提供程序可用于其他应用程序。这些步骤允许其他应用程序发现并使用您的媒体路由。

媒体路由器框架支持两种主要的播放类型。媒体路由提供商可以支持一种或两种类型的播放,具体取决于您的播放设备的能力和您要支持的功能:

  • 远程播放 — 这种方法使用接收器设备来处理内容数据检索、解码和播放,而用户手中的 Android 设备用作遥控器。 Android 支持 Google Cast.
  • 的应用程序使用此方法
  • 辅助输出——使用这种方法,Android 媒体应用程序检索、呈现视频或音乐并将其直接传输到接收设备。此方法用于支持 Android.

    上的无线显示输出

    <service android:name=".provider.SampleMediaRouteProviderService" android:label="@string/sample_media_route_provider_service" android:process=":mrp"> <intent-filter> <action android:name="android.media.MediaRouteProviderService" /> </intent-filter> </service>

    public class SampleMediaRouteProviderService 扩展 MediaRouteProviderService {<br> @覆盖 public MediaRouteProvider onCreateMediaRouteProvider() { return 新的 SampleMediaRouteProvider(这个); } }