首页 > 解决方案 > CastRemoteDisplayLocalService 可以在自定义接收器中使用吗?

问题描述

我正在尝试创建一个可以在 Chromecast 上广播 Android 视图的应用程序,我认为我在CastRemoteDisplayLocalService中发现了一些有希望的东西。我创建了一个简单的测试应用程序,但发现在我投射设备时从未调用过回调onCreatePresentation 。经过一番搜索,我发现这是因为我的应用程序没有发布为远程显示应用程序,而是来自 Google Cast 开发人员控制台的自定义应用程序接收器。

不幸的是,当我尝试从控制台创建新应用程序时,远程显示应用程序不是一个选项。经过一番搜索,我遇到了这个 Stack Overflow 问题,说 Remote Display API 现在已弃用。有一个名为CastRemoteDisplayApi的接口被标记为已弃用,但我一直尝试使用的类没有被标记为这样。

这让我想知道 CastRemoteDisplayLocalService 和所有其他未标记为已弃用的远程显示类是否实际上已弃用且不可用,或者该功能是否已通过将其配置为接受远程显示而转移到自定义接收器中工作。

这是相关代码现在的样子:

MainActivity.kt

private fun startCastService() {
    val intent = Intent(this, MainActivity::class.java)
    val pendingIntent = PendingIntent.getActivity(this, 0, intent, 0)
    val notificationSettings = CastRemoteDisplayLocalService.NotificationSettings.Builder().setNotificationPendingIntent(pendingIntent).build()

    CastRemoteDisplayLocalService.startService(this, CastRemoteDisplayLocalServiceImpl::class.java, "2839EC8D", castDevice, notificationSettings, object : CastRemoteDisplayLocalService.Callbacks {
        override fun onRemoteDisplaySessionEnded(p0: CastRemoteDisplayLocalService?) {
            Log.d(TAG, "onRemoteDisplaySessionEnded")
        }

        override fun onRemoteDisplaySessionError(p0: Status?) {
            Log.d(TAG, "onRemoteDisplaySessionError")
        }

        override fun onRemoteDisplaySessionStarted(p0: CastRemoteDisplayLocalService?) {
            Log.d(TAG, "onRemoteDisplaySessionStarted")
        }

        override fun onServiceCreated(p0: CastRemoteDisplayLocalService?) {
            Log.d(TAG, "onServiceCreated")
        }
    })
}

CastRemoteDisplayLocalServiceImpl.kt

class CastRemoteDisplayLocalServiceImpl : CastRemoteDisplayLocalService() {

    val TAG = "CastRemoteDisplayLoc..."

    // This function gets called
    override fun onCreate() {
        super.onCreate()
        Log.d(TAG, "onCreate")
    }

    // This function does not get called
    override fun onCreatePresentation(p0: Display?) {
        Log.d(TAG, "onCreatePresentation")
    }

    override fun onDismissPresentation() {
        Log.d(TAG, "onDismissPresentation")
    }
}

如果自定义应用程序接收器有办法获得可以解决此问题的 onCreatePresentation 回调,我很难找到它。如果 CastRemoteDisplayLocalService 实际上已被弃用,是否有另一种方法可以轻松地将 Android 视图投射到 Chromecast?谢谢!

标签: androidkotlinchromecastgoogle-cast

解决方案


推荐阅读