android加速度传感器简单实现

1、Activity类

public class MainActivity extends Activity {

	private TextView content;

	private Button btn;
	private boolean flag = false;

	private float max = 0;
	private float min = 0;
	private long startTime = -1;

	private Random r = new Random();

	// 抽签
	private String[] allResults = { "大吉", "小吉", "凶", "大凶" };

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		content = (TextView) findViewById(R.id.content);
		btn = (Button) findViewById(R.id.btn);

		SensorManager manager = (SensorManager) getSystemService(SENSOR_SERVICE);
		// 建立传感器对象
		Sensor s = manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
		// 设置监听,当传感器中的值有变化时,自动进行监听反馈
		manager.registerListener(new SensorEventListener() {

			@Override
			public void onSensorChanged(SensorEvent event) {
				if (flag) {
					if (startTime == -1) {
						startTime = System.currentTimeMillis();
					}
					// 当有变化时,自动执行此方法
					// 通过event可以取得三个方向的加速度值
					float[] values = event.values;
					// StringBuilder builder = new StringBuilder();
					// builder.append(values[0] + "\r\n");
					// builder.append(values[1] + "\r\n");
					// builder.append(values[2] + "\r\n");
					//
					// content.setText(builder.toString());

					if (values[0] > max) {
						max = values[0];
					}
					if (values[0] < min) {
						min = values[0];
					}

					if (max > 10 && min < -10) {
						// 可以出结果了
						flag = false;

						// 随机生成
						int index = r.nextInt(4);
						content.setText("结果为:" + allResults[index]);
						startTime = -1;
					}

					if (System.currentTimeMillis() - startTime > 2000) {
						flag = false;
						startTime = -1;
						Toast.makeText(MainActivity.this, "超时,请重新摇",
								Toast.LENGTH_SHORT).show();
					}

				}
			}

			@Override
			public void onAccuracyChanged(Sensor sensor, int accuracy) {
			}
		}, s, SensorManager.SENSOR_DELAY_GAME);

		btn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				flag = true;
				content.setText("请开始摇");
			}
		});
	}
}
2、布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/content"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="开始"
        android:layout_alignParentBottom="true" />

</RelativeLayout>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值