Sono un principiante della programmazione Android e mi piacerebbe imparare come utilizzare il metodo soundpool
, ho eseguito delle ricerche su di esso ma tutto ciò che ho trovato sembra non facile da capire! Mi piacerebbe che tu mi mostri un esempio molto semplice che esegue 2 suoni.Riproduci suono utilizzando l'esempio Soundpool
risposta
1.Creare 1 cartella denominata come grezzo sotto YourApp/res/
2.Do copiare e incollare la suoneria in questa cartella
per la comprensione approfondita controllare questo Tutorial 1 e Tutorial 2
SoundPool sp = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
/** soundId for Later handling of sound pool **/
int soundId = sp.load(context, R.raw.windows_8_notify, 1); // in 2nd param u have to pass your desire ringtone
sp.play(soundId, 1, 1, 0, 0, 1);
MediaPlayer mPlayer = MediaPlayer.create(context, R.raw.windows_8_notify); // in 2nd param u have to pass your desire ringtone
//mPlayer.prepare();
mPlayer.start();
È anche possibile impostare l'ascoltatore
sp.setOnLoadCompleteListener(new OnLoadCompleteListener()
{
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId,int status) {
}
});
Per il controllo lecca-lecca @ utente3833732 risposta.
Sì. Ho passato anche questo. ma per sicurezza ho salvato un pezzo di codice che ho trovato online. Anche se havent usato, so che sarà utile presto ...
1) È necessario creare AudioAttributes oggetto:
AudioAttributes attributes = new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_GAME)
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.build();
2) Creare Soundpool oggetto:
SoundPool sounds = new SoundPool.Builder()
.setAudioAttributes(attributes)
.build();
3) Come utilizzare SoundPool su tutti i livelli API esempio:
SoundPool sound;
protected void createSoundPool() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
createNewSoundPool();
} else {
createOldSoundPool();
}
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
protected void createNewSoundPool(){
AudioAttributes attributes = new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_GAME)
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.build();
sounds = new SoundPool.Builder()
.setAudioAttributes(attributes)
.build();
}
@SuppressWarnings("deprecation")
protected void createOldSoundPool(){
sounds = new SoundPool(5,AudioManager.STREAM_MUSIC,0);
}
Nota: si desidera un .setMaxStreams (5) sul Builder in createNewSoundPool anche se si desidera avere lo stesso comportamento, per riprodurre più suoni contemporaneamente, come in quello precedente. Anche il 5 potrebbe essere un int finale o qualcosa del genere. –
Ho scritto un SoundPoolManager che può essere utilizzato per caricare file audio e riprodurre come e quando richiesto. Potete vederlo here.
Grazie.
il codice dell'articolo non è leggibile –
Cosa intendi per illeggibile? –
Trovo leggibile il codice SoundPoolManager, ma il vantaggio dell'utilizzo di int invece di SoundPool non mi è chiaro. Immagino che sia per comodità. Sarebbe utile se lo spiegassi più pienamente. SoundPoolManager risponde alle carenze di SoundPool, rende il mio codice più sicuro/più portabile/più gestibile/più efficiente? Se sì, come e perché? Grazie in anticipo. –
Ecco un piccolo, lavorando esempio soundPool
, è preso dal here e leggermente modificato per corrispondere alberino API 21.
Una cosa da notare è maxStreams
, che indica quanti stream possono essere eseguiti in parallelo, se è uno (predefinito), può essere rimosso dal builder.
import android.app.Activity;
import android.content.Context;
import android.media.AudioManager;
import android.media.SoundPool;
public class SoundManager extends Activity
{
static SoundPool soundPool;
static int[] sm;
static AudioManager amg;
public static void InitSound() {
int maxStreams = 1;
Context mContext = getApplicationContext();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
soundPool = new SoundPool.Builder()
.setMaxStreams(maxStreams)
.build();
} else {
soundPool = new SoundPool(maxStreams, AudioManager.STREAM_MUSIC, 0);
}
sm = new int[3];
// fill your sounds
sm[0] = soundPool.load(mContext, R.raw.sound_1, 1);
sm[1] = soundPool.load(mContext, R.raw.sound_2, 1);
sm[2] = soundPool.load(mContext, R.raw.sound_3, 1);
amg = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);
}
static void playSound(int sound) {
soundPool.play(sm[sound], 1, 1, 1, 0, 1f);
}
public final void cleanUpIfEnd() {
sm = null;
soundPool.release();
soundPool = null;
}
}
'amg' non viene utilizzato – FracturedRetina
Viene utilizzato in' init' – Idan
Inizializzato ma mai utilizzato. – m0skit0
- 1. Riproduci suono su iOS 9 in modalità silenziosa
- 2. Riproduci suono bip in iphone relativo a frequenza e decibel
- 3. Soundpool o lettore multimediale?
- 4. Riproduci (e riproduce) un suono su safari mobile
- 5. Android: Riproduci programmaticamente il suono dell'otturatore della fotocamera
- 6. Riproduci tono stereo in Android
- 7. Riproduci suono in .NET utilizzando i dati della forma d'onda generata
- 8. Riproduci file mp3 utilizzando javascript
- 9. Soundpool non in loop su Android 4.3
- 10. Riproduci solo audio di notifica predefinito (Android)
- 11. Riproduci file WAV indietro
- 12. Android: registrazione uscita SoundPool
- 13. Riproduci un AudioBufferSourceNode due volte?
- 14. flusso in Soundpool vs volume in AudioManager
- 15. Errore SoundPool: non sono disponibili più nomi di traccia
- 16. Problema con Soundpool e Samsung Galaxy S
- 17. Ciclo continuo con SoundPool su Android?
- 18. Sapere se il caricamento di un suono con Soundpool ha avuto successo su Android 1,6/2,0/2,1
- 19. Riproduci note musicali in Swift Playground
- 20. Riproduci audio tramite JS con sovrapposizione
- 21. Riproduci audio con Node.JS
- 22. e ancora sui problemi di memoria con SoundPool
- 23. Come iniziare suono dopo suono in soundmanager2
- 24. Riproduci video di YouTube in background utilizzando youtube player api
- 25. Registra audio e riproduci suoni modulati in Android?
- 26. Riproduci Iteratee throttling
- 27. AudioTrack, SoundPool o MediaPlayer Quale dovrei usare?
- 28. Android 2.2 - SoundPool sample 0 non è READY
- 29. Riproduci HLS con HTML5
- 30. Riproduci mp3 in Haskell?
La ringrazio molto .. –
Il costruttore Soundpool è deprecato ora, ma dal momento che richiede SoundPool.Builder livello di API 21, credo di essere ancora usando. – Noumenon
Le ultime due righe (la cosa MediaPlayer) non sono necessarie. Per il resto, è stato utile. Grazie :) – voghDev