2011-10-27 12 views
12

Desidero collegare il suono di spunta predefinito del sistema operativo Android (ad esempio, il suono che senti quando fai un lungo clic sul pulsante Home e seleziona l'app precedente da avviare) con il mio pulsante clic. So come riprodurre i suoni tramite MediaPlayer, ma non so dove cercare questo suono tick predefinito. Doveva essere in alcune risorse predefinite, ma non riuscivo a trovarlo.Come riprodurre il suono TICK predefinito?

MediaPlayer mp = MediaPlayer.create(getBaseContext(), sound); 
mp.setLooping(false); 
mp.start(); 

Chiunque può aiutare?

PS. questo suono verrà attivato all'interno del metodo onClick.
PPS. So che posso user/raw dir, ma non penso che ce ne sia bisogno. Per non dire, è più bello riprodurre questo suono tick preparato per il telefono dell'utente.

risposta

1

NOTA: questa è una risposta piuttosto vecchia. Controlla la risposta di Roberto Tyley qui sotto.

Penso che il suono che si sta cercando è ed è in - /system/media/audio/ui/KeypressStandard.ogg

Penso che si possa dare quel percorso alla SetDataSource API del mediaplayer. Ma non sono sicuro se avrà lo stesso nome su tutti i telefoni Android.

Ci potrebbe essere un modo migliore per eseguire una query per suono di click di default ..

+1

Sarebbe meglio servire copiare quel file nel proprio progetto. Quel file non fa parte di Android SDK. Non sono a conoscenza di un modo nell'SDK per richiedere una riproduzione di quel suono di clic. – CommonsWare

+1

È vero, dal momento che non vi è alcun danno che l'OEM manterrà il suono dei clic dalla sorgente Android. Ma è legale per me copiare il suono del click dalla sorgente Android nel mio progetto? – bluefalcon

+0

Bene, in questo momento è difficile rispondere, dal momento che android.git.kernel.org è ancora un po 'confuso. Ma, se il file fa parte del Progetto Open Source Android, dovrebbe essere concesso in licenza con Apache License 2.0, proprio come il resto del codice e delle risorse. – CommonsWare

53

Si può giocare 'tick' audio di default di Android utilizzando il metodo view.playSoundEffect() in ogni caso - abbastanza sorprendentemente, tutte le viste può giocare una selezione di 'sistema' suona:

view.playSoundEffect(SoundEffectConstants.CLICK); 

Questa è probabilmente la risposta più semplice al tuo problema :)

+0

Funziona perfettamente su ICS. –

+1

Per qualche motivo, questo ha smesso di funzionare. Qualche idea su quale potrebbe essere il problema? Si prega di dare un'occhiata al mio codice: 'out.setOnTouchListener (new View.OnTouchListener() {public booleano onTouch (Visualizza v, evento MotionEvent) {out.playSoundEffect (SoundEffectConstants.CLICK); ...}}} Grazie !! –

+4

Risolto aggiungendo 'android: soundEffectsEnabled =" true "' nel layout. Grazie! –

5

risposta di Roberto Tyley è corretta.

È possibile riprodurre un suono da ogni vista semplicemente chiamando in questo modo:

Button01.setOnClickListener(new View.OnClickListener() 
     { 
      public void onClick(View v) 
      { 
       v.playSoundEffect(SoundEffectConstants.CLICK); 
      } 
     }); 

Basta notare che il suono non verrà riprodotto se i suoni di contatto sono disattivati ​​per impostazione predefinita. È impostato nelle preferenze audio generali del dispositivo (Impostazioni -> Suono -> Audible o sui sistemi operativi più recenti: Opzioni> Suono> Tocca)

Inoltre, se questa impostazione è impostata, la maggior parte degli eventi di clic attiverà il suono del clic Comunque!

7

Se si desidera controllare il volume del suono, utilizzare il servizio di sistema AudioManager. Inoltre, questo può essere utilizzato da un servizio se non si dispone di una vista a portata di mano.

// get the AudioManager once onCreate or similar 
audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 

... 
// Play a System Sound 
audioManager.playSoundEffect(SoundEffectConstants.CLICK); 

// OR at 50% Volume 
audioManager.playSoundEffect(SoundEffectConstants.CLICK, 0.5F); 

Se siete su Google Glass è possibile utilizzare i com.google.android.glass.media.Sounds costanti

audioManager.playSoundEffect(Sounds.TAP); 

Sono inclusi in Suoni

consentito, ERRORE, SUCCESSO, TAP, SELEZIONATI, RESPINTO

1

È possibile utilizzare il segno di spunta, il segnale acustico o qualsiasi tipo di suono integrato da Tone Generator

ToneGenerator toneG = new ToneGenerator(AudioManager.STREAM_ALARM, 100); 
toneG.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD, 200); 
Problemi correlati