Ответ 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 цента; Я очень хочу знать, работает ли это.;)