2012-08-28 17 views
22

Vorrei che la mia app emettesse un bip con una frequenza e una durata specifiche. Nella finestra equivalente di questa applicazione (scritto in C#) ho usato un ++ dll c con la funzioneCome fare un segnale acustico in Android?

beep(frequency, duration); 

È questo lo stesso in Android? O almeno come posso inserire la mia DLL C++ nel progetto?

Preferirei non utilizzare l'audio pre-costruito o l'audio di sistema perché vorrei dare all'utente la scelta della frequenza e della durata.

+0

Eventuali duplicati: http://stackoverflow.com/questions/6462105/how-do-i-access-androids-default-beep-sound – Max

+0

Date un'occhiata a questo possibile duplicato anche: http://stackoverflow.com/q/5279242/1127492 – Stefan

+0

Grazie per aver risposto (entrambi) ma in realtà non è proprio quello che sto cercando. – Cippo

risposta

1

Se si desidera utilizzare il codice C++ nell'app Android che è possibile. Devi dare un'occhiata a NDK Android che ti permette di usare codice C++ eseguibile con l'aiuto di JNI (Java Native Interface).

Android NDK

+0

Ok ... Potresti spiegare cosa devo fare? Grazie! – Cippo

+0

Prima di tutto è necessario installare il ndk. al link che ho dato sopra dovrebbe avere la guida per lasciarti come configurare (che è piuttosto facile). ed ecco un altro link per i campioni di ndk è il modo migliore per iniziare .. [link] (http://developer.android.com/tools/sdk/ndk/index.html#Samples) – Dilberted

+0

Grazie mille. In realtà non posso provarlo ora, perché sto programmando sul mio tablet Android senza eclissi. Darei comunque un'occhiata. Grazie mille! – Cippo

14

Il modo più semplice è quello di utilizzare un'istanza della classe ToneGenerator:

// send the tone to the "alarm" stream (classic beeps go there) with 50% volume 
ToneGenerator toneG = new ToneGenerator(AudioManager.STREAM_ALARM, 50); 
if (val >= taux_max) { 
    taux_text.setTextColor(warnning_col); 
    toneG.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD, 200); // 200 is duration in ms 
} 

prega di fare riferimento alla documentazione di ToneGenerator e AudioManager per significato esatto di parametri e possibile configurazione del generatore.

74

Ho provato la risposta di amine.b. In breve, per riprodurre un forte segnale acustico:

ToneGenerator toneG = new ToneGenerator(AudioManager.STREAM_ALARM, 100); 
toneG.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD, 200); 
+0

Mi piace questo, in realtà emetterà un segnale acustico invece di una suoneria :) –

+2

La cosa migliore sarebbe usare un tono continuo come quelli da ToneGenerator.TONE_DTMF_0 a ToneGenerator.TONE_DTMF_S altrimenti il ​​suono generato potrebbe suonare interrotto. – ungalcrys

Problemi correlati