a simple client-server application for android - android

I want to write a very simple application (maybe it is not so simple). I want to run application on my PC (either windows or linux) from the android phone. lets say I will have couple of buttons on my phone's screen and each button will open an application, say notepad or calculator. Or even better I will have an application on my computer screen (this will also be written) lets say 8 buttons on the appliaction and I will have same 8 buttons on my phone screen which will imitate as if I am clicking those buttons on my computer screen. I do not want to do this like GMote does by controlling mouse (touchpad).
I have some programming experience but not in Android. I dont know where to start so I will appreciate if someone could head me to the right direction.
Thanks in advance...
cs

The actual coding of this is fairly simple to accomplish. Basically you just open a TCP/IP connection and send and receive representations of keys and responses. There's a few things to learn about permitting easy reconnect when connection is lost and the like, but basically it's all vanilla TCP/IP client server programming in either native or java code, in the context of both the phone and the PC.
What's more complicated is the network topology that can connect the phone and the PC.
If they are both on the same wifi network it's pretty easy, just connect to the PC by its IP address.
But if you want to use the phone's 3g connection, it will be much harder. Chances are the PC you want to connect is not reachable from the external internet due to a combination of firewalls and/or network address translation, so the phone can't directly contact it. You may need to connect them by means of an internet server visible to both the phone and your [cable/dsl/corporate network] - connected PC.
Another possibility might be to get a bluetooth dongle for the PC and connect to it that way, though there can be a lot to learn about getting the PC side of the bluetooth interface working right and the APIs to program against it.

This is not simple at all. Probably in fact one of the more complicated things you could possibly do on android. Your description is extremely vague and it looks like you've put very little actual effort into this.
If you really want to pursue this, take a look at http://code.google.com/p/android-vnc-viewer/

Related

Android app that sends and receives data from pc

So ill do my best to explain. I'm wondering how easy (or hard) it would be to make an android app that talks/sends and receives data from a PC or mac, even more so with flash.
so for example, I first make a flash application on my PC / Mac, lets say it has a MovieClip of a square on the stage. That is all for that part. Next I make and android app that consists of one button. when I press that button (on the android app, on the phone) the square on the flash desktop application moves to the right or left by ten pixels.
so ultimately the mobile app is controlling the desktop flash application.
Iv searched and searched but I'm unsure of what keywords to really use to find what im looking for.
Can anybody shed some light on how difficult this is(if its possible), or any documentation / tutorials on this subject?
The Bluetooth standard includes a profile called Bluetooth HID. If you write (or download!) an Android app that implements this profile, then connect your Android device to your PC, it basically becomes a Bluetooth mouse or keyboard. It would require no programming on the PC side, as both Windows and Mac support Bluetooth peripherals.
Implementing a network protocol on the device side is usually really low-level stuff. If your programming experience is only in flash, you'll probably find this tough going (you would likely learn a lot!). Luckily, there's the Android HID library. I don't know how good it is (I just found it for this answer), but it looks done, so it would save you from having to do the most difficult parts.
You can use adb to accomplish this, which is how many of the tethering apps get around carrier restrictions. Here are some sources:
Adblib is a "library to communicate with android devices with TCP over USB without requiring the Android SDK":
http://code.google.com/p/adblib/
Thread about Adb over USB:
http://groups.google.com/forum/?fromgroups=#!topic/android-developers/JsDTBimHpOA
adb itself:
http://developer.android.com/tools/help/adb.html
Here are some other links to some other Android USB topics:
http://developer.android.com/tools/adk/index.html
http://developer.android.com/guide/topics/connectivity/usb/host.html
http://developer.android.com/guide/topics/connectivity/usb/accessory.html
http://developer.android.com/reference/android/hardware/usb/UsbInterface.html
http://developer.android.com/sdk/win-usb.html

How should I connect my Android Device to my laptop(for my app)?

