私はscheduleatfixedrateを使用して時間の調整可能なシーケンスを作成しようとしていました。ただし、このコードブロックを作成したとき、タイマーが削除されない限り、実行後の期間を変更できないことを知りませんでした。
これは、一連の一連のイベントでの私の試みです。
@Override
protected void onStart()
{
super.onStart();
Timer timer = new Timer();
GregorianCalendar gCal = (GregorianCalendar) GregorianCalendar.getInstance();
final Runnable countDivision = new Runnable()
{
public void run()
{
/**
* Starts the sequence and wraps around when reached the last position
*/
if(playSequenceButton.isChecked())
{
setEnabled(true);
int length = sequencer.getLength();
int i = sequencer.getPosition();
DIODE[i].setChecked(true);
if(i > 0)
DIODE[i-1].setChecked(false);
if (i < 1)
DIODE[length].setChecked(false);
}
/**
* Stops and resets the sequence
*/
else
{
for (int i = 0; i < sequencer.getLength(); i++)
DIODE[i].setChecked(false);
sequencer.setPosition(START_POSITION);
setEnabled(false);
}
}
};
int millis = 999 - gCal.get(GregorianCalendar.MILLISECOND);
int inputBPM = TEMPO;
long qtrN=Math.round(((60000/inputBPM))*100000)/100000;
long sixteenN = (qtrN/4);
sixteenN=Math.round(sixteenN*100000)/100000;
timer.scheduleAtFixedRate(new TimerTask()
{
@Override
public void run()
{
// setEnabled(true);
runOnUiThread(countDivision);
}
}, 0, sixteenN);
}
動的に変更できる期間を設定するには、どのような方法をお勧めしますか?16N変数は、実行可能なcountDivisionの実行中に変更できる必要があります。たぶん、timertaskは適切なツールではありませんか?
よろしく/M