2011-01-31 12 views
18

Sto cercando di aggiungere solo alcuni suoni semplici (bip, boop, clic, ecc.) a un'app per Android, quindi mi stavo chiedendo se ci sono suoni incorporati nel sistema operativo Android o nell'SDK che potrebbero essere utilizzato. Se sì, come potrebbero essere acceduti? Le mie uniche supposizioni sono state da qualche parte nelle classi mediastore o soundpool ... Sono piuttosto nuovo, quindi qualsiasi aiuto/consiglio che potresti offrire sarebbe molto apprezzato. Grazie.Esistono suoni incorporati/predefiniti che possono essere utilizzati in un'app?

risposta

20

È possibile riprodurre la suoneria di default con:

MediaPlayer player = MediaPlayer.create(this, 
    Settings.System.DEFAULT_RINGTONE_URI); 
player.start(); 

È possibile sostituire DEFAULT_RINGTONE_URI con DEFAULT_NOTIFICATION_URI o DEFAULT_ALARM_ALERT_URI per i vari altri suoni predefiniti.

+1

android.provider.Settings.System – usman

+1

più completa gestione qui di errore di esempio withh http://stackoverflow.com/questions/10335057/play-notification-default-sound-only-android –

1

1- L'aiuto per creare stati che non è necessario chiamare preparare dopo una creazione, così ho rimosso la riga di codice di preparazione.

2- Questo funziona correttamente sul dispositivo ma si blocca sull'emulatore ???

3- Qualsiasi altro suono di allarme, notifica e suoneria ??

+0

ho rimosso il player.prepare () linea dalla mia risposta come ho ricontrollato la documentazione e hai avuto ragione. Non sono sicuro del motivo per cui si blocca l'emulatore, forse non ha alcun file audio da riprodurre? Puoi fornire l'output 'logcat' dell'errore/crash? Non credo ci siano altri suoni di sistema predefiniti diversi dai 3 forniti. –

+0

Sei wright. Sull'emulatore non sono disponibili suoni tra cui scegliere quando entriamo in impostazioni -> Suono -> Suoneria notifiche –

8

Ecco un modo per generare un segnale acustico.

Creare un file resouce crudo con estensione .rtttl e mettere "c5: d = 4, o = 5, B = 250: C5" in esso (senza virgolette)

Poi aggiungere questo codice:

protected MediaPlayer _mediaPlayer; 

public void playFromResource(int resId) 
    { 
    if (_mediaPlayer != null) 
     { 
     // _mediaPlayer.stop();  freeze on some emulator snapshot 
     // _mediaPlayer.release(); 
     _mediaPlayer.reset();  // reset stops and release on any state of the player 
     } 
    _mediaPlayer = MediaPlayer.create(this, resId); 
    _mediaPlayer.start(); 
    } 

Quindi chiamare playFromResource e passarlo l'id risorsa se la risorsa rtttl non elaborata.

+1

Grazie per avermi informato su RTTTL! :-) – Abbafei

Problemi correlati