I've seen a few people ask this in a couple of different ways, but the answer was always too complex or not detailed enough.
I want to take a survey of a lot of people at a robotics competition. I ask them questions, and mark the answers on my android-based device in check boxes, radio buttons, pull-down menus, etc. In fact, I will have multiple people working with me and asking people the same questions as me. I'll have one person at a laptop staying at his table. Whenever someone gets a few people to fill out the form, they need to put the data on the laptop. There lies the problem.
We won't have WiFi in this location. We probably will have Bluetooth, I'm not sure, but it seems like using a USB connection will be the easiest method(correct me if I'm wrong). I have a "Sync" button. When they press "Sync", the android device should send all of its new data to the laptop, and the laptop should send all of its new data(from the OTHER people surveying) to the android device. I'm using java on both devices. How do I do such communication?
That is what I want, but if I need to make it easier, I'd be willing to cripple the program to this:
You can only store one form at a time, and the "sync" button will simply send that 1 form from the android device to the laptop, and the laptop won't send any data back. That'd be fine because they really should send the file to the laptop after every form, and they don't really need the forms.
Edit: if Bluetooth is easier, please say why. My guess (if it is easier) is because each Android device might have a different port to connect to the laptop, but I think Bluetooth is harder because I'm not sure how to pair the device to the laptop.
What you should do:
Every phone used to survey should already be paired to your laptop. You should know how to do this.
Have your forms, etc, do your Android app without the communication part first, and be sure to store your forms locally correctly.
For transfer you just open BluetoothSockets on both PC and Android. Have a look at the BluetoothChat example. It's pretty simple. Remember that, since the Android starts the connection it should be Client, while the PC is a Server. Here is the Android documentation page.
For logical sync of both PC and smartphone, you should have some sort of protocol. For example at first they both say what form numbers they have (PC might have forms number 1-19, 21, 23) (Android might have form numbers 20-23). Then they will exchange exclusive information only.
Don't forget to vote up if it's useful information.

how to control pc mouse from android device without client server

I need to create an application that control PC mouse(pointer) through android device without downloading a server on pc, it should be able to communicate directly with my pc I already checked out the remote droid application but the user would need to download a client server to communicate with the phone
so is there way to remote control pc mouse through phone without downloading a client server on pc?
note: I am working on android 2.3.3 thus i cant use wifi direct and usb accessor
Why not just simulate regular bluetooth mouse, a standard bluetooth mouse which has its drivers as part of most os's.
no one can control your pc remotely without bluetooth pairing.
in theory i think it should be possible, but it requires knowledge in hardware and low level software (so its not a task suitable for most developers).
It doesn't matter what the client is, the fundamental question is "Can you move the mouse cursor on your PC from anywhere without installing software"
The short answer is no - which is a good thing! Otherwise, anyone on your network could just take control of your PC...
That said, you could, in theory, create an RDP (Remote Desktop) connection and use that to control the PC as a whole - but that is very complex, has been done already and would still require the user to allow remote desktop connections to the computer (Control Panel->System->Advanced->Remote)
Edit - Bare minimum app:
There are a number of ways to approach this but the absolute simplest app I can envision involves having an application on the PC listen for connections on a TCP/IP port. You'd then send messages to this port from Android using the Sockets classes.
The app would receive these messages, parse them and perform the appropriate mouse actions.
Make sure that you include an authentication/authorisation mechanism - you don't want random strangers to be able to control your PC just because they broke your wifi.
You may find it easier to build the desktop app to accept messages using the HTTP protocol (RFC) - This is a standard, widely used and very flexible mechanism for client-server communication. Why reinvent the wheel? This would also make your Android-side code far simpler as you could use HttpURLConnection and other similar classes which abstract the complexity of managing sockets.
You may also want to consider if the app should provide any feedback to the client - eg the new mouse position or a success/failure.
NB: Running the app as a windows service or website might seem preferable to a desktop app (doesn't need to be started by the user, nothing in taskbar/system tray) but there are considerable drawbacks to both - Windows services can't interract with the desktop easily (what happens if nobody is logged in?) and websites run as a different user so in addition to not having the same desktop, they have limited permissions.
It might be a case that i misunderstood the point. I think however that you can play with the BT protocols. If you find a way to recognize the phone form the pc like a BT mouse you can control the pointer. I think some of the low end SonyEriksson phones had that option build in.(SE880i).
Though I am not sure how the driver problem will be solved.
Regards
TT
If it is possible to plug into PC's USB Then
Arduino mouse using a cheap Arduino board
https://www.arduino.cc/reference/en/language/functions/usb/mouse/
Arduino wifi or bluetooth using same or another board (or connect by Serial, UART, SPI, I2C cable).
software on cell phone (Android) to connect to wifi/bluetooth
Some hacking at the C level.
Notes
- no driver on the PC
- Could do the same with PIC32 (even with
PIC8/16 but might take longer).
This is a typical real world IoT type project.
As a project it is between 40 and 160 hours to demo prototype for an experienced consultant. Parts cost estimate under $400 besides cell phone cost.
120 to 500 hours for 20 production prototypes + layout and assembly cost about $4000.
Production target unit cost under $25.
In other words a neat Kickstarter project.
Experienced soft/hardware & lucky hacker could do it 24 to 36 hours.
In Micromax q2+ Iam able to access the bluetooth - remote control and after pairing be able to move the mouse to my pc. One thing is am unable to do any action events.

Make a mobile device a remote control for a tablet?

I'm trying to make an app on an Android device that will control an application on an iPad or Android tablet. (I'm testing with an Samsung Galaxy S2 and an iPad 2).
The application is pretty simple for now. When one selects a colour on the Android mobile, that colour displays on the tablet device.
The question is, how to connect the two devices. Just now I've verified that I can pair the two devices using Bluetooth. Also, the Samsung has a "Kies" Wifi Direct feature (which I don't understand fully), that allows the iPad to connect to the Galaxy as a wifi hotspot.
The connections are there, but I don't know if either protocol can be used to actually get the apps to talk to each other to get the control I'm looking for.
Should I be using Bluetooth, Wifi, or something else?
And in whichever case, how?
My opinion is that you should not stick so much around the physical medium used for connectivity either is WiFi or Bluetooth. You should abstract this aspect, in both cases you will be using sockets (I'm speaking about Android), if it's Bluetooth you will be using Bluetooth Sockets, if it's WiFi: TCP sockets. You could have a intermediate layer that abstracts the type of connection and through a factory to use either Bluetooth or TCP.
Bluetooth - http://developer.android.com/guide/topics/wireless/bluetooth.html
For WiFi you should study if P2P would help.
You will need two applications:
- one on the tablet - the server which listens for commands from the client (change color, do this or this)
- second on the smartphone - the client which sends commands.
I've built a few apps that do exactly that between iPhone and iPad. But the principle is the same. I used Bonjour networking. It's just a fancy name for ZeroConfig networking between devices. It's written originally by Apple but it's open source so there should be Android support out there for it too. Really simple and easy to work with.
If you already have a working connection then you already have the first half of your answer, that said you should really consider implementing a solution that uses a variety of connection types, WIFI, Bluetooth, etc.. The question I think you are really asking is how to pass data and messages between the apps once you have the connection.
There are a lot of ways to accomplish this. You could implement your own lightweight message passing system. If you haven't done this before it is more complicated than it originally seems, especially as you would be required to implement the system for each OS you end up using.
Should I be using Bluetooth, Wifi, or something else?
It depends on what situations you want your program to work in.
Bluetooth can provide a direct connection between your devices. A potential issue with bluetooth is that it has a limited range. If you're devices need to be far away from each other, you may want to go with wifi. Otherwise, bluetooth could work great.
If both devices are connected to the internet, you can make them talk to each other through there. The advantage of this approach is that it doesn't matter how far apart your devices are as long as they're both online. A disadvantage is that you'll have to figure out how to find the tablet's ip address before you can talk to it. This is actually a HUGE disadvantage because it can be quite problematic if both of your devices are not on the same wifi. You could have the user type in the destination ip address, but you'll have problems getting it to work if the user is behind a router (which will almost always be the case). The point is, it gets hairy.
If both of your devices are on the same wifi, you can use ZeroConf AKA bonjour (like Dancreek said) to figure out what ip address you need to send info to. I've previously used a library called jmdns (easy to find with google) to implement zero configuration networking. It's good because the user doesn't have to worry about ip addresses... it's intuitive for the user.
And in whichever case, how?
Networking is a pretty big topic, so I can't expand on this question to much. Short answer is, it depends on what method you choose. Search for some tutorials and start by getting one of your devices to send something as simple as an int to the other.

Writing Android remote control Desktop

I am thinking to try writing an app that can use android phone to remote control the desktop.
Just want to make sure my concept is correct.
So for the android able to
communicate with the desktop, I will
need some kind of protocol like...
maybe Bluetooth? In my desktop, I
should have a service app that open
Bluetooth connection for my Android.
Is Bluetooth is a good connection
for writing remote control?
Is it possible to use the Bluetooth
receiver from mouse to do the same
thing?
If you want to start with remote desktop I really recommend to you to first do a Desktop pc version before starting with the Android version.
Like Teamviewer. I recommend to do it with WiFi (WLAN) internet. Bluetooth needs a distance of maximum 20 metres. But if you want to do it fast, Bluetooth (instead of WLAN) could be better to do a presentation in the same room.
If you want to access the screen by using your phone, you need to access the mouse on desktop pc (Using of Mouse's bluetooth is not really possible). I think that is very simple. You also need to drive the keyboard. The difficult thing here is to do it with correct keyboard settings and character transmission.
Keyboard Hook
Also one of the most important things is to get it quick: Use Port forwarding on your router and on client side. That is a very tricky thing, Teamviewer is one of the best applications I've seen. They do not need it but still are working quick and direct.
Also take a look to your streamed images. Best way is to use MPEG4. But could be very tricky.
I would do it in the future with my WP7 and a DotNet app. Perhaps we can work together.
Yes, it can be done using Bluetooth, but a better option would be to use WiFi because it has more range and higher bandwidth. You can use sockets to communicate between mobile and desktop. Java provides a class java.awt.Robot which you can use to simulate mouse and keyboard events.
robot.keyPress(KeyEvent.VK_N);
robot.mouseMove(x,y)
Robot class also let's you capture screen, so it is possible for you to replicate desktop screen on mobile just like teamviewer. The complete process of creating an android based remote control is detailed here

Categories

Resources