화면에 여러 개의 이미지가있는 응용 프로그램을 만들고 있는데,이 이미지는 버튼이되고 탭하면 짧은 사운드가 재생됩니다. 나는 이것을 연구했고, 소리를내는 데 사용하고있는 현재의 방법만을 찾을 수있었습니다. 전혀 반응이없는 것처럼 보입니다. 나는 소리가 빨리 재생되고 많은 빠른 탭에 반응하기를 원합니다. 안드로이드에서도 이것이 가능한지 확신 할 수 없었다.안드로이드 짧은 소리를 재생하는 올바른 방법은?
내 사운드를 재생하기 위해 사용하고 코드는 이것이다 :
Button sound1;
MediaPlayer firstSound;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
firstSound = MediaPlayer.create(SoundActivity.this, R.raw.click);
sound1 = (Button) findViewById(R.id.Sound1);
beaver.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
firstSound.start();
}
});
}
내 지연 문제는 아마도 아래로 나는 미디어 플레이어 객체를 사용하고있는 방식이 될 수 있을까? 내 휴대 전화에서 이것이 부드러워 져야한다고 생각합니다. Android에서 소리를 재생하는 방법에 대한 제안은 감사하겠습니다.
감사합니다.
사운드 풀을 발견하기 때문에, 내가 이것을 사용하려면 코드를 편집 한 그것은 완벽하게 작동, 새로운 코드는 다음과 같습니다SoundPool soundPool;
HashMap<Integer, Integer> soundPoolMap;
int soundID = 1;
Button sound1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 100);
soundPoolMap = new HashMap<Integer, Integer>();
soundPoolMap.put(soundID, soundPool.load(this, R.raw.click, 1));
sound1 = (Button) findViewById(R.id.bBeaver);
sound1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
float curVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
float maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
float leftVolume = curVolume/maxVolume;
float rightVolume = curVolume/maxVolume;
int priority = 1;
int no_loop = 0;
float normal_playback_rate = 1f;
soundPool.play(soundID, leftVolume, rightVolume, priority, no_loop, normal_playback_rate);
}
});
}
감사
soundPoolMap을 사용하고있는 것처럼 보이지 않습니까? – Moberg
당신이 구현 한 방식을 좋아하고, 동시에 멋지게 일했습니다. – desgraci
대단히 고마워요. 그것은 위대한 작품 ...! –