2017-07-20 9 views
0

私のアンドロイドアプリでは、ユーザーはさまざまなビューをクリックしてピアノの音を出すことができます。アンドロイドは複数の音を再生します

私の問題は、ユーザーがビューをクリックすると、サウンドが生成されますが、6または7回のクリック後にサウンドが停止し、そのサウンドが停止していることです。後はなくなった。 は、ここに私の機能コードです:MPlayerにはすでに

 @Override 
     public void onClick(View v) { 

      if(mPlayer.isPlaying()) 
      { 
       mPlayer.stop(); 
       mPlayer.reset(); 
      } 
      try { 

       AssetFileDescriptor afd; 
       afd = getAssets().openFd("your.sound"); 
       mPlayer.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength()); 
       mPlayer.prepare(); 
       mPlayer.start(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

     } 
    }); 

を停止した場合

public int playSound(String tag){ 



      id = context.getResources().getIdentifier(tag, "raw", context.getPackageName()); 


      int soundId = sp.load(context, id,1); 

      MediaPlayer mPlayer = MediaPlayer.create(context,id); 

      mPlayer.start(); 



     } 
+0

サウンドプールはこのタイプのアプリケーションに適しています。 –

答えて

1

は、必ず確認してくださいあなたはのonClick()メソッドを変更し、これはあなたに

を助け、あなたの関数に

希望のコードを置くことができます

+0

こんにちは、まだ同じ問題がある、私はちょうどいくつかの音を再生することができますし、何も再生されていません。私はLogCatを見て、警告を受けました:MediaPlayerのsetSubtitleAnchor – Soufiane

1

ありがとうございましたJakSok

回答ガイド私解決策を見つけるために、私はMediaPlayerのリセットメソッドと解放メソッドを呼び出す必要があります。これは私の解決策です。

if(mPlayer.isPlaying()) { 
     mPlayer.stop(); 
    } 

     int id = getResources().getIdentifier(fileName, "raw", getPackageName()); 
     mPlayer.reset(); 
     mPlayer.release(); 
     mPlayer = MediaPlayer.create(this,id); 
     mPlayer.start(); 
関連する問題