Unity3d WIfi direct (P2P) android support - android

I am trying to figure out how to make game which will work only locally using Wifi Direct without any internet access.
The concept is very simple. It will be some kind of presentation so I need to have one master/host device and other connected devices will be slaves/clients. When I press button on master/host than should be changed only one value (string or int) in all slaves/clients devices.
With support of 20-40 connected devices in same time.
I have Tried:
UNet - it works only if it is connected to some router with use of local IP's but it does not support Wifi direct communication.
I have tried to find some plugins but I cannot decide which to choose or get information about support of Wifi direct.
I tried to find some other solution like Bluetooth but it supports only 4-13 connected devices at same time but I need to he connected around 20-40 devices in same time.
List of plugins I have found:
Forge Networking - https://www.assetstore.unity3d.com/en/#!/content/38344
1.1 I do not know if this supports a feature i required.
WifiDirect Plugin - https://www.assetstore.unity3d.com/en/#!/content/50112
2.1. This plugins have errors and have no support.
What I would like to ask about:
Does 1. plugin support Wifi direct?
Do you think That I should buy 2. plugin and try to fix it and hopefully I can find a problem and it will work?
Do you know some better or "any" solution how to solve this problem?
I am interested in any tips and help how to make it work.
Thank you very much for your help!
Jakub Kučera

After research I have realised a working solution!
Unity Asset Store: https://www.assetstore.unity3d.com/kr/#!/content/53955
Video of usage: Video
Plugin I have tested on a few Android devices and it works for Wifi Direct with no connection to internet.
This plugin supports much more than that for example:
TCP
Client / Server
Complete C# 2.0 native
Stand alone library (DLL)
Multi-Thread
Event Driven
Support [Binary/Json] message data
Log Server & MySQL Sample Code
New Feature
Unreliable UDP
MNF Server based WinFrom without MySql
I hope it helps somebody else!
And I would like to say thanks to author and his support!

Related

Android Automotive (AOSP) - How to enable and test AP/AP, STA/STA, STA/AP concurrency features? (A12.1)

I recently started to work with AOSP to build android automotive images (currently version A12.1) and i would like to know how to enable and how to use features such as
Dual access point (AP/AP concurrency)
Dual wifi connection (STA/STA concurrency)
and bridging internet access from wifi network to devices connected to the android hotspot (STA/AP concurrency).
Im using imx8qm board with 88Q9098 wifi chip from NXP.
https://www.nxp.com/products/wireless/wi-fi-plus-bluetooth/2-4-5-ghz-dual-band-2x2-wi-fi-6-802-11ax-plus-bluetooth-5-3-automotive-solution:88Q9098
I was told that this wifi chip should be able to support these features (with its concurrent dual wifi architecture)
I found some documentation from google about these features here:
https://source.android.com/docs/core/connect/wifi-sta-ap-concurrency
https://source.android.com/docs/core/connect/wifi-sta-sta-concurrency
https://source.android.com/docs/core/connect/wifi-ap-ap-concurrency
Following this it looks like we were able to make STA/AP work, because we were able to connect to wifi network with internet access and start hotspot at the same time, and the device connected to the hotspot was also able to access internet.
Trying this was fairly easy since i was just using already existing UI of android automotive => activating both sliders for hotspot and wifi (in network settings) at the same time. But how do I test AP/AP and STA/STA features? Im not really experienced in AOSP development, so any suggestions are appreciated.
Is there already a way to use these features but it is not by default shown in UI? or do I need some external app to do this? Or something entirely different?
And if there is someone who could explain to me or link some guide to the whole process of how features like this should be supported by vendor, I would really appreciated it :). I was unable to find any straightforward examples of what needs to be done.
Thank you for any comments. Sorry for mediocre english and sorry if the structure of the question is not what is expected here (this is my first question on stackoverflow).
Have a nice day :)

fast direct communication between ios and android

