国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Android App】物聯網中查看手機支持的傳感器及實現搖一搖功能-加速度傳感器(附源碼和演示 超詳細)

這篇具有很好參考價值的文章主要介紹了【Android App】物聯網中查看手機支持的傳感器及實現搖一搖功能-加速度傳感器(附源碼和演示 超詳細)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

需要源碼請點贊關注收藏后評論區(qū)留言~~~

一、傳感器的種類

傳感器Sensor是一系列感應器的總稱,是Android設備用來感知周圍環(huán)境和運動信息的工具。 因為具體的感應信息依賴于相關硬件,所以雖然Android定義了眾多感應器,但是并非每部手機都能支持這么多感應器。 傳感器一般借助于硬件監(jiān)聽環(huán)境信息改變,有時會結合軟件監(jiān)聽用戶的運動信息。

傳感器常見的種類如下

Sensor類的傳感器類型

傳感器名稱

說明

TYPE_ACCELEROMETER

加速度

常用于搖一搖功能

TYPE_MAGNETIC_FIELD

磁場

TYPE_ORIENTATION

方向

已棄用,取而代之的是getOrientation方法

TYPE_GYROSCOPE

陀螺儀

用來感應手機的旋轉和傾斜

TYPE_LIGHT

光線

用來感應手機正面的光線強弱

TYPE_PRESSURE

壓力

用來感應氣壓

TYPE_PROXIMITY

距離

TYPE_GRAVITY

重力

TYPE_STEP_DETECTOR

步行檢測

用戶每走一步就觸發(fā)一次事件

TYPE_STEP_COUNTER

步行計數

記錄激活后的步伐數

?運行測試App如下? 每臺手機支持的傳感器功能可能不太一樣 讀者可自行測試

【Android App】物聯網中查看手機支持的傳感器及實現搖一搖功能-加速度傳感器(附源碼和演示 超詳細)

?代碼如下

package com.example.iot;

import android.annotation.SuppressLint;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@SuppressLint("DefaultLocale")
public class SensorActivity extends AppCompatActivity {
    private TextView tv_sensor; // 聲明一個文本視圖對象
    private String[] mSensorType = {
            "加速度", "磁場", "方向", "陀螺儀", "光線",
            "壓力", "溫度", "距離", "重力", "線性加速度",
            "旋轉矢量", "濕度", "環(huán)境溫度", "無標定磁場", "無標定旋轉矢量",
            "未校準陀螺儀", "特殊動作", "步行檢測", "計步器", "地磁旋轉矢量",
            "心跳速率", "傾斜檢測", "喚醒手勢", "掠過手勢", "拾起手勢",
            "手腕傾斜", "設備方向", "六自由度姿態(tài)", "靜止檢測", "運動檢測",
            "心跳檢測", "動態(tài)元事件", "未知", "低延遲離體檢測", "低延遲體外檢測"};
    private Map<Integer, String> mapSensor = new HashMap<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sensor);
        tv_sensor = findViewById(R.id.tv_sensor);
        showSensorInfo(); // 顯示手機自帶的傳感器信息
    }

    // 顯示手機自帶的傳感器信息
    private void showSensorInfo() {
        // 從系統(tǒng)服務中獲取傳感管理器對象
        SensorManager mSensorMgr = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        // 獲取當前設備支持的傳感器列表
        List<Sensor> sensorList = mSensorMgr.getSensorList(Sensor.TYPE_ALL);
        String show_content = "當前支持的傳感器包括:\n";
        for (Sensor sensor : sensorList) {
            if (sensor.getType() >= mSensorType.length) {
                continue;
            }
            mapSensor.put(sensor.getType(), sensor.getName());
        }
        for (Map.Entry<Integer, String> map : mapSensor.entrySet()) {
            int type = map.getKey();
            String name = map.getValue();
            String content = String.format("%d %s:%s\n", type, mSensorType[type - 1], name);
            show_content += content;
        }
        tv_sensor.setText(show_content);
    }

}

二、利用加速度傳感器實現搖一搖功能

加速度傳感器是最常見的感應器,大部分智能手機都內置了加速度傳感器。 加速度傳感器運用最廣泛的功能是微信的搖一搖,用戶通過搖晃手機尋找周圍的人。

搖一搖功能實現步驟如下

(1)聲明一個SensorManager對象。

(2)重寫Activity的onResume方法,在該方法中注冊傳感器監(jiān)聽事件。

