Related
I'll be releasing a free and paid version of this as soon as the SDK is finalized. The paid version will feature a higher limit on the amount of photos you can cast, customizable timing between photos, more image transitions, and perhaps control over the slideshow itself.
Cool! I will definitely be picking up a picture app as soon as the SDK allows. And I'm sure I am not the only one looking forward to casting their photos to their TV.
Will you be able to pause, skip, back up, zoom etc?
Also, any plans to allow multiple users to create a shared queue from separate phones ... like the YouTube app allows?
Working on controlling the slideshow now. Then I'll be working on adding photos to the slideshow from the same device. I'll look into a shared queue, that's a good idea. Thanks!
Definitely keep us informed on your progress. I like the ability to flick through pictures on the phone and mirroring it on the TV. Is this a function that your app will have exclusive or is it an ability the stock gallery has as well?
Good news and bad news Scott:
The bad news is that flicking through the photos at the end had no effect on which image was shown, they were just in the same order because I set that album to cast. I apologize for making that unclear in the video. However, in the final version, slideshow control will be in the notification dropdown (4.1+ required), or from a controller app.
The good news is that the app you see in the video is the stock gallery. The app I wrote simply adds the Chromecast as a "share to" option at the top. That means that you will have the ability to cast any image system-wide, as long as it has a share button with it.
Why not just use tabcasting with Google+? It's free and you can create whatever album you want.
Sent from my Transformer TF101 using xda app-developers app
dts924s said:
Why not just use tabcasting with Google+? It's free and you can create whatever album you want.
Sent from my Transformer TF101 using xda app-developers app
Click to expand...
Click to collapse
Tabcasting doesn't work from android.
Sent from my SCH-I535 using Tapatalk 4
This is great stuff but I hate being force to select the pictures before chromecasting. I would want this to work just like the native gallery app but with Chromecasting in that I bring up the gallery and select to cast. Then I can flip through pictures and if I stop on one for more then 1 sec (configurable) then it will cast that photo. This was I can flip through pictures casting them on the fly...
I'm looking forward to seeing this app released. Being able to cast the gallery is something I definitely have been looking forward to.
rkirmeier said:
Then I can flip through pictures and if I stop on one for more then 1 sec (configurable) then it will cast that photo.
Click to expand...
Click to collapse
This would require a rewritten "Gallery" app, adding swipe listeners and whatnot. I'm just trying to keep it simple. My app doesn't show up in the app drawer, it's treated more like an extension of Android. I do appreciate your feedback though, it's a great idea. Maybe someone will pick it up.
Wouldn't it be prudent to expect that most, if not all, gallery and slide show apps to have a Chromecast button in the future?
Hello does a rooted and rom chromecast have mirroring capabilities, what apps can give the chromecast the ability to mirror the android devices it is casted from? thank you in andvance
wilspeak said:
Hello does a rooted and rom chromecast have mirroring capabilities, what apps can give the chromecast the ability to mirror the android devices it is casted from? thank you in andvance
Click to expand...
Click to collapse
Hi Wilspeak,
To the best of my knowledge there isn't any mirroring software available in the wild yet for the chromecast - google has placed mirrorcast code into the chromecast as of the latest OTA however there has been no available software to utilise this put forward as of yet. Hopefully we will see this out of Google shortly though as it looks like they've been prepping for it.
Well we know it can mirror is some respect because Googlecast extension pretty much does this already.
As @Kyonz said the issue is the software available not the actual CCast itself. Unless you want to say the Whitelist is preventing someone like Koush from re-implementing it in his All Cast.
I suspect whatever comes after KitKat will have Mirroring to the CCast in it's display settings.
Asphyx said:
I suspect whatever comes after KitKat will have Mirroring to the CCast in it's display settings.
Click to expand...
Click to collapse
Yup, or in some vendor-supplied add-on like how Samsung's AllShare Cast is.
Plus I expect ROM-level mirroring will be far more smart and efficient than Chrome's brute-force casting. Raster/bitmap content will probably still need to be transmitted, but standard UI stuff could/should be rendered by Chromecast itself.
bhiga said:
Yup, or in some vendor-supplied add-on like how Samsung's AllShare Cast is.
Plus I expect ROM-level mirroring will be far more smart and efficient than Chrome's brute-force casting. Raster/bitmap content will probably still need to be transmitted, but standard UI stuff could/should be rendered by Chromecast itself.
Click to expand...
Click to collapse
My only fear is they will implement it to work like a Miracast and require direct connection via Wireless.
That would be a shame.
I like some aspects of Miracast such as being able to add it as a display to a PC, But that whole Wireless only thing is not the way I would want to see this go.
I suppose instead of actually mirroring via Raster they could send a template package that contained most of the graphics needed to build thus not requiring a lot of bandwidth to update.
Will be interesting to see how they do it.
Hello XDA Developers,
I need some to developers to build an app.
The idea as that to add the network media devices (XBMC, Upnp..) to the list of Cast To.
Example -
You are watching a video using Youtube app.
You press the cast button (It will show the list of all network media devices)
You cast the video to XBMC
XBMC plays it on your TV or Monitor
Now use Youtube app as the remote for the playback
Thank You.
quappic said:
Hello XDA Developers,
I need some to developers to build an app.
The idea as that to add the network media devices (XBMC, Upnp..) to the list of Cast To.
Example -
You are watching a video using Youtube app.
You press the cast button (It will show the list of all network media devices)
You cast the video to XBMC
XBMC plays it on your TV or Monitor
Now use Youtube app as the remote for the playback
Thank You.
Click to expand...
Click to collapse
Not sure that can be done via an App I think it is all incorporated into the Media Router library of Android.
It might be possible to hack that and replace it or make the changes to a custom rom using that library though.
Asphyx said:
Not sure that can be done via an App I think it is all incorporated into the Media Router library of Android.
It might be possible to hack that and replace it or make the changes to a custom rom using that library though.
Click to expand...
Click to collapse
Libraries are inside the apps... so I dont think custom rom will affect it! (I may be wrong... not so knowledgeable about ROMs)
But I guess we can use the Xposed Framework's hook method to access it... And change it to search for all devices.... (Easier said then done!)
I need help to pinpoint that function in the Media Router Library....
quappic said:
Libraries are inside the apps...
Click to expand...
Click to collapse
Not in this case...That library is part of Android itself and Apps can use it but it is not in the app itself.
The app merely calls to that android library.
Asphyx said:
Not in this case...That library is part of Android itself and Apps can use it but it is not in the app itself.
The app merely calls to that android library.
Click to expand...
Click to collapse
I did find a app called 'Cast to Upnp/Dlna for GMusic' which seems to do the job..
It also claims that it will show network devices also in the cast to list in Chrome... (When you play using play music and chrome... I dosent work for me though... But works through the app.)
I guess it emulates upnp devices to be Chromecast.
Anyhow dismantled the apk. But could not make sense..
its too complicated due to obfuscated code! I am stuck here! :/
quappic said:
I did find a app called 'Cast to Upnp/Dlna for GMusic' which seems to do the job..
It also claims that it will show network devices also in the cast to list in Chrome... (When you play using play music and chrome... I dosent work for me though... But works through the app.)
I guess it emulates upnp devices to be Chromecast.
Anyhow dismantled the apk. But could not make sense..
its too complicated due to obfuscated code! I am stuck here! :/
Click to expand...
Click to collapse
Perhaps I am not understanding what you want...
It's easy to make an app that can include those other targets in an app but it's not possible to have that work in other apps Cast menu.
AT least not that I know of.
If anyone could do this it would be Koush who makes Allcast and supports what your looking for.
Asphyx said:
Perhaps I am not understanding what you want...
It's easy to make an app that can include those other targets in an app but it's not possible to have that work in other apps Cast menu.
AT least not that I know of.
If anyone could do this it would be Koush who makes Allcast and supports what your looking for.
Click to expand...
Click to collapse
How to include them in an app?
If we find it how to add those targets then...
We can use Xposed to add that to other cast apps too! (For now...)
Koush made allcast as an regular which is no use in this situation :/
You need the developers for those apps to support the feature...Only they can change how their own app works.
In the meantime check out BubbleUPnP out as it does what you want AND transcodes provided you have a PC to run the Server software on.
It will allow you to select just about any target device on your network that supports DLNA, UPnP and DIAL.
Asphyx said:
You need the developers for those apps to support the feature...Only they can change how their own app works.
In the meantime check out BubbleUPnP out as it does what you want AND transcodes provided you have a PC to run the Server software on.
It will allow you to select just about any target device on your network that supports DLNA, UPnP and DIAL.
Click to expand...
Click to collapse
As the casting uses another library (here Mediarouter of v7 android support library) to search for the chromecast devices.... We can use Xposed to hook the search method (hypothetically) and make it search for Upnp devices too...
I am aware of BubblePnP (same developer as of Cast to UPNP/DLNA for GMusic app)
But it dose not serve the propose.....
Like when you are watching a youtube you can simply cast it to XBMC and control the playback through the youtube app (Thats the feature I want)
But when you use BubblePnP we share a youtube video link (Non-Streaming) which then the upnp looks up using youtube plugin for it (Not every device have that plugin) then they play (their is also chance that it cant play it... restrictions for example.... even though you can play it on your mobile)
I guess the best step would be study the mediarouter library to check things out!
Let me disassemble the Google Play Music app and try to look how does it cast....
quappic said:
As the casting uses another library (here Mediarouter of v7 android support library) to search for the chromecast devices.... We can use Xposed to hook the search method (hypothetically) and make it search for Upnp devices too...
I am aware of BubblePnP (same developer as of Cast to UPNP/DLNA for GMusic app)
But it dose not serve the propose.....
Like when you are watching a youtube you can simply cast it to XBMC and control the playback through the youtube app (Thats the feature I want)
But when you use BubblePnP we share a youtube video link (Non-Streaming) which then the upnp looks up using youtube plugin for it (Not every device have that plugin) then they play (their is also chance that it cant play it... restrictions for example.... even though you can play it on your mobile)
I guess the best step would be study the mediarouter library to check things out!
Let me disassemble the Google Play Music app and try to look how does it cast....
Click to expand...
Click to collapse
I agree completely with the goal and feature, I'm just not sure you can hijack 3rd party calls to the Media Router library, insert the extra device search (or enable the ones that are there) and have them display in some App that has JUST CCast support to display DLNA targets as well.
If anyone is capable of that I would suspect he posts here! LOL
I would ask Koush Ditta about the viability...
But I wasn't shooting down the idea, just the notion that you could hack or patch the device to list those targets for any app that uses the Cast menu.
Asphyx said:
I agree completely with the goal and feature, I'm just not sure you can hijack 3rd party calls to the Media Router library, insert the extra device search (or enable the ones that are there) and have them display in some App that has JUST CCast support to display DLNA targets as well.
Click to expand...
Click to collapse
Sounds very hacky.
The flip-side, and I think what they mentioned, was to have a "middleman" piece that emulates a Chromecast, similar to how BubbleUPnP Server can pull stuff from other sources on behalf of a DLNA/UPnP receiver.
Problem is, all the Chromecast emulators (LeapCast, CR Cast, CheapCast) seem to have been broken by the enhanced signing security in the Cast SDK 2.0
Asphyx said:
I agree completely with the goal and feature, I'm just not sure you can hijack 3rd party calls to the Media Router library, insert the extra device search (or enable the ones that are there) and have them display in some App that has JUST CCast support to display DLNA targets as well..
Click to expand...
Click to collapse
CCast supported apps can send DLNA targets as they just send a streaming URL (According to log of Play Music...)
Anyway I disassembled the Play Music app. Great thing is that code is not obfuscated... But need a lot of work to understand the code...
@bhiga I did not understand completely!
But as far as I understood (may be wrong) is that you are saying to emulate a DLNA device as a chromecast, right?
But cant devices like XBMC directly get the streaming URL and stream it? (Confused) :/
quappic said:
CCast supported apps can send DLNA targets as they just send a streaming URL (According to log of Play Music...)
Anyway I disassembled the Play Music app. Great thing is that code is not obfuscated... But need a lot of work to understand the code...
@bhiga I did not understand completely!
But as far as I understood (may be wrong) is that you are saying to emulate a DLNA device as a chromecast, right?
But cant devices like XBMC directly get the streaming URL and stream it? (Confused) :/
Click to expand...
Click to collapse
Can maybe if they wanted to...But some like PLEX do not.
And I don't see anyway to hack into and get Plex to show DLNA targets in that menu by hijacking the calls to the Media router...
Truth is the Media router should do this already and perhaps it even does and the apps that are using are limiting the list on their end...
---------- Post added at 07:19 PM ---------- Previous post was at 07:11 PM ----------
bhiga said:
Sounds very hacky.
The flip-side, and I think what they mentioned, was to have a "middleman" piece that emulates a Chromecast, similar to how BubbleUPnP Server can pull stuff from other sources on behalf of a DLNA/UPnP receiver.
Click to expand...
Click to collapse
Yes it is rather hacky...What might be possible is something along what y2cast did which would instead of making a CCast a DLNA target did the opposite.
I know full well it is possible to get a listing of all devices (DLNA and CCAST) in an App...Allcast does this and Bubble finds these devices as well.
But thats because the developers of those apps had the good sense to put the code needed to get those listings.
Now you know I never say anything code related is impossible but in this case I find it hard to see how you could get an app whose developer did not have this foresight to code it in themself, to start displaying devices they had no intention of streaming to.
While both devicxe types may use linkage to stream the linkage used is VERY VERY different where a CCast sends a link to load a Player with Parameters and the other merely sends a link to the source media.
That would have to be accounted for in the App itself as the media router does none of that work for you that I know of.
quappic said:
CCast supported apps can send DLNA targets as they just send a streaming URL (According to log of Play Music...)
Anyway I disassembled the Play Music app. Great thing is that code is not obfuscated... But need a lot of work to understand the code...
@bhiga I did not understand completely!
But as far as I understood (may be wrong) is that you are saying to emulate a DLNA device as a chromecast, right?
But cant devices like XBMC directly get the streaming URL and stream it? (Confused) :/
Click to expand...
Click to collapse
Apps will only find what they're looking for. If they're looking for a Chromecast or Google Cast device, they will only find Chromecast and Google Cast devices. They will not find DLNA devices.
Likewise, if a app is looking for DLNA devices, it will only find DLNA devices, not Chromecast devices.
So in order for those apps to see other things, there must be some kind of translation or proxy.
This is where the idea of a Chromecast "emulator" or "masquerader" could come in.
The DIAL documentation probably has enough for the discovery aspect.
Once seen, the second half of the equation is whether the receiver is sent something that it knows how to use.
Most DLNA implementations do not restrict formats to only things Chromecast can use. So even if Chromecast is seen, it still may not work.
Thus, as Asphyx said, it's better for the application itself to support Chromecast natively, so it can make sure it only sends things that Chromecast and Google Cast devices can handle - or on the flip side, make sure to only send DLNA-compatible requests to DLNA devices.
The only other option would be to standardize the media router to encompass all target types and be a mediator involved in all links sent...
Not a good way to go really. Limits 3rd Party developers to what they could do and send to devices that are targets.
That said the apps themselves should already being putting this support into their apps because if you feel it is worth supporting a CCast then it's probably just as important to you to be able to cast to other renderers...
Bubble and Allcast do this already as do some others...
I have been waiting for the same thing to happen in Plex's cast menu...
I looked into the Google Play Music APK... and Chormecast API...
Found something which may get us started.... (A big May be.. Also assuming the Stream URL will work with other devices)
Here it is...
According to the Chromecast API
This line should be present in the App for the lifetime of its run
Code:
mMediaRouter = MediaRouter.getInstance(getApplicationContext())
So I searched for it in the APK code...
As it must be some where called when it searches for CCast devices
Found 4 usages.... under....
Code:
com.google.android.music - onCreate
com.google.android.music.cast - getSelectedRouteOnMainThread
com.google.android.music.playback - onCreate
com.google.android.music.ui.mmp - onCreate
4 possible paths.... Took the variable name and ignored...
Going to the next part of CCast API is to build a builder in the mediaRouterSelector.....
API Code...
Code:
mMediaRouteSelector = new MediaRouteSelector.Builder()
.addControlCategory(CastMediaControlIntent.categoryForCast("YOUR_APPLICATION_ID"))
.build();
Searched for it using the found variable name....
Only one usage under
Code:
com.google.android.music.ui.mmp - onCreate
The line.....
Code:
this.mMediaRouteSelector = new MediaRouteSelector.Builder().addControlCategory("android.media.intent.category.LIVE_AUDIO").addControlCategory("android.media.intent.category.REMOTE_PLAYBACK").addControlCategory("com.google.cast.CATEGORY_CAST").addControlCategory("com.google.cast.CATEGORY_CAST_APP_NAME:" + getCastAppName()).addControlCategory(str).build();
So did some queries (May be wrong again) and found that adding control category "com.google.cast.CATEGORY_CAST" filters CCast devices form all devices....
So, I made a Xposed App... to hook to that addControlCategory and read the parameters it receives... And if it has string 'cast' in it... null it...
Xposed Code....
Code:
//Google Play Music
if(lpparam.packageName.equals("com.google.android.music")) {
XposedBridge.log("Connected to Process: " + lpparam.packageName);
final Class<?> hookClass = XposedHelpers.findClass("android.support.v7.media.MediaRouteSelector", lpparam.classLoader);
XposedBridge.log("Injecting code now on" + lpparam.packageName + " : " + hookClass.toString());
XposedBridge.hookAllMethods(hookClass, "addControlCategory", new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
Log.d("Hook", "Hooked! to addControlCategory");
Log.d("Hook", "Parmas: " + param.args[0].toString());
if(param.args[0].toString().contains("cast")) {
param.args[0] = null;
Log.d("Hook", "Params: Null (changed)!");
}
}
});
}
But I am stuck here.... Xposed seems to be attached to the process and their are no problems in the Xposed logs...
But their is no Debug Log for the hooked method....
No log shows for the received parameters!
Need some help here... Check the code.....
Hope it will be in some use!
Nothing guys? :/
@Asphyx
@bhiga
??
quappic said:
Nothing guys? :/
@Asphyx
@bhiga
??
Click to expand...
Click to collapse
Sorry, I know very little about Xposed Framework. Looks like something that would be a time sink for me, so I'm avoiding.
bhiga said:
Sorry, I know very little about Xposed Framework. Looks like something that would be a time sink for me, so I'm avoiding.
Click to expand...
Click to collapse
Leave Xposed Framework for minute...
But will the theory work? What do you think about it?
Getting the devices listed in the Menu is easy....
The issue is getting every program that it could show up on to send the proper linkage.
You won't be able to use an exposed framework for that.
Your going to have to create code for each and every app or an app like the y2cast app that mimics a CCast and converts links sent to it in DLNA Format.
While you can get the device listed it's almost impossible to get the hooks into each app t make those apps support DLNA if they do not already.
Your best bet is to create that opposite of y2cast and make an emulator that makes DLNA devices into CCasts instead of making CCast a DLNA renderer like y2cast does.
Then you don't need to hook into the menu listing operation the emulator merely gets discovered like any other DIAL device and when links get sent to it it converts those links to a proper DLNA send format.
On the releases page of my Github Project you can download a test build to auto-cast your system audio to the Chromecast.
Run app.exe and it'll auto cast your system audio to the first Chromecast it finds!
Try it out, let me know what you think, and how to improve it!
Direct download link
p.s. I also made Videostream.
Thank you
nice one acidhax. how have you been since videostream? i noticed your no longer on that project.
The program works as expected, no issues with installation or use (Win 8.1 x64).
I noticed that the volume level is fairly low when casting to a Chromecast Audio, is there a way to change the volume that's broadcast that I've missed?
Also, would it theoretically be possible to run multiple instances of the app and have them find two separate Chromecast Audio devices, whilst broadcasting at the same time, or would the current setup create two different individual broadcasts, resulting in un-synced playing? No longer necessary as they've released multiroom, however am still curious as to whether there are volume control options.
Thanks!
Hi,
Interesting project! Can you provide support for command-line pipe support? I like to use with "Shairport4w" (http://sourceforge.net/projects/shairport4w/). This program has the option "Redirecting sound" that can launch and external tool that accept data (raw PCM audio) over default input pipe. As this project is based on NodeJS I hope this can be achieved.
What you think?
Troubleshooting Help
Very cool project. Rookie question but I am getting stuck here:
Example app listening at (ip address here)
Spawned Ffmpeg with command: ffmpeg =list_devices true -f dshow -i dummy pipe:1
VIRTUAL DEVICE FOUND
What should I be doing next?
not working for me nothing connect to my chromecast . no sound nothing only sound of my PC . windows 7 .
edit: sorry it work . did you know how to increase the volume of the chromecast ? thanx you
I have a Bluetooth speaker and but my TV has no Bluetooth . is there a way I count reroute the audio from the Chromecast to the Bluetooth speaker without using any cable or reroute to my computer - since my computer is wirelessly connected to the speaker by Bluetooth?
Any help will be appreciated
I use Plex almost all the time and I don't usually enjoy my movies since my tv sound is bad.
acidhax said:
you can download a test build to auto-cast your system audio to the Chromecast.
Run app.exe and it'll auto cast your system audio to the first Chromecast it finds!
Try it out, let me know what you think, and how to improve it!
p.s. I also made Videostream.
Click to expand...
Click to collapse
Nice! It's working for me on the new Chromecast. How do you 'stop' the app to get back to the Chromecast backdrop?
Also: Thank you so much for making Videostream - it's hands-down the best app for Chromecast!
I have a Nook Tablet running @amaces AOSP 7.0 and my husband has an HD running CM 11. The "cast" feature, as far as I can tell, does not seem to do anything. It doesn't see my Win 10 laptop and does not see a generic Miracast dongle I just picked up (the Win 10 PC does see the dongle...).
Does the cast feature support Chromecast? If so, what's the experience like? The main reason my husband's HD is still on CM 11 is to maintain functionality of the HDMI out. But we've run into issues with our local newspaper app (of all things) after an update and are now looking at trying the last CM 13 build to support HDMI out.
It would be simpler if the cast function worked (I.e., cast the entire screen) as well as the really simple HDMI out. I get it, people don't like wires. But for the price (now $10 online at B&N), that cable is pretty sweet.
So...what works for whole screen casting? We don't have smart TV's and don't use any streaming services. 90% of the video material is local, played with either MX player or Kodi. Occasional streams via Kodi.
I added an entry in the FAQ addressing some of these concerns.
nmyshkin said:
Does the cast feature support Chromecast? If so, what's the experience like? The main reason my husband's HD is still on CM 11 is to maintain functionality of the HDMI out. But we've run into issues with our local newspaper app (of all things) after an update and are now looking at trying the last CM 13 build to support HDMI out.
Click to expand...
Click to collapse
Yes, full screen casting definitely wants a Chromecast receiver. I think it works pretty well, especially for static content; highly dynamic content might have slight delays, or out of sync audio. Movies should be fine, but really, you should send video, YouTube, etc using in-app casting, so all A/V processing is done on the receiver (rather than full screen re-encoded on tablet).
nmyshkin said:
It would be simpler if the cast function worked (I.e., cast the entire screen) as well as the really simple HDMI out. I get it, people don't like wires. But for the price (now $10 online at B&N), that cable is pretty sweet.
So...what works for whole screen casting? We don't have smart TV's and don't use any streaming services. 90% of the video material is local, played with either MX player or Kodi. Occasional streams via Kodi.
Click to expand...
Click to collapse
While full screen casting works, for the above reasons, it's always better to use in-app casting, if available. Even with local content, finding an app that processes only the actual media (rather than capture/encode entire screen) is usually preferable. I looked at HDMI intermittently, but no idea what's broken yet.