为什么在Nexus 7中使用Android event.getEventTime of MotionEvent时,时间间隔不规则

为什么在Nexus 7中使用Android event.getEventTime of MotionEvent时,时间间隔不规则,android,nexus-7,Android,Nexus 7,早上好,我正在Android Nexus 7上开发一个应用程序。我使用event.getEventTime()方法,注意到时间戳的间隔不规则。存在较大的不规则性,在某些情况下,两个时间戳之间的差值为0。我需要一个固定的间隔,例如10或100毫秒,以便进行后续处理。有没有办法克服这个问题?提前感谢您的建议 我在下面报告一段代码,它捕获了与运动相关的参数。 我想知道为什么在移动的情况下,设备不定期采集数据 switch (event.getAction()) { case Motio

早上好,我正在Android Nexus 7上开发一个应用程序。我使用event.getEventTime()方法,注意到时间戳的间隔不规则。存在较大的不规则性,在某些情况下,两个时间戳之间的差值为0。我需要一个固定的间隔,例如10或100毫秒,以便进行后续处理。有没有办法克服这个问题?提前感谢您的建议

我在下面报告一段代码,它捕获了与运动相关的参数。 我想知道为什么在移动的情况下,设备不定期采集数据

switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            path.moveTo(eventX, eventY);
            lastTouchX = eventX;
            lastTouchY = eventY;

            //----------------------------------

            datiPunto[0] = String.valueOf(eventX);
            datiPunto[1] = String.valueOf(eventY);
            datiPunto[2] = String.valueOf(time);
            datiPunto[3] = String.valueOf(event.getAction());
            datiPunto[4] = "0";
            datiPunto[5] = "0";
            datiPunto[6] = String.valueOf(pressure);
            CSVFileWriter.mem(datiPunto,tempDir, nome);
            Log.i("worning","file csv memorizzato");
            //----------------------------------
            return true;
        case MotionEvent.ACTION_MOVE:

        resetDirtyRect(eventX, eventY);
            int historySize = event.getHistorySize();
            //float action = event.getAction();
            for (int i = 0; i < historySize; i++) {
                float historicalX = event.getHistoricalX(i);
                float historicalY = event.getHistoricalY(i);
                float historicalPressure = event.getHistoricalPressure(i);
                long historicalTime = event.getHistoricalEventTime(i);

                //----------------------------------
                datiPunto[0] = String.valueOf(historicalX);
                datiPunto[1] = String.valueOf(historicalY);
                datiPunto[2] = String.valueOf(historicalTime);
                datiPunto[3] = String.valueOf(event.getAction());
                datiPunto[4] ="0";
                datiPunto[5] = "0";
                //datiPunto[4] = String.valueOf(action);
                datiPunto[6] = String.valueOf(historicalPressure);
                CSVFileWriter.mem(datiPunto,tempDir, nome);
                Log.i("worning","file csv memorizzato");
                //----------------------------------
                expandDirtyRect(historicalX, historicalY);
                path.lineTo(historicalX, historicalY);


            } // close loop historical data

            //----------------------------------

            datiPunto[0] = String.valueOf(eventX);
            datiPunto[1] = String.valueOf(eventY);
            datiPunto[2] = String.valueOf(time);
            datiPunto[3] = String.valueOf(event.getAction());
            datiPunto[4] = "0";
            datiPunto[5] = "0";
            datiPunto[6] = String.valueOf(pressure);
            CSVFileWriter.mem(datiPunto,tempDir, nome);
            Log.i("worning","file csv memorizzato");
            //----------------------------------
            path.lineTo(eventX, eventY);

            break;
        case MotionEvent.ACTION_UP:
            datiPunto[0] = String.valueOf(eventX);
            datiPunto[1] = String.valueOf(eventY);
            datiPunto[2] = String.valueOf(time);
            datiPunto[3] = String.valueOf(event.getAction());
            datiPunto[4] = "0";
            datiPunto[5] = "0";
            datiPunto[6] = String.valueOf(pressure);
            CSVFileWriter.mem(datiPunto,tempDir, nome);
            Log.i("worning","file csv memorizzato");
            countPenUp++;
            break;
开关(event.getAction()){
case MotionEvent.ACTION\u DOWN:
path.moveTo(eventX,eventY);
lastTouchX=eventX;
lastTouchY=eventY;
//----------------------------------
DatiPento[0]=String.valueOf(eventX);
DatiPento[1]=String.valueOf(eventY);
DatiPento[2]=String.valueOf(时间);
DatiPento[3]=String.valueOf(event.getAction());
DatiPento[4]=“0”;
Datipto[5]=“0”;
DatiPento[6]=管柱的值(压力);
CSVFileWriter.mem(datipto、tempDir、nome);
Log.i(“工作”、“文件到”);
//----------------------------------
返回true;
case MotionEvent.ACTION\u移动:
resetDirtyRect(eventX,eventY);
int historySize=event.getHistorySize();
//float action=event.getAction();
for(int i=0;i
请发布一些代码,以更好地帮助理解应用程序环境。顺便说一句,此事件捕获设备的运动,因此事件将按运动执行的节奏触发,例如捕获加速度。因此,除非您能够以非常精确的节奏实际移动设备,否则您将无法获得固定的时间间隔en事件(即使您可以这样做,设备可能仍需要几微秒来处理内容,因此时间空间将不规则)