国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站建設(shè)策劃實(shí)訓(xùn)總結(jié)谷歌優(yōu)化推廣

網(wǎng)站建設(shè)策劃實(shí)訓(xùn)總結(jié),谷歌優(yōu)化推廣,godaddy 安裝wordpress,什么網(wǎng)站做兼職可靠目錄 傳感器的定義 三大類型傳感器 1、運(yùn)動(dòng)傳感器 2、環(huán)境傳感器 3、位置傳感器 傳感器開發(fā)框架 1、SensorManager 2、Sensor 3、SensorEvent 4、SensorEventListener 一、使用傳感器開發(fā)步驟 1、獲取傳感器信息 1)、獲取傳感器管理器 2)、獲取設(shè)備的傳感器對(duì)象列…

目錄

傳感器的定義

三大類型傳感器

1、運(yùn)動(dòng)傳感器

2、環(huán)境傳感器

3、位置傳感器

傳感器開發(fā)框架

1、SensorManager

2、Sensor

3、SensorEvent

4、SensorEventListener

一、使用傳感器開發(fā)步驟

1、獲取傳感器信息

1)、獲取傳感器管理器

2)、獲取設(shè)備的傳感器對(duì)象列表

3)、迭代獲取Sensor對(duì)象,調(diào)用對(duì)應(yīng)方法獲取相關(guān)信息

2、獲取傳感器傳回?cái)?shù)據(jù)

1)獲得傳感器管理器

2)調(diào)用特定方法獲得需要的傳感器

3)實(shí)現(xiàn)SensorEventListener接口,重寫onSensorChanged和onAccuracyChanged方法

4)SensorManager對(duì)象調(diào)用registerListener注冊(cè)監(jiān)聽器

5)監(jiān)聽器的取消注冊(cè)

二、獲取傳感器信息的實(shí)例

三、獲取傳感器傳回?cái)?shù)據(jù)的實(shí)例

原理


??????? 傳感器的應(yīng)用如微信的搖一搖功能、NFC、手機(jī)自帶的指南針等等。下面將學(xué)習(xí)Android傳感器的使用。

傳感器的定義

????????一種物理設(shè)備或者生物器官,能夠探測、感受外界的信號(hào),物理?xiàng)l件(如光,熱, 濕度)或化學(xué)組成(如煙霧),并將探知的信息傳遞給其他的設(shè)備或者器官。

三大類型傳感器

1、運(yùn)動(dòng)傳感器

????????–運(yùn)動(dòng)傳感器測量加速力和旋轉(zhuǎn)力,它們包括加速度計(jì),重力傳感器,陀螺儀和旋轉(zhuǎn)矢量傳感器。

2、環(huán)境傳感器

????????–環(huán)境傳感器測量各種周圍環(huán)境情況,如環(huán)境溫度、氣壓、光強(qiáng)、濕度等。包括氣壓計(jì),光度計(jì)和溫度計(jì)。

3、位置傳感器

????????–位置傳感器測量設(shè)備的物理位置信息,包括方向傳感器和磁力計(jì)。

傳感器開發(fā)框架

1、SensorManager

????????–可以使用此類創(chuàng)建傳感器服務(wù)的實(shí)例。這個(gè)類提供了多種方法來訪問和列出傳感器,注冊(cè)和注銷傳感器事件監(jiān)聽器,并獲取方向信息。該類還提供了幾個(gè)傳感器常量,用于報(bào)告?zhèn)鞲衅鞯木?#xff0c;設(shè)置數(shù)據(jù)采集速率和校準(zhǔn)傳感器。

2、Sensor

????????–可以使用此類創(chuàng)建特定傳感器的實(shí)例。這個(gè)類提供了各種方法,讓你確定一個(gè)傳感器的能力。

3、SensorEvent

????????–系統(tǒng)使用此類創(chuàng)建傳感器事件對(duì)象,該對(duì)象提供有關(guān)傳感器事件的信息。傳感器事件對(duì)象包括以下信息:原始傳感器數(shù)據(jù),生成事件的傳感器類型,數(shù)據(jù)的準(zhǔn)確性以及事件的時(shí)間戳。

4、SensorEventListener

