【代碼】Android|獲取壓力傳感器、屏幕壓感數據(大氣壓、原生和Processing)

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

不過我整錯了,一開始做成了大氣壓,后來又先做了原生的才發現Processing已經實現了,那么現在把兩種代碼都貼一下吧。

如果你和我一樣都是用Processing-Android的,請你直接看最后一種方法,前面都別看了

文章目錄

    • 壓力傳感器
    • 屏幕壓感
      • 原生Android
      • Processing壓感
        • GPT說重寫壓感事件函數
        • Github傾情推薦的touches數組

壓力傳感器

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;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);pressureSensor = sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE);}@Overrideprotected void onResume() {super.onResume();sensorManager.registerListener(this, pressureSensor, SensorManager.SENSOR_DELAY_NORMAL);}@Overrideprotected void onPause() {super.onPause();sensorManager.unregisterListener(this);}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}@Overridepublic 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);}@Overrideprotected void onResume() {super.onResume();sensorManager.registerListener(this, pressureSensor, SensorManager.SENSOR_DELAY_NORMAL);}@Overrideprotected void onPause() {super.onPause();sensorManager.unregisterListener(this);}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}@Overridepublic 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中間,然后拿平板的筆一寫啊,真的能用!
在這里插入圖片描述

帥。

但是隨后我就發現我的其他和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。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/718182.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/718182.shtml
英文地址,請注明出處:http://en.pswp.cn/news/718182.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

軟考 系統分析師系列知識點之系統分析的任務、難點與要求(1)

所屬章節&#xff1a; 第10章. 系統分析 第1節. 系統分析概述 系統分析階段也稱為邏輯設計階段&#xff0c;其任務是根據系統設計書所確定的范圍&#xff0c;對現有系統進行詳細設計調查&#xff0c;描述現有系統的業務流程&#xff0c;指出現有系統的局限性和不足之處&#x…

Qt+libhv實現各類網絡通信方式(TCP-UDP-HTTP-WebSocket)

文章目錄 TCP通信服務端客戶端UDP通信服務端客戶端HTTP通信服務端客戶端WebSocket通信服務端客戶端參考項目下載為了實現程序的跨進程和跨主機通信,我們通常會采用網絡通信進行數據傳輸。常用的通信方式包括TCP/UDP、HTTP、WebSocket等,這些網絡通信方式各有優劣有的是短連接…

事故預測 | Matlab基于FuzzySVR模糊支持向量機多特征變量事故預測

事故預測 | Matlab基于FuzzySVR模糊支持向量機多特征變量事故預測 目錄 事故預測 | Matlab基于FuzzySVR模糊支持向量機多特征變量事故預測預測效果基本描述程序設計參考資料 預測效果 基本描述 Matlab基于FuzzySVR模糊支持向量機多特征變量事故預測 運行環境: Matlab2023及以 上…

C++經典日期類實現

學完C類和對象以及四個默認成員函數&#xff0c;就可以來嘗試自己實現一下日期類。完成日期類的各種功能&#xff0c;并加強自己的代碼能力。 日期類實現 定義一個日期類 // 文件:Date.h #pragma once #include <iostream> using std::cout; using std::endl;//定義日…

C語言數組作為函數參數

有兩種情形&#xff1b; 一種是數組元素作為函數實參&#xff1b;一種是數組名作為函數參數&#xff1b; 新建一個VC6單文檔工程&#xff1b; void printshz(int , CDC* , int , int ); double getav(int a[5]); ...... void CShzcshView::OnDraw(CDC* pDC) {CShzcshDoc* pDo…

Pthon圖像處理Opencv初步:色彩轉換、打開攝像頭

文章目錄 處理流程顏色空間二值圖像攝像頭 python圖像處理教程&#xff1a;初步&#x1f4f7;插值變換&#x1f4f7;形態學處理&#x1f4f7;濾波 處理流程 opencv是跨平臺圖像處理庫&#xff0c;為許多編程語言提供了接口&#xff0c;Python自然在列&#xff0c;但在使用pip…

32單片機基礎:PWM驅動舵機,直流電機

PWM驅動舵機 接線圖如上圖所示。注意&#xff0c;舵機的5V 線不能接到面包板上的正極&#xff0c;面包板上的正極只有3.3V,是STM32提供的&#xff0c;所以要接到STLINK的5V, 我們如何驅動舵機呢&#xff1f;由之前我們介紹原理知道&#xff0c;要輸出如下圖對應的PWM波形才行…

AWTK 開源串口屏開發(11) - 天氣預報

# AWTK 開源串口屏開發 - 天氣預報 天氣預報是一個很常用的功能&#xff0c;在很多設備上都有這個功能。實現天氣預報的功能&#xff0c;不能說很難但是也絕不簡單&#xff0c;首先需要從網上獲取數據&#xff0c;再解析數據&#xff0c;最后更新到界面上。 在 AWTK 串口屏中…

