2014-02-14 3 views
0

У меня есть 2 телефона для Android, и мне удалось преобразовать один из них в качестве гарнитуры (да, я действительно использовал для этого телефон). При поступлении входящего вызова на телефон эмулируемый гарнитурой телефон способен принимать связанные с гарнитурой действия, такие как: вызов выбора, отключение вызова и т. Д. Однако только отсутствующая функция не является передачей аудио с телефона на эмулируемый гарнитурой -device.Доступ к данным от SCO Socket

У кого-нибудь есть опыт в установлении соединения SCO между 2 телефонами Android и доступа к голосовым данным? (На данный момент меня не интересует качество звука).

Я столкнулся с A2DP, но это только однонаправленный. Только SCO представляет собой двунаправленную передачу голосовых данных.

Любая помощь или указатели будут высоко оценены.

ответ

1

Я сделал это с отражением. Однако он работал только на некоторых устройствах. Не все. Хотя я не использовал устройство.

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

Также есть AudioManager.startBluetoothSco() и AudioManager.setBluetoothScoOn (правда) методы, которые вы должны использовать при воспроизведении аудио.

+0

Спасибо за ответ. Я пробовал этот механизм. Но открытие SCO-разъема и маршрутизация звука не помогли мне. Скажите, пожалуйста, какие устройства с вами работали? Я использую Galaxy Nexus 3 (работает 4.1.1, так как у него старый стек BT). – amsurana

+0

Работал для меня на Nexus 7, но не на Nexus 4 или Samsung Galaxy 2. Поэтому я думаю, что это может случиться, что по телефону он не работает. Я не знаю. –

+0

Это может не сработать для моего варианта использования. Теперь я смотрю на реализацию ScoSocket в GingerBread. Однако этот класс был удален в будущих выпусках. Спасибо за помощь. – amsurana

Смежные вопросы