[APP] ThereTV . Streaming player compatible with the LocationFree protocol

Search This thread

mgschwan

Senior Member
Dec 13, 2011
59
17
Is this just using wireshark to record the packets sent from my player to the LF device whilst using the remote buttons, and isolating the ones you want? Or something like that? :)

Hi,
yes this is exactly what needs to be done
  • Download and install wireshark from www.wireshark.org
  • Start wireshark before you start your LocationFree Player
  • Select "Capture->Interfaces"
  • Click Options in the line that show your Network Interface that is connected to the same Network as the LocationFree BaseStation

    (You can verify this by looking at the IP Address. i.e. if you are connected
    directly to the Wireless Network of the BaseStation you need to select the line
    that says 172.29.71.???)
  • Click on "Capture Filter"
  • Click "New"
  • Select the last entry in the Capture Filter list (this is the one you just created by pressing New)
  • Enter "Location Free" as the Filter name
  • Enter "host ???.???.???.??? and port ????" as the Filter string where
    ???.???.???.??? means the IP address of your BaseStation and ???? means the
    NetAV port (usually around 5021)
  • Press OK
  • The Field right of the "Capture Filter:" Button should now contain your filter string
  • Press Start
  • Now start your LocationFree Player
  • Connect to your BaseStation and press the remote control keys in the following order
    1. Power
    2. Channel Up
    3. Channel Down
    4. Volume Up
    5. Volume Down
  • Disconnect from your BaseStation and go back to the Wireshark Window
  • Capture -> Stop
  • Right click on the first line in the Protokoll and select "Decode As"
  • In the Pulldownmenu select "destination (????)" where ???? should be the port you entered in the Filter string
  • In the list to the right select "HTTP" and press OK
  • Now some lines should become "light green". Search for the Line that says "GET /netav/message1 HTTP/1.1"
  • Right click on that line and select "Follow TCP Stream"
  • A new window should appear that Starts with "GET /netav/message1 HTTP/1.1"
  • Click "Save As" , save it to a file and send it to me

Michael
 

almararn

Member
Jun 18, 2011
34
5
Sky+ remote

I could'nt attach a file to a private message, so I'll just post this here.
I followed your instructions and got these files. Hope they work :)

The Sky boxes do not have volume control anymore, other than controlling the volume on the TV set. So I placed two files in this zip archive, one has the first 3 buttons:
  1. Power
  2. Channel Up
  3. Channel Down

The other one has 5 buttons, but added two usefull buttons, not sure that you want to use them as they do not mach the on screen icons. But they are:
  1. Power
  2. Channel Up
  3. Channel Down
  4. Next Program
  5. Record

Also included snapshots of the remote as it appears in the Location Free player.
 

Attachments

  • sky_remote.zip
    67.4 KB · Views: 33

mgschwan

Senior Member
Dec 13, 2011
59
17
I could'nt attach a file to a private message, so I'll just post this here.
I followed your instructions and got these files. Hope they work :)

Yes they work. I've just updated the free and the donation version to 1.0.7 to include the Sky+ remote.

I went for the 5 button setup for now until I support more buttons and diffrent layouts.

Greetings
Michael
 
  • Like
Reactions: almararn

bromhexine

Senior Member
Sep 6, 2011
68
0
holy crap! great work! i've been looking for something like this for pocketpc since years ago but i've got an android phone now albiet a cheap 800mhz one so it may not work but so happy to have stumbled on this while searching around for a ntsc to pal converter for my locationfree unit for playback on my pc. i will be testing this out asap! if all goes well i'll wireshark my remote codes and make a nice donation! the word on this needs to get out as im sure there are thousands who want this app and will happily pay for it.
 

almararn

Member
Jun 18, 2011
34
5
Wow, that was quick.
Downloaded, tested and working like a charm, all 5 buttons :)
I thought it deserved getting the donation version.
Thanks.
 

fishn4four

Member
Oct 12, 2009
11
0
TN
Excellent!

Streams nicely over wi-fi on my Verizon Galaxy Nexus but the on-screen remote is a blank white box. Still can't get it working on 3G/4G though... Great Job!:)
 

