Simple multiplayer games - Android Software Development

Hi,
I am trying to develop a simple Android game (like tic tac toe or some other simple board games) which allows people to play over the internet.
I'm initially trying this without having a server (i.e. client-to-client) and created a simple ServerSocket app that listens for a connection on a pre-defined port, to which I am able to connect to from my local pc (with redir on the emulator).
However on a actual device connected to a carrier network this does not seem to work (I believe they carriers is blocking incoming connections).
So does anyone know how we could achieve something like this on Android? Or what other options I should be looking into for this kind of networking?

Related

Develop a Remote control client on PocketPC? Anyone up to it

Guys,
As I'm reading the threads I see over and over "what is this value", "please upload this file", etc. Is there a remote client like PCanywhere, telnet, Timbuk2 that would allow poepl on XDA to give up control of there machines for guys like itsme or others who have developed tools without even touching a device.
Any way to do this over the internet with home routers and everything else in the way?
We could do this by going PC-PC with timbuktu and then controlling active sync to load or pull files. How could you find the IP address through the router? With ipconfig -all all I get is my router assigned IP with no indication of how to access the machine from the internet.
Anyone know a way to do this?
What´s wrong with "Pocket controller"?
There is no other program that has it´s superb features.
You can completely remote controll your XDA/XDAII/XDAIII.
If you are asking to remote controll an xda thru the internet, id say forget
about it. It´s to complicated and to bulky to use. And by the way, what is it supposed to be used for?
If you want to remotely control your computer with your XDA thru the internet, there is good software for this already.
My wife had mapopillis installed on her phone and could not get it up and going or get the GPS to show her position: I would like to have a program icon that she can click on which would (automatically) connect to the internet, display an IP address of her connection and activate remote control. I would then use the IP that she gives me to log onto her phone and setup and test her Mapopillis and GPS.
All I get from her is "I don't know, it just doesn't work" and I can't debug much with this response.
What would be nicer is to have the IP address automatically SMS'd to my phone when my number was preprogramed in. This way her required actions would be less. She just wants me to make the thing work.
here's another vote for Pocket Controller.
it truely is a wonderous utility packed with cool features
no need for anything else !

PC<->PPC application comms concurrently with GPRS conn

Hi,
I am trying to develop an application with both PC and Pocket PC components.
The PC and PPC need to exchange data whilst the PPC (eg XDA) has an active GPRS connection.
I first tried using evc and RAPI to allow the PC and PPC components to talk to each other. However RAPI relies on ActiveSync and it seems you cant have an ActiveSync connection to the PC (eg over USB) at the same time as a GPRS connection.
So
1)Am I right that ActiveSync at same time as GPRS is impossible? (And hence RAPI...)
2)What is the easiest way to do PC<->PPC comms without ActiveSync, on the widest variety of PPC devices?
3)Is there a way to do this without writing PC and PPC sides for all of
i) Bluetooth
ii) USB
iii) Serial
It seems like a lot of hardwork to reimplement all these, but some models have BT, some only USB etc etc
Any help appreciated...
Regards,
Giles.
hey,
im also trying to write some client -> server software for my mda/pc. Ive managed to narrow it down to two technologies (excluding activesync cos it needs to be portable)
- Web Services
- Client Server Model (tcpclient and tcplistener)
webservices are good as they will run on any net connection with port80 open, pretty fast and versetile but have some bad flaws. u need some back end data store (like a mysql database) as data is not persistant on then... also u cannot "push" from the server to the device (this may or may not be an issue)
the tcpclient model is starting to appeal to me in a number of ways. u can define your own light-weight protol (SOAP has a nasty habbit of bulking the objects out and GPRS costs!)... i started to write some little test apps and so far its looking good. Ive wrote a very tiny server that runs on windows and has a thin client running a threaded tcplistener and a mysql backend datastore. The test mobie simply constructs a tcpclient object and writes a string "hello world" to the port, which the server picks up and displays in a messagebox... so far this concept is working really well, and i have more control over the serialisation and communication of the objects and types.
i hope ive helped u in some way hehe
Will

Looking for administration software.

I just bought 32 HTC Wizards (Qtek 9100) for my company, now i'm looking for some software for administration of the PPC over GPRS.
Is anyone familiar with such software?
No one?
what kind of administration software are you looking for?
What kind of administration tasks were you thinking of doing over GPRS???
PocketPuTTY for SSH1/SSH2/TELNET access to linux/windows based systems.. Should work over GPRS, although I have never tried it.
For Windows admin I would probably use VNC, the clients I've tried are, "z2 remote 2 pc" and "realVNC" .. I find the first better due to its zooming function, but I am totally unsure if it works over GPRS, I'm pretty sure it has an option to connect via GPRS so you might be lucky !
There is also Terminal Services which comes installed on your PPC anyway
hope that helps somewhat..
I'm looking for something like VNC, but wasn't able to find any were the server side, would run on PPC. And what I know of, the z2 Remote2PC can't run as a server on PPC. Or just remote configuration. the gprs is a must, becourse the ppc's are in motion all the time, and always connected.
Ah I see what you require now, you want to remotely connect TOO the PPC's not from them.. Well, there is software that allows you to do this, it is unlikely it will work how you wish. GPRS provides the following services..
* Point-to-point (PTP) service: internetworking with the Internet (IP protocols) and X.25 networks.
* Point-to-multipoint (PT2MP) service: point-to-multipoint multicast and point-to-multipoint group calls.
* Short Message Service (SMS): bearer for SMS.
As far as I can tell PtP is used for Internet connectivity, but as far as dialing INTO that I would doubt it to be possible, even if the devices had constant WIFI access it would be pretty hard based on the number of devices that would need to be contacted. Although these are simply assumptions.

