package cn.edu.chd.service; import android.app.Service; import android.content.Context; import android.content.Intent; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.os.IBinder; import android.os.Vibrator; import android.util.Log; import cn.edu.chd.yitu.ChooseModel; /** * @author Rowand jj * *ҡһҡ����app�ķ��� */ public class ShakeService extends Service { private SensorManager manager = null; /** * ���������� */ private Sensor sensor = null; private ShakeSensorListener mListener = null; private static final String TAG = "ShakeService"; @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { initSensor(); manager.registerListener(mListener, sensor, SensorManager.SENSOR_DELAY_UI); super.onCreate(); } @Override public void onDestroy() { super.onDestroy(); manager.unregisterListener(mListener, sensor); } /** * ��ʼ�������� */ private void initSensor() { manager = (SensorManager) this.getSystemService(SENSOR_SERVICE); sensor = manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); Vibrator vi = (Vibrator) this.getSystemService(VIBRATOR_SERVICE); mListener = new ShakeSensorListener(vi, this); } public class ShakeSensorListener implements SensorEventListener { private Vibrator vi; private Context context; public ShakeSensorListener(Vibrator vi,Context context) { this.vi = vi; this.context = context; } @Override public void onSensorChanged(SensorEvent event) { int type = event.sensor.getType(); float[] values = event.values; float x = values[0]; float y = values[1]; float z = values[2]; Log.i(TAG, "x:" + x + "y:" + y + "z:" + z); Log.i(TAG, "Math.abs(x):" + Math.abs(x) + "Math.abs(y):" + Math.abs(y) + "Math.abs(z):" + Math.abs(z)); if (type == Sensor.TYPE_ACCELEROMETER) { int value = 18;//��ֵ if (x >= value || x <= -value || y >= value || y <= -value || z >= value || z <= -value) { vi.vibrate(100);//�� //����Ӧ�� Intent intent = new Intent(context,ChooseModel.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } } }