My company is looking at developing a mobile(Tablet) app that will need to connect to various sensors made by others using Bluetooth. These other companies have their own apps to connect with their individual sensors.
I need my app to be able to connect to their hardware (sensors).
Working with each manufacturer... What is the best way for their development teams to offer what I need without giving away all their code? In almost all cases their current sensor and app provide many more features than what we need.
Is there some middle ground where we ask only for the portions of code to perform the couple of functions we need?
Should they even be concerned about sharing their Bluetooth App code when they are the manufacturer of the sensor itself? Our app is only used to talk to their device which still needs to be purchased from them.
It's going to depend on their business model. Just ask. If they are willing to open up their peripheral, they will provide you with the API. Some might charge you for the "SDK".
You may be able to become a vendor and sign some contracts to ensure that they will continue providing the peripherals and support for them to some degree.
If they say no, it's generally not a good idea to reverse engineer it outside of hobby work. If they change their API, you'll have to change the app, and maybe they'll change it just to make your app stop working.
They can't really limit what devices can connect to it, but knowing how to communicate with the peripheral and having any credentials that it might ask for, is a different matter.
Related
The covid-19 app is capable of detecting who came into contact with who, how do they do it? I am trying to make something similar but I am unsure how they managed to get that information from the phones. I don't need the information to be private (like phone number), it could be something that only the government can make use of (like sim card number or MAC address. Is that possible?
I looked into Google Nearby and Wifi Direct... But as far as I understand it, it requires a handshake (covid19 app doesn't). I also looked into potentially making your phone into a hotspot and capturing wifi requests but I am not sure which library / API lets me do that.
Does anyone have know how this is done? I can't find a concrete answer anywhere, this seems to be actually impossible until I realized that the covid-19 app is doing it.
As Morrison Chang and ArtHare have commented already, Google and Apple have implemented this on an OS level:
In the coming months, Apple and Google will work to enable a broader Bluetooth-based contact tracing platform by building this functionality into the underlying platforms. (source)
If you want the specs they're using, Apple and Google have pages on how contact tracing is implemented, but it would be hard (if not impossible) for an app to implement this.
I am planning a social app that needs a functionality to detect when two people are really close to each other, and preferably something that would be hard to cheat. I know I could use GPS but since there are GPS spoofing apps and the accuracy is not as narrow as I would need (for instance, two people on the same building but many floors apart should yield negative) I wanted to see if I could do it through WiFi or Bluetooth.
Is it possible to have two Android devices detect each other on the same wifi network from an app? No other information besides their presence is necessary.
I know Bluetooth can easily be done if the devices agree on the connection everytime. But I needed automatic detection, meaning the devices would accept the connection only once, and everytime they get close to each other the detection would be automatic without asking for permissions, and without requiring one of them to perform any actions to scan for bluetooth devices. I assume this is not possible for privacy reasons, right? Although no exchange of data is necessary, just the presence.
If anyone has any suggestions of other ways to achieve this, feel free to suggest. I don't need details about the code, just to know what is possible and what isn't and what do I need to look into (for instance libraries or components from the sdk).
I know detecting devices unconditionally is very unlikely to exist, for obvious reasons, but what I am looking for should go through an initial "handshake" or permission between the two devices, in order to enable the detection to happen (over a limited time window of maybe a couple of days), so I guess it may be possible, although I couldn't find anything.
Out of curiosity... has anyone ever been able to integrate AirDrop functionality into an Android app?
I really don't care about receiving any information on the Android side, but am hoping I can send information to the iOS side from Android. I'm hoping to find someone with a more in-depth understanding of how it works and if it is physically possible. Also, any direction on whether Apple has proprietary use over the protocol (or if it is just the name and branding) would be awesome!
Trying to build a cross-platform app and getting pretty close, but this would just extremely convenient if it works out :)
Currently, it is not possible as AirDrop uses Bluetooth to create a peer-to-peer Wi-Fi network between the devices. Each device creates a firewall around the connection and files are sent encrypted, which actually makes it safer than transferring via email. AirDrop will automatically detect nearby supported devices, and the devices only need to be close enough to establish a good Wi-Fi connection, making it possible to share files across several rooms.
Some Android devices use a combination of Near Field Communications (NFC) and Bluetooth to share files. But both Bluetooth and NFC are relatively slow compared Wi-Fi, which makes sharing larger files using AirDrop much faster and more convenient.
Regarding protocol, I don't think Apple has made it public and as far as I know Apple they must have patented it. Since AirDrop uses Bluetooth as well, and Android and iPhone Bluetooth are not compatible. Hence, due to all these reasons, we did not see any Android app that can send data via AirDrop.
I am currently trying to develop a mobile application for both iOS and Android. It basically will be a game buzzer app, determining which of the players is granted a right to answer a specific questions.
The problem is that I struggle to determine which technology / framework I should use for that. Now, some details:
In this app there will be a "base" - it is the phone that gives
"start" signal for all the other players. Each buzzer pressed before this signal corresponds to a false start. Eventually, information
about which player is granted a right to answer or is penalized due
to false start should be displayed on the base device.
App is done for people who have no access to the internet. All the
communication should exists given ONLY mobile phones with no data
plan.
Max number of communicating devices is 9 (1 base and 8 players)
I investigated a lot of resources and this is what I discovered:
Regular WLAN with TCP sockets and etc won't help, since it assumes that all devices are connected to same wireless access point - it violates my requirements.
Regular bluetooth won't help either. This would work across a specific platform, but making Android talk to iOS is impossible.
Situation with Wi-Fi direct is same as with regular bluetooth. Both platforms support this, but Apple's MultipeerConnectivity framework works only with iOS devices.
Now the last option I am left with is BLE. Both platforms support this and are able to intercommunicate (acting both as central or peripheral devices). However, due to my requirements for an app, I assume that base device should act as peripheral, and according to (sometimes conflicting) articles on Internet, one can't connect several central devices to single peripheral.
Now, my questions:
I still assume I might have done some mistakes in the bullet points above, so please, correct me if I am somewhere wrong.
Now when I am left only with BLE option, are there any possible solutions to the above issue? Maybe it is possible to use all devices as centrals (?). I recently saw this example, where everything works cool. Sorry in advance, if I said something stupid.
Of course, there is a counterexample - FireChat, which employs OpenGarden's MeshKit. But the framework is not available. I tried communicating OpenGarden people, but no response. Does anyone know if it is planned to go opensource soon, or maybe there exists any analog of this?
Try the Hype SDK by Hype Labs. It's a multi-transport, multi-hop mesh SDK. It supports interoperable Bluetooth Low Energy (and other transports as well). The SDK is currently in private beta but will be made available upon approval of the subscription.
I haven't seen this capability with any android app, nor have I seen anyone ask it. Is there any way that the Bluetooth or something can be used within your app to see a list of all the other android devices around you? For example, if my friend is using my app and he is in the same room I can see his device on a list in my app, and he can see mine...
There would have to be something that ties to two devices together, for example being on the same Wifi. As it is there is nothing that broadcasts to other devices that you are there by default. Even Bluetooth requires you to turn on discovery mode, or discoverable mode, and even then it will only stay on for a few minutes. If you wish for two devices to tie together, I am almost sure you could use the Bluetooth, but you would have to go through the normal process of discovery, synchronization, and permissions.
I don't think you can use BT to see what OS any phones around you are using, and they would also have to be set to discoverable.
If you want to make an app, it's possible to construct one where people agree to be located, but that's a voluntary issue, and it would be based on GPS radios in the various phones. I'm working on an app right now that has this capability, but again, it's something people sign up for so they can be located specifically for this purpose.
I would explore using the Google Latitude API as a possible avenue of exploration, before you reinvent the wheel creating a similar service.