中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

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

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

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

目錄

傳感器的定義

三大類型傳感器

1、運動傳感器

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

3、位置傳感器

傳感器開發(fā)框架

1、SensorManager

2、Sensor

3、SensorEvent

4、SensorEventListener

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

1、獲取傳感器信息

1)、獲取傳感器管理器

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

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

2、獲取傳感器傳回數(shù)據(jù)

1)獲得傳感器管理器

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

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

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

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

二、獲取傳感器信息的實例

三、獲取傳感器傳回數(shù)據(jù)的實例

原理


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

傳感器的定義

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

三大類型傳感器

1、運動傳感器

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

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

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

3、位置傳感器

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

傳感器開發(fā)框架

1、SensorManager

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

2、Sensor

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

3、SensorEvent

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

4、SensorEventListener

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

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

1、獲取傳感器信息

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

1)、獲取傳感器管理器

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

SensorManager sm = (SensorManager)getSystemService(SENSOR_SERVICE); 

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

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

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

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

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

2、獲取傳感器傳回數(shù)據(jù)

1)獲得傳感器管理器

SensorManager sm = (SensorManager)getSystemService(SENSOR_SERVICE);

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

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

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

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

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

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

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

????????

  • SENSOR_DELAY_FASTEST——延時:0ms
  • SENSOR_DELAY_GAME——延時:20ms
  • SENSOR_DELAY_UI——延時:60ms
  • SENSOR_DELAY_NORMAL——延時:200ms

具體代碼如下:

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

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

sm. unregisterListener(this);

二、獲取傳感器信息的實例

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

新建項目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() + "個傳感器,分別有:\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());}
}

效果如下:

?

三、獲取傳感器傳回數(shù)據(jù)的實例

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

原理

?

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

?

新建項目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="滾動角"android:textSize="18sp"android:textStyle="bold" /></LinearLayout></androidx.constraintlayout.widget.ConstraintLayout>

修改MainActivity代碼如下:

????????

SENSOR_DELAY_FASTEST最靈敏

SENSOR_DELAY_GAME 游戲的時候,不過一般用這個就夠了

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("滾動角(沿Y軸):" + (float) (Math.round(event.values[2] * 100)) / 100);}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}@Overrideprotected void onDestroy() {super.onDestroy();sManager.unregisterListener(this);}
}

效果如下:

?

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

http://www.risenshineclean.com/news/35823.html

相關(guān)文章:

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