ChpStcksRlz

Senior Member
Jul 12, 2011
57
4
Houston, TX
This MIGHT be a noob question. But since Google Launched IPv6 today, I'm pretty sure my ISP will follow any day now since it's the largest in Texas. If I were using my IP address to connect to my base station, would I be alright typing in an IPv6 onto the place of "Base station address" and port?

I never really had MyNetAv working right
 

mgschwan

Senior Member
Dec 13, 2011
59
17
This MIGHT be a noob question. But since Google Launched IPv6 today, I'm pretty sure my ISP will follow any day now since it's the largest in Texas. If I were using my IP address to connect to my base station, would I be alright typing in an IPv6 onto the place of "Base station address" and port?

I never really had MyNetAv working right

I don't think that your ISP will deactivate your IPV4 address anytime soon since this would probably break so many services that their customers will simply go to another provider.

I think they will "add" the IPV6 address to your device so you can have IPv4 and IPv6.

However the question is quite interesting and as soon as someone has a router with a working IPv6 connection it would be great if they could let me test it to make the App IPv6 ready.

But that still leaves a problem with the Client side (your phone). Even if you have an IPv6 address at home you still need one at your Phone too. And what carrier provides them? I don't know.

Michael
 

rhyzar

Member
Oct 9, 2007
45
8
Cheyenne
Streams nicely over wi-fi on my Verizon Galaxy Nexus but the on-screen remote is a blank white box. Still can't get it working on 3G/4G though... Great Job!:)

I also have a verizon galaxy nexus, it and all works perfect.
Can stream local and through 3G... The only issue that I have is the same as yours, and that is the on screen remote does not display the controls. I can click on the buttons (where I have seen them in screenshots) , and they do work - they just don't display. All I get is a blank white screen.
 

fishn4four

Member
Oct 12, 2009
11
0
TN
I also have a verizon galaxy nexus, it and all works perfect.
Can stream local and through 3G... The only issue that I have is the same as yours, and that is the on screen remote does not display the controls. I can click on the buttons (where I have seen them in screenshots) , and they do work - they just don't display. All I get is a blank white screen.

I have been flashing different ROMs to my phone and haven't messed with it in a while but I I thought I would try again today since I'm going on a trip soon.still can't get it streaming over the 3G/4G but if I switch back to using the Computer client software and use my phone as a hotspot it works perfect over the 3G/4G but as soon as I start using the phone app it's a no go unless I'm on my home network. Very strange. still trying to figure out the solution.....
 

fishn4four

Member
Oct 12, 2009
11
0
TN
Remote Control?

Is there any chance we are going to see the remote updated for ICS or Jellybean support?

---------- Post added at 01:35 PM ---------- Previous post was at 01:27 PM ----------

Are the remotes the same on the paid and the free version?
 

KF2007

Member
Feb 9, 2007
27
13
HTC U11
Samsung Galaxy S20 FE
Hi,
I want to thank the author for this amazing app.
I've bought the donated version and it worked OK for me. But I wanted to use my remote (for Globo Opticum 4060cx SAT decoder). So I've done some research based on author's hints and managed to get the codes :) This has encouraged me to dig deeper :) I've reworked some classes in such way that:
  1. I've now got 16-button remote :)
  2. buttons are showing on my son's Asus TF300T running JB (with original version there was only black rectangle)
Here is a screenshot form the TF:

TherTVScreenshotSmall.jpg


