Я работаю с android.media.midi и я посылаю кучу миди данных в MidiInputPort со значением задержки, как это:Почему MidiInputPort.flush() не очищает буфер в Android?
long start = System.nanoTime();
if (messages != null)
{
for (int i = 0; i < messages.length(); i++)
{
MidiNote note = MidiHelper.parseMessageForNote(messages.getString(i));
if (note != null)
{
byte[] buffer = new byte[32];
int numBytes = 0;
int channel = 1; // MIDI channels 1-16 are encoded as 0-15.
buffer[numBytes++] = (byte) (note.action + (channel - 1));
buffer[numBytes++] = (byte) note.note;
buffer[numBytes++] = (byte) note.velocity;
long delay = note.delay * 1000000;
midiInputPort.send(buffer, 0, numBytes, start + delay);
start = start + delay;
}
}
midiInputPort.flush();
}
Вы заметите, что я называю вровень сразу же после отправки всех данных (только пытается для работы flush()), но это не влияет. Данные по-прежнему отправляются в порт Midi, как будто я никогда не называл flush. Для этой функции документация довольно понятна и проста. В нем говорится: «Если вы хотите отменить события, которые вы запланировали в будущем, тогда вызовите flush()». Есть ли что-то в этом, что мне не хватает? Любая помощь приветствуется.