Chromecast android send image

589 views Asked by At

i'm trying to create an application that shows on the chromecast the image selected. All images that i have in app are downloaded from web with a json parsing. I can't find a documentation about do that and i'm so confusing.. This is what i've done so far; In my class i declared:

private final MediaRouter.Callback mediaRouterCallback = new MediaRouter.Callback()
    {
        @Override
        public void onRouteSelected(MediaRouter router, MediaRouter.RouteInfo route)
        {
            CastDevice device = CastDevice.getFromBundle(route.getExtras());
            //setSelectedDevice(device);
        }

        @Override
        public void onRouteUnselected(MediaRouter router, MediaRouter.RouteInfo route)
        {
            //setSelectedDevice(null);
        }
    };

    private MediaRouter mediaRouter;
    private MediaRouteSelector mediaRouteSelector;

and in onCreate() method:

// Chromecast
        mediaRouter = MediaRouter.getInstance(getApplicationContext());
        mediaRouteSelector = new MediaRouteSelector.Builder().addControlCategory(CastMediaControlIntent.categoryForCast(APP_ID)).build();
         toolbar = (Toolbar) findViewById(R.id.toolbar);
            if (toolbar != null) {
                setSupportActionBar(toolbar);
                getSupportActionBar().setHomeButtonEnabled(true);
                getSupportActionBar().setDisplayShowHomeEnabled(true);
                getSupportActionBar().setDisplayShowTitleEnabled(false);
            }

then some methods:

// Chromecast
    private void startImage(String urlVideoLink) {

        MediaMetadata mediaMetadata = new MediaMetadata( MediaMetadata.MEDIA_TYPE_MOVIE );
        mediaMetadata.putString(MediaMetadata.KEY_TITLE, "Immagine");

        MediaInfo mediaInfo = new MediaInfo.Builder( urlVideoLink )
                .setContentType("image/jpeg")
                .setStreamType(MediaInfo.STREAM_TYPE_NONE)
                .setMetadata( mediaMetadata )
                .build();
        Log.i("Chromecast", "Started");

    }
@Override
    protected void onStart()
    {
        super.onStart();
        mediaRouter.addCallback(mediaRouteSelector, mediaRouterCallback, MediaRouter.CALLBACK_FLAG_PERFORM_ACTIVE_SCAN);
    }

    @Override
    protected void onStop()
    {
        //setSelectedDevice(null);
        mediaRouter.removeCallback(mediaRouterCallback);
        super.onStop();
    }

@Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        super.onCreateOptionsMenu(menu);
        getMenuInflater().inflate(R.menu.main, menu);

        MenuItem mediaRouteMenuItem = menu.findItem(R.id.media_route_menu_item);
        MediaRouteActionProvider mediaRouteActionProvider = (MediaRouteActionProvider) MenuItemCompat.getActionProvider(mediaRouteMenuItem);
        mediaRouteActionProvider.setRouteSelector(mediaRouteSelector);

        return true;
    }

and of course the menu:

<item
        android:id="@+id/media_route_menu_item"
        android:title="Route"
        app:actionProviderClass="android.support.v7.app.MediaRouteActionProvider"
        app:showAsAction="always"/>

As you can see i've created a method called startImage() in which i pass a parameter that is the link of image as string. This method i called when i tap a button below the image onClick().. In this way it's not working.. nothing happend. I can reach the chromecast and connect to it but nothing more.. I can't understand how it works? How can i simply see the image on the chromecast?

0

There are 0 answers