android - ANDROID:如何计算光传感器数据的两个显着变化之间的差异?
问题描述
我正在尝试计算波谷的数量,即传感器值急剧下降的次数,然后上升以实现向下(将手靠近手机,然后将其拿走)手势。这就是我正在尝试的。
protected void onCreate(Bundle savedInstanceState) {
..........
.........
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
printValue();
new Handler().postDelayed(this, 5000);
}
}, 5000);
}
public void printValue(){
textView.setText(" "+arr);
int count = calculateTrough();
textView1.setText("Number of troughs: "+count);
arr.clear();
}
public int calculateTrough(){
int count = 0;
if(arr == null){
count = 0;
}
else {
for (int i = 0; i < arr.size(); i++) {
if (arr.get(i) - arr.get(i + 1) > 5.00 && arr.get(i + 2) - arr.get(i + 1) > 5.00)
count++;
}
}
return count;
}
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
if(sensorEvent.sensor.getType() == Sensor.TYPE_LIGHT){
arr.add(sensorEvent.values[0]);
}
}
这是正确的方法吗?每当我尝试在手机中运行该应用程序时,它似乎就会崩溃。调试时,这是由于calculateTrough 方法中的forloop,但我无法弄清楚原因。我还应该怎么做?
解决方案
推荐阅读
- java - Spring - Spark:jar/依赖项之间的冲突
- c# - 如何在 Headless 模式下运行我的 Selenium 项目?
- linux - Docker 卷挂载为空
- php - 拉拉维尔 | 大量数据的特殊验证
- sql - 过滤条件的性能输出
- reactjs - React 新手,无法让 ReactDOM 渲染 javascript 组件
- perl - 如何在 Windows 10 上重新启动我的 Perl 脚本
- angular - 如何获得与我的 Table 对象的列名称相对应的正确数量的 formsControl,而无需努力编写
- python - 如何创建一系列单词以作为超参数进行迭代?
- azure-devops - Azure DevOps - 对“迭代”字段执行操作的新工作项规则