人体感应(红外感应)
一、需求描叙
通过打开写的测试的app,点击测试的按钮,循环调用控制人体感应的方法来控制人体感应仪器(应该是红外感应)。
二、完成测试程序涉及到的文件:
1.一个xxx.so文件;
这个文件要导入到Android系统的开发机器中(我司是平板开发的,这个文件不了解,只知道要调用到平板上的红外感应时,一定要将此文件导入到系统的system/lib/目录下才行)。
2.一个zhc_human_infrared.java文件
这个文件将会被导入到创建的app的工程目录的src下,然后会报错,根据提示生成相应的包名;根据提示至不报错即可;控制红外的方法在这个文件里面(这是个.java文件下面会附上)。
三、测试app的相关代码
1.MainActivity.java
package com.zhc.demotext;import com.zhc.android.sensor.zhc_human_infrared_interface;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.ToggleButton;
import android.app.Activity;public class MainActivity extends Activity {private zhc_human_infrared_interface infrared;protected Thread mThread1;private ToggleButton mBtn;private TextView retuenedValue;boolean mDone = false;boolean start_sensor_test = true;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mBtn = (ToggleButton) findViewById(R.id.send);retuenedValue = (TextView) findViewById(R.id.returned_value_tv);infrared = new zhc_human_infrared_interface();// 创建线程mThread1 = new Thread() {public void run() {while (true) {if (start_sensor_test) {//这儿是耗时操作,完成之后更新UI; runOnUiThread(new Runnable(){ @Override public void run() { //更新UI //infrared.zhc_human_infrared_get();retuenedValue.setText(infrared.zhc_human_infrared_get()+""); } }); // 睡眠 1 秒try {sleep(1* 1000);} catch (InterruptedException e) {e.printStackTrace();}} else {// 睡眠 100mstry {sleep(1 * 100);} catch (InterruptedException e) {e.printStackTrace();}}}}};mThread1.start();// 2.发送按钮的监听mBtn.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {if (v.getId() == R.id.send) {if (!mDone) {mDone = true;start_sensor_test = true;} else {mDone = false;start_sensor_test = false;mThread1 = null;}}}});}
}
2.zhc_human_infrared.java
package com.zhc.android.sensor;import android.util.Log;public class zhc_human_infrared_interface {static String TAG = "zhc_human_infrared_interface";/* 初始化 JNI 库 */private native int zhc_human_infrared_init();/* 加载库文件 */static {System.loadLibrary("zhc_human_infrared"); }/* 对象创建时初始化 */public zhc_human_infrared_interface(){zhc_human_infrared_init();}/** 函数: zhc_human_infrared_event* 作用: 事件回调* 参数: status: 0:未检测到红外晃动 1:检测到红外晃动 */public void zhc_human_infrared_event(int status){Log.d(TAG, " status = " + status);}/** 函数: zhc_human_infrared_start* 作用: 启动监听* 返回: 0:成功 -1:打开设备失败 -2:读取失败 -3:创建监听线程失败* 说明: zhc_human_infrared_event 将会被回调*/public native int zhc_human_infrared_start();/** 函数: zhc_human_infrared_stop* 作用: 停止监听* 返回: 只会返回 0 * 说明: zhc_human_infrared_event 将不会被回调*/public native int zhc_human_infrared_stop();/** 函数: zhc_human_infrared_get* 作用: 直接获取状态值* 返回: 0:未检测到红外晃动 1:检测到红外晃动 * -1:打开设备失败 -2:读取失败 * 说明: 与回调无关*/public native int zhc_human_infrared_get();
}
3.activity_main.xml
<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" ><TextViewandroid:id="@+id/tv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:text="测试项" /><TextViewandroid:id="@+id/logo_tv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_below="@id/tv"android:text="人体感应测试" /><ToggleButtonandroid:id="@+id/send"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_below="@id/logo_tv"android:textOff="@string/btn_start"android:textOn="@string/btn_stop" /><TextViewandroid:id="@+id/humen_sensor_tv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_below="@id/send"android:text="人体感应测试返回值:" /><TextViewandroid:id="@+id/returned_value_tv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_below="@id/humen_sensor_tv"android:text="__" /></RelativeLayout>
4.strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources><string name="app_name">DemoText</string><string name="btn_start">测试</string><string name="btn_stop">Stop</string><string name="action_settings">Settings</string><string name="hello_world">Hello world!</string></resources>
人体感应(红外感应)相关推荐
- 热释电人体感应红外报警器设计 - 没人取消报警
热释电人体感应红外报警器设计 - 没人取消报警 一套完整的毕业设计 已经做出成品 包含原理图 仿真 插立封装的pcb 贴片封装的pcb 完整的c代码 制作过程的照片 视频演示 实物图 开题报告 制作详 ...
- STM32与人体红外感应模块的简单使用——入门级
工作原理 人体有恒定的温度,可以发出10UM的红外波,而人体红外感应模块就可以探测出这些红外波,从而产生电平转换.由此人们可以使用人体红外检测模块来检测是否有人. 模块工作环境 工作电压:5V至20V ...
- HC-SR501 人体红外感应模块
资料下载:http://pan.baidu.com/s/1bnkxeoR 完美版HC-SR501是基于红外线技术的自动控制模块,采用德国原装进口LHI778探头设计,灵敏度高,可靠性强,超低电压工作模 ...
- Arduino - 驱动HC-SR501 人体红外感应模块
参考文章: Arduino - 驱动HC-SR501 人体红外感应模块 Arduino 使用人体红外感应模块 HC-SR501 代码如下: /* Arduino 驱动HC-SR501 人体红外感应模块 ...
- 树莓派4B-Python-控制HC_SR501(微型人体红外感应模块)
树莓派4B-Python-控制HC_SR501(微型人体红外感应模块) 文章目录 树莓派4B-Python-控制HC_SR501(微型人体红外感应模块) 前言 一.微型HC_SR501模块 二.参数介 ...
- [转载]HC-SR501 人体红外感应模块
热释电红外感应模块 原文地址:HC-SR501 人体红外感应模块作者:XingHeStudio 技术参数: 1.工作电压:DC5V至20V 2.静态功耗:65微安 3.电平输出:高3.3V,低0V 4 ...
- 树莓派hc sr501 c语言,树莓派人体红外感应模块HC-SR501安装配置
前言 人体和有生动物每时每刻身体都会想外部辐射红外,这些红外波长在9.6微米的样子.这些辐射出来的红外线可以被人体红外感应模块HC-SR501检测到并变成电信号然后就可以被树莓派处理,结合PYTHON ...
- 基于ESP8266的人体红外感应报警系统设计
一.硬件设计 1. 硬件选型 主控:使用NodeMCU开发板. 人体感应器:使用PIR红外热释电人体感应模块,静态功耗小于0.1mA . 2. 原理图设计 二.软件设计 1. ESP8266程序设计 ...
- 微信控制树莓派运行python_Python+树莓派+人体红外感应模块 实现微信监控
上一篇文章<Python+树莓派 实现微信拍照.摄相机器人>中简单的实现了由手机微信控制树莓派摄像头拍摄照片及录像,并将拍摄文件回传至微信的功能,程序比较简单, 今天要和大家分享的是在上一 ...
最新文章
- 如何从Android中的另一个应用程序启动活动
- Python中常用的内值方法
- mysql中varchar与integer的互转
- python数据分析笔记——数据加载与整理
- LeetCode 61旋转链表-中等
- 什么情况下你的工作最为成功_如何在没有工作经验的情况下获得技术工作
- 会计丑闻之后 东芝“迎来”第五次延交财报
- Docker的安装及操作
- 理解允许定位,音频,网络电话..
- 【数字图像处理】直方图规定化(含实现代码)
- 索尼rx1r人脸识别_RX1 vs RX1R 索尼黑卡新老机皇画面解析力内战
- 百度NLP架构与应用
- docker-sync 加速 Laravel Sail 代码同步
- STM32单片机新建工程
- adt-bundle-mac android 模拟器 sd卡增加文件
- C语言union总结
- 如何实现ps的批量处理图片
- ios7新特性--4
- python将图片转矩阵
- CATIA Automation 编程初探