(3)重寫Activity的onPause方法,在該方法中注銷傳感器事件。

(4)編寫一個傳感器事件監(jiān)聽器,該監(jiān)聽器繼承自SensorEventListener,并實現onSensorChanged和onAccuracyChanged兩個方法。

運行測試效果如下? 搖一下手機 達到系統(tǒng)設定的閾值之后就會顯示如下界面

【Android App】物聯網中查看手機支持的傳感器及實現搖一搖功能-加速度傳感器(附源碼和演示 超詳細)

?代碼如下

package com.example.iot;

import android.annotation.SuppressLint;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.os.Vibrator;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

import com.example.iot.util.DateUtil;

@SuppressLint("SetTextI18n")
public class AccelerationActivity extends AppCompatActivity implements SensorEventListener {
    private TextView tv_shake; // 聲明一個文本視圖對象
    private SensorManager mSensorMgr; // 聲明一個傳感管理器對象
    private Vibrator mVibrator; // 聲明一個震動器對象

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_acceleration);
        tv_shake = findViewById(R.id.tv_shake);
        // 從系統(tǒng)服務中獲取傳感管理器對象
        mSensorMgr = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        // 從系統(tǒng)服務中獲取震動器對象
        mVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
    }

    @Override
    protected void onPause() {
        super.onPause();
        mSensorMgr.unregisterListener(this); // 注銷當前活動的傳感監(jiān)聽器
    }

    @Override
    protected void onResume() {
        super.onResume();
        // 給加速度傳感器注冊傳感監(jiān)聽器
        mSensorMgr.registerListener(this,
                mSensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
                SensorManager.SENSOR_DELAY_NORMAL);
    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { // 加速度變更事件
            // values[0]:X軸,values[1]:Y軸,values[2]:Z軸
            float[] values = event.values;
            if ((Math.abs(values[0]) > 15 || Math.abs(values[1]) > 15
                    || Math.abs(values[2]) > 15)) {
                tv_shake.setText(DateUtil.getNowFullDateTime() + " 我看到你搖一搖啦");
                mVibrator.vibrate(500); // 系統(tǒng)檢測到搖一搖事件后,震動手機提示用戶
            }
        }
    }

    // 當傳感器精度改變時回調該方法,一般無需處理
    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {}

}

創(chuàng)作不易 覺得有幫助請點贊關注收藏~~~文章來源地址http://www.zghlxwxcb.cn/news/detail-486065.html

