Невозможно обновить приложение на основе данных акселерометра в Android Studio - PullRequest
0 голосов
/ 11 февраля 2020

Я пытаюсь очистить текстовые метки / вывод при встряхивании телефона с помощью данных акселерометра.

Это то, что у меня есть:

imports ....
public class Main_Activity extends AppCompatActivity implements TextToSpeech.OnInitListener, SensorEventListener{

    public void onAccuracyChanged(Sensor arg0, int arg1){

    }

    public void onSensorChanged(SensorEvent event){

        double ax = event.values[0];
        double ay = event.values[1];
        double az = event.values[2];
        double a = Math.sqrt(ax*ax + ay*ay + az*az);

        if(a > 20){
            ((EditText) findViewById(R.id.pBox)).setText("");
            ((EditText) findViewById(R.id.aBox)).setText("");
            ((EditText) findViewById(R.id.iBox)).setText("");
            ((TextView) findViewById(R.id.output)).setText("");
        }


    public void buttonClicked(View v){
        // getting values entered by user and showing output
    }
}

Все работает, кроме случаев, когда я встряхиваю свой телефон, текст не очищается.

1 Ответ

0 голосов
/ 11 февраля 2020

Пожалуйста, создайте их как глобальные переменные

private float acelVal,acelLast,shake;

Пожалуйста, используйте этот логин для получения событий встряски в вашем onSensorChanged()

float x =event.values[0];
float y =event.values[1];
float z =event.values[2];
acelLast=acelVal;
acelVal=(float) Math.sqrt((double) (x*x)+(y*y)+(z*z));
float delta= acelVal-acelLast;
shake =shake*0.9f+delta;


if(shake>20){
    ((EditText) findViewById(R.id.pBox)).setText("");
    ((EditText) findViewById(R.id.aBox)).setText("");
    ((EditText) findViewById(R.id.iBox)).setText("");
    ((TextView) findViewById(R.id.output)).setText("");
}

Это оригинальный ответ

Надеюсь, это поможет!

...