Как сделать телефон Android в качестве гарнитуры Bluetooth? - PullRequest
21 голосов
/ 02 июля 2010

Да, я знаю, что Android уже внедрил профиль Bluetooth-гарнитуры, но он находится в роли Audio Gateway, а не в роли HeadSet.

Я хочу разработать приложение на телефоне Android, которое будет работатькак гарнитура Bluetooth, так что он может подключиться к моему ноутбуку по Bluetooth.Когда я пытаюсь позвонить кому-либо, я могу набрать его с помощью телефона, и мое приложение перенаправит голос через Bluetooth на мой ноутбук, а еще одно приложение, работающее на ноутбуке, получит голосовые данные и перенаправит их в Skype, GTalk или какой-либо другой.VoIP программа еще.

Другими словами, как я могу реализовать профиль гарнитуры в роли гарнитуры на телефоне Android?Заранее спасибо!

Ответы [ 2 ]

4 голосов
/ 30 сентября 2011

Со стороны Android, я думаю, лучшее решение - открыть соединение со службой на вашем компьютере:

URL url = new URL("http://192.186.0.1/path/to/service");
URLConnection connection = url.openConnection();

Получить как OutputStream:

OutputStream out = new BufferedStream(connection.getOutputStream());

изатем используйте AudioRecord для отправки записанных данных:

public static final int DEFAULT_SAMPLE_RATE = 8000; 
private static final int DEFAULT_BUFFER_SIZE = 4096; 
private static final int CALLBACK_PERIOD = 4000;

AudioRecord recorder = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, 
            DEFAULT_SAMPLE_RATE, AudioFormat.CHANNEL_CONFIGURATION_DEFAULT, 
            AudioFormat.ENCODING_DEFAULT, DEFAULT_BUFFER_SIZE);
recorder.setPositionNotificationPeriod(CALLBACK_PERIOD);

int bytesRead = 0;
ByteBuffer buffer = ByteBuffer.allocateDirect(DEFAULT_BUFFER_SIZE);
while ((bytesRead = recorder.read(buffer, DEFAULT_BUFFER_SIZE)) > 0) {
    out.write(buffer.array(), 0, bytesRead);
}

Конечно, все это должно быть сделано в отдельном потоке, чтобы избежать сбоя приложения и механизма обработки, когда запись останавливается или соединениепотерян.Кроме того, я почти уверен, что он должен работать через Wi-Fi, хотя я не уверен, будет ли он таким же с Bluetooth (хотя большинство устройств с BT имеют Wi-Fi уже несколько дней, и вы получаете большую пропускную способность)

У меня естьне проверял этот код, поэтому я не уверен на 100%, что он будет работать.

Следующая вещь будет на машине для передачи аудио в приложение желаний, но это выше моего опыта.Я полагаю, вам придется сделать виртуальный драйвер или что-то в этом роде.Также нужно будет сделать обратный механизм для звука, передаваемого из настольного приложения в телефон (я довольно заинтересован в этой части, поскольку хотел бы также создать хорошую беспроводную гарнитуру для просмотра фильмов).

Вотмои 2 цента;Я хочу знать, если это работает.;)

1 голос
/ 01 июня 2013

Не знаю, понял ли я реальный вопрос или вашу главную цель ... но я выложил здесь как получать и отправлять звук с гарнитуры через Bluetooth в Android.

Я надеюсь помочь вам ...

...