2016-09-04 5 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 лучше всего имитировать изменение интенсивности, является вопросом проб и ошибок. Это может быть столь же просто, как сделать каждый on значение, пропорциональное tremorIntensity:

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

* Here it is.

+0

Прежде всего, спасибо за ваш ответ. Дело в том, что у меня есть одна долина (2 или 5 или 12), и на основе этого значения мне приходится делать вибрацию моего телефона. Представьте, что рука дрожала крепко, а затем медленнее, вибрация постепенно уменьшала ее частоту с интенсивностью дрожания руки. Имеет ли смысл? –

+0

Это своего рода смысл, но я не буду знать, какая картина создает желаемый эффект, который описывается по-разному как интенсивность или частота в вопросе. Поэтому экспериментируйте с разными шаблонами. –

+0

Точно, мне хотелось бы узнать точную картину, и я надеялся на вашу помощь –