AVRCP target role - bluetooth

I'm trying to implement an AVRCP target profile using Bluez 5.23. Essentially I need to be able to modify absolute volume (in a TG role) and receive play/pause events from the controller, an iPhone. I can't find any documentation on how to do this. Does anybody have any pointers?
Thanks,

Related

Create MediaSource from AudioPlaybackConnection

I'm trying to make my windows computer a valid output for bluetooth audio from my phone. Enabling the actual audio was easy enough using the winrt AudioPlaybackConnection, but I'm trying to get metadata working and running into dead ends in the Windows UWP documentation. I'm familiar with the MediaPlayer class, but I can't see how to set the source to the AudioPlaybackConnection. My next thought was to create a MediaPlayer and handle the controls/metadata myself, but I can't see how to access the metadata for the AudioPlaybackConnection either. I tried getting the BluetoothDevice matching the same phone since I see the properties for the actual device list AVRCP Transport and A2DP SNK as two separate hardware "devices" making up the phone device, but I have no more luck accessing metadata with the BluetoothDevice. I know Windows 10 supports Bluetooth's AVRCP and can handle metadata/controls (source), but I'm beginning to think it's under a different device in winrt and I don't have the winrt know-how to track it down.
I've consulted the Bluetooth team about this. But currently, control like this is not supported in Windows at this time. You could submit a feature request about this in the Feedback Hub. Please select Developer Platform->API Feedback as the category when you submit your request. The related team will check the request.

Bluetooth data to HID for BLED112

We have bought BLED112 to interface our target via BT.
An android app interacting with target via BT & USB (HID).
We have used some Bluetooth communication to write a program and send data to dongle.
Now can somebody here having any experince in converting that BT data to a HID signal.
Have anybody tried that?
Is there any BGScript code which we need to write to achieve that?
Please let me know if the thought is completely wrong.
Referring to a comment above which states,
We are writing an Android App which can send data to BLED112 over BLE interface or GATT. My question is how can I convert that data (basically a command) to an HID (key event), correct me if my understanding is wrong?
If I understand the use-case correctly, I think, in the initial stages of the development, you will need to use the BLE-GUI utility that BlueGiga provides.
With that utility you can see the communication between the BLED112 Dongle and the BLE112 Module. BLED112 shall be simulating what the android app would do?
First, you will need to know the GATT structure stored in BLED112 to write to or read from the BLED112.
Secondly, the way BLE112 works is an event-based implementation. Going through the API reference document for BLE112 shall help you understand the events generation conditions and codes that are generated modified when a characteristic value is updated by the android application, or read by android application. You get events for connection, disconnection, read from, write to, notification enabled for, indication enabled for, etc.
On the BLE112 side, depending upon what service and what characteristics in that service is going to be used for data transfer between Client (Android App) and Server (BLE112), you need to write suitable implementation in event callback handlers.
There is a standard service called Human Interface Device which has a reserved UUID: 0x1812.
Once you configure your BLE112 as a HID over GATT device, your android app shall see a service with UUID: 0x1812. Parse the service descriptor and get the characteristics bundled up into the service. You can read from or write to that service depending upon access parameters set in gatt.xml
As an example, say, if it is a Keyboard, you can send the scancode for (make and break) of the key depending upon what key is pressed. How to get a scancode is out of the scope of this question anyway, and sadly I had worked on PS2 keyboards, so I don't really know how to get the scancode from a USB keyboard.
So, you have the scancode for the key pressed, and you know the characteristics to write that into. Write it, the application should enable the Notifications for that characteristics, so that it is notified whenever the key is pressed and value is written into the characteristics. To let application enable notifications or indications for the characteristics, study the developer guide that talks about how to write a gatt.xml for Bluegiga-based BLE devices. I'll give you a hint: in xml, in the characteristics configuration you have to write notify="true".
About parsing of the service and characteristics in Android, Unfortunately I am not an android developer, but an embedded developer, I know how the BLE112 module part is to be implemented, while I have no insight of how android parses the data. But, there are plenty of question and discussions about it online, which you might understand better than me since you have an android background.

Connecting External Accessories Bluetooth devices without user interaction

According to EAAccessoryManager Class Reference from iOS 6 onward using showBluetoothAccessoryPickerWithNameFilter we can show a Accessory picker that will help user to connect External Accessories with that include an iAP over Bluetooth unique ID.
Now We want to connect programmatically one of the external accessory from that list.
We require your support on following.
How can we connect Programmatically any of our External devices that are in the range of phone?.
How can we connect programmatically any of our external device without user interaction?
How can we get programmatically a list of external devices that are in the range of user's phone?
How can we get a list of EAAccessory Objects of our external devices that are in the range but not connected ?
Can we store EAAccessory Object in NSUserDefaults? If yes, how can we do that? As EAAccessory EAAccessory does not implements the encodeWithCoder and initWithCoder methods, so it does not allow to store it into NSUserDefaults.
Using BTLE we can solve this, but we want solution in BT Classic.
You can't programmatically connect to a Bluetooth 3.x device ­– iOS has no API for that. If your Bluetooth 3.x is MfI-compliant, then ­– in theory ­– you can show the ExternalAccessoryBluetoothPicker which would allow you to pair on user interaction within your app ­– circumventing the need to open the settings app.
Alas this is broken since iOS 13 for most apps. It broke when Apple introduced the new Scene-based lifecycle. Roll back to the classic one and it starts working again. More details here: https://stackoverflow.com/a/70823487/415982

Is there any API avialable in j2me through which we can access the sensor "accelerometer"?

I want to make a game based on the sensor accelerator. Is there any API available in j2me through which we can access the accelerator sensor. or is there any other idea regarding the same ?
Yes, there's such API - called JSR-256. Try to Google and you'll find appropriate resources.

How can I know what bluetooth stacks are installed in my cellphone and how to they works?

I want to send almost 4k size data to any cellphone by using bluetooth.
Firstly to do this, I need to find what stacks are in my phone and what stacks are acting when I send a data.
I really struggle to find the way; however, it is really hard.
If you know how to find it, please give me some information!!
See http://32feet.NET if you are talking about Windows Mobile. It is a managed library for Bluetooth, OBEX, and IrDA. We support both the Microsoft stack, but also have support for Widcomm. And now also Bluesoleil and Stonestreet One Bluetopia.
You can either send and receive the data as an OBEX message, or over a simple bluetooth connection. See a copy of the user's guide at http://www.alanjmcf.me.uk/comms/bluetooth/32feet.NET%20—%20User’s%20Guide.html
Goto "https://www.bluetooth.org/tpg/listings.cfm" type the name of your mobile. This will give you information on the Bluetooth stack inside and the profiles supported.

Resources