amsurana
amsurana

Reputation: 234

Access data from SCO Socket

I have 2 Android phones and I have managed to convert one of them as Headset (Yes, I did root the phone for that). When an incoming call is received to the phone, the headset-emulated phone is able to take headset related actions like - pick call, disconnect call, etc. However, only functionality that's missing is the transfer of Audio from Phone to headset-emulated-device.

Does anyone have prior experience in establishing SCO connection between 2 android phones and access voice data ? (As of now, I am not concerned of Sound quality).

I came across A2DP, but it's only uni-directional. Only SCO is bidirectional voice data transfer.

Any help or pointers will be highly appreciated.

Upvotes: 0

Views: 1428

Answers (1)

David C Adams
David C Adams

Reputation: 1973

I have done this with reflection. It only worked on certain devices though. Not all. Although I didn't root the device.

Class cls = Class.forName("android.bluetooth.BluetoothDevice");
Method method = cls.getDeclaredMethod("createScoSocket", (Class[])null);  
BluetoothSocket scoSocket = (BluetoothSocket)method.invoke(device, null);  
scoSocket.connect();

Also there is the AudioManager.startBluetoothSco() and AudioManager.setBluetoothScoOn(true) methods that you have to use when playing your audio.

Upvotes: 1

Related Questions