I'm working on an android application using my phone's bluetooth and a bluetooth board that has an RS232 interface and supports the RFCOMM profile.
I have the RFCOMM connection working fine, but I cannot find a way through the android API to access the RTS and CTS signals, which are part of the RFCOMM profile and also exposed on my BT board.
Can anyone tell me how to read/write RTS/CTS from an android device?
A similar question was asked here:
Bluetooth control signals (DTR, DSR, RTS, CTS) on Android
but never answered.
This isn't a complete answer and will not be suitable for most applications, however you can do it using the native C library for Bluedroid from Android 4.2 onwards or BlueZ before that.
The following file: https://android.googlesource.com/platform/external/bluetooth/bluedroid/+/master/stack/rfcomm/port_api.c contains a function called PORT_Control which should set the line status for you and PORT_GetModemStatus will return the line statuses.
There is another question covering the use of the Bluedroid native library here: Android NDK accessing native bluetooth functions bluedroid.
Related
I want to implement Bluetooth HID device role in An android based system.It has KitKat in it.. By default Android Kitkat has support for HID Host role... But I am unable to get an idea about how to implement the device role..
I have seen this video link
http://hsc.com/Blog/Android-Labs-Bluetooth-HID-device-implementation-your-phone-as-a-mouse-voice-control
here they said that they had changed a little in framework and classic Bluetooth application ...they had also used one flag....
I am new to Android environment. Can anyone help me...???
You have to change Bluetooth stack and build a customized ROM. The work is not simple.
Does anyone know the best way to detect Bluetooth LE advertisements on a Android device? I need to only retrieve the service UUID and RSSI value from the advertisement packet, I don't need to connect with the device--If this makes a difference. Do I need to use one of the vendor specific Bluetooth API's like Broadcom for a device that contains a Broadcom bluetooth module?
As of Android version 4.2, the Broadcom stack has been integrated into Android and will work out of the box. Prior to that you needed to run another stack to give BLE access, as stock Android had no APIs.
As of SDK 18 Android now has APIs for this. However, in my testing they do not work properly on the Nexus 4 with 4.3.
See documentation here:
http://developer.android.com/guide/topics/connectivity/bluetooth-le.html
This question already has answers here:
Is it possible, in principle, for an Android device to interface with an iPhone over Bluetooth/GameKit?
(7 answers)
Closed 9 years ago.
First of all I am an Android developer, so the question goes to all the iOS developers.
Is it possible to achieve an Android <-> iPhone/iPad direct communication?
Some claim it is not possible, others claim it is.
I guess two possible technologies would be Bluetooth and/or Wi-Fi Direct.
Wi-Fi Direct is not recommended because it is not supported by Gingerbread and as far as I know, it is not supported by iPhone either (maybe iPhone 6, as I have heard from rumors)
It is already known that Bluetooth communication is achieved between iOS devices using GameKit and here is a reference.
I don't understand what is so special when communicating with GameKit??
Are the messages wrapped in some way with extra bytes at the beginning and ending of the message? Fine, we can wrap the messages the same way in Android!
Are the messages encrypted?!! And if so, could we decrypt them when they are received in an Android device?
Any ideas, workarounds, or other hackerish solutions are mostly welcome!
There are three frameworks available in iOS using which you can develop the bluetooth applications:
1. GameKit: This is the publicly available framework . But using this you can only establish and communicate between only two iOS device. So this framework having its own limitations .
2. BluetoothManager: This is private framework .I used this framework to discover the non iOS devices . I have established the connection also . But cant able to do the data exchange. I think it is still under development. For the reference you can refer this link
3. CoreBluetooth: This is also the public framework. This can only discover BLE enabled devices . I have successfully used this to transfer the data between the BLE enabled devices.
iOS does not implement any standard Bluetooth protocols that would allow it to communicate with other OS'es. GameKit is proprietary and if it were easy to hack it then people would have already done so (and Apple would have closed the hole).
Bluetooth LE is only supported by few Android devices (it is not in AOSP yet) so it is not really useful yet, even if it did support peer-to-peer.
I've read that it is possible to do what you are after via Wi-Fi direct, e.g. with this library:
https://www.alljoyn.org/
It says that it supports both Android & iOS - I haven't tried it myself, but it appears to do what you are after.
For devices on the same local network, Bonjour (a.k.a. zeroconf) can be a good way for processes on different machines/devices to discover and interact with each other.
See apple bonjour for android for some pointers to an Android implementation of Bonjour.
I am new to embedded programming and I am given a project to establish Bluetooth communication between an Android tablet and an ARM development board with Bluetooth capabilities.
Please tell me whether this project can be done or not ??
If it can be done then how should I approach it ??
Thanks
Check out this page: http://www.amarino-toolkit.net/
They are using the arduino board with a bluetooth component to connect to android. You can check the source code of their library to see how they establish and use the connection here:
http://code.google.com/p/amarino/
If what you want is a simple and robust communication method over Bluetooth then SPP is definitely the way to go.
The only issue could be the bandwidth, but if the throughput of a traditional serial cable connection is enough for your application then there certainly won't be any problems there. IIRC then most modules have > 1 Mbit throughput using SPP.
Some information about using SPP on Android is here.
But we need a little bit more information to give suggestions about what you need to do on your ARM kit. Maybe you could post a few details about its type, which Bluetooth module is in use there, how it is connected to the ARM MCU etc.
If you're lucky then your kit's BT module can function as a serial cable replacement and you can treat it as if the Android device is connected to your MCU's UART. Of course prior to that, some configuration is needed over some interface (could be the same UART, depending on module type) to establish a Bluetooth connection.
Oh and to answer your first question: yes, it certainly can be done :)
I haven't worked with Android to ARM board via bluetooth but I have done some work communicating between an Android device and an Arduino using bluetooth. I tried to document what I learned in a series of examples. There are several that might be helpful.
http://digitalhacksblog.blogspot.com/2012/05/arduino-to-android-basic-bluetooth.html
http://digitalhacksblog.blogspot.com/2012/05/arduino-to-android-turning-led-on-and.html
http://digitalhacksblog.blogspot.com/2012/05/android-example-bluetooth-simple-spp.html
The first two examples show how to setup communication via bluetooth from an Android device to an Arduino with a bluetooth board. I would expect that to get some initial connectivity between the Android and the ARM the Android side of things would be the same.
The third example shows how to setup a simple spp client and server between an Android device and a PC running windows.
Hope this helps.
For some requirement analysis I want to test a RFCOMM based bluetooth communication between two android devices.
I need to send some 1 MB of data to from Android device 1 and Android device 2 should receive it and display/save the data. I need to do this using Bluetooth SPP (RFCOMM) profile .
Can any one suggest some available app/code to do this?
Under the bluetooth documentation for Android Developers. There is the Bluetooth Chat application example which will contain an activity for facilitating the communication between two devices, as well as the service connection. This will be your best example for what you are looking to do. Here is the link to the Tutorial, you will also find a link to the BluetoothChat application under here:
http://developer.android.com/guide/topics/connectivity/bluetooth.html
To see the BluetoothChat application you will first need the Android SDKs, and then you will be able to find the source.
Generally, do some research first, as here is another question of the same sort that has a little more detail, and shows the user made a good attempt first.
Bluetooth Examples for Android
After following the BluetoothChat application, or the written tutorial on the Android Docs, if you run into bluetooth errors, and other problems with your code. Stack Overflow is definitely the way to go for receiving quality answers to your troubles!