package com.zzx.factorytest;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.ProgressBar;
import android.widget.TextView;
public class GyroscopeActivity extends TestItemBaseActivity implements SensorEventListener {
private static String TAG = "GyroscopeActivity";
private SensorManager mSensorManager;
private Sensor gyroscope;
private ProgressBar mX, mY, mZ;
private TextView mXTextView, mYTextView, mZTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_gyroscope);
super.onCreate(savedInstanceState);
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
initView();
}
private void initView() {
mX = (ProgressBar) findViewById(R.id.x);
mY = (ProgressBar) findViewById(R.id.y);
mZ = (ProgressBar) findViewById(R.id.z);
mXTextView = (TextView) findViewById(R.id.x_textview);
mYTextView = (TextView) findViewById(R.id.y_textview);
mZTextView = (TextView) findViewById(R.id.z_textview);
mX.setMax(10);
mY.setMax(10);
mZ.setMax(10);
mXTextView.setText(getResources().getString(R.string.gyroscope_x, 0.0));
mYTextView.setText(getResources().getString(R.string.gyroscope_y, 0.0));
mZTextView.setText(getResources().getString(R.string.gyroscope_z, 0.0));
}
@Override
protected void onResume() {
super.onResume();
if (null == gyroscope) {
gyroscope = mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
}
mSensorManager.registerListener(this, gyroscope, SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onRestart() {
super.onRestart();
}
@Override
protected void onStart() {
super.onStart();
}
@Override
protected void onPause() {
super.onPause();
if (null != gyroscope) {
mSensorManager.unregisterListener(this, gyroscope);
}
}
@Override
protected void onStop() {
super.onStop();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_GYROSCOPE) {
// Log.d(TAG, "x:" + event.values[0] + ",y:" + event.values[1] + ",z:" + event.values[2]);
int roundX = Math.round(Math.abs(event.values[0]) + 0.5f);
int roundY = Math.round(Math.abs(event.values[1]) + 0.5f);
int roundZ = Math.round(Math.abs(event.values[2]) + 0.5f);
mX.setProgress(roundX);
mY.setProgress(roundY);
mZ.setProgress(roundZ);
mXTextView.setText(getResources().getString(R.string.gyroscope_x, event.values[0]));
mYTextView.setText(getResources().getString(R.string.gyroscope_y, event.values[1]));
mZTextView.setText(getResources().getString(R.string.gyroscope_z, event.values[2]));
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
Log.d(TAG, sensor.getName() + "," + accuracy);
}
}