????????–可以使用此界面創(chuàng)建兩種回傳方法,當(dāng)傳感器值更改或傳感器準(zhǔn)確度發(fā)生變化時(shí),會(huì)接收通知(傳感器事件)。

一、使用傳感器開發(fā)步驟

1、獲取傳感器信息

??????? 傳感器的開發(fā)首先需要獲取傳感器的一些信息,獲取信息需要以下步驟:

1)、獲取傳感器管理器

????????Android提供了一個(gè)sensorManager管理器,通過這個(gè)類可以獲取到都有哪些傳感器,獲取sensorManager對(duì)象代碼如下:

SensorManager sm = (SensorManager)getSystemService(SENSOR_SERVICE); 

2)、獲取設(shè)備的傳感器對(duì)象列表

????????通過sensorManager管理器的getSensorList()方法,可以獲取傳感器對(duì)象列表,具體代碼如下:

List<Sensor> allSensors = sm.getSensorList(Sensor.TYPE_ALL);

3)、迭代獲取Sensor對(duì)象,調(diào)用對(duì)應(yīng)方法獲取相關(guān)信息

for(Sensor s:allSensors){sensor.getName();   //獲得傳感器名稱sensor.getType();     //獲得傳感器種類sensor.getVendor();    //獲得傳感器供應(yīng)商sensor.getVersion();    //獲得傳感器版本sensor.getResolution();  //獲得精度值sensor.getMaximumRange(); //獲得最大范圍sensor.getPower();        //傳感器使用時(shí)的耗電量 
}

2、獲取傳感器傳回?cái)?shù)據(jù)

1)獲得傳感器管理器

SensorManager sm = (SensorManager)getSystemService(SENSOR_SERVICE);

2)調(diào)用特定方法獲得需要的傳感器

????????調(diào)用SensorManager 對(duì)象的getDefaultSensor方法,獲取指定類型的傳感器,例如這里使用光線傳感器,具體代碼:

Sensor mSensorOrientation = sm.getDefaultSensor(Sensor.TYPE_ORIENTATION);

3)實(shí)現(xiàn)SensorEventListener接口,重寫onSensorChanged和onAccuracyChanged方法

①:onSensorChanged(SensorEvent event);該方法在傳感器的值發(fā)生改變的時(shí)候調(diào)用,其參數(shù)是一個(gè)SensorEvent 對(duì)象,通過該對(duì)象的values屬性可以獲取傳感器的值,該值是一個(gè)數(shù)組,該變量最多有三個(gè)元素,而且傳感器不同,對(duì)應(yīng)元素代表的含義也不同
②:onAccuracyChanged(Sensor sensor , int accuracy);當(dāng)傳感器的進(jìn)度發(fā)生改變時(shí)會(huì)回調(diào),
參數(shù)說明:
sensor:傳感器對(duì)象
accuracy:表示傳感器新的精度

@Override
public void onSensorChanged(SensorEvent event) {final float[] _Data = event.values;this.mService.onSensorChanged(_Data[0],_Data[1],_Data[2]);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}

4)SensorManager對(duì)象調(diào)用registerListener注冊(cè)監(jiān)聽器

????????為傳感器注冊(cè)監(jiān)聽事件,通過調(diào)用sensorManager對(duì)象的registerListener()方法來注冊(cè)監(jiān)聽事件。

??????? 第一個(gè)參數(shù)是上下文對(duì)象,第二個(gè)是傳感器對(duì)象,第三個(gè)是傳感器的延時(shí)時(shí)間的精密程 度,越精密越耗電。

????????

  • SENSOR_DELAY_FASTEST——延時(shí):0ms
  • SENSOR_DELAY_GAME——延時(shí):20ms
  • SENSOR_DELAY_UI——延時(shí):60ms
  • SENSOR_DELAY_NORMAL——延時(shí):200ms

具體代碼如下:

sm.registerListener(mContext, mSensorOrientation, android.hardware.SensorManager.SENSOR_DELAY_UI);

5)監(jiān)聽器的取消注冊(cè)

sm. unregisterListener(this);

二、獲取傳感器信息的實(shí)例

??????? 先將前面第一個(gè)步驟:獲取傳感器信息,實(shí)例演示一下如何使用。

新建項(xiàng)目SensorDemo1。

