2016-10-31 21 views
0

私は震え電話の機能に取り組んでいました。私は同じ強さで電話を振り回し、私は別のデバイス上でプロジェクトを正常に実行できるように同じフィードバックを得る。しかし今、私は、異なるデバイスが全く異なる値を持つことを発見しました。誰にもアドバイスはありますか?あなたが車輪の再発明したいのはなぜ加速度計の値の見方は?

public void onSensorChanged(SensorEvent event) { 
     if (event.sensor.getType() != Sensor.TYPE_ACCELEROMETER) { 
      return; 
     } 
     float[] values = event.values; 
     float x = values[0]; //X value 
     float y = values[1]; //Y value 
     float z = values[2]; //Z value 
     if (isShaking(x, sMinVale, event) || isShaking(y, sMinVale, event) || isShaking(z, sMinVale, event)) { 
      vibrator.vibrate(200); 
      ToastUtils.showToast(mContext, "检测到手机晃动了"); 
     } 

private boolean isShaking(float x, int minValue, SensorEvent event) { 
    return Math.abs(x) > event.sensor.getMaximumRange(); 
} 

答えて

0

?!: は今あなたにコードを表示しますそれは

public class Demo extends Activity implements ShakeDetector.Listener { 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 
      ShakeDetector sd = new ShakeDetector(this); 
      sd.start(sensorManager); 

      TextView tv = new TextView(this); 
      tv.setGravity(CENTER); 
      tv.setText("Shake me, bro!"); 
      setContentView(tv, new LayoutParams(MATCH_PARENT, MATCH_PARENT)); 
     } 

     public void hearShake() { 
      Toast.makeText(this, "Don't shake me, bro!", Toast.LENGTH_SHORT).show(); 
     } 
    } 
+0

ええ、それは動作しますが、ハッピー3Q –

+0

を支援するために使用する方法の例があり、ここで、このLibrary

をチェックアウトして:) – Tony