theanilpaudel
theanilpaudel

Reputation: 3478

Chromecast button not visible in android

I am following the code lab tutorial.

My Gradle file looks like this

dependencies {
compile 'com.android.support:appcompat-v7:25.0.0'
compile 'com.android.support:mediarouter-v7:25.0.0'}

This is my 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;
}}

This is the menu xml file

<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>

And this is my OnCreateOptionsMenu method in MainActivity

@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;
}

And this in the manifest file

<meta-data
        android:name="com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME"
        android:value="com.mypackage.CastOptionsProvider" />

I have followed the codelab tutorial to its exact form, copy and pasted everything while changing those variable which needs to be changed. My application and the chromecast device are connected to the same network. The Chromecast button appears in the Youtube app but not on my app. What am I missing ? Thanks

Upvotes: 2

Views: 2995

Answers (5)

okcoker
okcoker

Reputation: 1339

Adding another answer as the accepted answer did nothing for me. The issue happened to me only when building a proguarded version of my app.

I had to add a couple lines to my proguard file (essentially all of the classes referenced by xml as mentioned here: https://stackoverflow.com/a/24578823/1048847)

-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 { *; }

Upvotes: 0

Eneas Gesing
Eneas Gesing

Reputation: 533

Check in Google Cast SDK Developer Console if your Application ID is correct and status is Published.

When publish your Application ID, restart your Chromecast device.

For testing purposes, you can use CC1AD845 or 4F8B3483 as Application ID. These are from Google sample apps.

Upvotes: 3

Tom11
Tom11

Reputation: 2519

If everything is done properly, you just need to restart cast device (it does not work with your app_id without restarting after registration).

Upvotes: 3

albert c braun
albert c braun

Reputation: 2710

It might be an invalid app_id.

You might try replacing your chromecast_app_id string resource with the app_id string resource value from the sample project.

(Right now, it's 4F8B3483. See: https://github.com/googlecast/CastVideos-android/blob/master/res/values/strings.xml).

Believe it or not, switching to that value made the cast icon visible in my app.

Upvotes: 3

Harmantj
Harmantj

Reputation: 182

you are missing attribute icon here

     <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>

Upvotes: -2

Related Questions