Dal lato Android, credo che la soluzione migliore è quella di aprire la connessione al servizio nel computer:
URL url = new URL("http://192.186.0.1/path/to/service");
URLConnection connection = url.openConnection();
garantita come un OutputStream:
OutputStream out = new BufferedStream(connection.getOutputStream());
e poi utilizzare un AudioRecord
per inviare i dati registrati:
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);
}
Tutto ciò dovrebbe essere fatto su un thread separato, ovviamente per evitare crash dell'applicazione e un meccanismo da gestire quando la registrazione si interrompe o la connessione viene persa. Inoltre, sono abbastanza sicuro che dovrebbe funzionare su wifi, anche se non sono sicuro se sarà lo stesso con bluetooth (anche se la maggior parte dei dispositivi con BT ha ora un Wi-Fi a giorni e si ottiene più larghezza di banda)
Non ho testato questo codice quindi non sono sicuro al 100% che funzioni.
La prossima cosa sarà sulla macchina per trasferire l'audio nell'app dei desideri, ma questo è al di sopra della mia esperienza. Immagino che dovrai fare un autista virtuale o qualcosa del genere. Dovrà anche fare il meccanismo inverso per l'audio inviato dall'app desktop al telefono (sono piuttosto interessato a quella parte dato che farebbe una bella cuffia wireless per guardare anche i film).
Ecco i miei 2 centesimi; Sono desideroso di sapere se funziona. ;)
Voglio volere una funzionalità simile. Desidero effettuare chiamate dal PC per inviare l'audio (VOICE_DOWNLINK) al PC come altoparlante. ma tieni il microfono al telefono – Mark
Questa non è una richiesta banale; in bluez a un minimo necessario a) aggiungere il ruolo di mani libere ai record SDP. b) Rimuovere il gateway audio dal record SDP. c) Cambiare la classe del dispositivo del telefono per simulare un auricolare. Questo è solo per connettersi sopra il profilo a mani libere. Per quanto riguarda l'invio dell'audio, ecc., Questa è un'altra sfida. Non sono sicuro che bluedroid abbia anche il supporto per questo, potrebbe essere necessario un kernel personalizzato. – TwinPrimesAreEz