Подтвердить что ты не робот

Как сделать телефон Android в качестве Bluetooth-гарнитуры?

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

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

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

4b9b3361

Ответ 1

Со стороны 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 имеют wifi сейчас через несколько дней, и вы получаете больше пропускной способности)

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

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

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

Ответ 2

Я не знаю, понял ли я настоящий вопрос или вашу главную цель... но я разместил здесь, как получать и отправлять звук с гарнитуры через bluetooth в Android.

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