메트로놈과 같은 Android 애플리케이션을 만들었습니다. 실제로 n 밀리 초마다 삐 소리를 내고 싶습니다. 나는 이것을 위해 MediaPlayer
과 타이머를 사용합니다.Android 재생 비프 음, 매 n 밀리 초
내 코드는 다음과 같다 :
Soloution 1 :이 코드를 실행하면
start_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Timer timer = new Timer("MetronomeTimer", true);
TimerTask tone = new TimerTask() {
@Override
public void run() {
//Log
DateFormat df = new SimpleDateFormat("dd/MM/yy HH:mm:ss:SS");
Date date = new Date();
j++;
Log.i("Beep", df.format(date) + "_____" + j);
//Play sound
music = MediaPlayer.create(MainActivity.this, R.raw.beep);
music.start();
}
};
timer.scheduleAtFixedRate(tone, 500, 500); // every 500 ms
}
});
, 모든 것이 OK입니다. 그러나 15 번 루프가 지나면 로그 라인은 정상적으로 작동하지만 사운드는 소거됩니다. 그리고 때로는 매 15 또는 20 개의 로그, 사운드 재생 및 정지가 있습니다.
해결 방법 2 :
music = MediaPlayer.create(MainActivity.this, R.raw.beep);
(이 같은) TimerTask
중 :
start_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
music = MediaPlayer.create(MainActivity.this, R.raw.beep);
Timer timer = new Timer("MetronomeTimer", true);
TimerTask tone = new TimerTask() {
@Override
public void run() {
//Log
DateFormat df = new SimpleDateFormat("dd/MM/yy HH:mm:ss:SS");
Date date = new Date();
j++;
Log.i("Beep", df.format(date) + "_____" + j);
//Play sound
music.start();
}
};
timer.scheduleAtFixedRate(tone, 500, 500); // every 500 ms
}
});
이 코드는 반복에 대한 확인도 500까지 밀리
나는이 라인을 이동 . 주기 시간이 400 또는 300ms로 감소 할 때마다 2Log마다 하나의 사운드가 울립니다.
잘 작동하는이 코드를 복구하는 방법.
삐 소리가 귀하의 시간 간격보다 길 수도 있습니다. – user1506104
아니요. 내 경고음은 약 50ms이고 간격은 300입니다. – Tavousi