亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android實現(xiàn)傳感器功能

 更新時間:2022年09月20日 09:56:45   作者:RKGG愛吃魚  
這篇文章主要為大家詳細介紹了Android實現(xiàn)傳感器功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

Android傳感器概述:動作傳感器、環(huán)境傳感器、位置傳感器等,如方向傳感器(電子羅盤)、重力傳感器(橫縱切換)。Android SDK支持的傳感器并不是每一部Android手機均支持。

動作傳感器:在三個軸上測量加速度和旋轉(zhuǎn)角度,包括加速度、重力、陀螺儀;

環(huán)境傳感器:測量環(huán)境參數(shù),包括濕度、光線、溫度;

位置傳感器:測量設備物理位置,包括方向、磁力。

ASF(Android傳感器框架)功能:確定當前Android設備內(nèi)置傳感器;確定傳感器技術指標,如傳感器測量的最大范圍、制造商等;獲取傳感器回傳數(shù)據(jù),以及定義回傳數(shù)據(jù)的精度;注冊和注銷傳感器事件監(jiān)聽器,用于監(jiān)聽數(shù)據(jù)回傳。

硬件傳感器:加速、溫度、陀螺儀、光線、磁場、重力(視情況而定)、線性加速(視情況而定)、濕度、壓力、臨近、旋轉(zhuǎn)向量

軟件傳感器:方向。

SensorManager類:創(chuàng)建sensor service實例。訪問、枚舉、注冊、注銷監(jiān)聽器、精度、頻率等。

Sensor類:提供獲取傳感器參數(shù)。

SensorEvent類:創(chuàng)建傳感器事件對象,該對象提供與傳感器有關信息,事件對象包括的信息有原始傳感器回傳數(shù)據(jù)、類型、精度以及觸發(fā)事件。

SensorEventListener接口:包含兩個回調(diào)方法,當傳感器回傳值或精度發(fā)生變化時,系統(tǒng)調(diào)用這兩個方法。

動作傳感器(Motion):監(jiān)聽設備動作的傳感器有5個,加速、陀螺儀純硬件傳感器,重力、線性加速、旋轉(zhuǎn)。監(jiān)測Android手機的動作,如傾斜、震動等。設備的移動通常是對用戶輸入的直接反應,如游戲中控制小球;設備所處物理環(huán)境也會反應在設備的動作上,如手機放在車上。所有動作傳感器均會返回3個浮點數(shù)值(長度為3的數(shù)組)。

重力Demo:設備從左到右推動,X軸加速度為正值;反向Y軸加速度為正值,若向上以Am/s方加速度推動,則Z軸加速度為A+9.81,若計算實際加速度,需要減9.81。

位置傳感器:磁場、方向傳感器,鄰近傳感器(測量設備正面到某一個鄰近物體的距離)。對于確定設備在真實世界中的物理位置非常有用。前兩者返回三個值,鄰近返回一個值。

方向傳感器:

SensorEvent.values[0]:繞著Z軸旋轉(zhuǎn)的角度。若Y軸正對北方(正常拿手機方向),該值為0,反之,為南,該值180,Y軸指向東方,該值90,反之270。

SensorEvent.values[1]:繞著X軸旋轉(zhuǎn)的角度,當從Z軸正方向朝Y軸正方向,該值為正值,反之,為負值,該值在-180到180中間變動。

SensorEvent.values[2]:繞著Y軸旋轉(zhuǎn)的角度。當從Z軸正方向朝X軸正方向,該值為正值,反之,為負值,該值在-180到180中間變動。

鄰近傳感器:SensorEvent.values[0]:手機正面距離鄰近物體的距離(CM)。

環(huán)境傳感器:Android提供了4個傳感器檢測外部環(huán)境,如濕度、溫度、壓強、光線,并不是所有傳感器均有,需要提前判斷。環(huán)境傳感器只返回一個值。

TYPE_AMBIENT_TEMPERATURE:event.values[0]  ℃  溫度

TYPE_LIGHT:event.values[0]  lx  光線

TYPE_PRESSURE:event.values[0]  hPa  壓強

TYPE_RELATIVE_HUMIDITY:event.values[0]  RH(%)  濕度

一、獲得當前設備所有的傳感器列表

import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import java.util.List;
?
public class MainActivity extends AppCompatActivity {
? ? private TextView tvSensor;
? ? private SensorManager sensorManager;
? ? @Override
? ? protected void onCreate(Bundle savedInstanceState) {
? ? ? ? super.onCreate(savedInstanceState);
? ? ? ? setContentView(R.layout.activity_main);
? ? ? ? tvSensor = (TextView) findViewById(R.id.tvSensor);
? ? ? ? sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
? ? ? ? List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ALL);
? ? ? ? for (Sensor sensor:sensors){
? ? ? ? ? ? tvSensor.append(sensor.getName()+"\n");
? ? ? ? }
? ? }
}

二、動作傳感器示例

