EDIT: So in summary, this is not really possible, because of the scope of the software used to communicate with the antennae is to low level. It would be amazing, if this software was accessible to developers, as it would enable us to make more cool stuff. Unfortunately it isn't
I've had this idea ghosting around my mind for a while, but I don't know if it's possible. Could one develop a mesh network where phones used their internal radios to communicate with each other directly instead of first connecting to a tower? The idea being, that given proper software, cellular networks would no longer be needed. Basically: Imagine you want to use whatsapp but you don't have a data plan and you're out & about so consequently don't have wifi either. Can phone A connect to phone B (provided phone B has an internet connection) and piggyback off it's wifi?
Related
My background is more in Mechatronics/Robotics, so I'm very new to android app development. Basically I'd like to use an Android phone to control two robotic systems that will need to talk to each other over a distance of around 2-3km. I'd like to the cellular transceivers on the phone to achieve this, without needing to connect to the mobile network as they should be within range. Essentially I want to turn the phones into glorified walkie-talkies.
I've done a bit of research, but I've only found ways to use the cellular function through pre-built APIs that use the network, thus needing a SIM card. Is there any way to access the transceiver directly and use it to communicate with a custom protocol? Would this require a custom ROM/kernel modifications?
I'm trying to make a simple chat app on Android for learning purposes. I would like it to have the following features: Different "rooms" which people can create/join. Working of Bluetooth/WiFi Direct (Preferably WiFi direct). Passwords on rooms.
I'm having a number of problems however. I don't fully understand WiFi Direct. I've read and re-read the guides and references on developer.android.com and I've asked multiple times on #android-dev on freenode to no avail. Would someone be able to explain if what I outlined is even possible using WiFi direct and if not, what should I use?
TL;DR: Explain WiFi Direct's network structure and capabilities and provide resources for learning if possible.
It is possible using WiFi direct.A room can be considerd a P2P group(1 group owner+ one or more clients) .The person who starts a "room" becomes a P2P group owner and whoever wants to join a group has to undergo the authenticatio process.A client can directly communicate with owner but to communicate with other clients in the group it has to go through the owner.
For detailed understanding of wifi direct better go through the wifi p2p tecnical specification v1.2 which can be found in WiFi alliance website under published specs. Or for a overview Click [here] (http://enjambre.it.uc3m.es/~agsaaved/papers/2012_camps_wircommag.pdf).
It is possible in theory but currently the framework of wifi-direct is too unreliable..
I have tried it and the connection is very unreliable ,it breaks abruptly for no reason. Also beyond 3 devices it doesn't scale very well ,though i tested it on tablets having very less processing power (maybe on good phones it might allow one or two more connections).
So i would recommend you use wifi for communication . it would be the best suited for your needs and easier to work with as well
I am thinking about an application that will establish a mesh network between smartphones on Android and maybe iOS devices. It'd look like netsukuku between smartphones + Voice, Chat, Data, maybe Local network.
Is it possible by GSM? Any GSM architecture restrictions?
Is it possible to connect phones via GSM in android? and/or iOS?
Can I use Android libs to make it or I need direct access to the GSM module to do it??
There is no way to do this under normal conditions and may not be possible without flashing a modification directly to the underlying GSM radio - not something for the fain at heart. On iOS I am going to guess this is completely impossible.
First of all, there are tons of regulations related to wireless usage. In the US, the FCC takes care of that and each country has its sets of rules that luckily, have some common points. If you want to use a cellphone modem in its current frequency range, you have to modify it and it's not "legal". The frequency range it uses are "owned" by the carriers, they pay big bucks to use it. Second, your cell modem is meant to look for a cell tower and "hook-up" to it. It doesn't have what is necessary to do a mesh. This would require rewriting the firmware in the cell modem itself, and this is only if the chipset support mesh networking (I doubt it). Even after doing all that work, you would have to use available radio frequency band (there's not much) to do that and the cell phone modem antenna is probably not supporting it. So, for your mesh architecture to work, you would have to get some hardware work into it.
Here is an idea: you built a little dungle that would connect to your cell through Bluetooth. This dungle would in turn have a longer reach wireless radio in the ISM band which is license free (you still have to go through FCC... certification). But in the ISM band, the transmission power is also limited so, you mesh will still need to be devices not too far appart.
Simpler and cheaper solution: use the internet to connect your devices together. You can use a server in the cloud where all devices register and then can talk together.
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.
I want to facilitate video-calling from the android device to another android device. My question is that can i connect the android WiFi device with the android WiFi device without any use of internet connection. I want to use it just like the Skype. is this possible or not? if it is possible then how can i implement it...can i get some code snippets as well???? Please give me link to download that app
First, your idea works completely different from Skype, which is completely dependent on a functional Internet connection for its core functionality.
Second, while you could create an ad-hoc WiFi network betweeen two Android devices, their range will be the limiting factor:
WiFi is intended as a short-range wireless medium. There's a reason nobody wanted the 2.4 GHz band (and therefore it is unlicensed): there's a significant noise and signal loss on these frequencies, noticeable even at short range.
Moreover, wireless equipment in mobile devices is engineered for power efficiency - which translates to lower broadcast power when compared to on-the-grid devices.
Also, the antennae in such devices are omnidirectional - this is rather useful for normal use, but again lowers your available broadcast power
Even if you had huge, high-quality directional external antennae connected to each device, pointing very precisely at each other (btw that also means each of them is stuck in one place; see e.g. this for a dish size calculator), you'd need to make some pretty drastic changes to their networking stack, as the latency inherent in long-distance comms will screw up TCP/IP pretty badly.
Even so, the setup would be very brittle, dependent even on the weather (water vapour absorbs significant amount of power in that part of the spectrum).