| |||||||
Das Thema "Mehrere Sounds gleichzeitig" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.
|
| | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Fortgeschrittenes Mitglied Modell: Galaxy Nexus Registriert seit: 29.03.2009
Beiträge: 322
Abgegebene Danke: 2
Erhielt 28 Danke für 24 Beiträge
| 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 |
| | |
| | #3 (permalink) |
| Fortgeschrittenes Mitglied Modell: Galaxy Nexus Registriert seit: 29.03.2009
Beiträge: 322
Abgegebene Danke: 2
Erhielt 28 Danke für 24 Beiträge
|
Könntest du mir ein wenig Beispielcode posten. Ich habe es jetzt mit zwei MediaPlayern gemacht. Ist halt nicht das Gelbe vom Ei. |
| | |
| | #4 (permalink) |
| Android-Hilfe.de Mitglied Registriert seit: 19.01.2009
Beiträge: 71
Abgegebene Danke: 7
Erhielt 6 Danke für 4 Beiträge
|
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;
}
} |
| | |
| | #5 (permalink) |
| Fortgeschrittenes Mitglied Modell: Galaxy Nexus Registriert seit: 29.03.2009
Beiträge: 322
Abgegebene Danke: 2
Erhielt 28 Danke für 24 Beiträge
|
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);
} Gruß Manu P.S.: Die Variablen longsound und shortsound sind immer 0 |
| | |
| | #6 (permalink) |
| Android-Hilfe.de Mitglied Registriert seit: 19.01.2009
Beiträge: 71
Abgegebene Danke: 7
Erhielt 6 Danke für 4 Beiträge
| 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.
|
| | |
| | #7 (permalink) |
| Fortgeschrittenes Mitglied Modell: Galaxy Nexus Registriert seit: 29.03.2009
Beiträge: 322
Abgegebene Danke: 2
Erhielt 28 Danke für 24 Beiträge
|
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. |
| | |
| | #8 (permalink) |
| Android-Hilfe.de Mitglied Registriert seit: 19.01.2009
Beiträge: 71
Abgegebene Danke: 7
Erhielt 6 Danke für 4 Beiträge
|
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...
|
| | |
| | #9 (permalink) |
| Fortgeschrittenes Mitglied Modell: Galaxy Nexus Registriert seit: 29.03.2009
Beiträge: 322
Abgegebene Danke: 2
Erhielt 28 Danke für 24 Beiträge
|
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. |
| | |
![]() |
|
| Themen-Optionen | |
| Ansicht | |
| |
| ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| SMS an mehrere Kontakte schicken | ibu2002 | T-Mobile G1 Forum | 23 | 16.11.2010 15:33 |
| Gleichzeitig mehrere Webviews | holgik | Android App Entwicklung | 6 | 29.04.2009 22:35 |
| Updates blockieren und gleichzeitig online surfen | andi7331 | T-Mobile G1 Forum | 4 | 10.04.2009 14:56 |
| DHCP und feste IP gleichzeitig bei Wlan | MimiF | Android Allgemein | 10 | 31.03.2009 13:29 |
| SMS Sounds | Mimi | T-Mobile G1 Forum | 4 | 22.02.2009 10:54 |