1
音果たし:SoundPool私は音にビューがクリックされるたびに、再生したいだけで、初めて
私は、単純な効果プレーヤー作成:私は私のonCreate
イベントにEffectManager.init
を呼び出す
public class EffectManager {
private static SoundPool soundPool;
private static int puzzlePieceOK;
private static int puzzleOK;
public static void init(Context context) {
if (soundPool == null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
soundPool = new SoundPool.Builder()
.setAudioAttributes(new AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.setUsage(AudioAttributes.USAGE_GAME)
.build()
)
.setMaxStreams(10)
.build();
}
else {
soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 1);
}
puzzlePieceOK = soundPool.load(context,R.raw.puzzle_piece_ok,1);
puzzleOK = soundPool.load(context,R.raw.puzzle_ok,1);
}
}
public static void playPuzzlePieceOK() {
soundPool.play(puzzlePieceOK,10,10, 1,0,1);
}
public static void playPuzzleOK() {
soundPool.play(puzzleOK,10,10, 1,1,1);
}
}
をアクティビティ。次に、このリスナーを私のビューに追加します:
setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
EffectManager.playPuzzlePieceOK();
}
});
最初のビューのみをクリックすると音が聞こえることがありました。ビューをクリックする順番を変えてみましたが、最初のクリックに対してのみ再生されます。私はこの警告以外のコンソール上には何のメッセージエラーもありません。 :
W/AudioTrack: AUDIO_OUTPUT_FLAG_FAST denied by server
この警告は、最初のクリックでのみ表示されます。