How to set up One to Many connections without any user interactions - android

We found multiple ways to connect two device with a Peer-to-Peer connection using things like Bluetooth and Wifi direct. Problem is, each device need the user to accept or confirm the connection.
We would like to make a One to Many system where everyone can connect to one device. This device need to manage all the connections incoming without any user interaction (really independant) and then display in our activity some informations receive from all the connected device.
We're looking for some good examples on how we can do this. Thanks

Cant you just use basic TCP Server?
EDIT/Answer to comment:
Yes it is possible, here is one of my sample apps, tho servers can be created on ports above 1024

Related

Is Wi-Fi P2P ideal for a local chat-discovery app(Tinder similar)?

I wanted to know if WiFi P2P android API is ideal for use if we take lot of connections into consideration, tha app's users can be at time clients and servers they can share files and send messages and get them also as clients ? if no what is the best solution ( N.B : i'm opened to client/server architecture ).
I just wanted to know the limits of the API cited above and Thank you guys ...
Wifi direct as a technology is ideal for peer to peer communication.However talking about wifi direct for android , it works well only for a single connection that is only 1-1 use case .It is possible to create a one to many where every device connects to the group owner (Soft AP).But even if u build a one to one and try extend to multi use case you will have problems with certain devices that do no connect perfectly.
Checkout some of the problems listed under problems after downloading this application https://play.google.com/store/apps/details?id=com.budius.WiFiShoot&hl=en
If you want to go for multiple connection it is better to use hotspot .One device ends up being the hotspot and other clients connect to the hotspot .It is being used by plenty of application like xender, zapiya.

Android Broadcasting / Receiving Data without Wifi Hotspot or Wifi Direct

My question is that is it possible to send and receive data between multiple android devices via broadcasting over wifi without establishing p2p connection?
Our professor asked us to design a wireless network system in which you broadcast a message within your android phone, and the other android phones nearby receive it and broadcast it again so that the other phones can receive it and it continues like that. In this way, for example, when someone writes a message in a classroom or café everyone will be able to receive it and broadcast it again. (like an adhoc network system). And although my professor believes it can be achievable, I didn't find anything online like this kind of android network system. So my question is again is it possible to do something like that?
Any helpful leads and references will be appreciated.
Edit: I had to change the title of the question.
I couldn't find a proper solution so I tried the following method so far: I set up a UDP messaging app using Wifi hotspot (it works perfectly for multi clients). The phone who turns on the hotspot is the server and others who connect to it are the clients. Then, I decided to turn this system into an adhoc-like system where there would be more than one hotspot and the clients would connect to them in cycling order and serve as a bridge among these servers.(every second, they will switch to other hotspot and vice versa.) So, they will carry the messages from one network to another. (I know it is very inefficient and prone to time delays; but it is the only idea I have come up with so far.)
When I told this system to my professor, he said that it is too complicated and I just need to broadcast a message from a device to a common channel(without setting up a network connection), and other devices will listen to this broadcast channel(without connecting to a network system), receive the message and broadcast their own messages along with received ones to this channel again as I described in the question body. (he never mentions hotspot, Wifi direct, and etc.) He even told me that the only thing I need to do was to think simpler and use the properties of 802.11. But, I do not think it is that easy to set up such a wireless system, at least for Android where ad hoc systems are not supported yet. So any help will be greatly appreciated. Thanks!
The Nearby Connections API in Google Play Services released last week uses WiFi multicast: https://developers.google.com/games/services/android/nearby
It works for devices already on the same WiFi network. However, it uses a host/clients model, and doesn't work with WiFi direct or a tethered hotspot connection.
You could also use the WiFi direct APIs from ICS: https://developer.android.com/guide/topics/connectivity/wifip2p.html
You can have multiple devices connected together via WiFi direct, so firing UDP packets as #willis suggests would seem the way to go
It is implementable. Do you know the aircrack? similarly, you can receive all packets even not sent to you, and you can send any kinds of packets even not sent by you.

Ways to connect two devices to each other

I want to build an app but first I need to know about all ways that are possible to make a connection with two android devices. Over 3G, Bluetooth, Wi-Fi and etc, where can I get a list of this? (If it exists)
To be more clear, I want the better way to find an X device with my Y device and trade some information between them. It`s important to considerate that two devices need to be close each other.
Like the feature of change Friend Codes with friends on 3DS via LOCAL, got it?
Can anyone help me out with this? Thanks already.
If you want to establish a local connection, the following ways can be used.
Internet (Wifi, 4g, etc.). A webserver should be running and establish a secure connection between the 2 devices.
Bluetooth - An app can be written to establish a local connection to a friend who is running the same app.
NFC - An app can be written to establish a local connection to a friend who is running the same app.

How does BluetoothServerSocket.accept() work?

So I just wanted to get my concepts cleared. How exactly does BluetoothServerSocket.accept() exactly work? The Android documentation mentions that it returns a CONNECTED BluetoothSocket, but isn't there some kind of authorization before connecting?
Also, I am currently working on an application where one device acts as a host and holds a listening BluetoothServerSocket, but I want to first list down all the incoming client connections and let the user select which device to connect with. Is that possible? If yes, how can it be done?
Thanks in advance. :)
You would have to implement those things.
Bluetooth has its own security, including authorization, encryption, etc. If the security of Bluetooth is not sufficient for your purposes then you need to implement your own.
Bluetooth sockets is a simple abstraction for communicating over Bluetooth RFCOMM (or L2CAP on other platforms). It doesn't add any security, or any ability to select amongst clients.
If you want to let the user choose amongst possible clients to connect with then you will probably want to accept() connections from multiple clients (so that you have multiple independent Bluetooth socket connections). Have each client use the socket to identify itself and then list these for the user who can then select who to communicate with.
If you want something easier, but less secure, you could just show the user a list of paired devices, or do a scan and show them the list of devices found in the scan, and then let the user pick from this list. But be aware that other devices can mis-identify themselves.

Convert application using wifi to application using bluetooth

I have an android app, it does the following:
Connects with a server to read and update a database at the same time as others.
I want to convert this to an app that does not need an internet connection. Therefore i would like to know if its possible to have an android device acting as the server with the database, whilst multiple phones connect to it via bluetooth getting and updating the information in the database?
Thanks
Yes. It possible.
However all of your devices will have to be located nearby, so they can connect to each other through bluetooth.
You can take a look at Android Bluetooth API.
However, my recommendation would be to use Wifi instead of Bluetooth. YOu will need additional WiFi router. However, you won't need to deal with Bluetooth API in such case.
You will only need to write a server on one of Android device and the rest of devices will work the same (as now)
There are a few options to doing so, that don't involve a server. Both of them require a slightly different approach than both devices connecting to a server.
Wi-fi Direct- Only available with Android 4.0+.
Bluetooth
Personally, I have been using the Bluetooth option, and not found it terribly difficult. Essentially, you have to do the following to make it work.
Have one of the devices listen for a connection. If it is unpaired, you will have to make the device discoverable.
The second device needs to initiate a connection. It can do this by looking at the known devices and trying to connect to one, or listening for a new device
After the two devices connect, they must initiate some kind of a communication protocol. The communication is essential a serial connection.
Blue-tooth requires that the devices be within about 10 m of each other. Wi-fi direct will allow somewhat further, but as mentioned, is less supported. It is possible to allow for both communication methods, but is somewhat challenging.

Categories

Resources