人体感应(红外感应)

article/2025/10/15 15:25:26

一、需求描叙

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



http://chatgpt.dhexx.cn/article/dEOgmB14.shtml

相关文章

Arduino 使用人体红外感应模块 HC-SR501

通过这篇文章&#xff0c;可以了解到以下内容&#xff1a; HC-SR501 传感器的基本信息及接线方法HC-SR501 跳线选择的两种时间模式HC-SR501 简单功能实验 HC-SR501 传感器的基本信息及接线方法 HC-SR501 是一款基于热释电效应的人体热释运动传感器&#xff0c;能检测到人体或…

HC-SR501人体红外感应模块程序

当感应到时&#xff0c;输出一个高电平。这里我对io口进行了配置&#xff0c;要不然读不到高电平。建议大家以后养成习惯&#xff0c;对io口进行配置&#xff0c;stm32中会用到。 在这里我额外提下&#xff0c;一般在stm32中 浮空输入 芯片内部没有接上下拉电阻。由于其输入阻…

单片机之人体感应传感器原理与实现

人体红外传感器&#xff0c;是一种新型传感器&#xff0c;能够有效的检测出周围环境的状态。 第一&#xff1a;人体红外模块工作原理 人体都有恒定的体温&#xff0c;一般在37度&#xff0c;所以会发出特定波长10UM左右的红外线&#xff0c;被动式红外探头就是靠探测人体发射的…

【电路】自用人体感应灯(HC-SR501人体感应模块)

文章目录 低成本人体感应灯需求分析器件清单参数测量HC-SR501人体感应模块LED灯板 方案设计思路简介原理图PCB设计 成品 低成本人体感应灯 需求分析 老旧小区地下室没有灯&#xff0c;找钥匙不方便&#xff0c;地理环境因素使用声音传感灯易发生误触。 需要满足的需求&#x…

HC-SR501 人体红外感应模块

资料下载&#xff1a;http://pan.baidu.com/s/1bnkxeoR 完美版HC-SR501是基于红外线技术的自动控制模块&#xff0c;采用德国原装进口LHI778探头设计&#xff0c;灵敏度高&#xff0c;可靠性强&#xff0c;超低电压工作模式&#xff0c;广泛应用于各类自动感应电器设备&#x…

Arduino与人体感应模块

工具&#xff1a; 1.Arduino 开发板* 1 2.人体感应模块传感器 * 1 这个人体感应传感器有三个引脚&#xff0c;分别是VCC&#xff0c;OUT&#xff0c;GND&#xff0c;同之前的红外线传感器一样输出的是数字信号&#xff0c;所以要将OUT接入digital pwm引脚&#xff0c;这里我接…

SR505人体感应模块

实物外观 正&#xff1a; 反&#xff1a; 功能介绍 基于红外线的一个传感器&#xff0c;检测到人体的移动会输出高电平信号&#xff0c;持续8s左右&#xff0c;若人在其感应范围内长时间保持不动&#xff08;或者不在其感应范围内&#xff09;会输出低电平信号。 使用 该…

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

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

【传感器模块】 HC-SR501 人体红外感应模块 热释电 红外传感器

一、模块介绍 产品特点&#xff1a; HC-SR501是基于红外线技术的自动控制模块&#xff0c;采用德国原装进口LHI778 探头设计&#xff0c;灵敏度高&#xff0c;可靠性强&#xff0c;超低电压工作模式&#xff0c;广泛应用于各类自动感应电器设备&#xff0c;尤其是干电池供电的…

红外人体感应传感器SR602模块使用说明

​一&#xff0e;HC-SR602模块 红外人体感应传感器HC-SR602是基于红外线技术的自动控制模块&#xff0c;专用于感应周围人体的存在。该模块相较于HC-SR501&#xff0c;灵敏度较高&#xff0c;抗干扰能力大&#xff0c;且简单易用。 二.HC-SR602模块主要参数 工作电压&#xff1…

【单片机基础篇】 人体红外感应传感器模块

概述 红外热释电传感器是一款基于热释电效应的人体热释运动传感器&#xff0c;能检测到人体或动物身上发出的红外线&#xff0c;配合菲涅尔透镜能使传感器探测范围更远更广。可在控制器上编程应用&#xff0c;通过3P传感器连接线插接到专用传感器扩展板上使用&#xff0c;可以轻…

【单片机】人体感应模块

文章目录 前言模块介绍&#xff08;可跳过&#xff09;模块使用代码&#xff1a;h文件代码&#xff1a;c文件代码使用方法补充介绍&#xff08;可/不可重复触发&#xff09; 代码获取 前言 大家好&#xff0c;我是林白柏&#xff1b; 希望你看完之后&#xff0c;能有所收获&a…

人体红外传感模块原理分析

数字热释电传感器是将传统热释电传感器的敏感元与信号处理芯片集成化设计&#xff0c;将敏感元与 IC 芯片集成封装到传感器屏蔽罩内部&#xff0c;敏感元通过感应外界人体移动产生的红外信号&#xff0c;以差分输入的方式传送到高精度的数字智能处理芯片进行处理&#xff0c;信…

人体红外传感器HC-SR501

在学习STM32系列的芯片时&#xff0c;算是第一次和开发板打交道&#xff0c;所以很多时候不知道如何查看引脚和相关功能&#xff0c;虽然只是借助外设进行一些实验&#xff0c;但开始的时候还是感到很困难。 而且学习的过程中越来越感受到知识的积累是一个十分漫长的过程&…

HC-SR501人体感应模块介绍

HC-SR501人体感应模块简介 HC-SR501是基于红外线技术的自动控制模块&#xff0c;采用德国原装进口 LHI778 探头设计&#xff0c;灵敏度高&#xff0c;可靠性强&#xff0c;超低电压工作模式&#xff0c;广泛应用于各类自动感应电器设备&#xff0c;尤其是干电池供电的自动控制产…

c语言换行符不起作用,回车符与换行符问题——C语言

回车符(carriage return,’\r’)与换行符 (line feed,’\n’) 换行对应的ASCII码值是10,回车符对应的ASCII码值是13,需要注意的是用户按下回车键时,对于不同的字符输入函数,读取的字符不同,下面上代码 测试一: int main() {char ch; ch = getchar(); printf("%d\n&q…

JavaScript字符串换行符与空格符

今天遇到个逻辑 后端传过来一个对象数组 要将每一个下标下的匹配信息拼接成一个字符串 然后输出出来 但是 每个信息之间要换行 突然就蒙了 泥马 js字符串怎么换行来着&#xff1f; 后面总算是找到了 js换行是 \r 或者 \n 标签是 <br/>参考代码如下 let name 你好java\…

css 换行符,CSS秘密花园: 插入换行符

《CSS Secrets》是@Lea Verou最新著作,这本书讲解了有关于CSS中一些小秘密。是一本CSSer值得一读的一本书,经过一段时间的阅读,我、@南北和@彦子一起将在W3cplus发布一系列相关的读后感,与大家一起分享。 需要通过CSS插入换行符的情况,通常出现在list列表定义中,如下图所,…

Vue js换行符在div渲染变成空格的问题

在js里更改全局变量时加入换行符&#xff0c;但在div里引用渲染失效。 </-- 在div里引用全局变量text --> <div> {{this.text}} </div>data() {return {// 全局变量初始值中有换行符text: 1\n给我换行&#xff01;&#xff01;&#xff01;,} }methods: {//…