Autore Topic: Fonometro  (Letto 878 volte)

Offline systemgvp

  • Nuovo arrivato
  • *
  • Post: 49
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Ideos
  • Play Store ID:
    systemgvp
  • Sistema operativo:
    Windows 7
Fonometro
« il: 05 Maggio 2013, 11:32:25 CEST »
0
Salve,

sto cercando disperatamente materiale su internet, ma non riesco a trovare nulla. Ho bisogno di visualizzare in un semplice TextView i decibel che credo rilevi il microfono, perché devo realizzare un rudimentale fonometro.

Da tenere presente nell'app ho già attivo sia l'accelerometro che il GPS, e che io devo solo leggere i decibel, senza memorizzare nulla.
« Ultima modifica: 05 Maggio 2013, 11:39:27 CEST da systemgvp »

Offline systemgvp

  • Nuovo arrivato
  • *
  • Post: 49
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Ideos
  • Play Store ID:
    systemgvp
  • Sistema operativo:
    Windows 7
Re:Fonometro
« Risposta #1 il: 10 Maggio 2013, 01:25:58 CEST »
0
Ho risolto con

Codice (Java): [Seleziona]
import java.io.IOException;
import android.media.MediaRecorder;

private MediaRecorder Microfono;


//in OnCreate

//attivazione del microfono
Microfono = new MediaRecorder();
Microfono.setAudioSource(MediaRecorder.AudioSource.MIC);
Microfono.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
Microfono.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
Microfono.setOutputFile("/dev/null");
try { Microfono.prepare(); }
catch (IllegalStateException e) { e.printStackTrace(); }
catch (IOException e) { e.printStackTrace(); }
 Microfono.start();

//per fermare la registrazione
Microfono.stop();


//nell'evento
double AmpiezzaDiRiferimento = 0.6;
double Ampiezza = Microfono.getMaxAmplitude()/2700.0;
double decibel = 20 * Math.log10(Ampiezza / AmpiezzaDiRiferimento);
if (decibel < 0) { decibel = 0; }

con i permessi

Codice (XML): [Seleziona]
<uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>