0

おはようございます。私は Android Nexus 7 でアプリケーションを開発しています。メソッド event.getEventTime () を使用していますが、タイムスタンプの間隔が一定でないことに気付きました。大きな不規則性があり、2 つのタイムスタンプの差が 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;
4

0 に答える 0