我有一个开放源代码库来处理媒体播放,我正在将其从仅使用旧的cast
库更新为使用cast framework。
文档说我们应该像so那样设置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
是当前项目中包含接收方应用程序ID的字符串。
但是,因为这是一个开源项目,所以我希望包含该库的应用程序能够设置自己的接收器应用程序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
中也看到了这一点,但是我不确定这是否是问题。
这是更新接收方应用程序ID的有效方法吗?如果是这样,谁能说出为什么没有显示“投射”按钮?如果没有,谁能与我分享其他解决方案?谢谢!