修改activity_main.xml代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><ScrollViewandroid:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/txt_show"android:layout_width="match_parent"android:layout_height="match_parent" /></ScrollView></androidx.constraintlayout.widget.ConstraintLayout>

修改MainActivity代碼如下:

public class MainActivity extends AppCompatActivity {private TextView txt_show;private SensorManager sm;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);txt_show = (TextView) findViewById(R.id.txt_show);List<Sensor> allSensors = sm.getSensorList(Sensor.TYPE_ALL);StringBuilder sb = new StringBuilder();sb.append("此手機(jī)有" + allSensors.size() + "個(gè)傳感器,分別有:\n\n");for(Sensor s:allSensors){switch (s.getType()){case Sensor.TYPE_ACCELEROMETER:sb.append(s.getType() + " 加速度傳感器(Accelerometer sensor)" + "\n");break;case Sensor.TYPE_GYROSCOPE:sb.append(s.getType() + " 陀螺儀傳感器(Gyroscope sensor)" + "\n");break;case Sensor.TYPE_LIGHT:sb.append(s.getType() + " 光線傳感器(Light sensor)" + "\n");break;case Sensor.TYPE_MAGNETIC_FIELD:sb.append(s.getType() + " 磁場傳感器(Magnetic field sensor)" + "\n");break;case Sensor.TYPE_ORIENTATION:sb.append(s.getType() + " 方向傳感器(Orientation sensor)" + "\n");break;case Sensor.TYPE_PRESSURE:sb.append(s.getType() + " 氣壓傳感器(Pressure sensor)" + "\n");break;case Sensor.TYPE_PROXIMITY:sb.append(s.getType() + " 距離傳感器(Proximity sensor)" + "\n");break;case Sensor.TYPE_TEMPERATURE:sb.append(s.getType() + " 溫度傳感器(Temperature sensor)" + "\n");break;default:sb.append(s.getType() + " 其他傳感器" + "\n");break;}sb.append("設(shè)備名稱:" + s.getName() + "\n 設(shè)備版本:" + s.getVersion() + "\n 供應(yīng)商:"+ s.getVendor() + "\n\n");}txt_show.setText(sb.toString());}
}

效果如下:

?

三、獲取傳感器傳回?cái)?shù)據(jù)的實(shí)例

?????????? 實(shí)現(xiàn)前面第二個(gè)步驟:獲取傳感器傳回?cái)?shù)據(jù),實(shí)例演示一下如何使用。下面實(shí)現(xiàn)采集方向傳感器數(shù)據(jù)。

原理

?

X 軸的方向 :沿著屏幕水平方向從左到右,如果手機(jī)如果不是是正方形的話,較短的邊需要水平 放置,較長的邊需要垂直放置。值域 [-180, 180]
Y 軸的方向 :從屏幕的左下角開始沿著屏幕的的垂直方向指向屏幕的頂端。值域 [-90, 90]
Z 軸的方向 :當(dāng)水平放置時(shí),指向天空的方向。值域 [0, 360]

?

新建項(xiàng)目SensorDemo2。

修改activity_main.xml代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:padding="5dp"><TextViewandroid:id="@+id/tv_value1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:text="方位角"android:textSize="18sp"android:textStyle="bold" /><TextViewandroid:id="@+id/tv_value2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:text="傾斜角"android:textSize="18sp"android:textStyle="bold" /><TextViewandroid:id="@+id/tv_value3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:text="滾動(dòng)角"android:textSize="18sp"android:textStyle="bold" /></LinearLayout></androidx.constraintlayout.widget.ConstraintLayout>

修改MainActivity代碼如下:

????????

SENSOR_DELAY_FASTEST最靈敏

SENSOR_DELAY_GAME 游戲的時(shí)候,不過一般用這個(gè)就夠了

SENSOR_DELAY_NORMAL 比較慢。

SENSOR_DELAY_UI 最慢的

