MediaRecorder и UDP (DatagramSocket) в Android - PullRequest
5 голосов
/ 14 ноября 2010

В настоящее время я пишу программу, которая является своего рода VoIP-клиентом.Я пытаюсь установить соединение между двумя клиентами и отправлять и получать данные, записанные с микрофона.

В настоящее время я использую файлы, но это выглядит как ужасная реализация:

Записывающее устройство запускаетсязапись во временный файл.Включается таймер, останавливает рекордер, просматривает размер файла, а затем отправляет содержимое с помощью DatagramPacket.

Это выглядит ужасно плохо.Интересно, есть ли у классов MediaRecorder и MediaPlayer способ получения сокета UPD в качестве файлового вывода и ввода соответственно (то есть DatagramSocket)?TCP.Я хотел использовать UDP, поэтому я предполагаю, что DatagramSocket, но я не могу найти способ использовать его в своем классе MediaRecorder и MediaPlayer.

У кого-нибудь есть хорошее решение для этого?

Большое спасибо

Ответы [ 2 ]

3 голосов
/ 26 января 2012

Возможно, вы заинтересованы в ParcelFileDescriptor, а затем, в частности, в функции fromDatagramSocket (...) , тогда вы можете использовать функцию getFileDescriptor для установки источника данных проигрывателя

*обновление: это работает, конечно, если у вас есть Android 4.0 или выше: см. предел API

0 голосов
/ 23 декабря 2010

All,

Один из способов сделать это - реализовать второй поток, который устанавливает LocalServerSocket в абстрактном пространстве (именованный сокет UNIX)В первом потоке вы создаете LocalSocket, который подключается к LocalServerSocket.После этого шага вы можете получить FileDescriptor LocalSocket в первом потоке и установить его как OutputFile для MediaRecorder.Во втором потоке вы просто читаете с очищенного LocalSocket, а затем записываете в свой DatagramSocket.Ez Pz.

Удачи, B-Rad

...