Вы уверены, что ваша задержка исходит от сканера, а не от заключительного цикла setSignal, который вы вставили?
Я бы порекомендовал использовать TraceView , чтобы выяснить, где именно висит ваша программавверх.Мне очень помогло с подобной проблемой.
Дайте мне знать, если это поможет.Я предлагаю поставить начальную и конечную точки в начале и конце первого цикла.Например:
открытый класс ECGFilereader {// читает файлы ecg с SD-карты
public final static int numChannels = 12;// данные хранятся в 12 каналах, по одному для каждого отведения public final static int numSamples = 3000;// 500 = fs так * 6 в течение 6 секунд данных private File file;частный сканер сканер;short [] [] ecg = new short [numChannels] [numSamples];// Создает краткий файл с именем ecg, в котором будут храниться все выборки для каждого отведения канала
public boolean ReadFile(Waveform[] waves) // sorts data into and array of an array (12
channels each containing 3000 samples)
{
Debug.startMethodTracing("scanner");
for (int sample=0; sample<numSamples && scanner.hasNextInt(); sample++) //
{
scanner.nextInt();
for (int chan = 0; chan<numChannels; chan++)
{
if(scanner.hasNextInt())
ecg [chan] [sample] = (short) scanner.nextInt();
else if (scanner.hasNextLine())
scanner.nextLine();
else return false;
}
}
Debug.stopMethodTracing();
Debug.startMethodTracing("setSignal");
for (int chan=0; chan<numChannels; chan++)
waves[chan].setSignal(ecg[chan]);
// sets a signal equal to the ecg array of samples for each channel
Debug.stopMethodTracing();
return true;
}
Таким образом, у вас будет 2 файла traceView для анализа, чтобы увидеть, откуда возникают проблемы с производительностью.
РЕДАКТИРОВАТЬ:
Еще одна вещь, которую вы должны убедиться, что вы делаете, это проверить, доступно ли внешнее хранилище.Сделайте это с помощью следующего кода:
boolean mExternalStorageAvailable = false;
boolean mExternalStorageWriteable = false;
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
// We can read and write the media
mExternalStorageAvailable = mExternalStorageWriteable = true;
} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
// We can only read the media
mExternalStorageAvailable = true;
mExternalStorageWriteable = false;
} else {
// Something else is wrong. It may be one of many other states, but all we need
// to know is we can neither read nor write
mExternalStorageAvailable = mExternalStorageWriteable = false;
}