【代码】Android|获取压力传感器、屏幕压感数据(大气压、原生和Processing)

这篇具有很好参考价值的文章主要介绍了【代码】Android|获取压力传感器、屏幕压感数据(大气压、原生和Processing)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

首先需要分清自己需要的是大气压还是触摸压力,如果是大气压那么就是TYPE_PRESSURE,可以参考https://source.android.google.cn/docs/core/interaction/sensors/sensor-types?hl=zh-cn。如果是触摸压力就是另一回事,我需要的是触摸压力。

不过我整错了,一开始做成了大气压,后来又先做了原生的才发现Processing已经实现了,那么现在把两种代码都贴一下吧。

如果你和我一样都是用Processing-Android的,请你直接看最后一种方法,前面都别看了

压力传感器

import android.app.Activity;
import android.os.Bundle;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;

public class PressureSensorActivity extends Activity implements SensorEventListener {
    private SensorManager sensorManager;
    private Sensor pressureSensor;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
        pressureSensor = sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE);
    }

    @Override
    protected void onResume() {
        super.onResume();
        sensorManager.registerListener(this, pressureSensor, SensorManager.SENSOR_DELAY_NORMAL);
    }

    @Override
    protected void onPause() {
        super.onPause();
        sensorManager.unregisterListener(this);
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        float pressure = event.values[0];
        // 使用压力值
    }
}

需要注意的是这些部分:

import android.app.Activity;
import android.os.Bundle;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;

...

	private SensorManager sensorManager;
    private Sensor pressureSensor;
...

		sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
        pressureSensor = sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE);
    }

    @Override
    protected void onResume() {
        super.onResume();
        sensorManager.registerListener(this, pressureSensor, SensorManager.SENSOR_DELAY_NORMAL);
    }

    @Override
    protected void onPause() {
        super.onPause();
        sensorManager.unregisterListener(this);
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        float pressure = event.values[0];
        // 使用压力值
    }

其他的按常规写就行了。

屏幕压感

这个需要分两种情况,一种情况是不带processing的时候写的,另一种是在processing-Android的基础上写的。我是需要结合processing的。但是我不幸的是我两种都写了。

原生Android

注:附带一点GPT的说明,不然我怕就贴个代码太枯燥了。

在安卓平台上,"压感"通常指的是触摸屏幕时的压力感应,这与气压传感器(通常用于测量环境气压)是不同的。如果你的平板支持触摸压力(也称为力度或压感级别),那么这通常是通过触摸事件而不是传感器事件来获取的。

要处理触摸事件中的压力,你需要覆盖 View 的 onTouchEvent(MotionEvent event) 方法。MotionEvent 对象包含与触摸相关的所有数据,包括压力。这里是如何实现它的一个基本例子:

@Override
public boolean onTouchEvent(MotionEvent event) {
    // 获取动作类型
    int action = event.getActionMasked();

    // 获取触摸事件的压力值
    float pressure = event.getPressure();

    // 根据触摸事件类型处理压力值
    switch (action) {
        case MotionEvent.ACTION_DOWN:
        case MotionEvent.ACTION_MOVE:
        case MotionEvent.ACTION_UP:
            // 在这里处理压力值,例如打印出来
            Log.d("Pressure", "Current pressure: " + pressure);
            break;
    }

    return true; // 表示此事件已被处理
}

请注意,这段代码应该添加到你的视图或活动中,具体取决于你想要处理触摸事件的位置。onTouchEvent 方法在用户触摸屏幕时被调用,event.getPressure() 会返回当前触摸点的压力值,通常范围是从0(没有压力)到1(最大压力),但实际的最大值可能取决于具体设备。

另外,不是所有的设备都支持触摸压力,这取决于具体的硬件。如果你在上述代码中始终得到相同的压力值(例如,始终是1),那可能是你的设备不支持压力感应,或者支持的压力范围非常有限。在这种情况下,你可能需要检查设备规格,或者使用其他类型的输入来增强用户体验。

注:这代码俺也不知道怎么用,应该是贴在主活动Activity就能用了。

Processing压感

Processing-Android压感呢,有两种实现方式,一种是直接重写它的压感类,是能用的但是不是很好用,因为它会覆盖其他的事件,这让人糟心,因为其他的事件全部都会废掉;另一种是非常非常简单,正常人都不会想到。

GPT说重写压感事件函数

如果你在使用 Processing(看起来你的代码是基于 Processing 库或框架),处理 MotionEvent 的方式可能会有所不同。在 Processing 中,你通常会重写 mousePressed(), mouseDragged() 等方法来处理触摸事件,而不是直接处理 MotionEvent。

然而,如果你需要直接访问 MotionEvent 对象,你可以在 Processing 中重写 surfaceTouchEvent(MotionEvent event) 方法。这个方法在 Processing 环境中被调用,当有触摸事件发生时,传递给你一个 MotionEvent 对象。例如:

public void surfaceTouchEvent(MotionEvent event) {
    int action = event.getActionMasked();
    float x = event.getX();
    float y = event.getY();
    float pressure = event.getPressure();

    // 处理不同的触摸事件
    switch (action) {
        case MotionEvent.ACTION_DOWN:
            // 处理按下动作
            break;
        case MotionEvent.ACTION_MOVE:
            // 处理移动动作
            break;
        case MotionEvent.ACTION_UP:
            // 处理抬起动作
            break;
        // 可以添加更多的case来处理其他事件类型
    }
}