[IDEA/POLL] Use C2DM app for remote phone access

These apps allow you to remotely access your phone from a web browser. However, they all run a web server on the phone, and I cannot connect to any of the over 3g (Verizon).
LazyDroid Web Desktop
Remote Desktop
Remote Web Desktop
I want to move the web server off phone, and (hopefully) onto private sites.google.com site. App Engine might be necessary, but I'm hoping this could be done solely in JS.
The hosting site would provide the UI, and interact with the phone using C2DM (the magic that powers Chrome2Phone, GMail, and installing apps from the web Market).
The UI is pretty obvious. It just needs a whiz to create HTML, Javascript, etc.
The C2DM backend is a still a bit mystifying to me... and searching for c2dm and javascript does not yield any obvious working implementations. But it seems plausible. Push a command to the phone, phone returns/uploads data to website, and UI updates.
Then there is the Android end. Well, there are the 3 projects above, Tasker for a quasi-hackish approach, and RPC (promising, but it seems like a WIP).
Thoughts? Volunteers? Geniuses?
Ooo... 2 birds with one stone!
This would also kill 2 birds with one stone.
No more typing in dynamic IP addresses! You get to use DNS to handle the connections. Bookmark your site in your desktop browser (it is always the same!). And set a preference in the Android app.
On lazydroid i've in planning some kind of trick that will let you connect behind firewall ... similar to a vpn...
CloudsITA said:
On lazydroid i've in planning some kind of trick that will let you connect behind firewall ... similar to a vpn...
Click to expand...
Click to collapse
I tried it again last week, and it is still unsuccessful. Webkey is currently the only application that I can successfully use to reach my phone.
Now, I could be wrong, but I believe all of these apps run a web server on the phone. I get a lovely, private 10.x.x.x IP address, which I can't reverse the route to. I have tried and failed to get DynDNS to work.
I have been looking into a solution since my original post. I have not had any time to do code squat, but I have loosely figured out all of the parts.
The big architectural difference I have been seeking is removing the server from the phone. I am not an Android expert, but I don't believe it even requires a running service. (Thank you, C2DM.)
With the app-webservice separation, you can work a "protocol" that reduces the overall bandwidth used... and thus improve battery life. Put all the "hard work" on a webserver, and (things get fuzzy here) possibly push it off onto the client browser (JS).
C2DM Browser Links
I could probably make something like WebKey but with C2DM and some more features. If you want you can give suggestions and I'll start making on saturday (after my exams). It would probably be possible in javascript for the actual sending from server and php just for logging in to your google account. The phone would just be registered on the server and no services (just as you wanted )
nebkat said:
I could probably make something like WebKey but with C2DM and some more features. If you want you can give suggestions and I'll start making on saturday (after my exams). It would probably be possible in javascript for the actual sending from server and php just for logging in to your google account. The phone would just be registered on the server and no services (just as you wanted )
Click to expand...
Click to collapse
I am not sure "more features" is necessarily the direction I'm headed. I am focused on making a "seamless" experience (i.e. less separation of phone and computer).
I was headed to App Engine (Python bias + easy Google integration). I have a project created. I haven't pulled together the various examples to make the core, but it seems <naive>simple</naive>. Stir in some templates, CSS, a sprinkling of JS, and voila!
The big "tricky" part that I can't convert from f***ing magic to a clear approach is the data link in the server. I want to avoid any storage to a Google disk, or otherwise, even temporarily. No stored data = easy privacy policy.
nebkat, if you're really chomping at the bit to code, here's my Android client concept.
- C2DM is a wake-up call. (cheat an borrow ChromeToPhone's ID to begin with)
- Connect to web server, send "I'm here," and wait for further instructions (Channels API/Comet/AJAX/.........)
- make the command set extensible
- each command is blockable in the client. (Permission control is set on the phone, not remotely.)
- After N minutes of no activity, send a "good bye," disconnect from the server, and fade into the background.
Don't worry, I'm very experienced with the server side stuff and I know exactly what you want. The only information stored on the sever side would be google account, the device c2dm registration id and some logging features just for statistics. A password could be set on the phone that would be sha512 hashed on the ajax request and would be sent to the phone. Even if a hacker found the hash, it would be useless without being logged in to the persons google account or knowing the server side auth token.
For now i'll just make the reciever, processor and command output and later on the extra security and ui stuff. It will work exactly the same way as Chrome2Phone except it will have server side php and the different commands. The connection from pc to phone will be something like this.
user command -> ajax request -> php c2dm request -> phone
phone -> php server http request -> controller page status
BTW I'm saving up for a Nexus S, how much would people pay for this type of app? There would definitely be a free version, but I just need to get the Nexus S because I have a Galaxy Spica now and it isn't the best for app development. I'm new to how stuff at xda works, would a donate version get me enoguh for the Nexus?
nebkat said:
Don't worry, ... <snip> ... auth token.
Click to expand...
Click to collapse
Alrighty then. I'm feeling like I can stop contemplating implementing this.
BTW I'm saving up for a Nexus S, how much would people pay for this type of app? There would definitely be a free version, but I just need to get the Nexus S because I have a Galaxy Spica now and it isn't the best for app development. I'm new to how stuff at xda works, would a donate version get me enoguh for the Nexus?
Click to expand...
Click to collapse
Since I was learning the ins and outs of App Engine, I read their quota rules and realized if this were popular it would require funding. I don't know where you are going to your web server, but I assume you'll have to pay someone to keep it running. But I had thought about $$$ already.
"Give away the razor, and sell them the blades."
Make the app free, no feature restrictions.
You get your money through various "membership" levels on the server. (See the account levels at fastmail.fm for an example.) So, you can use the app for free, but you only get, say, 2-3 MB of traffic per day, and only X sessions per day. Need more? See the pricing chart.
user command -> ajax request -> php c2dm request -> phone
phone -> php server http request -> controller page status
Click to expand...
Click to collapse
user command -> php server http request -> phone
phone -> php server http request -> controller page status
user command -> php server http request -> phone
lather, rinse, repeat.
C2DM is not deterministic, and acts up in low signal conditions. So, I made a decision to only use C2DM to initiate a session. Once both ends are connected to the server, everything goes over HTTP.
Oh.... and not that we need another Lookout/Phone Finder, but a shared-secret SMS code for the case where "they" have shut down the data connection.
I have my own server nebkat.com and there is nothing on it anyway.
The only other way to make "push" requests to the phone is with WebSockets. It would probably be better than c2dm because we have full control over what gets sent (google limits some requests). The advantage of WebSockets is that they send no header information which means that we could send our messages in 20 to 30 bytes.
I'll look into more detail on friday.
With web sockets won't you need to ensure the phone has a routable, external IP address? I know, for one, t-mobile does not expose an external IP address for their phones. Unless, of course, if the phone is connected over WiFi. C2DM works great for me (I have used a couple of apps with it and it is really useful).
MrGibbage said:
With web sockets won't you need to ensure the phone has a routable, external IP address? I know, for one, t-mobile does not expose an external IP address for their phones. Unless, of course, if the phone is connected over WiFi. C2DM works great for me (I have used a couple of apps with it and it is really useful).
Click to expand...
Click to collapse
No, WS is server initiated and the ip address' shouldn't make a difference.
MrGibbage said:
With web sockets won't you need to ensure the phone has a routable, external IP address? I know, for one, t-mobile does not expose an external IP address for their phones. Unless, of course, if the phone is connected over WiFi. C2DM works great for me (I have used a couple of apps with it and it is really useful).
Click to expand...
Click to collapse
You need an valid external IP address if you are attempting to initiate contact with your phone, which is why the 4-5 apps I've mentioned do not work on carriers like t-mo and verizon.
But the phone can establish a connection, and the carrier NATs (or whatever) will handle the routing for outgoing and incoming data.
I think the right questions are: Will Verizon/T-Mo allow the ports and protocol for WebSockets? Do Android and desktop browsers implement the draft API correctly and consistently?
I like C2DM. I works well when you have a good connection. But there are 3 issues with it.
1) The message size limit is 1024 bytes. Not ideal for file transfers.
2) In a poor signal areas, since the service retries sending messages, you will get delayed and/or duplicate messages. I work in a large "concrete" building, so I get this behavior often enough that I don't want to rely on it.
3) I believe there is a limit on the number of messages you can send. So, hunting around the filesystem could hit this limit (but unlikely in reality... I hope.)
It would be interesting to see exactly how those apps handle all of the data. Do they only use C2DM, or do they hand over to another protocol?
Ok my exams are over and I am starting with it. I'll give updates on this thread

Sockets on Wearos

Is it possible to use IP/TCP to exchange data between a Wearos watch and a Smartphone?
From the following words in https://developer.android.com/training/wearables/data/data-layer I get the impression that is some how impossible:
"Warning: Because these APIs are designed for communication between handhelds and wearables, these are the only APIs you should use to set up communication between these devices. For instance, don't try to open low-level sockets to create a communication channel."
I have now tried low level sockets on Samsungs Wearos Watch4 and Linux send and recv syscalls work perfectly well. The problem I found is on the Android level, namely onAvailable(Network network) is never called, but onLost(Network network) is. This will give problems if you stop network operations after a call to onLost, you and start them again in onAvailable.
EDIT:
Now I also find onAvailable in my logs.

Categories

Resources