У меня есть библиотека с открытым исходным кодом, обрабатывающая воспроизведение мультимедиа, и я обновляю ее с использования старой библиотеки cast
до использования cast cast .
В документации сказано, чтомы должны установить OptionsProvider
как так :
public class CastOptionsProvider implements OptionsProvider {
@Override
public CastOptions getCastOptions(Context context) {
CastOptions castOptions = new CastOptions.Builder()
.setReceiverApplicationId(context.getString(R.string.app_id))
.build();
return castOptions;
}
@Override
public List<SessionProvider> getAdditionalSessionProviders(Context context) {
return null;
}
}
Где R.string.app_id
- строка в текущем проекте, содержащая идентификатор приложения получателя.
Однако, поскольку это проект с открытым исходным кодом, я хочу, чтобы приложение, включающее эту библиотеку, могло устанавливать собственный идентификатор приложения получателя.
Моя последняя попытка выглядит следующим образом:
class CastOptionsProvider : OptionsProvider {
override fun getCastOptions(context: Context): CastOptions {
return CastOptions.Builder()
.setReceiverApplicationId(applicationId)
.build()
}
override fun getAdditionalSessionProviders(context: Context): List<SessionProvider>? {
return null
}
companion object {
private var applicationId: String? = null
fun setApplicationId(appId: String) {
this.applicationId = appId
}
}
}
<meta-data
android:name="com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME"
android:value=".CastOptionsProvider" />
и в моем приложении, использующем эту библиотеку, я попробовал оба:
CastOptionsProvider.Companion.setApplicationId("R.string.cast_id");
CastContext.getSharedInstance(getApplicationContext()).setReceiverApplicationId("R.string.cast_id");
Это, похоже, все еще не работает, так как MediaRouteButton
не отображается.Я также вижу это в logcat [API] Ignoring message. Namespace 'urn:x-cast:com.google.cast.sse' has not been registered
, но я не уверен, является ли это проблемой или нет.
Это правильный способ обновления идентификатора приложения-получателя?Если так, может кто-нибудь сказать, почему кнопка Cast не появляется?Если нет, может кто-нибудь поделиться со мной другим решением?Спасибо!