제가 카메라 Preview를 통해서 지속적으로 영상을 받아와 분석하는 어플을 만들고 있습니다.
10초동안 해당 이미지를 받아와 10초 후 결과값을 출력하는 다이얼로그를 뿌려주는 형식으로 구현을 했는데 이게 기기마다 시간을 읽어들이는? 텀이 있어서 10초가 넘어가 버리는 경우가 있습니다.
이상적인 타이머가 9.2초, 9.5초, 9.8초, 10.05초 이런 식으로 표시가 되는 것인데요
몇몇 기기에서는 9.2초, 9.8초, 0.23초 이런식으로 10초를 건너뛰는 문제가 발생합니다. 어떻게 해야할까요 ?
int averageArrayAvg = 0;
int averageArrayCnt = 0;
for (int i = 0; i < averageArray.length; i++) {
if (averageArray[i] > 0) {
averageArrayAvg += averageArray[i];
averageArrayCnt++;
}
}
long endTime = System.currentTimeMillis();
totalTimeInSecs = (endTime - startTime) / 1000d;
if (totalTimeInSecs > 10) {
bps = (beats / totalTimeInSecs);
dpm = (int) (bps * 60d);
if (dpm < 30 || dpm > 180) {
startTime = System.currentTimeMillis();
beats = 0;
processing.set(false);
return;
}
if (beatsIndex == beatsArraySize) beatsIndex = 0;
beatsArray[beatsIndex] = dpm;
beatsIndex++;
beatsArrayAvg = 0;
beatsArrayCnt = 0;
for (int i = 0; i < beatsArray.length; i++) {
if (beatsArray[i] > 0) {
beatsArrayAvg += beatsArray[i];
beatsArrayCnt++;
}
}
beatsAvg = (beatsArrayAvg / beatsArrayCnt);
ResultBeats = beatsAvg;
beats = 0;
}
if (totalTimeInSecs > 10) {
builder.setPositiveButton("확인", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
startTime = 0;
return;
}
});
builder.show();
}
}
}
};