Domanda

Esiste un modo per registrare l'audio in alta qualità?

E come posso leggere le informazioni che l'utente sta dicendo qualcosa? Nell'applicazione Registrazione audio puoi vedere questo indicatore (non conosco il nome giusto per esso).

È stato utile?

Soluzione

Per la registrazione e il monitoraggio: è possibile utilizzare l'attività del registratore di suoni. Ecco un frammento di codice:

Intent recordIntent = new Intent(
                MediaStore.Audio.Media.RECORD_SOUND_ACTION);
            startActivityForResult(recordIntent, REQUEST_CODE_RECORD);

Per un perfetto esempio funzionante di come registrare l'audio che include un monitor di input, scarica il progetto Ringdroid open source: https://github.com/google/ringdroid

Guarda gli screenshot e vedrai il monitor.

Per rendere l'audio di qualità superiore, avresti bisogno di un microfono migliore. Il microfono incorporato può solo catturare così tanto (che non è poi così buono). Ancora una volta, guarda il progetto ringdroid, raccogli alcune informazioni da lì. A quel punto potresti implementare alcune routine di normalizzazione e amplificazione per migliorare il suono.

Altri suggerimenti

Al momento, un grande motivo per la scarsa qualità della registrazione audio su Android è il codec utilizzato dalla classe MediaRecorder (il codec AMR-NB). Tuttavia, puoi accedere all'audio non compresso tramite la classe AudioRecord e registrarlo direttamente in un file.

La Rehearsal Assistant app fa questo per salvare l'audio non compresso in un file WAV - dai un'occhiata a codice sorgente della classe.

La classe RehearsalAudioRecord fornisce anche un metodo getMaxAmplitude, che è possibile utilizzare per rilevare il livello audio massimo dall'ultima volta che è stato chiamato il metodo (MediaRecorder fornisce anche questo metodo).

scroll top