Page 1 of 2

GTV Android APIs

Posted: Mon Aug 15, 2011 5:20 am
by ReubenS
Is anyone else messing around with the GTV-specific Java libraries? There's no SDK yet, so no documentation, but they seem pretty straightforward.

I'm particularly interested in program guides so I'm looking primarily at the packages com.google.tv.epg and com.google.tv.epg.domain. One of these contains a service named ILineupService that's pretty easy to bind a client app to.

The problem I have though is that the service queries a Google address which returns an HTTP 400. This might be because I'm in the UK and it's a region-locked service. The URL that the service tries to get programme data from is:

http://www.google.com/tv/a/lineup?fmt=p ... wCyGxIU%3D

If anyone can get anything other than a HTTP 400 from that, please let me know. If you are interested in looking into this area of GTV hacking, please get in touch!

-- Reuben

Re: GTV Android APIs

Posted: Mon Aug 15, 2011 6:42 am
by divergent
ReubenS wrote:Is anyone else messing around with the GTV-specific Java libraries? There's no SDK yet, so no documentation, but they seem pretty straightforward.

I'm particularly interested in program guides so I'm looking primarily at the packages com.google.tv.epg and com.google.tv.epg.domain. One of these contains a service named ILineupService that's pretty easy to bind a client app to.

The problem I have though is that the service queries a Google address which returns an HTTP 400. This might be because I'm in the UK and it's a region-locked service. The URL that the service tries to get programme data from is:

http://www.google.com/tv/a/lineup?fmt=p ... wCyGxIU%3D

If anyone can get anything other than a HTTP 400 from that, please let me know. If you are interested in looking into this area of GTV hacking, please get in touch!

-- Reuben
I get a 400 as well. I am definitely interested in seeing what else we can get out of the Revue without putting the beta firmware on. Just to dicey for me at the moment. I'm not a developer, but I am savvy and willing to learn. I am assuming you snagged that URL by catching it with a proxy? Is the URL the same every time that call is made? Have you tried using something like Fiddler or Paros proxy to catch more of the information being sent across? There may be some header values you need to send along to get the right information back. Paros and Fiddler will catch that and let you manipulate the data.

Re: GTV Android APIs

Posted: Mon Aug 15, 2011 8:47 am
by ReubenS
Hey, thanks for trying... are you in the US? I just setting up a VPN here to fake presence in the US and i still get HTTP 400. Lord knows what's going on, I really wish Google would ship the SDK.

That URL is being accessed by a service in the ROM. I got it by simply examining logcat output once my test app had connected to the EPG service... the service helpfully logs its failures with full URLs.

Re: GTV Android APIs

Posted: Mon Aug 15, 2011 1:10 pm
by divergent
Yes I am in the US. You should definitely try one of those proxy apps as it will capture a lot more data than just the URL. Something like wireshark could do it as well, but that seems like overkill.

Re: GTV Android APIs

Posted: Tue Aug 16, 2011 8:07 am
by ReubenS
Maybe the EPG service is checking user agent strings... don't suppose anyone would know the User-Agent for the original Revue ROM?

The current Honeycomb 3.1's user agent is Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.77 Large Screen Safari/534.24 GoogleTV/b55579.

Re: GTV Android APIs

Posted: Tue Aug 16, 2011 10:18 am
by elsewhat
Quick question: Where are the necessary .jars for the com.google.tv packages located?

Assume they are somewhere on the filesystem of an updated honeycomb revue?

Re: GTV Android APIs

Posted: Tue Aug 16, 2011 12:45 pm
by parrotheadmjb
ReubenS wrote:Maybe the EPG service is checking user agent strings... don't suppose anyone would know the User-Agent for the original Revue ROM?

The current Honeycomb 3.1's user agent is Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.77 Large Screen Safari/534.24 GoogleTV/b55579.
Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.127 Large Screen Safari/533.4 GoogleTV/b54202

Re: GTV Android APIs

Posted: Wed Aug 17, 2011 9:33 am
by ReubenS
parrotheadmjb: Thanks!

elsewhat: they're in /system/framework. You can fish them out with 'adb pull /system/framework/com.google.tv.mediadevices', for example.

Some excitement... I have today managed to get broadcast TV into my own app! I dexdump'd com.google.tv.mediadevices.MediaDeviceView and followed what it does. You bind to a service and tell the standard VideoView widget to open hdmi://localhost?port=2 once you've got your service connection. You also need to put the permission com.google.tv.mediadevices.permission.MEDIA_DEVICES_CLIENT in your manifest.xml.

Re: GTV Android APIs

Posted: Wed Aug 17, 2011 10:59 am
by bitbang3r
Can the Revue detect (via hdmi?) whether or not the TV is physically turned on, so a background service in a running app could take some kind of action and shut down a few minutes after determining that the user appears to have turned off the TV?

Re: GTV Android APIs

Posted: Sun Aug 21, 2011 8:16 pm
by swapped
ReubenS wrote:parrotheadmjb: Thanks!

elsewhat: they're in /system/framework. You can fish them out with 'adb pull /system/framework/com.google.tv.mediadevices', for example.

Some excitement... I have today managed to get broadcast TV into my own app! I dexdump'd com.google.tv.mediadevices.MediaDeviceView and followed what it does. You bind to a service and tell the standard VideoView widget to open hdmi://localhost?port=2 once you've got your service connection. You also need to put the permission com.google.tv.mediadevices.permission.MEDIA_DEVICES_CLIENT in your manifest.xml.
does this mean that we can hope for some sort of ota tv app in the near future with guide that switches tv channels automatically...or would that not work??? guess not since you would lose guide as soon as the changes channel - duh. What about soem sort of support for usb tuners or network tuners?