Autore Topic: azioni innescate da microfono  (Letto 1896 volte)

Offline frecciak

  • Utente normale
  • ***
  • Post: 231
  • Respect: +16
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    windows 7
azioni innescate da microfono
« il: 14 Gennaio 2012, 15:32:39 CET »
0
la mia app necessita di sentire tramite il microfono se ci sono dei rumori, sò che è possibile perchè lo ho visto in altre app..ma non ho idea di come fare..
in pratica fare un'activity che all'onstart mostra un rimane ferma in attesa di un rumore qualsiasi (un battito di mano, una porta che sbatte ,un cane che abbaia,etc..) poi quando sente il rumore, fa partire un intent con delle azioni.
per fare questo,nell'onstart ci sarà una seekbar tramite si potrà regolare quanto deve essere forte il rumore per attivare l'intent e un button che attiverà l'ascolto.
il mio problema è non ho trovato nulla ne in rete ne tra le api(che ancora non so capire molto bene) che possa mettere il mic in ascolto e ricevere un broadcast quanto rileva dei rumori..
mi potete dare qualche dritta per iniziare?
in pratica le domande principali sono 3:
-come posso mettere il mic in ascolto?
-come posso sapere se il microfono ha sentito qualcosa?
-come posso regolare il volume di ricezione del mic?
Se le risposte ti hanno aiutato, metti un ..a te non costa nulla, ma a chi ti ha aiutato fa molto piacere riceverlo!!

Offline E.Musso

  • Utente junior
  • **
  • Post: 82
  • Respect: +17
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy GT-S5660
  • Play Store ID:
    Emiliano Musso
  • Sistema operativo:
    Windows 7
Re:azioni innescate da microfono
« Risposta #1 il: 14 Gennaio 2012, 20:43:50 CET »
0
Per l'ascolto del microfono, potresti provare la classe MediaRecorder: dai un'occhiata a questo link, dovrebbe aiutarti
http://www.ibm.com/developerworks/opensource/library/os-android-sensor/
Bollettazione Interventi - Un taglio ai costi di tipografia per professionisti!
--
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato

Offline frecciak

  • Utente normale
  • ***
  • Post: 231
  • Respect: +16
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    windows 7
Re:azioni innescate da microfono
« Risposta #2 il: 16 Gennaio 2012, 14:14:41 CET »
0
li non ho trovato nulla di utile purtroppo..ora sto provando a seguire un'altra strada..se ci riesco poi lo condivido :D
Se le risposte ti hanno aiutato, metti un ..a te non costa nulla, ma a chi ti ha aiutato fa molto piacere riceverlo!!

Offline frecciak

  • Utente normale
  • ***
  • Post: 231
  • Respect: +16
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    windows 7
Re:azioni innescate da microfono
« Risposta #3 il: 17 Gennaio 2012, 14:23:17 CET »
0
niente da fare..non riesco a capire come poter rilevare i decibel tramite il microfono...
qualcuno ha una guida o uno snippet che mi posso guardare?
Se le risposte ti hanno aiutato, metti un ..a te non costa nulla, ma a chi ti ha aiutato fa molto piacere riceverlo!!

Offline E.Musso

  • Utente junior
  • **
  • Post: 82
  • Respect: +17
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy GT-S5660
  • Play Store ID:
    Emiliano Musso
  • Sistema operativo:
    Windows 7
Bollettazione Interventi - Un taglio ai costi di tipografia per professionisti!
--
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato

Offline frecciak

  • Utente normale
  • ***
  • Post: 231
  • Respect: +16
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    windows 7
Re:azioni innescate da microfono
« Risposta #5 il: 17 Gennaio 2012, 22:25:32 CET »
0
THANKS musso, grazie al reply che c'e' nel tuo link, son riuscito a capire il funzionamento :D

ora però ho un'altro problemino che non riesco a capire..
quella guida fa prendere l'amplitube in questo modo:
Codice (Java): [Seleziona]
        public double getAmplitude() {  
                if (mRecorder != null)        
                        return  (mRecorder.getMaxAmplitude()/2700);
                else                
                        return 0;      
                }        
        public double getAmplitudeEMA() {  
                double amp = getAmplitude();      
                mEMA = EMA_FILTER * amp + (1.0 - EMA_FILTER) * mEMA;  
                return mEMA;    
                }
