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

原创 2015年07月10日 20:12:14

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

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

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

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

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

@Override
public 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();
        }
    }

@Override
public 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();
        }
    });
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

当将电容传感器技术用于钱包防盗...

许多人都有过,丢钱包的经历。 毕竟在一些人流量大的场合,很难时时防备。 那在外行走,如何保护自己的钱包呢... 放捕鼠夹? 绑个炸 弹? 还是.....

案例:开发防盗链标签

案例:开发防盗链标签   一、创建一个标签处理类RefererTag.java package com.hbsi.web.tag; import java.io.IOException; i...

JSP标签案例-开发防盗链标签

JSP标签案例-开发防盗链标签   盗链是指服务提供商自己不提供服务内容,通过技术手段绕过其他有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其他服务提供商的服务内容,片区最终用户的...

关于公交系统中运用NFC-TSM技术进行移动支付的解决案例浅析

NFC是Near Field Communication缩写,即近距离无线通讯技术。通俗来说,就是一种近场通信方式。TSM是Trusted Service Manager的简称,字面意思就是可信任服务...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)