2016-09-04 7 views
0

私は手を振って(加速度計を通して)検知し、振動の強さに基づいて振動周波数を変調するアンドロイドアプリケーションに取り組んでいます。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); 
} 

が、私は振動で動作する方法がわかりません。私は、回帰値に基づいて電話の振動の強さを減少させるか、増加させたいと思います。

誰でも私に正しい方法で対処できますか? ありがとうございます。

+0

可能性のある重複した[Androidデバイスを振動させるには?](http://stackoverflow.com/questions/ 13950338/how-to-make-an-android-device-vibrate) –

+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がどのような変化を最もよくシミュレートするかを試行錯誤して決定します。それはtremorIntensityに比例した各on値を作るのと同じくらい簡単かもしれません:

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

* Here it is.

+0

まずはお返事ありがとうございます。 実際に私は単一の谷(2または5または12)を持っており、この値に基づいて電話を振動させる必要があります。手が強く揺れてゆっくりと動くと想像してください。振動は手の振動の強さで周波数を徐々に下げなければなりません。それは理にかなっていますか? –

+0

それは一種の意味を持ちますが、どのパターンが所望の効果を創り出すのかを知るつもりはありません。それは質問の強度や頻度としてさまざまに記述されています。さまざまなパターンを試してみてください。 –

+0

まさに、私は正確なパターンを知りたいと思います。私はあなたの助けを期待していました –