at the moment I'm planning to build an cross-plattform app (iOS/android) that streams music from one device to others without internet. Now I'm considering which network technology is best for this use case. By the way I'm sorry I didn't say hello to you, it disappears all the time.
Existing wifi network:
I don't wanna use this because I want my app to work everywhere.
Wifi-Direct:
Not supported by iOS (tell me if I'm wrong).
Bluetooth:
Here I've found kind of conflicting information.
Bluetooth 2.1 is supported by both iOS and android but iOS has its own protocols and doesn't support the common ones.
Bluetooth Low Energy provides a data rate that is too slow for high quality music streaming (1Mbit) and is supported by iOS but on the android side version 4.3 is required which suspends about half of all users.
What I'm not sure about is the "normal" (not LE) usage of Bluetooth 4.0. Does anyone have experience/information about this?
Creating a wifi hotspot:
This was my first idea and probably it's the best. But there are several issue:
Some carriers do not allow hotspots
It's not possible to create a hotspot without cell reception on the iPhone and some (I don't know which exactly) android devices.
It's not possible to create a hotspot without cellular data activated on an iPhone; I don't know what about android devices (Nexus 4: no problem, SGS3 mini: cellular data can be switched off after creating the hotspot)
-> that's a problem for those who don't have an internet unlimited plan or for those who don't want to share their internet connection (as this dissipates the high speed volume) but see the next point for that.
In order that everyone can use his own cellular data connection the wifi settings can be manually edited on iOS (remove router, DNS and search domains entries). Is there a way to do so on android as well? Is there way to automize this process?
https://apple.stackexchange.com/questions/173894/can-i-connect-to-wifi-but-still-use-cellular
Is there any way to create a wifi network programmatically (not just enable the normal wifi hotspot)?
SDKs/Frameworks like Open Garden or Alljyon looked promising at the beginning but:
Firechat (which is made by the Open Garden team) promises that iOS and android devices can chat locally without existing network but actually it didn't work for me with an iPhone 6 and SGS3 mini. However they don't want to publish their SDK. The only information I got is that it works over wifi-direct and bluetooth. If anyone has an idea how this could work, please tell me.
Alljoyn does not provide direct communications between iOS and android without an existing network. (Tell me if I'm wrong)
API's:
iOS multipeer connectivity does not support android
I hope anyone can help me.
Regards Nils
If you are talking about a TVBOX device with Android, you will need the ethernet cable connected in order to create a hotspot.
Another option that I have done is:
Create a service that runs on iPhone with an interfaz, do whatever you want on that interfaz, then send what ever you need to a webservice, then in Android, just pull that info from another App as a service, or just store it in an internal sqlite.
Good luck

Communicating with an xbee module using Android 3+ phone

I want to connect my Xbee module to my android phone and communicate with it by sending AT commands.
I do know of the USB host facility provided by Android phones, but I do not know how to send data to it.
I have the java-Xbee API and I am able to talk to the Xbee using my computer but since my project involves using the Android OS, any help on this topic will be appreciated.
According to this Google Code Page, the java-Xbee API requires Java >= 5 and RXTX. Considering those two requirements:-
RXTX on android is not an out of the box lib and may require some hacking which may or may not work.
I'm not a Java VM expert, but i know desktop OS JVMs work differently from Dalvik.How well would Dalvik run code developed for JVM? Here is a nice StackOverflow topic discussing the two.
Faced with the above challanges, are you brave enough to boldly go where no man has gone before?
Could you also consider the following well documented and supported approaches:-
Ytai Ben-Tsvi & Sparkfun's IOIO-OTG
Saves you the headache writing android 3.1+ USB host code and thus allows you to use cheaper phones that run droids 1.5 to 2.3 (without hacking the latter).
Digi's WiFi to Xbee
Allows you to link your android phone (or any other programmable wifi enabled computer) to your device over the internet.

Passing values from an android device to another

Is it possible to pass a value from an android device to another? I mean, without using the Internet. My project will be implemented only on a localhost. The two android devices are only connected through the router. If it is not possible on the local area network how can I do this? Are there other ways? I'll use the Internet or any other options if possible. Links to open source code, if you have any particularly regarding on this topic, would be appreciated too. Thanks!
If your target is Android4.0+ you can use wifi direct as #pgsandstrom stated.
In other cases if you want to make client/server comunication with two android decices you should look at this thread Socket Server/Client with two Android devices and the awser to this question may be usefull to you too How to write an Android SocketServer to listen on wifi.
If you can restrict usage to Android 4.0 or later, then have a look at wi-fi direct. It doesn't use a router thou, so I hope that isn't a restriction. If you need to support older devices, I think you have to go with bluetooth.

Android, VPN, Asterisk communication

I'm trying to write a voip app for Android, using the Android SIP API (Yes, I know this only works with some Androids with version 2.3). I want calls to be routed through an Asterisk server. The calls also need to be encrypted. A problem exists where Asterisk and the Androids need to be on the same subnet (otherwise no audio is exchanged). There is a nice blog post I found at http://blog.harritronics.com/2011/06/android-gingerbread-and-asterisk-pbx.html describing the situation for those that are curious.
I'm looking to setup a VPN solution as discussed in the article as I figure this could solve the NAT issue, along with encryption. My first thought was to use OpenVPN since there is a pretty active community and the software looks pretty nice. However, after further inspection, it seems that I can only have 2 clients active on the VPN server at any given time (for the free version). Each additional client connection is $5. In short, I'm wondering if a scalable free solution exists. I would like to be able to connect somewhere around 100 android phones to this VPN to communicate with Asterisk simultaneously.
Also, I have done no VPN work previously. I'm wondering can I simply use the VPN configuration within the Android Settings? Or does there need to be an additional application? I saw that OpenVPN had a client solution for Android that only worked if the phone was rooted - this is not an option, as they are not my phones. Any advice would be greatly appreciated.
Thank you!
Not sure what you've been looking at, but OpenVPN certainly does not have any restrictions on the number of clients. Anyway, as you have found out, OpenVPN is not supported by the default Android distribution, though it is integrated in CyanogenMod. Android also has a built-in VPN client however, so you just need to find a server that works with that. As of 4.0 (ICS) it is also possible to write your own VPN implementation without rooting the phone.
BTW, the audio problem only arises if the phones are NAT-ed (e.g., connected via WiFi to your internal router, etc.). If the have global addresses, there should be no problem. If you connect over 3G that would depend on whether your carrier gives phones actual global addresses.
Another alternative is not to the Android SIP stack. There are other solutions available, and they might not have this restriction. Check sipdroid, it open source:
http://sipdroid.org/
Yet another alternative is to not try to write your own app, just use sipdroid :)
Besides the nat=yes option of Asterix I only think in one more solution. That nat option worked for me behind a router but I know that it isn't a very "inteligent" NAT traversing from Asterisk, it needs "colaboration" from the client too. The other solution could be... when I was working with that, I was using CSipSimple, it's an open source voip client for Android, may be you can look at the sources and find why that traverses works behind a router doing NAT.
If you're looking just for an Android VPN client, there are some of them, at least one with a 100% free option.
Hope that helps!

Categories

Resources