studio programacion herramientas fundamentos con avanzado aplicaciones android sockets multimedia

programacion - audio de secuencia de Android a servidor



manual de android en pdf (1)

Parece que está bien, pero yo personalmente preferiría almacenar el audio en el dispositivo y enviarlo al servidor desde otro hilo en lugar de atar la grabadora al zócalo directamente como lo hizo. Debido a que el almacenamiento en búfer localmente le permitirá manejar los saltos de conexión con gracia.

Imagine que está grabando y el usuario pasa por un túnel y pierde la conexión a Internet: si está transmitiendo directamente, el socket se cerraría y el usuario se enojaría :-) Sin embargo, si está almacenando los datos localmente, puede restablecer la conexión y continuar enviando el audio al servidor desde donde lo dejaste, y ojalá el usuario ni siquiera tenga que saber que un corte en la conexión simplemente sucedió, porque simplemente funciona mágicamente.

Para que esto funcione, tendría que escribir la grabación en un búfer local y tener una verificación de hilo separada para nuevos datos en ese búfer y enviarlo al servidor lo antes posible.

Me gustaría entender cómo funciona el socket, especialmente necesito algunas muestras de código para el servidor para recibir la transmisión enviada por mediarecorder desde el dispositivo.

Muchas gracias por cualquier ayuda.

Mi verdadero propósito final es hablar en el dispositivo y escucharlo en la PC, solo una dirección.

Por el momento, puedo enviar la transmisión usando el siguiente código:

String hostname = "192.168.1.10"; int port = 8000; Socket socket = null; try { socket = new Socket(InetAddress.getByName(hostname), port); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket); recorder = new MediaRecorder(); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); recorder.setOutputFile(pfd.getFileDescriptor()); try { recorder.prepare(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } recorder.start();