一、需求描叙

通过打开写的测试的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>

人体感应(红外感应)相关推荐

  1. 热释电人体感应红外报警器设计 - 没人取消报警

    热释电人体感应红外报警器设计 - 没人取消报警 一套完整的毕业设计 已经做出成品 包含原理图 仿真 插立封装的pcb 贴片封装的pcb 完整的c代码 制作过程的照片 视频演示 实物图 开题报告 制作详 ...

  2. STM32与人体红外感应模块的简单使用——入门级

    工作原理 人体有恒定的温度,可以发出10UM的红外波,而人体红外感应模块就可以探测出这些红外波,从而产生电平转换.由此人们可以使用人体红外检测模块来检测是否有人. 模块工作环境 工作电压:5V至20V ...

  3. HC-SR501 人体红外感应模块

    资料下载:http://pan.baidu.com/s/1bnkxeoR 完美版HC-SR501是基于红外线技术的自动控制模块,采用德国原装进口LHI778探头设计,灵敏度高,可靠性强,超低电压工作模 ...

  4. Arduino - 驱动HC-SR501 人体红外感应模块

    参考文章: Arduino - 驱动HC-SR501 人体红外感应模块 Arduino 使用人体红外感应模块 HC-SR501 代码如下: /* Arduino 驱动HC-SR501 人体红外感应模块 ...

  5. 树莓派4B-Python-控制HC_SR501(微型人体红外感应模块)

    树莓派4B-Python-控制HC_SR501(微型人体红外感应模块) 文章目录 树莓派4B-Python-控制HC_SR501(微型人体红外感应模块) 前言 一.微型HC_SR501模块 二.参数介 ...

  6. [转载]HC-SR501 人体红外感应模块

    热释电红外感应模块 原文地址:HC-SR501 人体红外感应模块作者:XingHeStudio 技术参数: 1.工作电压:DC5V至20V 2.静态功耗:65微安 3.电平输出:高3.3V,低0V 4 ...

  7. 树莓派hc sr501 c语言,树莓派人体红外感应模块HC-SR501安装配置

    前言 人体和有生动物每时每刻身体都会想外部辐射红外,这些红外波长在9.6微米的样子.这些辐射出来的红外线可以被人体红外感应模块HC-SR501检测到并变成电信号然后就可以被树莓派处理,结合PYTHON ...

  8. 基于ESP8266的人体红外感应报警系统设计

    一.硬件设计 1. 硬件选型 主控:使用NodeMCU开发板. 人体感应器:使用PIR红外热释电人体感应模块,静态功耗小于0.1mA . 2. 原理图设计 二.软件设计 1. ESP8266程序设计 ...

  9. 微信控制树莓派运行python_Python+树莓派+人体红外感应模块 实现微信监控

    上一篇文章<Python+树莓派 实现微信拍照.摄相机器人>中简单的实现了由手机微信控制树莓派摄像头拍摄照片及录像,并将拍摄文件回传至微信的功能,程序比较简单, 今天要和大家分享的是在上一 ...

最新文章

  1. 如何从Android中的另一个应用程序启动活动
  2. Python中常用的内值方法
  3. mysql中varchar与integer的互转
  4. python数据分析笔记——数据加载与整理
  5. LeetCode 61旋转链表-中等
  6. 什么情况下你的工作最为成功_如何在没有工作经验的情况下获得技术工作
  7. 会计丑闻之后 东芝“迎来”第五次延交财报
  8. Docker的安装及操作
  9. 理解允许定位,音频,网络电话..
  10. 【数字图像处理】直方图规定化(含实现代码)
  11. 索尼rx1r人脸识别_RX1 vs RX1R 索尼黑卡新老机皇画面解析力内战
  12. 百度NLP架构与应用
  13. docker-sync 加速 Laravel Sail 代码同步
  14. STM32单片机新建工程
  15. adt-bundle-mac android 模拟器 sd卡增加文件
  16. C语言union总结
  17. 如何实现ps的批量处理图片
  18. ios7新特性--4
  19. python将图片转矩阵
  20. CATIA Automation 编程初探

热门文章

  1. Golang method 方法详解
  2. Python制作基础学生信息管理系统
  3. 思科2018校招硬件测试笔试试题及答案
  4. 企业员工虚拟股权激励制度
  5. 京东第八批C/C++笔试题10.15第二题答案
  6. chm文件打开是空白页面,可能是文件被锁定,文件解锁方法
  7. 【人工智能】—局部搜索算法、爬山法、模拟退火、局部剪枝、遗传算法
  8. XTU—OJ 1258矩阵
  9. CC2640R2F BLE5.0 CC2640R2BLE5.0开发文档
  10. java接口面试题_7道经典Java接口面试题