3分钟
5.2实施步骤
实施步骤
步骤1:创建Module,命名为Ex5_1_2。
步骤2:布局文件上添加一个TextView,命名为tvAlarm。清单略。
步骤3:修改MainActivity类,清单如下。
表5-2-1 Ex5_1_2 MainActivity.java 清单
package com.example.ex5_2_2;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
SensorManager manager;
Sensor mAccerometer;
TextView tvAlarm;
//存放初始值和当前值。
private float[] slient = new float[3];
private float[] current = new float[3];
//表示在手机静止之前等待的时间。
private static int iWait = 0;
//移动精度
private float accuracy = 0.5f;
//是否在移动
private boolean isMoving = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvAlarm = (TextView) findViewById(R.id.tvAlarm);
manager = (SensorManager) getSystemService(SENSOR_SERVICE);
mAccerometer = manager.getDefaultSensor(
Sensor.TYPE_ACCELEROMETER);
}
@Override
protected void onResume() {
super.onResume();
Log.i("test", "into resume");
iWait = 0;
manager.registerListener(listener, mAccerometer,
SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onStop() {
manager.unregisterListener(listener);
super.onStop();
}
SensorEventListener listener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
iWait++;
//当前值
current[0] = event.values[0];
current[1] = event.values[1];
current[2] = event.values[2];
String s = "";
//给用户一点时间放手机,iWait=10的时候为初始化状态。
if (iWait <= 20) {
s = s + "init : waiting ....,iWait=" + iWait + "\n";
//初始值。
slient[0] = event.values[0];
slient[1] = event.values[1];
slient[2] = event.values[2];
} else {
for (int i = 0; i < slient.length; i++) {
if (Math.abs(slient[i] - current[i]) > accuracy) {
Log.i("test", slient[i] + "....." + current[i]);
isMoving = true;
if (isMoving) {
alarm();
}
}
}
}
s = "\n iWait = " + iWait;
s = s + "\nx=" + current[0];
s = s + "\ny=" + current[1];
s = s + "\nz=" + current[2];
tvAlarm.setText(s);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};
/**
* 报警
*/
private void alarm() {
Log.i("test", " 手机被移动.....报警中...");
Toast.makeText(MainActivity.this, "响铃中.... ",
Toast.LENGTH_SHORT).show();
}
} 步骤4:在手机上测试运行并观察结果
学员评价