2017-01-28 9 views
0

申し訳ありませんJava/Android Studioの初心者で、私はSoundboardを書いています。Mediaplayersの数が1つに縮小しますか?どうやって? Soundboard

マイサウンドボードは、ページあたり約10〜15のボタンがあり、これはMediaplayers

public class MainActivity extends AppCompatActivity { 

MediaPlayer X1; 
MediaPlayer X2; 
MediaPlayer X3; 
MediaPlayer X4; 
MediaPlayer X5; 
MediaPlayer X6; 


    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    X1 = MediaPlayer.create(this, R.raw.x1); 
    X2 = MediaPlayer.create(this, R.raw.x2); 
    X3 = MediaPlayer.create(this, R.raw.x3); 
    X4 = MediaPlayer.create(this, R.raw.x4); 
    X5 = MediaPlayer.create(this, R.raw.x5); 
    X6 = MediaPlayer.create(this, R.raw.6); 

そして、私のxmlファイルにImは各ボタン

のために、このように作業の多くを宣言し、私の​​次の問題

イムです

<Button 
     android:text="X1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/button10" 
     android:onClick="X1" 
     android:elevation="0dp" 
     android:background="android:attr/colorEdgeEffect" 
     android:forceHasOverlappingRendering="false" 
     android:textColor="@android:color/white" 
     android:textSize="18sp" 
     android:textStyle="normal|italic" 
     android:layout_marginLeft="17dp" 
     android:layout_marginStart="17dp" 
     android:layout_marginTop="317dp" /> 

今私の問題は、各メディアプレイヤーと多くのMediaplayersで、アプリケーションがクラッシュしている/問題を起こしているということです。

すべてのボタンを1 MediaPlayerにまとめるにはどうすればよいですか?

私はこのコードを誰かが変更することができますか? いくつかのスレッドでは "oncompletionlistener"を読みましたが、私はそれを使ったことはありませんでした。

答えて

0

StackOverflowのは私が答えることはできないだろうが、私はもう一度試してみます:

  • あなたはメディアプレーヤー、のserveralのものを定義する必要はありませんへの1つの参照を再利用することができます。
  • ボタンのID(またはそのようなもの)に基づいて、onClickハンドラ内で再生する生のオーディオを決定する必要があります(つまり、ボタンがクリックされたときに呼び出されたメソッド、ここではパラメータとしてビューがあります)別の生のオーディオIDを使用して参照します。

何かのように:その後、

android:onClick="playFile" 

そして、あなたが持っている

public void playFile(View view){ 
     switch(view.getId()) { 
    case R.id.button1: 
     // play audio file 1 
     break; 
    case R.id.button2: 
     // play audio file 2 
     break; 
    //.... 
    } 
} 
関連する問題