Android频率振动

时间:2016-09-04 14:47:49

标签: android android-sensors android-vibration

我正在开发一个Android应用程序,用于检测手抖动(通过加速度计),并根据振动强度调整振动频率。

我能够通过标准偏差获得震颤强度(下面的代码):

public void regressionCalc() {
    //Calculating sum values
    double sumZ;
    double meanZ;
    sumZ = 0;

    final TextView accZText = (TextView) findViewById(R.id.accelText);
    accZText.setText("");

    for (int r = 0; r < recArray.length; r++) {
        sumZ = sumZ + recArray[r];
    }
    meanZ = sumZ/recArray.length;

    //Calculating standard deviation
    double sumXu2; //this represents E((x-xbar)^2)
    sumXu2 = 0;
    for (int x = 0; x < recArray.length; x++) {
        sumXu2 += ((recArray[x]-meanZ)*(recArray[x]-meanZ));
    }
    double SD;
    SD = Math.sqrt(sumXu2/(recArray.length-1));
    tremorIntensity = SD;

    accZText.setText(String.format("%.2f", tremorIntensity) + "");
    accZText.setTextSize(80);
}

但我不知道如何使用振动。我的意思是,我希望手机振动强度根据回归值减小或增加。

有人能以正确的方式对我说话吗? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

答案在我的评论中*显示了如何根据模式使设备进行嗡嗡声:

Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
long[] pattern = {0, 100, 1000, 300, 200, 100, 500, 200, 100};
v.vibrate(pattern, -1);

由于您已经有一个振动强度值,问题的其余部分只是使用您的强度值来生成pattern的值。

在硬件级别上,蜂鸣器只是开启或关闭,因此决定pattern最佳模拟变化强度的变化类型是试错的问题。这可能就像使每个on值与tremorIntensity成比例一样简单:

long[] pattern = {0, tremorItensity * factor, 100}

* Here it is.