Soundboard: Sound: Start-Stop-Reset

  • Antworten:1
Jan H.
  • Forum-Beiträge: 16

25.12.2012, 00:43:54 via Website

Hallo Community,

ich möchte bei einen klick auf einem Button, dass Sound abgespielt wird; dies funktionier soweit ganz gut.
Mein Problem ist nur dabei das, wenn der Sound läuft und ich einen anderen Button abspiele, beide Sounds gleichzeitig abgespielt werden.

Nun möchte ich, wenn der 1. Sound-Button abgespielt wird und ich den 2. Sound-Button drücke, wird dir 1. Sound-Button gestoppt und "reseten" und der 2. Sound-Button abgespielt. Wenn ich den 1. Sound-Button wieder drücke, wird durch das "reseten" der Sound komplett von vorne abgespielt und nicht mittendrin.

Kurzform:
1. Sound-Button drücken => Sound Play
2. Sound-Button drücken => Sound Play & 1. Sound-Button Sound stop + reset

Hier meinen jetzigen Quellcode Ausschnitt vom Soundboard:

1public MediaPlayer mp;
2 Button audio1, audio2;
3
4 @Override
5 protected void onCreate(Bundle savedInstanceState) {
6 super.onCreate(savedInstanceState);
7 setContentView(R.layout.main);
8
9 audio1 = (Button) findViewById(R.id.bAudio);
10 audio2 = (Button) findViewById(R.id.bAudio2);
11
12 // Audio Button #1
13 audio1.setOnClickListener(new OnClickListener() {
14
15 public void onClick(View v) {
16 mp = MediaPlayer.create(getApplicationContext(), R.raw.sound1);
17 mp.start();
18 }
19 });
20
21 // Audio Button #2
22 audio2.setOnClickListener(new OnClickListener() {
23
24 public void onClick(View v) {
25 mp = MediaPlayer.create(getApplicationContext(), R.raw.sound2);
26 mp.start();
27 }
28 });
29 }

main = Hauptseite (1. Activity)
bAudio = ID des Buttons Nr.1
bAudio2 = ID des Buttons Nr.2
sound1 = Audiodatei Nr.1 (abgespielter Sound)
sound2 = Audiodatei Nr.2 (abgespielter Sound)


Freundliche Grüße und vielen Dank im voraus
Jan H.

Antworten
Phil G.
  • Forum-Beiträge: 86

25.12.2012, 11:08:01 via Website

Vielleicht solltest du mal den Aufbau deiner App überdenken, bzw fehlen da noch ein paar wichtige Bestandteile.

Überlegung1: bei 35 Sounds würdest du 35 Clickhandler und mp Abspielroutinen schreiben .> das ist schon mal Mist

Überlegung2: alle Soundfiles in ein Array packen (lässt sich schneller pflegen), Klickhandler jeweils nur eine ID übergeben -> (index des Arrays)

Überlegung3: Abspielroutine schreiben, welche nur eine ID übergeben bekommt zum abspielen

Überlegung4: aus 1-3 wird ersichtlich wie du deine Probleme lösen kannst. -> In deiner Abspielroutine legst du Dir ein paar Variablen an
-> lastPlayer -> isplaying und speicherst da ein paar Werte

-> if isplaying = true -> Player anhalten -> neues File zuweisen .-> abspielen

der Rest sollte ein Kinderspiel sein....

Frohe Weihnachten

Antworten