2017-02-19 4 views
-1

タイルを押したときに短い音を出そうとしていますが、Android StudioではSoundPoolが廃止されていると言っています。これは私のSoundPoolPlayerクラスは次のようになり、それが現在のクラッシュに私のゲームを引き起こすものである:タッチで短い音を再生する

import android.content.Context; 
import android.media.AudioManager; 
import android.media.SoundPool; 
import java.util.HashMap; 

public class SoundPoolPlayer { 
    private SoundPool mShortPlayer = null; 
    private HashMap mSounds = new HashMap(); 

    public SoundPoolPlayer(Context pContext) { 

     this.mShortPlayer = new SoundPool(4, AudioManager.STREAM_MUSIC, 0); 

     mSounds.put(R.raw.click, this.mShortPlayer.load(pContext, R.raw.click, 1)); 
    } 

    public void playShortResource(int piResource) { 
     int iSoundId = (Integer) mSounds.get(piResource); 
     this.mShortPlayer.play(iSoundId, 0.99f, 0.99f, 0, 0, 1); 
    } 

    // Cleanup 
    public void release() { 
     // Cleanup 
     this.mShortPlayer.release(); 
     this.mShortPlayer = null; 
    } 

} 

私はその後、私のゲーム活動に次のコードを使用してサウンドを再生:

SoundPoolPlayer sound = new SoundPoolPlayer(getContext()); 
sound.playShortResource(R.raw.click); 
sound.release(); 
+0

「SoundPool」を使用すると、このシナリオに最適です。 'SoundPool()'コンストラクタ*は廃止予定です。代わりに 'SoundPool.Builder'を使用して' SoundPool'インスタンスを構築します。 – Jameson

答えて

0

あなたはMediaPlayerのを使用する必要があります内部のonTouchListenerは次のようになります。

mPlayer = new MediaPlayer(); 
      mPlayer.setAudioStreamType(AudioManager.STREAM_RING); 

      try { 
       mPlayer.setDataSource(mContext, 
         Uri.parse("android.resource://" + mContext.getPackageName() + "/" + R.raw.YOUR_FILE_NAME)); 
       mPlayer.prepare(); 
      } catch (IOException e) { 
       Log.e(LOG_TAG, "Could not setup media player for ringtone"); 
       mPlayer = null; 
       return; 
      } 
      mPlayer.setLooping(false); 
      mPlayer.start(); 
0

Android MediaPlayerを使用すると、サウンドを再生することができます。

MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.click); 
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
      @Override 
      public void onPrepared(MediaPlayer mp) { 
       mp.start(); 
      } 
     });