Sto provando a creare un'applicazione Android dove filtro una frequenza specifica di un segnale acustico e far vibrare il telefono.Come attivare la vibrazione all'ingresso audio?
Sto prendendo input dal MIC di mobile e utilizzando la classe MediaRecorder, utilizzando questa classe, posso registrare, salvare e riprodurre l'input. Ora ho bisogno che il mio cellulare vibri ogni volta che viene emesso un segnale acustico o un suono.
L'ingresso è dato da un filo al jack delle cuffie del cellulare, quindi so che è presente una sola frequenza in ingresso.
Ho un pulsante, Facendo clic che avvia la registrazione. Ho permessi per vibrare e registrare già nel mio file manifest.
record.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
isRecording=true;
myAudioRecorder.prepare();
myAudioRecorder.start();
...
}
Ho anche provato a cercare in internet e ha trovato il tipo di domanda simile here ma non riesco a trovare alcuna risposta corretta.
Tuttavia, posso fare vibrare il telefono facendo clic su un altro pulsante ed ecco la Questo esempio vi di codice,
Vibrator vibrate;
vibrate = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
Btn1.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
vibrate.vibrate(800);
}
}
Ho provato a chiamare un vibratore all'interno recorder.start(); funzione ma questo fa vibrare il telefono anche quando non c'è più alcun suono. Ho anche provato ad ottenere aiuto da this question quindi ogni volta che c'è silenzio, il telefono non deve vibrare, ma mi sto confondendo, in qualche modo capisco che dovrebbe esserci un booleano che diventa vero quando c'è il suono e fa vibrare il telefono, ma io Sono incapace di mettere questa logica in codice. Per favore fatemi sapere cosa posso fare in questo contesto e in quale direzione devo cercare?
UPDATE ho trovato this toturial per mostrare la barra di avanzamento di ampiezza del suono in ingresso, funziona bene e ho cercato di far vibrare telefono quando c'è un valore in un tampone, Ora vibra anche quando l'ampiezza è zero, immagino che questo sia dovuto al fatto che ogni vibrazione produce rumore che porta il telefono a vibrare. Non riesco a controllare la funzione tramite TOAST a causa di java.lang.RuntimeException: Impossibile creare il gestore all'interno del thread che non ha chiamato Looper.prepare(). C'è qualche suggerimento?
Grazie per la risposta, ma ho bisogno di far vibrare il telefono quando c'è un suono, non sul clic, sono già in grado di farlo. Per favore leggi di nuovo la domanda. –