Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class MainActivity extends Activity implements SensorEventListener{
- private int mShakeValue;
- private final static int SENSITIVITY = 7;
- private boolean mInitialized;
- private SensorManager mSensorManager;
- private Sensor mAccelerometer;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- mShakeValue = 0;
- setContentView(R.layout.activity_main);
- mInitialized = false;
- mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
- mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
- mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
- final Button button = (Button) findViewById(R.id.button1);
- button.setOnClickListener(new View.OnClickListener() {
- public void onClick(View v) {
- // Resets Shake Value to 0
- TextView numberShakes = (TextView)findViewById( R.id.textView2);
- numberShakes.setText(Integer.toString(0));
- }
- });
- }
- @Override
- public void onConfigurationChanged(Configuration newConfig) {
- super.onConfigurationChanged(newConfig);
- TextView numberShakes = (TextView)findViewById( R.id.textView2);
- numberShakes.setText(numberShakes.getText());
- }
- protected void onResume() {
- super.onResume();
- mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
- }
- protected void onPause() {
- super.onPause();
- mSensorManager.unregisterListener(this);
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.activity_main, menu);
- return true;
- }
- //Volume buttons are overridden
- @Override
- public boolean dispatchKeyEvent(KeyEvent event) {
- int keyCode = event.getKeyCode();
- switch (keyCode) {
- case KeyEvent.KEYCODE_VOLUME_UP:
- case KeyEvent.KEYCODE_VOLUME_DOWN:
- return true;
- default:
- return super.dispatchKeyEvent(event);
- }
- }
- @Override
- public void onSensorChanged(SensorEvent event){
- // alpha is calculated as t / (t + dT)
- // with t, the low-pass filter's time-constant
- // and dT, the event delivery rate
- TextView numberShakes = (TextView)findViewById( R.id.textView2);
- if (!mInitialized) {
- mInitialized = true;
- } else {
- float[] gravity = new float[3];
- float[] linear_acceleration = new float[3];
- final float alpha = (float) 0.8;
- gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0];
- gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1];
- gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2];
- linear_acceleration[0] = event.values[0] - gravity[0];
- linear_acceleration[1] = event.values[1] - gravity[1];
- linear_acceleration[2] = event.values[2] - gravity[2];
- System.out.println(linear_acceleration[0]+" , "+ linear_acceleration[1]+" , "+linear_acceleration[2]+" , ");
- mShakeValue = Integer.parseInt((String) numberShakes.getText());
- if(/*linear_acceleration[0] > SENSITIVITY || linear_acceleration[1] > SENSITIVITY ||*/ linear_acceleration[2] > SENSITIVITY && linear_acceleration[2]>0){
- numberShakes.setText(Integer.toString(++mShakeValue));
- System.out.println(numberShakes);
- }
- }
- }
- @Override
- public void onAccuracyChanged(Sensor sensor, int accuracy){
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment