1. android 感測器使用的時候需要校準嗎
什麼系統的?安卓2.x才有校準功能,可以校準重力感測器和觸摸偏移。
安卓4.x系統的都是已經校準好的,要重新校準得返廠,不支持個人自己校準。
2. 將來iPhone或Android設備是否可能配備全畫幅相機感測器呢
典型的手機相機感測器1/40-1/50全框的面積感測器(如果你知道你的相機或手機的「作物因素」,一個線性值基於感測器的對角線尺寸,平方了解實際的物理差異大小)。那麼,一個典型的智能手機應該在哪裡安裝感測器呢?雖然感測器本身的活動成像區域是36mm x 24mm,但它將會比這更大,因為所有的感測器晶元都比它們的成像區域大一點。
手機上最大的感測器,來自諾基亞808 PureView的1/1.2」感測器,大約是一個全幀感測器的1/10.5大小。這也使得這款手機如此之厚——在攝像頭處有18毫米——一般人不會買。如今,典型的高端智能手機厚度為7 - 9毫米。
這在很大程度上說明了試圖將智能手機變成一款真正的相機所面臨的許多問題。簡而言之,相機是一個比智能手機更棘手的問題。在建造任何設備時,該設備的形式必須由其主要功能的需求決定。困難的部分。
智能手機根本就不是手機,而是一台袖珍電腦。這就是該設備設計背後的驅動力。當您添加麥克風、揚聲器和蜂窩數據機外設時,它可能是帶有正確軟體的電話。就像個人電腦一樣。相機也一樣。在你的智能手機(或個人電腦)上添加一兩個售價20美元的攝像模塊,配上合適的軟體,它就變成了相機。但所有這些附加功能都保留了智能手機作為一款小巧、觸控界面的袖珍電腦的基本特性。
3. Android手機自帶的慣性感測器(陀螺儀、加速度計之類的)精度高嗎
精度還可以的。
感測器是一種檢測裝置,能感受到被測量的信息,並能將感受到的信息,按一定規律變換成為電信號或其他所需形式的信息輸出,以滿足信息的傳輸、處理、存儲、顯示、記錄和控制等要求。
感測器的特點包括:微型化、數字化、智能化、多功能化、系統化、網路化。它是實現自動檢測和自動控制的首要環節。感測器的存在和發展,讓物體有了觸覺、味覺和嗅覺等感官,讓物體慢慢變得活了起來。通常根據其基本感知功能分為熱敏元件、光敏元件、氣敏元件、力敏元件、磁敏元件、濕敏元件、聲敏元件、放射線敏感元件、色敏元件和味敏元件等十大類。
4. android 判斷支持哪些感測器
Android中判斷手機是否支持感測器,可以通過SensorManager這個類來獲取手機所有的感測器列表,如下代碼:
package com.example.testsensor;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class DemoSensorActivity extends Activity {
private Button button;
private TextView show;
private SensorManager sm;
private StringBuffer str;
private List<Sensor> allSensors;
private Sensor s;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button = (Button) findViewById(R.id.button);
show = (TextView) findViewById(R.id.show);
button.setOnClickListener(new ButtonListener());
sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
allSensors = sm.getSensorList(Sensor.TYPE_ALL);// 獲得感測器列表
}
class ButtonListener implements OnClickListener {
public void onClick(View v) {
str = new StringBuffer();
str.append("該手機有" + allSensors.size() + "個感測器,分別是:\n");
for (int i = 0; i < allSensors.size(); i++) {
s = allSensors.get(i);
switch (s.getType()) {
case Sensor.TYPE_ACCELEROMETER:
str.append(i + "加速度感測器");
break;
case Sensor.TYPE_GYROSCOPE:
str.append(i + "陀螺儀感測器");
break;
case Sensor.TYPE_LIGHT:
str.append(i + "環境光線感測器");
break;
case Sensor.TYPE_MAGNETIC_FIELD:
str.append(i + "電磁場感測器");
break;
case Sensor.TYPE_ORIENTATION:
str.append(i + "方向感測器");
break;
case Sensor.TYPE_PRESSURE:
str.append(i + "壓力感測器");
break;
case Sensor.TYPE_PROXIMITY:
str.append(i + "距離感測器");
break;
case Sensor.TYPE_TEMPERATURE:
str.append(i + "溫度感測器");
break;
default:
str.append(i + "未知感測器");
break;
}
}
show.setText(str);
}
}
}
5. Android 外置感測器通過USB連接數據傳送的問題
用arino很容易,安卓與arino之間用串口通信,安卓端用Usb類庫,arnio端用Serial庫。
我也在看這類,我看到有USB對SPI,I2C介面的轉換器(某寶有賣),理論上,用這個,可以實現安卓直接與SPI,I2C介面感測器通訊,但這個轉換器成本應該高過一塊arino板了。而且不具備AD和DA功能,所以,建議還是連接arino後,用arino來控制感測器吧。很多簡單的工作,讓arino來完成就好了。把arino當成一個串口通訊的usb感測器。
6. 求安卓下所有感測器的簡介
1 加速度感測器
加速度感測器又叫G-sensor,返回x、y、z三軸的加速度數值。
該數值包含地心引力的影響,單位是m/s^2。
將手機平放在桌面上,x軸默認為0,y軸默認0,z軸默認9.81。
將手機朝下放在桌面上,z軸為-9.81。
將手機向左傾斜,x軸為正值。
將手機向右傾斜,x軸為負值。
將手機向上傾斜,y軸為負值。
將手機向下傾斜,y軸為正值。
加速度感測器可能是最為成熟的一種mems產品,市場上的加速度感測器種類很多。
手機中常用的加速度感測器有BOSCH(博世)的BMA系列,AMK的897X系列,ST的LIS3X系列等。
這些感測器一般提供±2G至±16G的加速度測量范圍,採用I2C或SPI介面和MCU相連,數據精度小於16bit。
2 磁力感測器
磁力感測器簡稱為M-sensor,返回x、y、z三軸的環境磁場數據。
該數值的單位是微特斯拉(micro-Tesla),用uT表示。
單位也可以是高斯(Gauss),1Tesla=10000Gauss。
硬體上一般沒有獨立的磁力感測器,磁力數據由電子羅盤感測器提供(E-compass)。
電子羅盤感測器同時提供下文的方向感測器數據。
3 方向感測器
方向感測器簡稱為O-sensor,返回三軸的角度數據,方向數據的單位是角度。
為了得到精確的角度數據,E-compass需要獲取G-sensor的數據,
經過計算生產O-sensor數據,否則只能獲取水平方向的角度。
方向感測器提供三個數據,分別為azimuth、pitch和roll。
azimuth:方位,返回水平時磁北極和Y軸的夾角,范圍為0°至360°。
0°=北,90°=東,180°=南,270°=西。
pitch:x軸和水平面的夾角,范圍為-180°至180°。
當z軸向y軸轉動時,角度為正值。
roll:y軸和水平面的夾角,由於歷史原因,范圍為-90°至90°。
當x軸向z軸移動時,角度為正值。
電子羅盤在獲取正確的數據前需要進行校準,通常可用8字校準法。
8字校準法要求用戶使用需要校準的設備在空中做8字晃動,
原則上盡量多的讓設備法線方向指向空間的所有8個象限。
手機中使用的電子羅盤晶元有AKM公司的897X系列,ST公司的LSM系列以及雅馬哈公司等等。
由於需要讀取G-sensor數據並計算出M-sensor和O-sensor數據,
因此廠商一般會提供一個後台daemon來完成工作,電子羅盤演算法一般是公司私有產權。
4 陀螺儀感測器
陀螺儀感測器叫做Gyro-sensor,返回x、y、z三軸的角加速度數據。
角加速度的單位是radians/second。
根據Nexus S手機實測:
水平逆時針旋轉,Z軸為正。
水平逆時針旋轉,z軸為負。
向左旋轉,y軸為負。
向右旋轉,y軸為正。
向上旋轉,x軸為負。
向下旋轉,x軸為正。
ST的L3G系列的陀螺儀感測器比較流行,iphone4和google的nexus s中使用該種感測器。
5 光線感應感測器
光線感應感測器檢測實時的光線強度,光強單位是lux,其物理意義是照射到單位面積上的光通量。
光線感應感測器主要用於Android系統的LCD自動亮度功能。
可以根據采樣到的光強數值實時調整LCD的亮度。
6 壓力感測器
壓力感測器返回當前的壓強,單位是百帕斯卡hectopascal(hPa)。
7 溫度感測器
溫度感測器返回當前的溫度。
8 接近感測器
接近感測器檢測物體與手機的距離,單位是厘米。
一些接近感測器只能返回遠和近兩個狀態,
因此,接近感測器將最大距離返回遠狀態,小於最大距離返回近狀態。
接近感測器可用於接聽電話時自動關閉LCD屏幕以節省電量。
一些晶元集成了接近感測器和光線感測器兩者功能。
下面三個感測器是Android2新提出的感測器類型,目前還不太清楚有哪些應用程序使用。
9 重力感測器
重力感測器簡稱GV-sensor,輸出重力數據。
在地球上,重力數值為9.8,單位是m/s^2。
坐標系統與加速度感測器相同。
當設備復位時,重力感測器的輸出與加速度感測器相同。
10 線性加速度感測器
線性加速度感測器簡稱LA-sensor。
線性加速度感測器是加速度感測器減去重力影響獲取的數據。
單位是m/s^2,坐標系統與加速度感測器相同。
加速度感測器、重力感測器和線性加速度感測器的計算公式如下:
加速度 = 重力 + 線性加速度
11 旋轉矢量感測器
旋轉矢量感測器簡稱RV-sensor。
旋轉矢量代表設備的方向,是一個將坐標軸和角度混合計算得到的數據。
RV-sensor輸出三個數據:
x*sin(theta/2)
y*sin(theta/2)
z*sin(theta/2)
sin(theta/2)是RV的數量級。
RV的方向與軸旋轉的方向相同。
RV的三個數值,與cos(theta/2)組成一個四元組。
RV的數據沒有單位,使用的坐標系與加速度相同。
7. Android 中有哪些感測器的數據是可以分享的
著作權歸作者所有。
商業轉載請聯系作者獲得授權,非商業轉載請註明出處。
作者:肥肥魚
來源:知乎
目前 Android 設備支持的感測器類型如下:
TYPE_ACCELEROMETER 加速度感測器又叫 G-sensor,該數值包含地心引力的影響,單位是 m/s2,測量應用於設備 x 、y、z 軸上的加速度。
將手機平放在桌面上,x 軸默認為0,y 軸默認0,z 軸默認9.81。
將手機朝下放在桌面上,z 軸為-9.81。
將手機向左傾斜,x 軸為正值。
將手機向右傾斜,x 軸為負值。
將手機向上傾斜,y 軸為負值。
將手機向下傾斜,y 軸為正值。
TYPE_AMBIENT_TEMPERATURE 溫度感測器,單位是 ℃,返回當前的溫度。
TYPE_GAME_ROTATION_VECTOR 用來探測運動而不必受到電磁干擾的影響,因為它並不依賴於磁北極。
TYPE_GEOMAGNETIC_ROTATION_VECTOR 地磁旋轉矢量感測器,提供手機的旋轉矢量,當手機處於休眠狀態時,仍可以記錄設備的方位。
TYPE_GRAVITY 重力感測器簡稱 GV-sensor,單位是 $m/s^2%,測量應用於設備X、Y、Z軸上的重力。在地球上,重力數值為9.8,
TYPE_GYROSCOPE 陀螺儀感測器叫做Gyro-sensor,返回x、y、z三軸的角加速度數據。單位是 radians/second。
TYPE_GYROSCOPE_UNCALIBRATED 未校準陀螺儀感測器,提供原始的、未校準、補償的陀螺儀數據,用於後期處理和融合定位數據。
TYPE_LIGHT 光線感應感測器檢測實時的光線強度,光強單位是lux,其物理意義是照射到單位面積上的光通量。
TYPE_LINEAR_ACCELERATION 線性加速度感測器簡稱LA-sensor。線性加速度感測器是加速度感測器減去重力影響獲取的數據。單位是 m/s2。
TYPE_MAGNETIC_FIELD 磁力感測器簡稱為M-sensor,返回 x、y、z 三軸的環境磁場數據。該數值的單位是微特斯拉(micro-Tesla),用uT表示。單位也可以是高斯(Gauss),1Tesla=10000Gauss。硬體上一般沒有獨立的磁力感測器,磁力數據由電子羅盤感測器提供(E-compass)。電子羅盤感測器同時提供方向感測器數據。
TYPE_MAGNETIC_FIELD_UNCALIBRATED 未校準磁力感測器,提供原始的、未校準的磁場數據。
TYPE_ORIENTATION 方向感測器簡稱為O-sensor,返回三軸的角度數據,方向數據的單位是角度。為了得到精確的角度數據,E-compass 需要獲取 G-sensor 的數據,經過計算生產 O-sensor 數據,否則只能獲取水平方向的角度。方向感測器提供三個數據,分別為azimuth、pitch和roll:
azimuth: 方位,返回水平時磁北極和 Y 軸的夾角,范圍為0°至360°。0°為北,90°為東,180°為南,270°為西。
pitch: x 軸和水平面的夾角,范圍為-180°至180°。當 z 軸向 y 軸轉動時,角度為正值。
roll: y 軸和水平面的夾角,由於歷史原因,范圍為-90°至90°。當 x 軸向 z 軸移動時,角度為正值。
TYPE_PRESSURE 壓力感測器,單位是hPa(百帕斯卡),返回當前環境下的壓強。
TYPE_PROXIMITY 接近感測器檢測物體與手機的距離,單位是厘米。一些接近感測器只能返回遠和近兩個狀態,因此,接近感測器將最大距離返回遠狀態,小於最大距離返回近狀態。
TYPE_RELATIVE_HUMIDITY 濕度感測器,單位是 %,來測量周圍環境的相對濕度。
TYPE_ROTATION_VECTOR 旋轉矢量感測器簡稱RV-sensor。旋轉矢量代表設備的方向,是一個將坐標軸和角度混合計算得到的數據。RV-sensor輸出三個數據:
x*sin(theta/2)
y*sin(theta/2)
z*sin(theta/2)
sin(theta/2)是 RV 的數量級。RV 的方向與軸旋轉的方向相同。RV 的三個數值,與cos(theta/2)組成一個四元組。
TYPE_SIGNIFICANT_MOTION 特殊動作觸發感測器。
TYPE_STEP_COUNTER 計步感測器,用於記錄激活後的步伐數。
TYPE_STEP_DETECTOR 步行檢測感測器,用戶每走一步就觸發一次事件。
TYPE_TEMPERATURE 溫度感測器,目前已被TYPE_AMBIENT_TEMPERATURE替代。
8. 開發android應用程序怎麼調用光感測器
Android手機自帶光線感測器,通常我們手機的屏幕自動亮度都是用光線感測器來實現的。該感測器在前置攝像頭附近,此外,還有一個距離感測器。本文主要講解如何使用Android手機的光線感測器。
獲得感應器服務
Android開發中要使用光線感測器,需要先獲得系統感測器服務Context.SENSOR_SERVICE,獲得方法如下:
SensorManager senserManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
獲得光線感測器
SensorManager是系統感測器服務,是系統所有感測器的管理器。通過它,我們獲得制定類型的感測器,獲得光線感測器的方法如下:
詳細代碼
9. android加速度感測器怎麼使用
使用加速度感測器與其他感測器的方法大致相同,通過調用系統API就可以實現。分為以下幾步:
1.獲取SensorManager
2.使用SensorManager獲取加速度感測器
3.創建自定義的感測器監聽函數,並注冊
4.相對應的,在合適位置實現注銷監聽器的調用
簡單的代碼如下:
public class MainActivity extends Activity {
private static final String TAG = "SensorTest";
private SensorManager mSensorManager;
private Sensor mAccelerometer;
private TestSensorListener mSensorListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
// 初始化感測器
mSensorListener = new TestSensorListener();
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
}
@Override
protected void onResume() {
super.onResume();
// 注冊感測器監聽函數
mSensorManager.registerListener(mSensorListener, mAccelerometer, SensorManager.SENSOR_DELAY_UI);
}
@Override
protected void onPause() {
super.onPause();
// 注銷監聽函數
mSensorManager.unregisterListener(mSensorListener);
}
private void initViews() {
mSensorInfoA = (TextView) findViewById(R.id.sensor_info_a);
}
class TestSensorListener implements SensorEventListener {
@Override
public void onSensorChanged(SensorEvent event) {
// 讀取加速度感測器數值,values數組0,1,2分別對應x,y,z軸的加速度
Log.i(TAG, "onSensorChanged: " + event.values[0] + ", " + event.values[1] + ", " + event.values[2]);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
Log.i(TAG, "onAccuracyChanged");
}
}
}