ma da qua poi come li posso trasformare in decibel?
in giro ho trovato questo:
Codice (Java): [Seleziona]
power_db = 20 * log10(amp / amp_ref);
ma non capisco cosa siano log10 e amp_ref :(
« Ultima modifica: 17 Gennaio 2012, 22:28:05 CET da frecciak »
Se le risposte ti hanno aiutato, metti un ..a te non costa nulla, ma a chi ti ha aiutato fa molto piacere riceverlo!!

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7

Offline frecciak

  • Utente normale
  • ***
  • Post: 231
  • Respect: +16
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    windows 7
Re:azioni innescate da microfono
« Risposta #7 il: 18 Gennaio 2012, 03:15:07 CET »
0
qlimax O_O
muahahaaa...ti posso garantire che ho letto e riletto...ma non ci ho capito un bel niente in quelle righe O_O
qualcuno che magari riesce a capirci, mi puo' dire cosa dovrei mettere al posto di log10 e di amp_ref?
qlimax..mi hai fatto sentire veramente ignorante :D
Se le risposte ti hanno aiutato, metti un ..a te non costa nulla, ma a chi ti ha aiutato fa molto piacere riceverlo!!

Offline E.Musso

  • Utente junior
  • **
  • Post: 82
  • Respect: +17
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy GT-S5660
  • Play Store ID:
    Emiliano Musso
  • Sistema operativo:
    Windows 7
Re:azioni innescate da microfono
« Risposta #8 il: 18 Gennaio 2012, 17:56:42 CET »
+1
Qui c'è qualche nozione in più: https://ccrma.stanford.edu/~jos/st/DB_Display.html

Ad ogni modo, amp è l'ampiezza del segnale, amp_ref è un'ampiezza di riferimento che devi definire tu.
log10 è una funzione java che serve per calcolare il logaritmo in base 10 di un valore. Qui trovi i dettagli: http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Math.html#log10(double)
Bollettazione Interventi - Un taglio ai costi di tipografia per professionisti!
--
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato

Offline frecciak

  • Utente normale
  • ***
  • Post: 231
  • Respect: +16
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    windows 7
Re:azioni innescate da microfono
« Risposta #9 il: 19 Gennaio 2012, 00:35:29 CET »
0
eh eh..mi mancano proprio le basi per poter capire queste cose..
piu le leggo e piu mi sembrano cose messe a casaccio :D
se per caso avete idea di cosa devo metterci, mi fate un'immenso favore..
Se le risposte ti hanno aiutato, metti un ..a te non costa nulla, ma a chi ti ha aiutato fa molto piacere riceverlo!!

Offline E.Musso

  • Utente junior
  • **
  • Post: 82
  • Respect: +17
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy GT-S5660
  • Play Store ID:
    Emiliano Musso
  • Sistema operativo:
    Windows 7
Re:azioni innescate da microfono
« Risposta #10 il: 19 Gennaio 2012, 08:47:25 CET »
+1
Potresti provare introducendo una funzione di questo tipo:

Codice (Java): [Seleziona]
private float AmpiezzaADecibel(float ampiezza){
   return 20 * log10(ampiezza);
}

e dandole in pasto il tuo valore di ampiezza, per leggerne il risultato, e quindi i decibel. Nel logaritmo, ho inserito soltanto il valore di ampiezza, ipotizzando che l'ampiezza di riferimento sia uguale ad 1.
A questo link ho trovato un documento con diverse conversioni di riferimento, che puoi usare come raffronto con i tuoi valori: http://www.docstoc.com/docs/30178157/AMPLITUDE-RATIO-DECIBEL-CONVERSION-TABLE
Bollettazione Interventi - Un taglio ai costi di tipografia per professionisti!
--
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato

Offline frecciak

  • Utente normale
  • ***
  • Post: 231
  • Respect: +16
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    windows 7
Re:azioni innescate da microfono
« Risposta #11 il: 20 Gennaio 2012, 03:33:05 CET »
0
grazie mille musso, oggi e domani non ho proprio tempo :(
appena riesco provo a vedere come dici tu ^^
Se le risposte ti hanno aiutato, metti un ..a te non costa nulla, ma a chi ti ha aiutato fa molto piacere riceverlo!!

Offline frecciak

  • Utente normale
  • ***
  • Post: 231
  • Respect: +16
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    windows 7
Re:azioni innescate da microfono
« Risposta #12 il: 23 Gennaio 2012, 15:01:30 CET »
0
niente da fare..utilizzando il log10 mi da sempre risultato "-infinite"..
proprio sta cosa non riesco a capirla :(
per ora ho risolto utilizzando l'amplitude per far partire gli intent, ma sta cosa dei decibel mi manca proprio..
« Ultima modifica: 23 Gennaio 2012, 17:31:05 CET da frecciak »
Se le risposte ti hanno aiutato, metti un ..a te non costa nulla, ma a chi ti ha aiutato fa molto piacere riceverlo!!