Я пытаюсь создать приложение, которое может транслировать представления Android на Chromecast, и я подумал, что нашел что-то многообещающее в CastRemoteDisplayLocalService . Я создал простое тестовое приложение, но обнаружил, что обратный вызов onCreatePresentation никогда не вызывался, когда я кастовал свое устройство. После некоторых поисков я обнаружил, что мое приложение было опубликовано не как приложение для удаленного отображения, а как пользовательский приемник приложений из консоли разработчика Google Cast.
К сожалению, когда я пытаюсь создать новое приложение из консоли, RemoteПоказать приложение не вариант. После некоторого поиска я наткнулся на этот вопрос о переполнении стека , в котором говорилось, что 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? Спасибо!