I've dropped voulume buttons because volume control is already on android device. I've added digits (to avoid using up/down buttons many times), EPG, EXIT and P/N buttons. P/N button is rather less universal - it switches my decoder from PAL to NTSC (in Poland we have PAL system but I've got NTSC LF version)

Here is the actual buttons png image:

buttons_alpha.png


and the coresponding LFXGLPlayer class code change (onTouchEvent method):

Code:
        float xf = motionevent.getX() / (float)getWidth();
        float yf = motionevent.getY() / (float)getHeight();
        if(motionevent.getAction() == 1)
            if((double)xf > 0.5D && (double)xf < 0.5D+0.12D && (double)yf < 0.22D && (double)yf > 0.02D)
                lfclient.sendButton("d1");
            else
            if((double)xf > 0.5D+0.132D && (double)xf < 0.5D+0.24D && (double)yf < 0.22D && (double)yf > 0.02D)
                lfclient.sendButton("d2");
            else
            if((double)xf > 0.5D+0.26D && (double)xf < 0.5D+0.366D && (double)yf < 0.22D && (double)yf > 0.02D)
                lfclient.sendButton("d3");
            else
            if((double)xf > 0.5D+0.38D && (double)xf < 0.5D+0.49D && (double)yf < 0.22D && (double)yf > 0.02D)
                lfclient.sendButton("power");
            else
            if((double)xf > 0.5D && (double)xf < 0.5D+0.12D && (double)yf < 0.48D && (double)yf > 0.26D)
                lfclient.sendButton("d4");
            else
            if((double)xf > 0.5D+0.132D && (double)xf < 0.5D+0.24D && (double)yf < 0.48D && (double)yf > 0.26D)
                lfclient.sendButton("d5");
            else
            if((double)xf > 0.5D+0.26D && (double)xf < 0.5D+0.366D && (double)yf < 0.48D && (double)yf > 0.26D)
                lfclient.sendButton("d6");
            else
            if((double)xf > 0.5D+0.38D && (double)xf < 0.5D+0.49D && (double)yf < 0.48D && (double)yf > 0.26D)
                lfclient.sendButton("pn");
            else
            if((double)xf > 0.5D && (double)xf < 0.5D+0.12D && (double)yf < 0.72D && (double)yf > 0.52D)
                lfclient.sendButton("d7");
            else
            if((double)xf > 0.5D+0.132D && (double)xf < 0.5D+0.24D && (double)yf < 0.72D && (double)yf > 0.52D)
                lfclient.sendButton("d8");
            else
            if((double)xf > 0.5D+0.26D && (double)xf < 0.5D+0.366D && (double)yf < 0.72D && (double)yf > 0.52D)
                lfclient.sendButton("d9");
            else
            if((double)xf > 0.5D+0.38D && (double)xf < 0.5D+0.49D && (double)yf < 0.72D && (double)yf > 0.25D)
                lfclient.sendButton("epg");
            else
            if((double)xf > 0.5D && (double)xf < 0.5D+0.12D && (double)yf < 0.98D && (double)yf > 0.77D)
                lfclient.sendButton("channeldown");
            else
            if((double)xf > 0.5D+0.132D && (double)xf < 0.5D+0.24D && (double)yf < 0.98D && (double)yf > 0.77D)
                lfclient.sendButton("d0");
            else
            if((double)xf > 0.5D+0.26D && (double)xf < 0.5D+0.366D && (double)yf < 0.98D && (double)yf > 0.77D)
                lfclient.sendButton("channelup");
            else
            if((double)xf > 0.5D+0.38D && (double)xf < 0.5D+0.49D && (double)yf < 0.98D && (double)yf > 0.77D)
                lfclient.sendButton("exit");
            else
            {
                renderer.showUI(false);
                requestRender();
            }

and the arrays.xml change:

Code:
    <string-array name="remotes">
                 ...
        <item>SV 360 elite</item>
        <item>Globo Opticum 4060cx</item>
    </string-array>
    <string-array name="remotenames">
                 ...
        <item>SV 360 elite</item>
        <item>4060cx</item>
    </string-array>

and finally remotecodes.xml changes:

Code:
	<set name="4060cx">
		<power>
			<on>AQAJCgEBBQAIQEAKAJk=</on>
			<off>AQABAgIC</off>
		</power>
		<channelup>
			<on>AQAJCgEBBQAIQEALAJo=</on>
			<off>AQABAgIC</off>
		</channelup>	
		<channeldown>
			<on>AQAJCgEBBQAIQEAOAJ0=</on>
			<off>AQABAgIC</off>
		</channeldown>	
		<volumedown>
			<on>AQAJCgEBBQAIQEAQAJ8=</on>
			<off>AQABAgIC</off>
		</volumedown>	
		<volumeup>
			<on>AQAJCgEBBQAIQEARAKA=</on>
			<off>AQABAgIC</off>
		</volumeup>	
		<d1>
			<on>AQAJCgEBBQAIQEABAJA=</on>
			<off>AQABAgIC</off>
		</d1>	
		<d2>
			<on>AQAJCgEBBQAIQEACAJE=</on>
			<off>AQABAgIC</off>
		</d2>	
		<d3>
			<on>AQAJCgEBBQAIQEADAJI=</on>
			<off>AQABAgIC</off>
		</d3>	
		<d4>
			<on>AQAJCgEBBQAIQEAEAJM=</on>
			<off>AQABAgIC</off>
		</d4>	
		<d5>
			<on>AQAJCgEBBQAIQEAFAJQ=</on>
			<off>AQABAgIC</off>
		</d5>	
		<d6>
			<on>AQAJCgEBBQAIQEAGAJU=</on>
			<off>AQABAgIC</off>
		</d6>	
		<d7>
			<on>AQAJCgEBBQAIQEAHAJY=</on>
			<off>AQABAgIC</off>
		</d7>	
		<d8>
			<on>AQAJCgEBBQAIQEAIAJc=</on>
			<off>AQABAgIC</off>
		</d8>	
		<d9>
			<on>AQAJCgEBBQAIQEAJAJg=</on>
			<off>AQABAgIC</off>
		</d9>	
		<d0>
			<on>AQAJCgEBBQAIQEAAAI8=</on>
			<off>AQABAgIC</off>
		</d0>	
		<pn>
			<on>AQAJCgEBBQAIQEAYAKc=</on>
			<off>AQABAgIC</off>
		</pn>	
		<epg>
			<on>AQAJCgEBBQAIQEBCANE=</on>
			<off>AQABAgIC</off>
		</epg>	
		<exit>
			<on>AQAJCgEBBQAIQEBBANA=</on>
			<off>AQABAgIC</off>
		</exit>	
	</set>

These changes allow us to have 16 buttons instead of 5.

The last change fixes (at least on the Asus tablet) black rectangle problem. It's done in OverlayImage class (loadTexture method):

Code:
//    Bitmap localBitmap = BitmapFactory.decodeResource(paramContext.getResources(), this.resourceID);
      Bitmap localBitmap = null;
      InputStream is = paramContext.getResources().openRawResource(this.resourceID);
      try {
    	  localBitmap = BitmapFactory.decodeStream(is);
      } finally {
          try {
              is.close();
              is = null;
          } catch(IOException e) {

          }
      }

I hope that the author won't blame me for this post and maybe will be so kind to use my findings in next versions :)

Sorry for my poor english

Regards
Kuba
 
Last edited:

mgschwan

Senior Member
Dec 13, 2011
59
17
@KF2007: I am impressed, and maybe I can integrate your bitmap changes in a generic way

As for the remote. I know I have been promising this for quite some time now so I won't give a timeline, but the code for additional buttons is almost finished. The new version will allow for more buttons and different layouts.

Michael
 

Turbo_987

Member
Jan 16, 2011
28
1
Wow! I've been waiting for this for a long time. Thanks so much. The DirecTV remote works on my Galaxy Note 2, but I'd like to suggest that you add a few more essential buttons, or change the existing five to a more useful command set. Power is not really an essential, and if you need to keep it to 5 commands, I think up, down, menu, execute, and exit would be good choices. This would allow access to all of the DVR functions as well as allow those without DVRs to navigate the guide. Any plans to do this? I'd definitely donate if the remote had better functionality. Everything else is flawless, but until I can access my recorded programs list with the remote, Remote Media Center is a bit of a better solution for me. Let me know if you plan to tweak this, I'll fire off a donation. Thanks again!
 

mgschwan

Senior Member
Dec 13, 2011
59
17
@KF2007: I've just uploaded a new version that includes your remote. And also uses the new layout code, which allows me to add additional buttons aside from Vol+,Vol-,Ch+,Ch-,Power

Could you verify that it works?

Regards
Michael
 

mgschwan

Senior Member
Dec 13, 2011
59
17
@Turbo_987: Since extracting the remote commands is a bit tedious I would need to know which buttons are the most important (You can give me more than five buttons)

Regards
Michael
 

mgschwan

Senior Member
Dec 13, 2011
59
17
Well today was quite an update marathon. The last and final version for today is 1.0.16 which has one big advantage. I've finally found time to compile the ffmpeg library with the arm v7a extensions. This should bring quite severe speed improvements and allow the highest quality settings on most tablets.

It would be great if someone could confirm this.

regads
Michael
 

KF2007

Member
Feb 9, 2007
27
13
HTC U11
Samsung Galaxy S20 FE
I will as soon as the new version reaches Google Play (now it stays at version 1.0.13)
Version 1.0.13 works ok on Asus tablet too - I was able to test it because you updated the free version too :)
Edit:
The new version made MPEG playback slightly worse (regular pauses every few seconds) but enabled smooth H.264 playback ! At least on my son's Asus TF300F with all settings set to max quality.
 