import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
?
public class MainActivity extends AppCompatActivity implements SensorEventListener {
? ? private TextView tvAccelerometer;
? ? private SensorManager sensorManager;
? ? private float[] gravity = new float[3];
? ? @Override
? ? protected void onCreate(Bundle savedInstanceState) {
? ? ? ? super.onCreate(savedInstanceState);
? ? ? ? setContentView(R.layout.activity_main);
? ? ? ? tvAccelerometer = (TextView) findViewById(R.id.tvAccelerometer);
? ? ? ? sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
? ? }
?
? ? @Override
? ? public void onSensorChanged(SensorEvent event) {
? ? ? ? switch (event.sensor.getType()){
? ? ? ? ? ? case Sensor.TYPE_ACCELEROMETER:
? ? ? ? ? ? ? ? final float alpha = (float)0.8;
? ? ? ? ? ? ? ? gravity[0] = alpha*gravity[0]+(1-alpha)*event.values[0];
? ? ? ? ? ? ? ? gravity[1] = alpha*gravity[1]+(1-alpha)*event.values[1];
? ? ? ? ? ? ? ? gravity[2] = alpha*gravity[2]+(1-alpha)*event.values[2];
? ? ? ? ? ? ? ? String accelerometer = "加速度\n"+"X:"+(event.values[0]-gravity[0])+"\n"+"Y:"+
? ? ? ? ? ? ? ? ? ? ? ? (event.values[1]-gravity[1])+"\n"+"Z:"+(event.values[2]-gravity[2]);
? ? ? ? ? ? ? ? Log.d("Z",String.valueOf((event.values[2]-gravity[2])));
? ? ? ? ? ? ? ? tvAccelerometer.setText(accelerometer);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case Sensor.TYPE_GRAVITY:
? ? ? ? ? ? ? ? gravity[0] = event.values[0];
? ? ? ? ? ? ? ? gravity[1] = event.values[1];
? ? ? ? ? ? ? ? gravity[2] = event.values[2];
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case Sensor.TYPE_PROXIMITY:
? ? ? ? ? ? ? ? setTitle(String.valueOf(event.values[0]));
? ? ? ? ? ? default:
? ? ? ? ? ? ? ? break;
? ? ? ? }
? ? }
?
? ? @Override
? ? public void onAccuracyChanged(Sensor sensor, int accuracy) {
?
? ? }
? ? protected void onResume(){
? ? ? ? super.onResume();
? ? ? ? sensorManager.registerListener(this,sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
? ? ? ? ? ? ? ? SensorManager.SENSOR_DELAY_UI);
? ? ? ? sensorManager.registerListener(this,sensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY),
? ? ? ? ? ? ? ? SensorManager.SENSOR_DELAY_FASTEST);
? ? ? ? sensorManager.registerListener(this,sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY),
? ? ? ? ? ? ? ? SensorManager.SENSOR_DELAY_NORMAL);
? ? }
? ? protected void onPause(){
? ? ? ? super.onPause();
? ? ? ? sensorManager.unregisterListener(this);
? ? }
}

以下是小米2s測試效果:

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Android 截圖功能源碼的分析

    Android 截圖功能源碼的分析

    這篇文章主要介紹了Android 截圖功能源碼的分析的相關資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • Android直播軟件搭建之實現(xiàn)背景顏色滑動漸變效果的詳細代碼

    Android直播軟件搭建之實現(xiàn)背景顏色滑動漸變效果的詳細代碼

    這篇文章主要介紹了Android直播軟件搭建之實現(xiàn)背景顏色滑動漸變效果的詳細代碼,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • 詳解Android App中創(chuàng)建ViewPager組件的方法

    詳解Android App中創(chuàng)建ViewPager組件的方法

    這篇文章主要介紹了詳解Android App中創(chuàng)建ViewPager組件的方法,ViewPager最基本的功能就是可以使視圖滑動,需要的朋友可以參考下
    2016-03-03
  • 淺談Android 的線程和線程池的使用

    淺談Android 的線程和線程池的使用

    本篇文章主要介紹了淺談Android 的線程和線程池,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Android中Parcel用法詳解

    Android中Parcel用法詳解

    這篇文章主要介紹了Android中Parcel用法,結合實例形式較為詳細的分析了Parcel數(shù)據(jù)容器的原理與使用方法,需要的朋友可以參考下
    2016-06-06
  • Android實用的代碼片段 常用代碼總結

    Android實用的代碼片段 常用代碼總結

    這篇文章主要介紹了Android實用的代碼片段 常用代碼總結,需要的朋友可以參考下
    2014-09-09
  • Android 文件數(shù)據(jù)存儲實例詳解

    Android 文件數(shù)據(jù)存儲實例詳解

    這篇文章主要介紹了Android 文件數(shù)據(jù)存儲實例詳解的相關資料,這里附有實例代碼,幫助大家學習理解,需要的朋友可以參考下
    2016-12-12
  • Android編程基于Contacts讀取聯(lián)系人的方法(附demo源碼)

    Android編程基于Contacts讀取聯(lián)系人的方法(附demo源碼)

    這篇文章主要介紹了Android編程基于Contacts讀取聯(lián)系人的方法,實例分析了Contacts讀取的實現(xiàn)方法及權限設置方法,并附帶了完整實例供讀者下載參考,需要的朋友可以參考下
    2015-12-12
  • Flutter 使用fluro的轉(zhuǎn)場動畫進行頁面切換

    Flutter 使用fluro的轉(zhuǎn)場動畫進行頁面切換

    在實際應用中,我們常常會對不同的頁面采取不同的轉(zhuǎn)場動畫,以提高頁面切換過程中的用戶體驗。例如,微信的掃碼后在手機上確認登錄頁面就是從底部彈出的,而大部分頁面的跳轉(zhuǎn)都是從右向左滑入。通過這種形式區(qū)分不同的轉(zhuǎn)場場景,從而給用戶更多的趣味性以提高用戶體驗。
    2021-06-06
  • android view轉(zhuǎn)Bitmap生成截圖的方法

    android view轉(zhuǎn)Bitmap生成截圖的方法

    這篇文章主要介紹了android view轉(zhuǎn)Bitmap生成截圖的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09

最新評論