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

原创 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();
        }
    });
}

Android 开发之实现公交卡扣费功能

对公交卡实现扣费功能主要分以下几个部分: 1.读取公交卡的余额 2.扣费 3.重获Tac 4.获取PSAMID 5.获取相应的参数 首先我们先看下实现这些功能的案例布局 ...
  • Boom_Jia
  • Boom_Jia
  • 2016年09月28日 20:29
  • 836

Android的重力传感器(3轴加速度传感器)简单实例

重力感应主要是依靠手机的加速度传感器(accelerometer)来实现         在Android的开发中一共有八种传感器但是不一定每一款真机都支持这些传感器。因为很多功能用户根本不care...
  • itas109
  • itas109
  • 2013年08月23日 17:18
  • 6312

Android传感器学习一

最近几天在开发一款App,其中就用到了一些传感器中的知识,之前对传感器不是很了解,只能对其进行分析学习,现在已经初步成型了,等着其他人的模块,结合起来就OK了。(2013.11.12) 传感器综述 ...
  • hirohrj123
  • hirohrj123
  • 2013年11月12日 19:39
  • 1776

无线传感网学习体会

无线传感网需要标准化     我觉得大多数嵌入式工程师可能误解了标准化这个名词,把标准化理解为可怕的"死板"于“僵化”,实际上标准化意味着“开放”和“互操作性”,如果亲看到这句话也就意味着在互联网中那...
  • xukai871105
  • xukai871105
  • 2013年06月22日 21:09
  • 5974

Android项目:手机安全卫士(7)—— 手机防盗功能

Android项目:手机安全卫士(7)—— 手机防盗功能1 介绍前面已经将手机防盗的界面、业务代码逻辑完成了,现在就是最后的功能实现了,手机防盗主要有这么几个功能: 短信:发送警报短信,接收命令短信 ...
  • xwdoor
  • xwdoor
  • 2016年03月08日 15:13
  • 1383

Android开发学习之路--传感器之初体验

说到传感器,还是有很多的,有加速度啊,光照啊,磁传感器等等。当然android手机之所以称为智能手机,少不了这几款传感器的功劳了。下面就学习下了,这里主要学习光照,加速度和磁。     新建工程emS...
  • eastmoon502136
  • eastmoon502136
  • 2016年02月22日 22:02
  • 2714

坑爹的公交卡充值的流程

我的公司是一家软硬件结合的公司 简单的给您介绍一下我们公司的产品: 我们公司的产品是智能手环,像小米手环一样的,用户在京东上买了手环之后,下载一个APP,通过蓝牙和手环连接,可以实现刷公交卡乘车的...
  • qq_16485855
  • qq_16485855
  • 2017年05月02日 16:30
  • 490

公交车到站预测1----python处理csv文件

之前处理csv一直用pandas,今天发现,pandas虽然强大,但是灵活度少了很多,有时候想实现一些简单的功能可能要花很大的代价。大道至简,返璞归真。就像这几天用excel一样,利用简单的规则就可以...
  • qtlyx
  • qtlyx
  • 2016年01月14日 22:03
  • 847

图书防盗磁条原理

书店、图书馆、超市、商场所用的磁条原理,包括射频、声磁,着重讨论了电磁波磁条。...
  • younggift
  • younggift
  • 2013年10月26日 15:42
  • 7723

通过.htaccess 对网站图片的基本防盗处理

前提:公司是个媒体类网站,对于外网图片要求一些基本的防盗链处理 综合考虑后采用了 .htaccess 配合 网站锁右键 进行一个基本的防盗链处理。 apache如何开启htacce...
  • liuhelong12
  • liuhelong12
  • 2015年12月16日 10:30
  • 711
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:传感器学习案例 之 公交防盗
举报原因:
原因补充:

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