2016-04-22 4 views
0

Ich mache einen Resonanzboden und wenn der Benutzer auf die Knöpfe klickt, sollte ein Soundbyte abgespielt werden. Ich bin mir ziemlich sicher, dass meine Logik im Code korrekt ist, um die Sounds für jede Taste einzustellen, als ich in meiner for-Schleife nach einem Aus-eins-Fehler suchte. Aus irgendeinem Grund gibt es immer nur eine zufällige Schaltfläche auf dem Bildschirm, die beim Klicken nicht wiedergegeben wird und die Schaltfläche, die nicht funktioniert, ändert sich jedes Mal, wenn ich den Code ausführe. Ich denke, es ist ein Fehler in meinem XML, weil jedes Mal, wenn ich das XML ändere, um es zu reparieren, ein anderer Knopf der ist, der nicht funktioniert.Android-Sound wird nicht abgespielt, wenn die Taste wegen Layout-Bug geklickt wird

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
tools:context="com.example.ben.soundboard.MainActivity" 


> 

<ImageButton 
    android:id="@+id/button1" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 

    android:layout_alignTop="@+id/button2" 
    android:layout_alignStart="@+id/button4" /> 
<ImageButton 
    android:id="@+id/button2" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 

    android:layout_alignTop="@+id/button3" 
    android:layout_alignStart="@+id/button5" /> 
<ImageButton 
    android:id="@+id/button3" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:layout_alignStart="@+id/button6" 
    android:layout_marginTop="93dp" /> 

<ImageButton 
    android:id="@+id/button4" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 

    android:layout_alignTop="@+id/button5" 
    android:layout_alignStart="@+id/button7" /> 
<ImageButton 
    android:id="@+id/button5" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:layout_alignTop="@+id/button6" 
    android:layout_alignStart="@+id/button8" /> 
<ImageButton 
    android:id="@+id/button6" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:layout_centerVertical="true" 
    android:layout_alignStart="@+id/button9" /> 
<ImageButton 
    android:id="@+id/button7" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:layout_alignTop="@+id/button8" 
    android:layout_marginStart="38dp" /> 
<ImageButton 
    android:id="@+id/button8" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:layout_alignTop="@+id/button9" 
    android:layout_centerHorizontal="true" /> 
<ImageButton 
    android:id="@+id/button9" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:layout_marginEnd="49dp" 
    android:layout_marginBottom="106dp" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentEnd="true" /> 

public class MainActivity extends AppCompatActivity 
{ 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    MediaPlayer ohBaby = MediaPlayer.create(this,R.raw.oh_baby); 
    MediaPlayer fourTwentySount = MediaPlayer.create(this,R.raw.four_twenty); 
    MediaPlayer anotherOne = MediaPlayer.create(this,R.raw.another_one); 
    MediaPlayer terrorist_win = MediaPlayer.create(this,R.raw.terrorists_win); 
    MediaPlayer allahu_akbar = MediaPlayer.create(this,R.raw.allahu_akbar); 
    MediaPlayer cough = MediaPlayer.create(this,R.raw.cough); 
    MediaPlayer that_was_easy = MediaPlayer.create(this,R.raw.that_was_easy); 
    MediaPlayer horn = MediaPlayer.create(this,R.raw.horn); 
    MediaPlayer ethan_bradberry = MediaPlayer.create(this,R.raw.im_ethan_bradberry); 
    MediaPlayer[] sounds = {ohBaby,fourTwentySount,anotherOne,terrorist_win,allahu_akbar,cough,that_was_easy,horn,ethan_bradberry}; 

    ImageButton button1 = (ImageButton) findViewById(R.id.button1); 
    ImageButton button2 = (ImageButton) findViewById(R.id.button2); 
    ImageButton button3 = (ImageButton) findViewById(R.id.button3); 
    ImageButton button4 = (ImageButton) findViewById(R.id.button4); 
    ImageButton button5 = (ImageButton) findViewById(R.id.button5); 
    ImageButton button6 = (ImageButton) findViewById(R.id.button6); 
    ImageButton button7 = (ImageButton) findViewById(R.id.button7); 
    ImageButton button8 = (ImageButton) findViewById(R.id.button8); 
    ImageButton button9 = (ImageButton) findViewById(R.id.button9); 
    ImageButton[] buttons = {button1,button2,button3,button4,button5,button6,button7,button8,button9}; 

    for (int i = 0; i < 9;i++) { 
     buttons[i].setImageResource(R.drawable.ic_action_name); 
     setButtonSound(buttons[i],sounds[i]); 
    } 

} 
public void setButtonSound(ImageButton btn, final MediaPlayer sound) 
{ 
    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      sound.start(); 
     } 
    }); 
} 

}

+0

Haben Sie einen Fehler oder passiert einfach nichts? – codeMagic

+0

@codeMagic Ich erhalte keinen Fehler, aber der Sound wird nicht wiedergegeben, wenn ich auf die Schaltfläche klicke. –

+0

* "jedes Mal, wenn ich das XML ändere, um es zu reparieren, ist ein anderer Button der, der nicht funktioniert." * Ist es immer ein anderer * Sound * auch oder derselbe? – codeMagic

Antwort

0

Sie haben keine gemeinsame Umsetzung, aber bevor Sie einen neuen Sound starten, um die Wiedergabe in jedem Mediaplayer stoppen:

for (int i = 0; i < 9;i++) { 
     sounds[i].stop(); 
} 

Und dann verwenden die Methode prepare() vor dem Start():

sound.prepare(); 
sound.start(); 

Ich denke, dein Problem ist, dass du mehrere MediaPlayer gleichzeitig erstellst, aber du musst aufhören zu spielen, bevor du einen neuen "Sound" mit einem anderen MediaPlayer reproduzierst.

Verwandte Themen