數字革命的浪潮:Web3如何改變一切

隨著數字技術的不斷發展&#xff0c;人類社會正迎來一場前所未有的數字革命浪潮。在這個浪潮中&#xff0c;Web3技術以其去中心化、安全、透明的特性&#xff0c;正在逐漸改變著我們的生活方式、商業模式以及社會結構。本文將深入探討Web3技術如何改變一切&#xff0c;以及其所…

volatile關鍵字的作用 以及 單例模式(餓漢模式與懶漢模式的區別及改進)

文章目錄 &#x1f4a1;volatile保證內存可見性&#x1f4a1;單例模式&#x1f4a1;餓漢模式&#x1f4a1;懶漢模式&#x1f4a1;懶漢模式多線程版&#x1f4a1;volatile防止指令重排序 &#x1f4a1;volatile保證內存可見性 Volatile 修飾的變量能夠保證“內存可見性”以及防…

解決連接工具Mobaxterm連接錯誤Connection timed out----VMware里Linux端口號固定

錯誤&#xff1a;Connection timed out 原因&#xff1a; 沒有固定ip&#xff0c;網絡斷開&#xff0c;再次連接就是新的IP 解決&#xff1a; 再次測試連接&#xff0c;彈出這個就代表成功了

CUDA 中的線程組織

明朝那些事中有一句話&#xff1a;我之所以寫徐霞客是想告訴你&#xff0c;所謂千秋霸業萬古流芳&#xff0c;與一件事相比&#xff0c;其實都算不了什么&#xff0c;這件事情就是——用你喜歡的方式度過一生。 我們以最簡單的 CUDA 程序&#xff1a;從 GPU 中輸出 Hello World…

實現一個簡單的哈希映射功能

說在前面 &#x1f388;哈希表大家應該都經常用到吧&#xff0c;那么大家有沒有想過哈希表是怎么實現的呢&#xff1f;今天讓我們一起從一道簡單的題目來初步了解一個哈希表的簡單原理。 目的 不使用任何內建的哈希表庫設計一個哈希映射&#xff08;HashMap&#xff09;。 實…

bert 相似度任務訓練完整版

任務 之前寫了一個相似度任務的版本&#xff1a;bert 相似度任務訓練簡單版本,faiss 尋找相似 topk-CSDN博客 相似度用的是 0&#xff0c;1&#xff0c;相當于分類任務&#xff0c;現在我們相似度有評分&#xff0c;不再是 0,1 了&#xff0c;分數為 0-5&#xff0c;數字越大…

EasyRecovery易恢復2024免費文件數據恢復軟件下載

一、軟件概述 EasyRecovery易恢復中文文件數據恢復軟件是一款專為中文用戶設計的強大數據恢復工具。該軟件致力于幫助用戶從各種存儲設備中恢復因各種原因丟失的中文文件&#xff0c;如文檔、圖片、視頻、音頻等。憑借其核心技術和多年的研發經驗&#xff0c;EasyRecovery易恢…

C語言計算誤碼率

#include <stdio.h> #include <stdlib.h> bool dayintrue; //是否打印 int main(){ int i,k,g0; int n10,n20; int good0,bad0; double rate; (dayin)? printf("打印具體數據\n"):printf("不打印具體數據\n\n");…

STM32-SPI通信協議

串行外設接口SPI&#xff08;Serial Peripheral Interface&#xff09;是由Motorola公司開發的一種通用數據總線。 在某些芯片上&#xff0c;SPI接口可以配置為支持SPI協議或者支持I2S音頻協議。 SPI接口默認工作在SPI方式&#xff0c;可以通過軟件把功能從SPI模式切換…

Python·算法·每日一題(3月4日)最長公共前綴

題目 編寫一個函數來查找字符串數組中的最長公共前綴。 如果不存在公共前綴&#xff0c;返回空字符串 “”。 示例 示例 1&#xff1a; 輸入&#xff1a;strs ["flower","flow","flight"] 輸出&#xff1a;"fl"示例 2&#xff1a;…

【數據結構與算法】常見排序算法(Sorting Algorithm)

文章目錄 相關概念1. 冒泡排序&#xff08;Bubble Sort&#xff09;2. 直接插入排序&#xff08;Insertion Sort&#xff09;3. 希爾排序&#xff08;Shell Sort&#xff09;4. 直接選擇排序&#xff08;Selection Sort&#xff09;5. 堆排序&#xff08;Heap Sort&#xff09;…

【腦科學相關合集】有關腦影像數據相關介紹的筆記及有關腦網絡的筆記合集

【腦科學相關合集】有關腦影像數據相關介紹的筆記及有關腦網絡的筆記合集 前言腦模板方面相關筆記清單 基于腦網絡的方法方面數據基本方面 前言 這里&#xff0c;我將展開有關我自己關于腦影像數據相關介紹的筆記及有關腦網絡的筆記合集。其中&#xff0c;腦網絡的相關論文主要…