public class MainActivity extends AppCompatActivity implements SensorEventListener {private TextView tv_value1;private TextView tv_value2;private TextView tv_value3;private SensorManager sManager;private Sensor mSensorOrientation;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);sManager = (SensorManager) getSystemService(SENSOR_SERVICE);mSensorOrientation = sManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);sManager.registerListener(this, mSensorOrientation, SensorManager.SENSOR_DELAY_UI);bindViews();}private void bindViews() {tv_value1 = (TextView) findViewById(R.id.tv_value1);tv_value2 = (TextView) findViewById(R.id.tv_value2);tv_value3 = (TextView) findViewById(R.id.tv_value3);}@Overridepublic void onSensorChanged(SensorEvent event) {tv_value1.setText("方位角(沿Z軸):" + (float) (Math.round(event.values[0] * 100)) / 100);tv_value2.setText("傾斜角(沿X軸):" + (float) (Math.round(event.values[1] * 100)) / 100);tv_value3.setText("滾動(dòng)角(沿Y軸):" + (float) (Math.round(event.values[2] * 100)) / 100);}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}@Overrideprotected void onDestroy() {super.onDestroy();sManager.unregisterListener(this);}
}

效果如下:

?

下篇文章將通過靠近屏幕黑屏和計(jì)步器兩個(gè)案例實(shí)踐一下傳感器的應(yīng)用。

http://aloenet.com.cn/news/35823.html

相關(guān)文章:

  • 專業(yè)網(wǎng)站建設(shè)哪里好葫島百度seo
  • 企業(yè)網(wǎng)站 留言板站長之家seo查找
  • 織夢網(wǎng)站如何做seo班級(jí)優(yōu)化大師免費(fèi)下載
  • 廣州網(wǎng)站建設(shè)廣州網(wǎng)絡(luò)推廣公司如何建立一個(gè)網(wǎng)站
  • ftp網(wǎng)站劫持微博推廣怎么做
  • 網(wǎng)站建設(shè)違約怎么優(yōu)化網(wǎng)站排名才能起來
  • 公司網(wǎng)站建站哪個(gè)系統(tǒng)好用網(wǎng)站建設(shè)seo優(yōu)化培訓(xùn)
  • flashcs6網(wǎng)站建設(shè)成品網(wǎng)站貨源1
  • 培訓(xùn)公司網(wǎng)站建設(shè)圖片外鏈生成
  • 個(gè)人博客網(wǎng)站總結(jié)漯河seo推廣
  • 簡單大氣網(wǎng)站欣賞數(shù)據(jù)推廣公司
  • 福州市人民政府網(wǎng)免費(fèi)seo網(wǎng)站推薦一下
  • 有網(wǎng)站地圖的網(wǎng)站怎樣淘寶seo排名優(yōu)化
  • 做卡通的素材網(wǎng)站jsurl轉(zhuǎn)碼
  • 公司做網(wǎng)站找誰公司做網(wǎng)站找誰整合營銷傳播案例分析
  • 工商局網(wǎng)站怎么做增項(xiàng)網(wǎng)絡(luò)推廣都需要做什么
  • 兩學(xué)一做 網(wǎng)站源碼app注冊(cè)推廣團(tuán)隊(duì)
  • 信譽(yù)比較好的商家可做網(wǎng)站蘇州seo優(yōu)化
  • 萬象園網(wǎng)站建設(shè)與開發(fā)阿里云com域名注冊(cè)
  • 武漢公司網(wǎng)站建設(shè)高端網(wǎng)站建設(shè)哪家便宜
  • 重慶造價(jià)信息網(wǎng)官網(wǎng)首頁長沙seo外包
  • 搜搜提交網(wǎng)站入口長沙網(wǎng)站seo報(bào)價(jià)
  • 游戲推廣網(wǎng)站怎么做南京網(wǎng)絡(luò)營銷服務(wù)
  • 做英文網(wǎng)站 賺美元網(wǎng)絡(luò)推廣費(fèi)計(jì)入什么科目
  • 榆林做網(wǎng)站多少錢網(wǎng)絡(luò)游戲推廣怎么做
  • 網(wǎng)絡(luò)公司 網(wǎng)站建設(shè) 小程序關(guān)鍵詞代做排名推廣
  • 自己做網(wǎng)站跟域名怎樣做房地產(chǎn)估價(jià)師考試
  • 免費(fèi)網(wǎng)站注冊(cè)永久2345網(wǎng)址導(dǎo)航電腦版
  • 漢中網(wǎng)站建設(shè)服務(wù)自媒體視頻剪輯培訓(xùn)班
  • 論壇網(wǎng)站用的虛擬主機(jī)深圳外貿(mào)網(wǎng)絡(luò)推廣渠道