到了這里,關于【Android App】物聯網中查看手機支持的傳感器及實現搖一搖功能-加速度傳感器(附源碼和演示 超詳細)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 使用 Qt for Android 獲取并利用手機傳感器數據(下篇)使用C++實現功能

    使用 Qt for Android 獲取并利用手機傳感器數據(下篇)使用C++實現功能

    在上一篇,我們搭建了開發(fā)環(huán)境。本篇,使用C++代碼真正實現功能。我們使用UDP協(xié)議從手機上指定發(fā)送的目的地、端口。效果如下圖,完整工程參考https://gitcode.net/coloreaglestdio/qtcpp_demo/-/tree/master/android/sensors2pc: 移動端1 移動端2 桌面 我們建立一個Qt的Widgets程序,添加 positio

    2024年02月13日
    瀏覽(18)
  • 【STM32HAL庫(智能家居)+DHT11傳感器+ESP8266+Things Cloud云平臺+手機APP】

    【STM32HAL庫(智能家居)+DHT11傳感器+ESP8266+Things Cloud云平臺+手機APP】

    ?嗶哩嗶哩視頻效果鏈接:http://【畢業(yè)設計——STM32溫濕度采集系統(tǒng)】 https://www.bilibili.com/video/BV1Hy421i7sk/?share_source=copy_webvd_source=d711fa8bef565aeec8a4d279df8b85aa?~~大家可以給個關注,記得一鍵三連哦~~ 設計是一種基于STM32的無線溫濕度檢測系統(tǒng)以智能化、自動化、高效化為出發(fā)點,

    2024年04月09日
    瀏覽(27)
  • 智能傳感器閱讀筆記-物聯網用智能傳感器技術的發(fā)展重點

    智能傳感器閱讀筆記-物聯網用智能傳感器技術的發(fā)展重點

    物聯網用智能傳感器技術的發(fā)展重點 包含 邊緣計算算法優(yōu)化 、 身份認證算法優(yōu)化 和 能量采集技術 。 圖1??物聯網用智能傳感器技術的發(fā)展重點 邊緣計算算法優(yōu)化 邊緣計算是指在靠近物或數據源頭的一側(傳感器側),采用集檢測、計算、存儲、通信功能于一體的平臺,

    2024年02月20日
    瀏覽(31)
  • 物聯網AI MicroPython傳感器學習 之 HX711稱重傳感器

    物聯網AI MicroPython傳感器學習 之 HX711稱重傳感器

    學物聯網,來萬物簡單IoT物聯網?。?下圖是一款量程為5kg的稱重傳感器,采用懸臂梁方式安裝。傳感器主體結構是一個開孔金屬條,金屬條上下表面各貼有兩個應變電阻,當金屬條受力發(fā)生變形時時,應變電阻的阻值也會隨之發(fā)生變化。電子秤的原理便是根據測量到的電阻變

    2024年02月03日
    瀏覽(36)
  • 物聯網AI MicroPython傳感器學習 之 BMP280氣壓傳感器

    物聯網AI MicroPython傳感器學習 之 BMP280氣壓傳感器

    學物聯網,來萬物簡單IoT物聯網?。?BMP280是博世出品的氣壓傳感器,它集成了壓電壓力傳感單元、信號處理電路及模數轉換器,氣壓值可以通過SPI或I2C讀出,在室內導航、無人機、氣象站等場景有廣泛應用。 本文檔使用I2C通信接口作為本教學文檔輸出。 引腳定義 VCC: 3.3V GND:

    2024年04月12日
    瀏覽(42)
  • 無線傳感器基礎:獲取手機傳感器、加速度

    無線傳感器基礎:獲取手機傳感器、加速度

    一些實驗過程中的疑問: 如何知道設備上有哪些傳感器? 如果手機不支持的傳感器,程序運行往往不會拋出異常,只是無法獲得傳感器傳回的數據。那么如何知道設備上有哪些傳感器可用呢?有兩種方式,一種是直接方式,一種是間接方式。直接方式就是遍歷獲取得到傳感

    2024年02月02日
    瀏覽(37)
  • 物聯網AI MicroPython傳感器學習 之 MLX90614紅外測溫傳感器

    物聯網AI MicroPython傳感器學習 之 MLX90614紅外測溫傳感器

    學物聯網,來萬物簡單IoT物聯網!! MLX90614是一款由邁來芯公司提供的低成本紅外溫度計,用于非接觸式溫度測量,紅外測溫是根據被測物體的紅外輻射能量來確定物體的溫度,不與被測物體接觸,具有不影響被測物體溫度分布場,溫度分辨率高、響應速度快、測溫范圍廣、不

    2024年03月20日
    瀏覽(33)
  • 物聯網之傳感器如何選型

    傳感器的選型是一個涉及多個因素的過程,需要根據具體的應用場景、需求、預算和技術要求來進行綜合考慮。以下是一些建議的步驟和方法,幫助您在自動窗簾系統(tǒng)中進行傳感器選型: (1)明確需求:首先,明確自動窗簾系統(tǒng)的功能需求。例如,您需要控制窗簾的開關、調節(jié)

    2024年04月09日
    瀏覽(32)
  • 物聯網AI MicroPython傳感器學習 之 mpu6050六軸陀螺儀傳感器

    物聯網AI MicroPython傳感器學習 之 mpu6050六軸陀螺儀傳感器

    學物聯網,來萬物簡單IoT物聯網??! MPU6050是一款6軸運動傳感器,它集成了3 軸MEMS 陀螺儀,3 軸MEMS加速度計,以及一個可擴展的數字運動處理器DMP(Digital Motion Processor),可用I2C接口連接一個第三方的數字傳感器,比如磁力計。擴展之后就可以通過其I2C 或SPI 接口輸出一個

    2024年04月17日
    瀏覽(25)
  • 物聯網AI MicroPython傳感器學習 之 ADXL345 3軸加速度傳感器

    物聯網AI MicroPython傳感器學習 之 ADXL345 3軸加速度傳感器

    學物聯網,來萬物簡單IoT物聯網!! ADXL345是一款完整的3軸加速度測量系統(tǒng),可選擇的測量范圍有士2g,士4g,士8g或士16g。它既能測量運動或沖擊導致的動態(tài)加速度,也能測量靜止加速度,例如重力加速度,這樣的特性讓它可作為傾斜傳感器使用。該傳感器還具備單擊 /雙擊

    2024年03月26日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包