Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Nexus 6P上硬件传感器的Android采样率变化_Java_Android_Android Sensors_Sampling_Nexus 6p - Fatal编程技术网

Java Nexus 6P上硬件传感器的Android采样率变化

Java Nexus 6P上硬件传感器的Android采样率变化,java,android,android-sensors,sampling,nexus-6p,Java,Android,Android Sensors,Sampling,Nexus 6p,我正在开发一个Android应用程序,用于一项研究,我正在读取一些传感器数据,如加速度计、陀螺仪、气压计等。 因此,我有4台Nexus 6P设备,所有设备都是最新安装的,除了预装的标准应用程序外,没有安装其他应用程序。 因此,现在出现的问题是,其中一部手机一直落后,因此,例如,我将加速度计记录在105 Hz下半小时(因此加速度计的最大可能速率为400 Hz),以确保至少获得100 Hz下预期的样本量,结果如下: 在100Hz->180000个样本下进行半小时的采样 在105Hz->189000个

我正在开发一个Android应用程序,用于一项研究,我正在读取一些传感器数据,如加速度计、陀螺仪、气压计等。 因此,我有4台Nexus 6P设备,所有设备都是最新安装的,除了预装的标准应用程序外,没有安装其他应用程序。 因此,现在出现的问题是,其中一部手机一直落后,因此,例如,我将加速度计记录在105 Hz下半小时(因此加速度计的最大可能速率为400 Hz),以确保至少获得100 Hz下预期的样本量,结果如下:

在100Hz->180000个样本下进行半小时的采样

在105Hz->189000个样品下搅拌半小时

(这只是加速计的一个示例,但每个设备上的其他传感器都是一样的。因此,设备1、3、4对其他传感器的效果大致相同,而设备2对所有其他传感器的效果也相同)

  • 装置1:180000个样本

  • 设备2:177273个样本我经常使用Android传感器,我可以告诉你,硬件质量参差不齐。如果我需要结果在电话中保持一致,我通常会使用过滤器:

    // Filter to remove readings that come too often
            if (TS < LAST_TS_ACC + 100) {
                //Log.d(TAG, "onSensorChanged: skipping");
                return;
            }
    
    做了以上所有的工作,我得到了相当好的结果,但由于硬件的不同,它永远不会完美

    祝你好运

    // Filter to remove readings that come too often
            if (TS < LAST_TS_ACC + 100) {
                //Log.d(TAG, "onSensorChanged: skipping");
                return;
            }
    
    accelBuffer = new StringBuilder();
    accelBuffer.append(LAST_TS_ACC + "," + event.values[0] + "," + event.values[1] + "," + event.values[2] + "\n");
    
    if((accelBuffer.length() > 500000) && (writingAccelToFile == false) ){
                    writingAccelToFile = true;
    
                    AccelFile = new File(path2 +"/Acc/"  + LAST_TS_ACC +"_Service.txt");
                    Log.d(TAG, "onSensorChanged: accelfile created at : " + AccelFile.getPath());
    
                    File parent = AccelFile.getParentFile();
                    if(!parent.exists() && !parent.mkdirs()){
                        throw new IllegalStateException("Couldn't create directory: " + parent);
                    }
    
                    //Try threading to take of UI thread
    
                    new Thread(new Runnable() {
                        @Override
                        public void run() {
                            //Log.d(TAG, "onSensorChanged: in accelbuffer");
                            // Log.d(TAG, "run: in runnable");
                            //writeToStream(accelBuffer);
                            writeStringBuilderToFile(AccelFile, accelBuffer);
                            accelBuffer.setLength(0);
                            writingAccelToFile = false;
    
                        }
                    }).start();
    
                }