传感器学习案例 之 公交防盗

来源:互联网 发布:js注册界面源代码 编辑:程序博客网 时间:2024/04/28 06:46

需求 :当手机从衣服兜里被掏出时,手机响铃报警。

原理 : 使用距离传感器,当距离从 0 变为 1 时,使用 MediaPlayer 播放声音文件报警

步骤
1. 设置布局文件 : 添加一个报警按钮开关,用于开启/停止报警功能
2. 声明成员变量

// 声明 Button 变量private Button bt;// 声明传感器管理器private SensorManager sm;// 声明 MediaPlayerprivate MediaPlayer player;// 声明一个传感器对象private Sensor sensor;// 标记当前防盗功能是否开启private boolean isOpen = false;

3、 使用当前继承 SensorEventListener 并复写抽象方法

@Overridepublic void onSensorChanged(SensorEvent event) {    // 获取距离传感器的值    float value = event.values[0];    if (value > 0) {        try {            // 如果距离大于 0 则播放音乐            player.start();            } catch (Exception e) {            e.printStackTrace();        }    } else {        // 如果距离等于 0 暂停音乐        player.pause();        }    }@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}

4、实现Button的按钮事件 ,点击开启或者关闭音乐

public void click(View view) {    if (isOpen) {// 如果开启        // 暂停音乐        player.pause();        // 使按钮显示提示文字        bt.setText("防盗已经关闭");        // 取消传感器监听        sm.unregisterListener(this);        isOpen = false;    } else {// 如果没有开启        // 播放音乐        player.start();        bt.setText("防盗已经开启");        // 注册传感器监听        sm.registerListener(this, sensor,        SensorManager.SENSOR_DELAY_NORMAL);        isOpen = true;    }}

5、 复写Activity 的onCreate 方法,在该方法里面实现 MediaPlayer的初始化以及传感器的监听

protected void onCreate (Bundle savedInstanceSate){    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    //初始化变量    bt = (Button)findViewById(R.id.bt);    sm = (SensorManager) getSystemService(SENSOR_SERVICE);    //获取距离传感器    sensor = sm.getDefaultSensor(Sensor.TYPE_PROXIMITY);    //创建MediaPlayer对象    player = MediaPlayer.create(this,R.raw.apple);    //给MediaPlayer 设置播放完事事件监听    player.setOnCompletionListener(new OnCompletionListener(){    @Override    public void onCompletion(MediaPlayer mp){        //播放完后重新播放        mp.start();        }    });}
0 0
原创粉丝点击