微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Chromecast 发送器应用程序未连接到 Android 接收器应用程序,始终连接到网络接收器

如何解决Chromecast 发送器应用程序未连接到 Android 接收器应用程序,始终连接到网络接收器

我跟着这个代码实验室 Cast Connect with ATV App 和这个代码实验室 Cast-enable an Android app ,在那之后

  • 我在 Cast 控制台中添加了我的 Chromecast 作为测试设备
  • 签署了 ATV 应用程序
  • 安装在电视盒中并尝试从发送器应用程序进行投射,但它打开的是网络接收器而不是 ATV 应用程序 发件人 AndroidManifest.xml
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
        <uses-permission android:name="android.permission.WAKE_LOCK" />
        <uses-permission android:name="android.permission.INTERNET" />
    
        <queries>
            <intent>
                <action android:name="android.intent.action.VIEW" />
    
                <data android:mimeType="video/*,application/x-mpegURL" />
            </intent>
        </queries>
    
        <application
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:networkSecurityConfig="@xml/network_security_config"
            android:protectionLevel="signature"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/Theme.JMXPlayer"
            android:usesCleartextTraffic="true"
            tools:ignore="UnusedAttribute">
            <Meta-data
                android:name="com.google.android.gms.ads.AD_MANAGER_APP"
                android:value="true" />
            <Meta-data
                android:name="com.google.android.gms.version"
                android:value="@integer/google_play_services_version" />
            <Meta-data
                android:name="com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME"
                android:value="com.stream.jmxplayer.casty.CastOptionProvider" />
            <Meta-data
                android:name="com.google.android.gms.version"
                android:value="@integer/google_play_services_version" /> 

发件人选项提供程序类

    
    public class CastOptionProvider implements Optionsprovider {
        @Override
        public CastOptions getCastOptions(Context context) {
            CastOptions customCastOptions = Casty.customCastOptions;
            if (customCastOptions == null) {
                List<String> buttonActions = createButtonActions();
                int[] compatButtonAction = {1,3};
    
                Notificationoptions notificationoptions = new Notificationoptions.Builder()
                        .setActions(buttonActions,compatButtonAction)
                        .setTargetActivityClassName(ExpandedControlsActivity.class.getName())
                        .build();
    
                CastMediaOptions mediaOptions = new CastMediaOptions.Builder()
                        .setNotificationoptions(notificationoptions)
                        .setExpandedControllerActivityClassName(ExpandedControlsActivity.class.getName())
                        .build();
                LaunchOptions launchOptions = new LaunchOptions.Builder()
                        .setrelaunchIfRunning(true)
                        .setAndroidReceiverCompatible(true).build();
    
                return new CastOptions.Builder()
                        .setReceiverApplicationId(Casty.receiverId)
                        .setCastMediaOptions(mediaOptions)
                        .setLaunchOptions(launchOptions)
                        .build();
            } else {
                return customCastOptions;
            }
        }
    
        private List<String> createButtonActions() {
            return Arrays.asList(MediaIntentReceiver.ACTION_REWIND,MediaIntentReceiver.ACTION_TOGGLE_PLAYBACK,MediaIntentReceiver.ACTION_FORWARD,MediaIntentReceiver.ACTION_STOP_CASTING);
        }
    
        @Override
        public List<SessionProvider> getAdditionalSessionProviders(Context context) {
            return null;
        }
    } 

接收方 AndroidManifest.xml


    <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
        <uses-feature
            android:name="android.hardware.touchscreen"
            android:required="false" />
        <uses-feature
            android:name="android.software.leanback"
            android:required="true" />
    
        <application
            android:name=".JmxApplication"
            android:allowBackup="true"
            android:appComponentFactory="androidx.core.app.CoreComponentFactory"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:networkSecurityConfig="@xml/network_security_config"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/Theme.JMXPlayerCast">
    
            <Meta-data
                android:name="com.google.android.gms.cast.tv.RECEIVER_OPTIONS_PROVIDER_CLASS_NAME"
                android:value="com.stream.jmxplayercast.CastReceiverOptionsprovider" />
    
            <activity
                android:name=".ui.MainActivity"
                android:banner="@drawable/main_logo"
                android:label="@string/app_name"
                android:launchMode="singleTask"
                android:logo="@drawable/circle_cropped_logo"
                android:screenorientation="landscape">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
    
                <intent-filter>
                    <action android:name="com.google.android.gms.cast.tv.action.LAUNCH" />
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
            </activity>
    
            <activity
                android:name=".ui.PlayerActivity"
                android:exported="true"
                android:launchMode="singleTask">
                <intent-filter>
                    <action android:name="com.google.android.gms.cast.tv.action.LOAD" />
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
    
                <intent-filter>
                    <action android:name="android.intent.action.VIEW" />
    
                    <category android:name="android.intent.category.DEFAULT" />
                    <category android:name="android.intent.category.broWSABLE" />
    
                    <data android:scheme="http" />
                    <data android:scheme="https" />
                    <data android:mimeType="video/*" />
                    <data android:mimeType="application/*" />
                </intent-filter>
            </activity>
    
        </application>

ReceiverOptionProver 类是 vanilla codelab 的选项提供程序。 我做错了什么以及如何解决这个问题.. 提前致谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。