Chromecast receiver, how to load media without explicit cast sender request? - chromecast

Media exists on an external server that I would like to play on my cast receiver (a modified version of Google's CastReferencePlayer). The receiver is in constant communication with this server (via long-polling), and is instructed by the server when it needs to play a certain media file.
The issue I'm having is that I need the receiver to be able to essentially "tell itself" to play this media. This breaks with the standard sender-receiver communication protocol, but is necessary for my application and I don't believe too outlandish of a request.
As I understand it, the MediaManager object automagically receives all requests from cast senders to play media. I am looking for a way to hook into the MediaManager and tell it to play certain media without receiving a formal request from a sender.
Despite a lot of searching and reading through documentation, I can't find a way to do this. Does anyone know of any way to accomplish this?

i saw this on the google plus chromecast dev page, though i havent gotten it to work yet
Add/remove items using: https://developers.google.com/cast/docs/reference/receiver/cast.receiver.MediaManager#insertQueueItems, https://developers.google.com/cast/docs/reference/receiver/cast.receiver.MediaManager#removeQueueItems

Related

How to embed audio in Slack via API?

We want to be able to embed an audio file in a Slack chat via the web API.
So far I managed to files.remote.add but that's just an external link.
Then I tried files.upload and share it to a channel, it does embed and play right inside Slack, but for us it's a suboptimal solution, as users can easily download the file, which is against our requirements.
Is there another way to achieve this?
PS: I've read almost all the documentation, there doesn't seem to be an audio or media block type, although I've seen examples that cite a file block type which is neither documented in the API and it's not defined in Bolt. (at least there are no type definitions for it for typescript)
It's not currently possible to embed a media player (audio or video) via the API. We're constantly tuning our APIs, if you have a specific use case in mind, would you mind writing in to feedback#slack.com and we'll get it logged. Thank you!

Building a cast action for google home

I want to know please if it is possible to build a cast app for google home which casts content from an app to Chromecast using Google home. For example, "Ok google, play XXXAudio/videoContent from XXXApp on the TV."
This means that I want to cast a content from XXXApp to Chromecast, but without using the phone to do that, but rather using Google home.
I have imagined doing that like : Google home retrieves the requested data from the XXXApp then casts the content, through the receiver, to Chromecast. The requested content is then displayed on the TV.
Any help or advice will be appreciated.
It depends exactly what you want your cast app to do.
If you want to be able to provide media just like someone like Spotify or a local streaming radio station does, you need to parter with Google. You'll then have access to a range of partner solution feed options.
If you have other cast apps that you want, or other things that you may want to cast to a tv (for example) - these aren't currently available. However, Smart Displays using the Assistant are coming shortly, and these may start to introduce capabilities that will also be available for cast devices.
One could probably do something that started the cast app from an existing supported device and then, once running, control it via an Action. But this isn't something directly available right now.

How to cast a specific song programatically with Cast Audio

I'd like to hook up a bttn such that when that button is pressed, a specific song is played through my speakers using the new Chromecast Audio. I couldn't find documentation for a REST API that would allow me to accomplish this.
Is there any direct hookup that would be possible such that I can call some REST API to play audio through Cast Audio?
There is no single rest apis to do so; the process of casting a media, using the Cast SDK, amounts to starting a discovery, selecting (connecting to) a device, setting up the so-called RemoteMediaPlayer and then loading a media. There is plenty of documentation on our Cast documentation site that helps you follow and implement the above steps, along with a good number of sample apps.

How to find out which App is running on the Chromecast receiver?

In my Android Sender Application, I would like to display the status of a newly discovered Chromecast device. For e.g if another app lets say Youtube is currently casting to this device, then I would like to put a status as "casting Youtube" next to the device name in my receiver list.
For this, once I discover a media route, I connect to that device. On getting a ConnectionCallbacks.onConnected() event, I try to retrieve the application metadata using Cast.CastApi.getApplicationMetadata(GoogleApiClient). But I'm getting a null value here. When I run my Sender App, I make sure that I'm casting to the same Chromecast receiver from another app like Youtube. So I expect the application metadata to reflect Youtube app details its like appId, name etc. Is there a different way to achieve this?
YouTube is still using the old preview SDK so that might be a factor in seeing null. Please try an app that is using the new SDK and see if that returns more useful data. I know there was a bug which caused that method to return null all the time but I believe that was fixed with the recent play services update.

How to do a Chromecast API White List URL page?

I want to integrate with the Chromecast Developer API so I want my chromecast(being shipped) whitelisted but you are supposed to supply 2 URLs. What exactly are these for? I might just be confused about how it works. Thanks.
EDIT:
I found this source to be a good example to demonstrate how to use it. The HTML in the receiver is what you would have the white listed URL pointing to.
A Receiver is a HTML5 application (HTML/JS/CSS3) that runs on the Chromecast device. Your Sender application must send an APP ID to the device, which then looks up the app in a table and loads your page for you. You then use the App ID in your Receiver (on the Chromecast device) to open a connection to your Sender.
We ask you to provide one or two URL's. We expect that you'll want to have a development URL, and eventually a production one. You only need to provide one.
From the Chromecast Device Whitelist Request Form
Please provide at least one receiver URL, we will provide an
Application ID for each of them, 2 max (typically, you'll list a
production URL and a testing URL)

Resources