Audio de la corriente del androide al servidor
Me gustaría entender cómo el trabajo de socket, sobre todo necesito algunos ejemplos de código para el lado del servidor para recibir la corriente enviada por mediarecorder desde el dispositivo.
Muchas gracias por cualquier ayuda.
- Androide, socket, programación, atrás, router
- Aplicación de chat: qué tecnología es mejor para implementar aplicación de chat en Android
- ¿Hay algún mecanismo de devolución de llamada en android cuando hay datos disponibles para leer en socket
- ¿Cómo puedo cerrar BluetoothSocket en la rotación de la pantalla en Android?
- Segunda AsyncTask no se ejecuta
Mi intención final real es hablar en el dispositivo y escucharlo en la PC, sólo una dirección.
En este momento puedo enviar el flujo con 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();
- Socket Connection Timeout en el teléfono Android
- Proteger un socket en VpnService
- InputStream no recibe EOF
- Android: ¿Cómo detectar la aplicación eliminada de la lista de aplicaciones recientes?
- Escucha un shoutcast con Android
- ¿El zócalo del cliente androide, cómo leer datos?
- Android - Socket del servidor
- HTTP Vs sockets Vanilla para cargar archivos binarios grandes (50-200 MB) desde un dispositivo Android a través de una red Wi-Fi de un solo salto
Parece bien, pero personalmente prefiero amortiguar el audio en el dispositivo y enviarlo al servidor de otro hilo en lugar de atar la grabadora al socket directamente como lo hizo. Debido a que el almacenamiento en búfer localmente le permitirá manejar las interrupciones de conexión con gracia.
Imagine que está grabando y el usuario pasa por un túnel y pierde conexión a Internet – si está transmitiendo directamente, el socket se cerrará y el usuario se molesta 🙂 Sin embargo, si está almacenando en búfer los datos localmente, puede restablecer La conexión y continuar enviando el audio al servidor desde donde lo dejó, y espero que el usuario ni siquiera tiene que saber que una interrupción en la conexión acaba de suceder, porque simplemente funciona mágicamente.
Para conseguir que funcione, usted tendría que escribir la grabación a un almacenador intermediario local y tener una comprobación independiente del hilo de rosca para los nuevos datos en ese almacenador intermediario y para enviar al servidor tan pronto como sea posible.
- Compartir y persistir datos entre varias aplicaciones de Android
- Android: errorMessageBackground no obtener ningún recurso encontrado error en styles.xml