Last edited:

Top Liked Posts

  • There are no posts matching your filters.
  • 9
    Hi,

    This software is still in beta status. You have to expect problems.
    If you experience any bugs or glitches please look in the Known Issues section of this post. If the problem is not there send me a message.


    • This app is developed by me and Sony did not contribute to the development of this software
    • A personal note from me: I will not use the trademark LocationFree or the brand name Sony in the App (especially in the title)

    I do however want to thank the people at Sony (and sonyericsson). They were very active to find a solution so i can distribute this app. Their recent opensource engagement seems to pay out, for people like me.


    News:
    Today the 1.0.4 Version was released. It includes support for Japanese Basestation, different color systems (NTSC/...), experimental recording functionality...


    ----

    The official site of this app is theretv.zero997.com. I have also added a commenting system to the site. You can now put your feature requests and bug reports directly in the comments.



    The current status of the software is (as of 02/12/2012):
    • Compatible to all known BaseStations (LF-B1, LF-B10, LF-PK1, LF-B20, LF-V30)
    • Support for EU, US and JP models
    • Switch between MPEG4 and H.264(on supported BaseStations)
    • Recording of streams to MKV files (EXPERIMENTAL)
    • Remote control support
    • Registration works from within the app
    • Fullscreen playback
    • Works over Wifi/3G/4G
    • Selectable stream quality
    • Advanced performance settings (adjustable scaling filter/adjustable frame dropping)
    • Change the encoder settings of the BaseStation (framerate/videosize)
    • Change the video source
    • Support for the integrated tuner
    Here is a video showing the App in action http://youtu.be/R1uaKrfdAoc

    Upcoming features
    • Recording of shows directly on the device (like a DVR)
    • Timed recordings


    Thanks to my testers: insanenyc, Tommyboy_65_98, Mister_Mxyzptlk, Jim_IT

    Just on a side note, for all those people asking in other threads why no one made a LocationFree player even though Sony put the source code online:
    The code released from sony is just an excerpt of an opensource library they used to stream the data everything else is closed source.

    List of tested devices:
    • HTC Thunderbolt
    • HTC G2
    • HTC HD2
    • Nexus S
    • Glaxy Tab 10.1
    • HTC Inspire (overclocked to 1,5Ghz) : works
    • Motorola XOOM : works
    • Toshiba Thrive : works
    • Droid X : works
    • HP Touchpad : works
    • HTC Desire (not overclocked) : works although it is a bit too slow
    • HTC Wildfire: works but very very slow


    First message 02/03/2012
    Over the last month i've reverse engineered the Sony LocationFree Protocol and started the development of an Android client.


    Update 02/05/2012:
    The current release improves the frame dropping mechanism. This should result in better picture quality on slower devices. If the user sets a frame dropping factor the frames are only dropped at the end of a GOP. Thus the dropped frames are immediatly followed by an IFrame. This means that the frames following a dropped frame can be decoded without any errors.

    The synchronization between audio/video has been improved. The audio decoder can tell the video decoder to drop frames if the delay becomes too big, this means that video frames are dropped before the audio decoder has to drop anything, which should result in better audio quality.

    The remote control can now be shown/hidden.

    Update 02/07/2012:
    The encoded video size can now be set. The framerate of the encoder can be set.

    Update 02/07/2012:
    The support for LF-B10 BaseStations is now included

    Update 02/08/2012:
    Preliminary support for LF-V30 BaseStations. Video still has problems.
    Added support for the second video source

    Update 02/10/2012:
    The display problems of the remote control that some testers experienced are fixed now.
    The support for the LF-V30 BaseStations has been improved. But it's still H264 only


    Documentation:

    Once the app is installed. It's called ALF Player (Android LocationFree Player)

    1. When started it presents you with a play icon. Don't just hit it yet, you need to first hit the Menu key and got to preferences (enter Server address/port). You can also enter a hostname. If it does not work try it by directly conecting to the wireless network of the basestation first.
    2. Choose your remote (The remotes of all testers should be integrated already). If your remote is not listed i haven't extracted it yet.
    3. Go back to the play button and hit the menu key again.
    4. Got to registration.
    5. Set the Registration on the Base Station via the web interface to enabled. You should get a registration which is 8 characters long.
      Enter the password exactly as it is displayed (i guess it is always lowercase)
    6. Press "register". It should display Registration sucessful within a second. If registration does not work look at your base station anyway, it may
      have registered but did not detect it correctly.
      If that is the case, press back to get to the Play button and press it.
    7. It should take a few seconds for the stream to start (hopefully).

    To activate the remote just touch the screen
    To deactivate the remote touch anything except a button

    If you have performance problems you have the following options:
    • Reduce the Picture size
    • Set the scaling filter to fast
    • Lower the stream quality
    • Activate frame dropping (i.e 50 percent)
    • Lower the encoder framerate
    • Set the encoded video size to low

    Known issues
    • FIXED in 1.0.1 On some devices the player crashes before showing any video at all.
    • FIXED On some devices the remote control is not displayed correctly
    • FIXED The stream from LF-V30 BaseStations may cause trouble and not resync after dropped frames
    • PARTIALLY FIXED If the program can't connect it will hang until it crashes :)
    Donations:

    The following people have donated to this project (If you don't want to be listed here send me a message).
    If you consider donating more than the 4 Euros of the donation version, please use paypal, otherwise most of your money will end up with google (30% fees)

    Direct donations
    dzapme; Stefan Zimmermann; Joe Lo

    Donation version
    Tommyboy_65_98; Arthur Fernandez; ersd999; Dominic Zapletal; Ruben C De Jesus; Alvin Kelsey; gvece; M J Elvin; echardcore; Jeremy Carter; Wayne C Corby; Brian Metzger; Brian Ellerbusch; Mark De Jong; Thomas Pruss; Duane Leichtamer; James Smith, rallyraiden; Ghassen Mahfoudhi; Kenneth Dupre; hockeygoalie; the292
    Greetings


    How to get the program:

    You can download it from the android market

    or you can scan one of the following codes:

    Donation version (4 Euros)
    theretv_donate.png


    Free version
    theretv_free.png



    Michael
    2
    Hi,
    I want to thank the author for this amazing app.
    I've bought the donated version and it worked OK for me. But I wanted to use my remote (for Globo Opticum 4060cx SAT decoder). So I've done some research based on author's hints and managed to get the codes :) This has encouraged me to dig deeper :) I've reworked some classes in such way that:
    1. I've now got 16-button remote :)
    2. buttons are showing on my son's Asus TF300T running JB (with original version there was only black rectangle)
    Here is a screenshot form the TF:

    TherTVScreenshotSmall.jpg


    I've dropped voulume buttons because volume control is already on android device. I've added digits (to avoid using up/down buttons many times), EPG, EXIT and P/N buttons. P/N button is rather less universal - it switches my decoder from PAL to NTSC (in Poland we have PAL system but I've got NTSC LF version)

    Here is the actual buttons png image:

    buttons_alpha.png


    and the coresponding LFXGLPlayer class code change (onTouchEvent method):

    Code:
            float xf = motionevent.getX() / (float)getWidth();
            float yf = motionevent.getY() / (float)getHeight();
            if(motionevent.getAction() == 1)
                if((double)xf > 0.5D && (double)xf < 0.5D+0.12D && (double)yf < 0.22D && (double)yf > 0.02D)
                    lfclient.sendButton("d1");
                else
                if((double)xf > 0.5D+0.132D && (double)xf < 0.5D+0.24D && (double)yf < 0.22D && (double)yf > 0.02D)
                    lfclient.sendButton("d2");
                else
                if((double)xf > 0.5D+0.26D && (double)xf < 0.5D+0.366D && (double)yf < 0.22D && (double)yf > 0.02D)
                    lfclient.sendButton("d3");
                else
                if((double)xf > 0.5D+0.38D && (double)xf < 0.5D+0.49D && (double)yf < 0.22D && (double)yf > 0.02D)
                    lfclient.sendButton("power");
                else
                if((double)xf > 0.5D && (double)xf < 0.5D+0.12D && (double)yf < 0.48D && (double)yf > 0.26D)
                    lfclient.sendButton("d4");
                else
                if((double)xf > 0.5D+0.132D && (double)xf < 0.5D+0.24D && (double)yf < 0.48D && (double)yf > 0.26D)
                    lfclient.sendButton("d5");
                else
                if((double)xf > 0.5D+0.26D && (double)xf < 0.5D+0.366D && (double)yf < 0.48D && (double)yf > 0.26D)
                    lfclient.sendButton("d6");
                else
                if((double)xf > 0.5D+0.38D && (double)xf < 0.5D+0.49D && (double)yf < 0.48D && (double)yf > 0.26D)
                    lfclient.sendButton("pn");
                else
                if((double)xf > 0.5D && (double)xf < 0.5D+0.12D && (double)yf < 0.72D && (double)yf > 0.52D)
                    lfclient.sendButton("d7");
                else
                if((double)xf > 0.5D+0.132D && (double)xf < 0.5D+0.24D && (double)yf < 0.72D && (double)yf > 0.52D)
                    lfclient.sendButton("d8");
                else
                if((double)xf > 0.5D+0.26D && (double)xf < 0.5D+0.366D && (double)yf < 0.72D && (double)yf > 0.52D)
                    lfclient.sendButton("d9");
                else
                if((double)xf > 0.5D+0.38D && (double)xf < 0.5D+0.49D && (double)yf < 0.72D && (double)yf > 0.25D)
                    lfclient.sendButton("epg");
                else
                if((double)xf > 0.5D && (double)xf < 0.5D+0.12D && (double)yf < 0.98D && (double)yf > 0.77D)
                    lfclient.sendButton("channeldown");
                else
                if((double)xf > 0.5D+0.132D && (double)xf < 0.5D+0.24D && (double)yf < 0.98D && (double)yf > 0.77D)
                    lfclient.sendButton("d0");
                else
                if((double)xf > 0.5D+0.26D && (double)xf < 0.5D+0.366D && (double)yf < 0.98D && (double)yf > 0.77D)
                    lfclient.sendButton("channelup");
                else
                if((double)xf > 0.5D+0.38D && (double)xf < 0.5D+0.49D && (double)yf < 0.98D && (double)yf > 0.77D)
                    lfclient.sendButton("exit");
                else
                {
                    renderer.showUI(false);
                    requestRender();
                }

    and the arrays.xml change:

    Code:
        <string-array name="remotes">
                     ...
            <item>SV 360 elite</item>
            <item>Globo Opticum 4060cx</item>
        </string-array>
        <string-array name="remotenames">
                     ...
            <item>SV 360 elite</item>
            <item>4060cx</item>
        </string-array>

    and finally remotecodes.xml changes:

    Code:
    	<set name="4060cx">
    		<power>
    			<on>AQAJCgEBBQAIQEAKAJk=</on>
    			<off>AQABAgIC</off>
    		</power>
    		<channelup>
    			<on>AQAJCgEBBQAIQEALAJo=</on>
    			<off>AQABAgIC</off>
    		</channelup>	
    		<channeldown>
    			<on>AQAJCgEBBQAIQEAOAJ0=</on>
    			<off>AQABAgIC</off>
    		</channeldown>	
    		<volumedown>
    			<on>AQAJCgEBBQAIQEAQAJ8=</on>
    			<off>AQABAgIC</off>
    		</volumedown>	
    		<volumeup>
    			<on>AQAJCgEBBQAIQEARAKA=</on>
    			<off>AQABAgIC</off>
    		</volumeup>	
    		<d1>
    			<on>AQAJCgEBBQAIQEABAJA=</on>
    			<off>AQABAgIC</off>
    		</d1>	
    		<d2>
    			<on>AQAJCgEBBQAIQEACAJE=</on>
    			<off>AQABAgIC</off>
    		</d2>	
    		<d3>
    			<on>AQAJCgEBBQAIQEADAJI=</on>
    			<off>AQABAgIC</off>
    		</d3>	
    		<d4>
    			<on>AQAJCgEBBQAIQEAEAJM=</on>
    			<off>AQABAgIC</off>
    		</d4>	
    		<d5>
    			<on>AQAJCgEBBQAIQEAFAJQ=</on>
    			<off>AQABAgIC</off>
    		</d5>	
    		<d6>
    			<on>AQAJCgEBBQAIQEAGAJU=</on>
    			<off>AQABAgIC</off>
    		</d6>	
    		<d7>
    			<on>AQAJCgEBBQAIQEAHAJY=</on>
    			<off>AQABAgIC</off>
    		</d7>	
    		<d8>
    			<on>AQAJCgEBBQAIQEAIAJc=</on>
    			<off>AQABAgIC</off>
    		</d8>	
    		<d9>
    			<on>AQAJCgEBBQAIQEAJAJg=</on>
    			<off>AQABAgIC</off>
    		</d9>	
    		<d0>
    			<on>AQAJCgEBBQAIQEAAAI8=</on>
    			<off>AQABAgIC</off>
    		</d0>	
    		<pn>
    			<on>AQAJCgEBBQAIQEAYAKc=</on>
    			<off>AQABAgIC</off>
    		</pn>	
    		<epg>
    			<on>AQAJCgEBBQAIQEBCANE=</on>
    			<off>AQABAgIC</off>
    		</epg>	
    		<exit>
    			<on>AQAJCgEBBQAIQEBBANA=</on>
    			<off>AQABAgIC</off>
    		</exit>	
    	</set>

    These changes allow us to have 16 buttons instead of 5.

    The last change fixes (at least on the Asus tablet) black rectangle problem. It's done in OverlayImage class (loadTexture method):

    Code:
    //    Bitmap localBitmap = BitmapFactory.decodeResource(paramContext.getResources(), this.resourceID);
          Bitmap localBitmap = null;
          InputStream is = paramContext.getResources().openRawResource(this.resourceID);
          try {
        	  localBitmap = BitmapFactory.decodeStream(is);
          } finally {
              try {
                  is.close();
                  is = null;
              } catch(IOException e) {
    
              }
          }

    I hope that the author won't blame me for this post and maybe will be so kind to use my findings in next versions :)

    Sorry for my poor english

    Regards
    Kuba
    1
    Maybe try going a different route, trying thru development for their Xperia channel (they do use Android of course!)

    Natasha Dutta
    Senior Communications Manager,
    Sony Ericsson Mobile Communications AB
    Email: sedwpress@sonyericsson.com
    http://developer.sonyericsson.com/wp/contact/
    1
    With the latest update this app is clearer and sounds better then the offical pc software made by Sony. It also looks and sounds better on my thrive and inspire then it does on my PSP.
    Fantastic work Michael !
    Tested the app all day yesterday with a 4g connection and it only dropped a few times and that was due to poor data service areas .This is a screenshot of the picture quality of the app on inspire it is so clear
    208b71cb-7c1d-b868.jpg


    Sent from my Inspire 4G using XDA App
    1
    Just picked up one of the Sony LocationFree base stations. Looking to try out ThereTV on my android tablet. But I can't access Google Play. Is there another way to get a hold of the APK for this app ? If it works, I will be more than happy to donate - this sounds like it's going to be great if I can get it up and running.