贴到Processing中间,然后拿平板的笔一写啊,真的能用!
android 获取屏幕压力值,代码,android

帅。

但是随后我就发现我的其他和touch相关的事件全部失效了。

坏。

Github倾情推荐的touches数组

大佬的贡献:https://github.com/processing/processing-android/issues/226

如果不想看英文那么我简单翻译一下这个issue的意思:
大佬说:这个touch事件问题这么多,我给改了一下,暴露出来了touches数组,常用功能呢这里都有,用的时候直接调用就可以了。
大佬(谦虚.jpg):应该可以浅浅解决某某某、某某某、某某这三个issue。

所以就是这样,使用这个就行了。具体使用方式示例:

// get pressure 取第一个touches的压力值
for (int i = 0; i < touches.length; i++) {
  pressure = touches[i].pressure;
  break;
}

其中的touches不是未定义的变量,而是它自带的,就和width、height一样,能直接用。

就很简单,非常简单,让我感觉上面所有的努力都是sb。文章来源地址https://www.toymoban.com/news/detail-841359.html

到了这里,关于【代码】Android|获取压力传感器、屏幕压感数据(大气压、原生和Processing)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • LabVIEW多通道压力传感器实时动态检测

    LabVIEW多通道压力传感器实时动态检测 介绍了一种基于LabVIEW的多通道压力传感器实时动态检测系统,解决压阻式压力传感器温度补偿过程的复杂度,提高测量的准确性。通过自动轮询检测方法,结合硬件检测模型和多通道检测系统设计,本系统能够实时、准确地测量压阻式压

    2024年02月22日
    浏览(48)
  • Arduino开发之如何连接压力传感器模块?

      在利用Arduino开发过程中,若需知道设备能感知到受到外部按压,设备可以通过压力传感器模块来感知周围环境。本文在【Arduino如何进行开发?】基础上,借鉴现有网络资料,阐述Arduino如何连接压力传感器模块。      压力传感器模块为电阻式薄膜压力传感器模块。

    2023年04月15日
    浏览(59)
  • HX711压力传感器学习(STM32)

    目录 原理图:​ 引脚介绍: HX711介绍工作原理: 程序讲解: 整套工程: VCC和GND引脚分别为HX711芯片的电源输入端口。 VCC引脚是连接到5V或3.3V的正电源,GND引脚是连接到地的负电源。 DOUT是HX711芯片的数据输出端口,它输出经过A/D转换处理后的24位数据。 SCK是HX711芯片的时钟输

    2024年02月05日
    浏览(56)
  • 电子模块|压力传感器模块HX711---硬件介绍

    HX711是一款专为高精度称重传感器而设计的24位A/D转换器芯片。与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。降低了电子秤的整机成本,提高了整机的性能和可靠性

    2024年02月07日
    浏览(45)
  • HX711压力传感器学习一(STM32)

    目录 原理图:​ 引脚介绍: HX711介绍工作原理: 程序讲解: 整套工程: VCC和GND引脚分别为HX711芯片的电源输入端口。 VCC引脚是连接到5V或3.3V的正电源,GND引脚是连接到地的负电源。 DOUT是HX711芯片的数据输出端口,它输出经过A/D转换处理后的24位数据。 SCK是HX711芯片的时钟输

    2024年02月16日
    浏览(48)
  • STM32读取HX711压力传感器芯片数据

    目录 一、HX711压力传感器芯片介绍 1.1 HX711芯片介绍 1.2 芯片管脚与描述 1.3 芯片特点 二、测量原理 2.1 芯片原理图 2.2 压力传感器输出电压值 2.3 芯片原理概述 2.4 数据输出,输入通道和增益选择时序图 2.5 程序计算原理 2.5.1 如何计算传感器供电电压?  2.5.2 如何将 AD 值反向转

    2024年04月16日
    浏览(45)
  • 虹科新品 | 用于医疗应用的压力和气体流量传感器

    ES Systems在 创新MEMS 方面拥有丰富的经验,设计了 高质量和高性能 的气体流量和压力传感器,由于其技术规格, 出色的可靠性 和 有竞争力的价格 ,这些传感器在竞争产品中具有独特的品质。 众所周知,在医疗领域,任何设备的实施都必须满足性能、可靠性和质量的最高标

    2023年04月27日
    浏览(38)
  • 误差放大器的作用(自动调节压差传感器的压力)

    提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档   文章目录 系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入

    2024年02月05日
    浏览(73)
  • 基于STM32F103——XGZP6847D压力传感器+串口打印

    XGZP6847D 型压力传感器尺寸小、易安装,广泛用于医疗电子、汽车电子、消费电子、运动健身器材、 物联网等领域 Reg0x30(测量命令寄存器) Measurement_control2:0( 工作模式 ) 010b ,组合采集模式(一次温度采集后立即进行一次传感器压力信号采集)。 011b ,休眠工作模式(定期的执

    2023年04月24日
    浏览(83)
  • STM32实现薄膜压力传感器数据采集(标准库和HAL库实现)

    单片机型号及压力传感器: STM32F103C8T6 最小系统板 压力传感器选用的是薄膜压力传感器 生活中经常遇到需要测量压力值,因此,考虑到这样的需求从网上买了一个薄膜压力传感器,实物图如下: 柔性薄膜压力传感器的 产品特点 : 超薄,厚度小于0.3mm 响应速度快 寿命长,通

    2024年02月02日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包