[英]Accelerometer android tiltfunction
我測試了加速度計,並嘗試制作一個程序,根據用戶傾斜手機的位置顯示文本。 我有一個文本,當用戶向右/向左和向上/向下傾斜手機時會顯示。
我是 android 新手,所以如果您認為這個問題很愚蠢,請不要投反對票! 告訴我我在這個問題上做錯了什么,這樣我下次可以做得更好!
下面的代碼工作得很好,我只得到正確和頂部..我不知道為什么..
執行此操作的代碼:
@Override
public void onSensorChanged(SensorEvent event) {
// get the change of the x,y,z values of the accelerometer
deltaX = Math.abs(lastX - event.values[0]);
deltaY = Math.abs(lastY - event.values[1]);
deltaZ = Math.abs(lastZ - event.values[2]);
if (deltaX > 2){
HideText();
findViewById(R.id.txtRight).setVisibility(View.VISIBLE);
}
if (deltaY > 2)
{
HideText();
findViewById(R.id.txtUp).setVisibility(View.VISIBLE);
}
if (deltaX < -2)
{
HideText();
findViewById(R.id.txtLeft).setVisibility(View.VISIBLE);
}
if (deltaY < -2) {
HideText();
findViewById(R.id.txtUp).setVisibility(View.VISIBLE);
}
/*else if ((deltaX > vibrateThreshold) || (deltaY > vibrateThreshold) || (deltaZ > vibrateThreshold)){
v.vibrate(100);
HideText();
Toast.makeText(getApplicationContext(), "Stop shaking me!!!",
Toast.LENGTH_LONG).show();
}*/
}
如果用戶搖晃手機,我嘗試使用的注釋掉的代碼..但會保存以備后用:)
代碼看起來不錯。 您的問題來自Math.abs()
- 它取差值的絕對值,這意味着它始終為正值,並且deltaX
和deltaY
永遠不會<0。 刪除Math.abs()
應該沒問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.