Chromecast 按钮在 android 中不可见
Chromecast button not visible in android
我正在关注code lab tutorial。
我的 Gradle 文件看起来像这样
dependencies {
compile 'com.android.support:appcompat-v7:25.0.0'
compile 'com.android.support:mediarouter-v7:25.0.0'}
这是我的 CastOptionsProvider class
public class CastOptionsProvider implements OptionsProvider {
@Override
public CastOptions getCastOptions(Context context) {
return new CastOptions.Builder()
.setReceiverApplicationId(context.getString(R.string.chromecast_app_id))
.build();
}
@Override
public List<SessionProvider> getAdditionalSessionProviders(Context context) {
return null;
}}
这是菜单xml文件
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<item
android:id="@+id/media_route_menu_item"
android:title="@string/media_route_menu_title"
app:actionProviderClass="android.support.v7.app.MediaRouteActionProvider"
app:showAsAction="always" /></menu>
这是我在 MainActivity 中的 OnCreateOptionsMenu 方法
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.navigation_drawer, menu);
mediaRouteMenuItem = CastButtonFactory.setUpMediaRouteButton(getApplicationContext(), menu, R.id.media_route_menu_item);
return true;
}
这在清单文件中
<meta-data
android:name="com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME"
android:value="com.mypackage.CastOptionsProvider" />
我已经完全按照代码实验室教程的形式进行操作,复制并粘贴所有内容,同时更改需要更改的变量。
我的应用程序和 chromecast 设备连接到同一网络。 Chromecast 按钮出现在 Youtube 应用程序中,但未出现在我的应用程序中。我错过了什么?
谢谢
这里缺少属性图标
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<item
android:id="@+id/media_route_menu_item"
android:title="@string/media_route_menu_title"
android:icon="@drawable/chromebutton" app:actionProviderClass="android.support.v7.app.MediaRouteActionProvider"
app:showAsAction="always" /></menu>
它可能无效 app_id。
您可以尝试用示例项目中的 app_id 字符串资源值替换您的 chromecast_app_id 字符串资源。
(现在是 4F8B3483。参见:https://github.com/googlecast/CastVideos-android/blob/master/res/values/strings.xml)。
信不信由你,切换到该值会使投射图标在我的应用程序中可见。
如果一切正常,您只需要重新启动投射设备(它不适用于您的 app_id 注册后不重新启动)。
如果您的应用程序 ID 正确且状态为已发布,请签入 Google Cast SDK Developer Console。
发布您的应用程序 ID 时,请重新启动您的 Chromecast 设备。
出于测试目的,您可以使用 CC1AD845 或 4F8B3483 作为应用程序 ID。这些来自 Google 个示例应用程序。
添加另一个答案作为已接受的答案对我没有任何帮助。只有在构建我的应用程序的保护版本时,这个问题才会发生在我身上。
我不得不在我的混淆器文件中添加几行(基本上是 xml 引用的所有 类,如此处所述:)
-keep class com.your.package.CastOptionsProvider { *; }
// I have a custom MediaRouteActionProvider but this may need to be
// android.support.v7.app.MediaRouteActionProvider in the case of OP
-keep class com.your.package.MediaRouteActionProvider { *; }
我正在关注code lab tutorial。
我的 Gradle 文件看起来像这样
dependencies {
compile 'com.android.support:appcompat-v7:25.0.0'
compile 'com.android.support:mediarouter-v7:25.0.0'}
这是我的 CastOptionsProvider class
public class CastOptionsProvider implements OptionsProvider {
@Override
public CastOptions getCastOptions(Context context) {
return new CastOptions.Builder()
.setReceiverApplicationId(context.getString(R.string.chromecast_app_id))
.build();
}
@Override
public List<SessionProvider> getAdditionalSessionProviders(Context context) {
return null;
}}
这是菜单xml文件
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<item
android:id="@+id/media_route_menu_item"
android:title="@string/media_route_menu_title"
app:actionProviderClass="android.support.v7.app.MediaRouteActionProvider"
app:showAsAction="always" /></menu>
这是我在 MainActivity 中的 OnCreateOptionsMenu 方法
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.navigation_drawer, menu);
mediaRouteMenuItem = CastButtonFactory.setUpMediaRouteButton(getApplicationContext(), menu, R.id.media_route_menu_item);
return true;
}
这在清单文件中
<meta-data
android:name="com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME"
android:value="com.mypackage.CastOptionsProvider" />
我已经完全按照代码实验室教程的形式进行操作,复制并粘贴所有内容,同时更改需要更改的变量。 我的应用程序和 chromecast 设备连接到同一网络。 Chromecast 按钮出现在 Youtube 应用程序中,但未出现在我的应用程序中。我错过了什么? 谢谢
这里缺少属性图标
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<item
android:id="@+id/media_route_menu_item"
android:title="@string/media_route_menu_title"
android:icon="@drawable/chromebutton" app:actionProviderClass="android.support.v7.app.MediaRouteActionProvider"
app:showAsAction="always" /></menu>
它可能无效 app_id。
您可以尝试用示例项目中的 app_id 字符串资源值替换您的 chromecast_app_id 字符串资源。
(现在是 4F8B3483。参见:https://github.com/googlecast/CastVideos-android/blob/master/res/values/strings.xml)。
信不信由你,切换到该值会使投射图标在我的应用程序中可见。
如果一切正常,您只需要重新启动投射设备(它不适用于您的 app_id 注册后不重新启动)。
如果您的应用程序 ID 正确且状态为已发布,请签入 Google Cast SDK Developer Console。
发布您的应用程序 ID 时,请重新启动您的 Chromecast 设备。
出于测试目的,您可以使用 CC1AD845 或 4F8B3483 作为应用程序 ID。这些来自 Google 个示例应用程序。
添加另一个答案作为已接受的答案对我没有任何帮助。只有在构建我的应用程序的保护版本时,这个问题才会发生在我身上。
我不得不在我的混淆器文件中添加几行(基本上是 xml 引用的所有 类,如此处所述:)
-keep class com.your.package.CastOptionsProvider { *; }
// I have a custom MediaRouteActionProvider but this may need to be
// android.support.v7.app.MediaRouteActionProvider in the case of OP
-keep class com.your.package.MediaRouteActionProvider { *; }