Android how to get original data from bluetooth hid device? - android

I want to get the data from hid BlueTooth device (as a mouse), app get this data directly. I have search many document, it seems I can't get the original data except the phone is rooted, I want to know if there is a good solution that I can use. Thanks

Most likely there is no good solution for this case. Mouse and keyboard are used as input devices by Android itself.

Related

Making a keyboard app on one android phone to act as a Bluetooth keyboard for another android phone

I have developed a keyboard for android but I want to add a functionality through which it can act as a remote keyboard device for another android phone, is this possible? Can someone post some information regarding the same?
This question is very similar to this one. I am pasting the same text as i answered there.
I think what you need to do is not worry about the input-method in the first device, but create an application where you input text as normal from what ever you are using for input on the android device and then make that application responsible to transfer the acquired text to another device in which you want to input, in real time.
Given the restrictions on the IME in android, the other device should have the modified input-method that receives the data and enters for you in turn.
You have to be very careful for this kind of data transfer because the IME in android is essentially capable of monitoring anything the user enters, so the data transfer should be really really secure.

Simulate USB/Bluetooth HID device locally in order to inject events?

Is it possible to simulate a USB or Bluetooth device connected to Android?
I would like to make an app which is able to simulate an HID device locally. What I mean by this is: the app should make Android believe that an USB/Bluetooth HID device is connected. This would allow my app to inject touch events globally, I hope. Is there anyway to simulate a (virtual) device? Note that I don't really care about the device, I just want to use the built-in support for HID input.
I know a lot of people already asked about touch event injections but this approach seems to be a little bit different. I do not want to use this for testing purpose, so InstrumentationTestCase and the like won't help.
Rooting the device might be an option, although I can also imagine to ask my endusers to install a specifically signed app manually (according to https://stackoverflow.com/a/16737083/2923406 and https://stackoverflow.com/a/22902808/2923406 this works, but it would be device specific).
I am aware of:
Simulate a mouse input on android - This guy seems to do it in his own app, although his questions wasn't answered ;)
http://www.pocketmagic.net/2013/01/programmatically-injecting-events-on-android-part-2/#.U58SqfldVHV - Needs Root. Did anyone succeeded in using this? Also, the solution seems very device-specific again.
Bluetooth + simulating mouse - That's not what I want. The phone itself should not be an HID device, but use the (virtually created) one itself. Same for this:
https://stackoverflow.com/a/8174973/2923406
Note that I do not want to turn my phone into an HID device of any kind.
Simulating is a broad term. When I created my Bluetooth app I "simulated" a Bluetooth connection in two ways.
Way 1: Use a serial port UART converter and hook it up to a Bluetooth module transmitter.
Then you can use a terminal program like CoolTerm, to send your data.
Like so. In this case I coded in a string to send on successful connection with the device however you can make a infinite loop for testing purposes effectively not requiring your phone to be turned into a HID device.
Way 2 (not easy): Use your computers bluetooth in a server/client relashionship model.
This is harder to do. What you can do is convert your pc/mac into a server and the Android phone into a client or vice-versa. For this you will need to write external code which will need to be compiled separately on a jvm(java virtual machine). The procedure to do this can be found here. If you are using a Linux machine you have to separately download the Bluez module. I have not tried this on any other operating sytem other than Ubuntu, and it was a pain to get functional.
Hopefully that helped.
Yes, it's quite easy using the AOA2 protocol check this & this links for details ( you'll need to switch your device to the Accessory mode )
This may be possible (or at least be easier) using the Robolectric library, which simulates a full Android device locally. Although it is intended primarily for testing, the fact that it simulates a whole device locally - including Bluetooth and USB - means adding to it may be an easier approach.
In other words, you may be able to modify the classes it uses to simulate these abilities locally (i.e. in the IDE itself without an emulator or device) in order to simulate them on the device itself. After all, it does provide full simulations of these functions. You could simply change these Bluetooth and USB simulating classes to load onto the device itself rather than onto the local Robolectric test "device."
This is just an idea though - I can't confirm this will work - it just might be a good place for you to start.

Android Read USB Gamepad

I'm trying to read buttons pressed on a twin USB gamepad in android.
I tried all the methods available in USB package of android including bulkTransfer, controlTransfer, requestWait. but all of them always returns the same thing while pressing the buttons. I even can't get the real name of the device.
I installed USB\BT JoyCenter and it detects the key pressed and also show the name of the gamepad connected. I really can't figure out how to read the gamepad and android documentation doesn't fully cover how to do this.
I found out where the problem is. Actually I print out the byte array directly. I think java print byte memory location instead of it's content. I used a bytes to hex converter and it works fine now.
The first thing you might want to do is plug the device into a linux box and type lsusb. You need to find out what USB Classes are supported by the USB device. Post your answer here for others to see.
Then you need to determine if Android actually supports this class directly. If it does then things should be relatively easy (so read the manual). If not, you may need to use libusb or similar to do the actual low-level interactions. This would not be an easy path, but if the USB class is supported by libusb you can get there.
Once you know the class you are working with, you may find from the standard docos that you need to turn something "on" before it will start sending the data that you are interested in.

App Idea Force Contact Pull Android

I have an idea for an but I am not sure if it's even possible. I ran into an issue the other day where a phones touch screen was barley working and I needed to get the contacts off of it. I have a cellbrite machine but anyone who has ever used one knows how finicky they can be.
I would love to develop an android app that will connect to any phone via bluetooth and force pull all the contact from it, this would be handy if you have a troublesome screen. My question is this even possible based on the different phone types, and the different level of bluetooth protocols supported on the phones. If anyone has any ideas on how this might be accomplished hat would be great.
Any app with the necessary permission can read a phone's contacts and send them over Bluetooth (or Wi-Fi).
I think the main problem would be that people don't think to install your app until they need it. Then, you can't install your app onto their broken phone unless the phone has a network connection, and if they have a network connection then there isn't really any need to use Bluetooth in the first place.
Actually, one of the basic ideas of Android is that everything on your phone is sync'ed - so you don't have to worry if your phone gets crushed.

Bluetooth trackball and screen mirroring

I've very interested in a new project, but it requires the user be able to access the phone's display via a wireless trackpad and screen. I'm thinking bluetooth is the best way to go. I can find a few resources regarding the bluetooth classes, but I can't find any resources for mirroring the phone's display or manipulating the ui with a trackball using blue tooth.
Are these two things possible? Could someone give me some information or point me towards some resources?
So you want to remotely control your Android Device with a Trackpad using Bluetooth for the connection? Do you need this for the whole Android System or just for your App?
If just for your App, their should be a way of doing this since communication between two Bluetooth-Devices runs over Sockets (like Client-Server communication). See the Androids Bluetooth API. But I'm also not sure how you plan to make the Android Device understand the Bluetooth-Commands which the Trackpad is sending to it (if you can even get both of them to connect to each other).
If you need it for the whole System, I'm not sure if this is possible (without rooting the phone and maybe writing some drivers for it), as I don't know any way of emulating a touch/click on the screen (which is basically what you want).
Although I know that there are some experiments running to connect a Bluetooth-Keyboard with an Android Device. But their is nothing official yet and nothing to look into (like SourceCode) as far as I can tell.
But maybe I'm looking at this a lot too complicated...

Categories

Resources