动态更新Android Cast Receiver应用程序ID

时间:2019-02-19 20:02:25

标签: android android-mediaplayer chromecast google-cast google-cast-sdk

我有一个开放源代码库来处理媒体播放,我正在将其从仅使用旧的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的有效方法吗?如果是这样,谁能说出为什么没有显示“投射”按钮?如果没有,谁能与我分享其他解决方案?谢谢!

0 个答案:

没有答案