Обновлять идентификатор приложения Android Cast Receiver динамически - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть библиотека с открытым исходным кодом, обрабатывающая воспроизведение мультимедиа, и я обновляю ее с использования старой библиотеки 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 не появляется?Если нет, может кто-нибудь поделиться со мной другим решением?Спасибо!

...