Mehrere Sounds gleichzeitig

M

manu

Erfahrenes Mitglied
29
Ich komme schon wieder an einem Problem nicht weiter.

Wie schaffe ich es, dass mehrere Sounds aus einer Activity gleichzeitig abgespielt werden (muss nicht synchron sein).

Mit dem Mediaplayer klappt das nicht so recht.

Und SoundPool ist kaum zu gebrauchen. Da funktioniert zu wenig.


Hat einer eine IDee für mich?




Gruß Manu
 
Wo ist das Problem mit SoundPool? Ich nutze es für ein Spiel - klappt soweit ganz gut.
 
Könntest du mir ein wenig Beispielcode posten.

Ich habe es jetzt mit zwei MediaPlayern gemacht. Ist halt nicht das Gelbe vom Ei.
 
Zum einfacheren Umgang mit dem SoundPool hab ich mir folgende Klasse geschrieben:

Code:
package de.greenrobot.game;

import android.content.Context;
import android.media.AudioManager;
import android.media.SoundPool;

public class Sounds {
    private final int[] resourceIds;
    private final int[] soundPoolIds;

    private SoundPool soundPool;
    private AudioManager audioManager;
    private boolean soundsOn;

    public Sounds(int[] soundResourceIds) {
        this.resourceIds = soundResourceIds;
        soundPoolIds = new int[soundResourceIds.length];
        soundsOn = true;
    }

    public void init(Context context) {
        soundPool = new SoundPool(200, AudioManager.STREAM_MUSIC, 100);
        audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
        for (int i = 0; i < resourceIds.length; i++) {
            soundPoolIds[i] = soundPool.load(context, resourceIds[i], 100);
        }
    }

    public void release() {
        audioManager = null;
        soundPool.release();
        soundPool = null;
    }

    public void playSound(int sound) {
        if (soundPool != null && soundsOn) {
            for (int i = 0; i < resourceIds.length; i++) {
                if (sound == resourceIds[i]) {
                    int streamVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
                    soundPool.play(soundPoolIds[i], streamVolume, streamVolume, 1, 0, 1f);
                    break;
                }
            }
        }
    }

    public boolean isSoundsOn() {
        return soundsOn;
    }

    public void setSoundsOn(boolean soundsOn) {
        this.soundsOn = soundsOn;
    }

}
 
Ich werde mit dem Soundpool noch wahnsinnig.
Habe nun alles bei mir eingebaut. Ich bekomme aber leider keinen Ton.
Hier mal der Quellcode:

Code:
private SoundPool soundPool;
private HashMap<Integer, Integer> soundPoolMap; 
private int longsound,shortsound;
private int streamVolume;

.
.
.

AudioManager mgr = (AudioManager) getBaseContext().getSystemService(Context.AUDIO_SERVICE);
streamVolume = mgr.getStreamVolume(AudioManager.STREAM_MUSIC);
initSounds();

.
.
.
playSound(1);
.
.
.

private void initSounds() {
        soundPool = new SoundPool(2, AudioManager.STREAM_MUSIC, 100);
        soundPoolMap = new HashMap<Integer, Integer>();
        soundPoolMap.put(1, soundPool.load(myApp.this, R.raw.shaverlong, 1));
        soundPoolMap.put(2, soundPool.load(myApp.this, R.raw.shaver5, 2));
   } 
    
    public void playSound(int sound) {
        if(sound==1)
            longsound=soundPool.play(soundPoolMap.get(sound), streamVolume, streamVolume, 1, -1, 1f);
        if(sound==2)
            shortsound=soundPool.play(soundPoolMap.get(sound), streamVolume, streamVolume, 1, -1, 1f);
        if(longsound==0)
            Toast.makeText(electricshaver.this, "Ton wurde nicht gestartet", Toast.LENGTH_SHORT).show();
        if(shortsound==0)
            Toast.makeText(electricshaver.this, "Ton wurde nicht gestartet", Toast.LENGTH_SHORT).show();
   } 
    
   public void stopSound(int sound)
   {
       if(sound==1)
           soundPool.stop(longsound);
       if(sound==2)
           soundPool.stop(shortsound);
   }

Hat jemand eine Idde, warum der Sound nicht gestartet wird?



Gruß Manu

P.S.: Die Variablen longsound und shortsound sind immer 0
 
manu schrieb:
Hat jemand eine Idde, warum der Sound nicht gestartet wird?

SoundPool unterstützt nicht alle Formate. Z.B. ein Stereo MP3 hat er bei mir nicht abgespielt. Nach Umwandlung zu Mono und OGG ging's.
 
Danke, für die sehr schnelle Antwort.
Ich habe beide Dateien in OGG umgewandelt. Zusätzlich habe ich die Bitrate auf 24kbps gestellt. Die Sounds liegen jetzt in Mono vor.

Trotzdem wird der Sound nicht gestartet.
 
Dein Code sieht OK aus und sehe keine relevanten Unterschiede zu meinem. Gibt's irgendeine Log-Ausgabe? streamVolumne ist >0 ? So langsam gehen mir die Ideen aus...
 
Ich habe für das Debugging die beiden Toasts eingebaut. Diese bestätigen, dass die Rückgabe 0 ist.

Schade, dass der SoundPool trotz Android 1.5 nicht läuft. Muss ich doch wieder den MediaPlayer verwenden.
 

Ähnliche Themen

B
Antworten
1
Aufrufe
799
swa00
swa00
H
  • HoustonWeHaveAProblem
Antworten
3
Aufrufe
799
moin
M
michy84
Antworten
5
Aufrufe
1.793
kevte89
kevte89
Zurück
Oben Unten