无法根据 Android Studio 中的加速度计数据更新应用
Can't get app to update based on accelerometer data in Android Studio
我试图在 phone 被摇动时使用加速度计数据清除文本 labels/output。
这是我的:
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
}
}
一切正常,除了我摇晃 phone 时,文字不清晰。
请将它们创建为全局变量
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("");
}
这是original answer
希望这对您有所帮助!
我试图在 phone 被摇动时使用加速度计数据清除文本 labels/output。
这是我的:
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
}
}
一切正常,除了我摇晃 phone 时,文字不清晰。
请将它们创建为全局变量
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("");
}
这是original answer
希望这对您有所帮助!