1. 感測器的定義.分類.作用分別是什麼
一、定義:感測器(英文名稱:transcer/sensor)是一種檢測裝置,能感受到被測量的信息,並能將感受到的信息,按一定規律變換成為電信號或其他所需形式的信息輸出,以滿足信息的傳輸、處理、存儲、顯示、記錄和控制等要求。
二、分類依據:
1、按用途;
2、按原理;
3、按輸出信號;
4、按其製造工藝;
5、按測量目;
6、按其構成;
7、按作用形式。
三、作用:人們為了從外界獲取信息,必須藉助於感覺器官。而單靠人們自身的感覺器官,在研究自然現象和規律以及生產活動中它們的功能就遠遠不夠了。為適應這種情況,就需要感測器。因此可以說,感測器是人類五官的延長,又稱之為電五官。 新技術革命的到來,世界開始進入信息時代。在利用信息的過程中,首先要解決的就是要獲取准確可靠的信息,而感測器是獲取自然和生產領域中信息的主要途徑與手段。
2. android重力感測器怎麼用
package com.example.example;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView grivaty;
private SensorManager sensorMgr = null;
private float x,y,z;
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initUI();
}
private void initUI() { // TODO
Auto-generated method stub grivaty = (TextView)findViewById(R.id.grivaty); //通過服務得到感測器管理對象
sensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE); //得到重力感測器實例
//TYPE_ACCELEROMETER 加速度感測器(重力感測器)類型。
//TYPE_ALL 描述所有類型的感測器。
//TYPE_GYROSCOPE 陀螺儀感測器類型
//TYPE_LIGHT 光感測器類型
//TYPE_MAGNETIC_FIELD 恆定磁場感測器類型。
//TYPE_ORIENTATION 方向感測器類型。
//TYPE_PRESSURE 描述一個恆定的壓力感測器類型
//TYPE_PROXIMITY 常量描述型接近感測器
//TYPE_TEMPERATURE 溫度感測器類型描述
final Sensor sensor = sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); SensorEventListener lsn = new SensorEventListener() { @SuppressWarnings("deprecation") //感測器獲取值改變時響應此函數
public void onSensorChanged(SensorEvent e) { x = e.values[SensorManager.DATA_X]; y = e.values[SensorManager.DATA_Y];
z = e.values[SensorManager.DATA_Z];
// getsensor();
grivaty.setText("x=" + x + " y=" + y + " z=" + z );//左右x值,左正右負,前後位y值,前負後正
}
public void onAccuracyChanged(Sensor s, int accuracy) { } };
//注冊listener,第三個參數是檢測的精確度
sensorMgr.registerListener(lsn, sensor, SensorManager.SENSOR_DELAY_GAME); } }
布局文件:main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:id="@+id/grivaty" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout>
這是網上網友分享的,簡單整理了一下,你看是否可以幫到你
3. 手機感測器起什麼作用
手機中的感測器是指手機上的那些能夠通過晶元來感應的元器件。
手機上有重力感測器、加速器感測器、距離感測器、光線感測器,分別如下介紹:
1、重力感測器:
透過壓電效應來實現,重力感測器內部有一塊重物與壓電片整合在一起,透過正交兩個方向產生的電壓大小,來計算出水平的方向。
實際運用:運用在手機中時,可用來切換橫屏與直屏方向。在一些游戲中也可以通過重力感測器來實現更豐富的交互控制,比如平衡球、賽車游戲等。
2、加速器感測器:
加速器感測器其實跟重力感測器有些類似,但也有很大的差別。加速度感測器是多個維度測算的,主要測算一些瞬時加速或減速的動作。
實際應用:最典型的就是計步器功能了,加速度感測器可以檢測交流信號以及物體的振動。人在走動的時候會產生一定規律性的振動,而加速度感測器可以檢測振動的過零點,從而計算出人所走的步或跑步所走的步數,從而計算出人所移動的位移,並且利用一定的公式可以計算出卡路里的消耗。
3、距離感測器:
距離感測器的組成非常簡單,由一個紅外LED燈和紅外輻射光線探測器組成。位置大概在手機聽筒的附近。工作原理是:紅外LED燈發出的不可見紅外光,射向附近的物體,然後反射後,最後被紅外輻射光線探測器探測,一般距離感測器是配合光線感測器一起使用的。
實際應用:通話中防止誤操作,在通話時,當耳朵接近距離感測器,感測器接到信號後隨即通過把顯示屏關閉,從而防止用戶在通話過程中,誤觸到屏幕影響通話。
4、光線感測器:
光線感測器其實跟人多眼睛有些相似。人的眼睛在不同光線環境下,能夠調節進入眼睛的光想。而光線感測器則是根據不同光線環境來調整手機屏幕的亮度,從而減低電量的消耗,增強手機的續航能力。
實際應用:手機屏幕亮度自動調節。
5、磁場感測器:
磁場感測器是利用磁阻來測量平面磁場,從而檢測出磁場強度以及方向位置。
實際應用:一般用在常見的指南針或是地圖導航中,幫助手機用戶實現准確定位。
6、陀螺儀感測器:
陀螺儀感測器是一個簡單易用的基於自由空間移動和手勢的定位和控制系統,它原本是運用到直升機模型上,現已被廣泛運用於手機等移動便攜設備。陀螺儀能夠測量沿一個軸或幾個軸動作的角速度,是補充MEMS加速度計(加速度感測器)功能的理想技術。
7、GPS位置感測器:
這個就很簡單了,名字就已經很明確了,GPS模塊主要作用是通過天線來接收到衛星的坐標信息幫用戶定位。
8、指紋感測器:
指紋感測器是實現指紋自動採集的關鍵器件,目前主要分為兩類,光學指紋感測器和半導體指紋感測器。
光學指紋感測器:主要是利用光的折射和反射原理,光從底部射向三棱鏡,並經棱鏡射出,射出的光線在手指表面指紋凹凸不平的線紋上折射的角度及反射回去的光線明暗就會不一樣。CMOS或者CCD的光學器件就會收集到不同明暗程度的圖片信息,就完成指紋的採集。
半導體指紋感測器:這類感測器,無論是電容式或是電感式,其原理類似,在一塊集成有成千上萬半導體器件的「平板」上,手指貼在其上與其構成了電容(電感)的另一面,由於手指平面凸凹不平,凸點處和凹點處接觸平板的實際距離大小就不一樣,形成的電容/電感數值也就不一樣,設備根據這個原理將採集到的不同的數值匯總,也就完成了指紋的採集。
9、氣壓感測器:
將薄膜與變組器或電容連接在一起,當氣壓產生變化時,會導致電阻或電容數值發生變化,藉此量測氣壓的數據。
實際應用:有助於提高GPS的精準度。
4. 智能手機中有哪些感應器 分別是有什麼用的
重力感應器:根據屏幕方向而轉動,游戲的左右移動;光線感應:根據光線的強弱來改變屏幕亮度,和在通話時聽筒貼進耳朵時屏幕就會黑屏,避免誤操作,離開耳朵屏幕又亮起(這裡麵包含了「距離感應器」,距離感應器的作用就只對應這一個功能);溫度感應器,就是用來監測手機電池的溫度和cpu的溫度的,作用個人感覺不是很大;加速感應器,壓力感應器,我手機上沒有,也不知道所起到的作用是什麼;陀螺儀我手機也沒有,也不懂;至於你所說的「電子羅盤」,其實應該叫「地磁感應器」,就像是指南針,需要額外安裝程序才能啟動,比如「指南針」或者「地圖」的程序;一般的安卓手機的標准配備是:光線感應,重力感應,距離感應;陀螺儀,地磁感應一般的中高端都配有;至於加速感應和壓力感應,沒有聽說過;其實日常使用手機,我們很少用到這些感應器,但是有總比沒有好。
5. android應用開發中的感測器SensorManager mSensorManager 抽象類定義疑惑
只是轉換類型,例子中,getSystemService(SENSOR_SERVICE)得到的對象已經實例化。
6. 手機中一般有哪些感測器各起什麼作用
重力感應器:根據屏幕方向而轉動,游戲的左右移動
光線感應:根據光線的強知弱來改變屏幕亮度
距離感應器:在通話時聽筒貼進耳朵時屏幕就會黑屏,避免誤操作,離開耳朵屏幕又亮起
溫度感應器:用來監測手機電池的溫度和cpu的溫度的,溫度異常會自動關機
地磁感應器:就是指南針,比如「指南針」或者「地圖」APP
濕度感應器:天氣預報
氣壓感測器:檢測測量海拔高度
聲音感測器:siri,聲控電話
圖像感測器:自動識別臉部解鎖
指紋感測器:指紋解鎖
7. android 方向感測器的問題,代碼如下。真機測試,重力感測器正常。方向感測器不顯示,請大俠幫忙,謝了
logcat 看看注冊成功了沒有。
8. 如何用手機感測器判斷是否摔倒
用軟體分析G sensor (加速度感測器)的數據,來判定佩戴者已跌倒。要求告訴我們感測器輸出數據滿足什麼條件時,可以判定為佩戴者已跌倒。
感測器佩戴在肩部或腰部。要求誤判率小於3%。
新型手機可檢測老年人意外摔倒
2007-07-11 10:23:24 人氣: 3077 次 作者:Zzyq編輯:Zzyq[爆料] 評論(7)
韓國某電子通訊研究機構近日宣布,一種專為預防老年人摔傷無人知道的新型手機系統已經研製成功,配備這種手機的老年人如果在無人照料的情況下摔倒,手機會自動通知其家人和急救中心。
據悉,這種手機上的感測器會檢測突然移動的動作例如摔倒,然後會發送一個信號到醫院的數據中心,醫院數據中心馬上會撥打該手機詢問當事人是否受傷,如果老人需要援助,醫院數據中心就會把情況報告給急救中心並通知其家人。另外這種手機還支持GPS定位技術,可以幫助急救人員迅速定位事故現場的位置。
韓國電子通信研究院ETRI已經將這項技術轉讓給了通訊公司,預計明年我們就能看到相關產品上市。
ETRI項目組領導Park Soo-jun表示:「當這種感測器能夠做的足夠小的時候,感測器就能安裝在手機扣或者其它附件上面。只要下載一個程序,就能識別用戶所使用的手機,從而可以應用到任何手機上面。」
判斷手機有哪些感測器的辦法
作者:徐福安發表於 2011-5-29 22:30:44 評論(0) 閱讀(1698)
我們可以通過如下三步使用感測器。
(1)編寫一個截獲感測器事件的類。該類必須實現android.hardware.SensorEventListener介面。
(2)獲得感測器管理對象(SensorManager對象)。
(3)使用SensorManager.registerListener方法注冊指定的感測器。
通過上面三步已經搭建了感測器應用程序的框架。而具體的工作需要在SensorEventListener介面的onSensorChanged和onAccuracyChanged方法中完成。SensorEventListener介面的定義如下:
packageandroid.hardware;
public interfaceSensorEventListener
{
//
感測器數據變化時調用
public void onSensorChanged(SensorEventevent);
//
感測器精確度變化時調用
public void onAccuracyChanged(Sensorsensor, int accuracy);
}
復制代碼
SensorManager對象通過getSystemService方法獲得,代碼如下:
SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
復制代碼
通常手機中包含了若干個感測器模塊(如方向感測器、光線感測器等),因此,注冊感測器需要指定感測器的類型,如下面的代碼注冊了光線感測器。
sensorManager.registerListener(this,sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT),
SensorManager.SENSOR_DELAY_FASTEST);
復制代碼
registerListener方法有三個參數。第1個參數是實現SensorEventListener介面的對象。第2個參數用於指定感測器的類型。AndroidSDK預先定義了表示各種感測器的常量,這些常量都被放在Sensor類中。例如,上面代碼中的Sensor.TYPE_LIGHT。第3個參數表示感測器獲得數據的速度。該參數可設置的常量如下:
SENSOR_DELAY_FASTEST:以最快的速度獲得感測器數據。
SENSOR_DELAY_GAME:適合於在游戲中獲得感測器數據。
SENSOR_DELAY_UI:適合於在UI控制項中獲得感測器數據。
SENSOR_DELAY_NORMAL:以一般的速度獲得感測器的數據。
上面四種類型獲得感測器數據的速度依次遞減。從理論上說,獲得感測器數據的速度越快,消耗的系統資源越大。因此建議讀者根本實際情況選擇適當的速度獲得感測器的數據。
如果想停止獲得感測器數據,可以使用unregisterSensor方法注銷感測器事件對象。unregisterSensor方法的定義如下:
public voinregisterListener(SensorEventListener listener)
public voinregisterListener(SensorEventListener listener, Sensor sensor)
復制代碼
unregisterSensor方法有兩個重載形式。第一個重載形式用於注銷所有的感測器對象。第二個重載形式用於注銷指定感測器的事件對象。其中Sensor對象通過SensorManager.getDefaultSensor方法獲得。getDefaultSensor方法只有一個int類型的參數,表示感測器的類型。如Sensor.TYPE_LIGHT表示光線感測器。
注意:一個感測器對像可以處理多個感測器。也就是說,一個實現SensorEventListener介面的類可以接收多個感測器傳回的數據。為了區分不同的感測器,需要使用Sensor.getType方法來獲得感測器的類型。getType方法的將在本節的例子中詳細介紹。
通過SensorManager.getSensorList方法可以獲得指定感測器的信息,也可以獲得手機支持的所有感測器的信息,代碼如下:
//
獲得光線感測器
List<Sensor>sensors = sensorManager.getSensorList(Sensor.TYPE_LIGHT);
//
獲得手機支持的所有感測器
List<Sensor>sensors = sensorManager.getSensorList(Sensor.TYPE_ALL);
復制代碼
下面給出一個完整的例子來演示如何獲得感測器傳回的數據。本例從如下4個感測器獲得數據,同時輸出了測試手機中支持的所有感測器名稱。
加速度感測器(Sensor.TYPE_ACCELEROMETER)
磁場感測器(Sensor.TYPE_MAGNETIC_FIELD)
光線感測器(Sensor.TYPE_LIGHT)
方向感測器(TYPE_ORIENTATION)
本例需要在真機上運行。由於不同的手機可能支持的感測器不同(有的手機並不支持Android SDK中定義的所有感測器),因此,如果運行程序後,無法顯示某個感測器的數據,說明當前的手機並不支持這個感測器。筆者已使用Google Nexus S測試了本例。如果讀者使用的也是GoogleNexus S,則會輸出如圖1類似的信息。
圖1 獲得感測器傳回的數據
本例的完整代碼如下:
package mobile.android. sensor;
import java.util.List;
import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView;
public class Main extends Activity implements SensorEventListener
{
private TextView tvAccelerometer;
private TextView tvMagentic;
private TextView tvLight;
private TextView tvOrientation;
private TextView tvSensors;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 獲得SensorManager對象
SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
// 注冊加速度感測器
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_FASTEST);
// 注冊磁場感測器
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),
SensorManager.SENSOR_DELAY_FASTEST);
// 注冊光線感測器
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT),
SensorManager.SENSOR_DELAY_FASTEST);
// 注冊方向感測器
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
SensorManager.SENSOR_DELAY_FASTEST);
tvAccelerometer = (TextView) findViewById(R.id.tvAccelerometer);
tvMagentic = (TextView) findViewById(R.id.tvMagentic);
tvLight = (TextView) findViewById(R.id.tvLight);
tvOrientation = (TextView) findViewById(R.id.tvOrientation);
tvSensors = (TextView)findViewById(R.id.tvSensors);
// 獲得當前手機支持的所有感測器
List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ALL);
for(Sensor sensor:sensors)
{
// 輸出當前感測器的名稱
tvSensors.append(sensor.getName() + "\n");
}
}
@Override
public void onSensorChanged(SensorEvent event)
{
// 通過getType方法獲得當前傳回數據的感測器類型
switch (event.sensor.getType())
{
case Sensor.TYPE_ACCELEROMETER: // 處理加速度感測器傳回的數據
String accelerometer = "加速度\n" + "X:" + event.values[0] + "\n"
+ "Y:" + event.values[1] + "\n" + "Z:" + event.values[2] + "\n";
tvAccelerometer.setText(accelerometer);
break;
case Sensor.TYPE_LIGHT: // 處理光線感測器傳回的數據
tvLight.setText("亮度:" + event.values[0]);
break;
case Sensor.TYPE_MAGNETIC_FIELD: // 處理磁場感測器傳回的數據
String magentic = "磁場\n" + "X:" + event.values[0] + "\n" + "Y:"
+ event.values[1] + "\n" + "Z:" + event.values[2] + "\n";
tvMagentic.setText(magentic);
break;
case Sensor.TYPE_ORIENTATION: // 處理方向感測器傳回的數據
String orientation = "方向\n" + "X:" + event.values[0] + "\n"
+ "Y:" + event.values[1] + "\n" + "Z:" + event.values[2] + "\n";
tvOrientation.setText(orientation);
break;
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy)
{
}
}
復制代碼
上面的代碼中使用了event.values數組中的數據來獲得感測器傳回的數據。這個values數組非常重要,它的長度為3。但不一定每一個數組元素都有意義。對於不同的感測器,每個數組元素的含義不同。在下面的部分將詳細介紹不同感測器中values數組各個元素的含義。
注意:雖然使用Sensor.TYPE_ALL可以獲得手機支持的所有感測器信息,但不能使用Sensor.TYPE_ALL注冊所有的感測器,也就是getDefaultSensor方法的參數值必須是某個感測器的類型常量,而不能是Sensor.TYPE_ALL。
9. 關於安卓智能手機系統的感測器問題
方向感測器和加速度感測器主要用於游戲,電磁場感測器這個很少見啊,因該是用來確定方位信息的,比如GPS,至於溫度感測器是用於監測電池和CPU溫度的。
10. 怎麼用安卓系統讀取外設感測器數據(一實訓設備上有一平板電腦帶安卓系統,要求編寫程序讀取感測器數據。)
設置,位置和安全,添加管理設備,查看設備詳細信息