安卓感測器如何開發
A. 安卓增加空速感測器的方法
安卓增加空速感測器的方法如下:
1、獲得感測器管理器,通過感測器管理器獲得加速感測器。
2、注冊加速感測器的監聽器即可。安卓是一種基於Linux內核(不包含GNU組件)的自由及開放源代碼的操作系統。
B. 開發android應用程序怎麼調用光感測器
Android手機自帶光線感測器,通常我們手機的屏幕自動亮度都是用光線感測器來實現的。該感測器在前置攝像頭附近,此外,還有一個距離感測器。本文主要講解如何使用Android手機的光線感測器。
獲得感應器服務
Android開發中要使用光線感測器,需要先獲得系統感測器服務Context.SENSOR_SERVICE,獲得方法如下:
SensorManager senserManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
獲得光線感測器
SensorManager是系統感測器服務,是系統所有感測器的管理器。通過它,我們獲得制定類型的感測器,獲得光線感測器的方法如下:
詳細代碼
C. 安卓下怎麼驅動加速度感測器
目前很多應用已經實現了搖一搖功能,這里通過講解該功能的原理及實現回顧一下加速度感測器的使用:
1.首先獲得感測器管理器的實例
sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
2.通過感測器管理器獲得加速感測器
accelerateSensor = getSensorManager(context).getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
3.注冊加速感測器的監聽器
sensorManager.registerListener(listener, sensor, rate)
參數說明:
listener:加速感測器監聽器實例
sensor :加速感測器實例,實現搖一搖使用的是accelerateSensor
rate :感應器反應速度,有四個常量共選擇
SENSOR_DELAY_NORMAL:匹配屏幕方向的變化,默認感測器速度
SENSOR_DELAY_UI:匹配用戶介面
如果更新UI建議使用SENSOR_DELAY_GAME:
匹配游戲,游戲開發建議使用SENSOR_DELAY_FASTEST.:匹配所能達到的最快
根據情況選擇,一般情況選擇第一種就可以
感測器監聽器:SensorEventListener有兩個回調方法
onSensorChanged(SensorEvent event)和onAccuracyChanged(Sensor sensor, int accuracy)
第一個是感測器值變化的相應方法
第二個是反應速度變化的相應方法
兩個方法會同時被調用
onSensorChanged(SensorEvent event) 介紹
nSensorChanged(SensorEvent event)
event的實例的values變數非常重要,根據感測器的不同,裡面的值代表的含義也不相同,以加速感測器為例:
values該變數的類型是float[]數組,最多有三個元素:
float x = values[0] 代表X軸
float y = values[1] 代表Y軸
float z = values[2] 代表Y軸
X軸的方向是沿著屏幕的水平方向從左向右。如果手機不是正方形的話,較短的邊需要水平放置,較長的邊需要垂直放置。Y軸的方向是從屏幕的左下角開始沿著屏幕的垂直方向指向屏幕的頂端。將手機平放在桌子上,Z軸的方向是從手機里指向天空。
我們判斷手機是否搖一搖,只要x,y,z軸,達到設定的閥值時就表示搖一搖。
@Override
public void onSensorChanged(SensorEvent event) {
int sensorType = event.sensor.getType();
//values[0]:X軸,values[1]:Y軸,values[2]:Z軸
float[] values = event.values;
float x = values[0];
float y = values[1];
float z = values[2];
Log.i(TAG, "x:" + x + "y:" + y + "z:" + z);
Log.i(TAG, "Math.abs(x):" + Math.abs(x) + "Math.abs(y):" +Math.abs(y) + "Math.abs(z):" + Math.abs(z));
if(sensorType == Sensor.TYPE_ACCELEROMETER){
int value = 15;//搖一搖閥值,不同手機能達到的最大值不同,如某品牌手機只能達到20
if(x >= value || x <= -value || y >= value || y <= -value || z >= value || z <= -value){
Log.i(TAG, "檢測到搖動");
//播放動畫,更新界面,並進行對應的業務操作
}
}
很早之前我寫過:
為了增強程序的健壯性,需要判斷並防止搖一搖事件同一時間多次被觸發:
float[] values = event.values;
float x = values[0];
float y = values[1];
float z = values[2];
Log.i(TAG, "onSensorChanged:" + "x:" + x + ",y:" + y + ",z:" + z);
if (x >= 15 || x <= -15 || y >= 15 || y <= -15 || z >= 15 || z <= -15) {
if (allowShake()) {//判斷是否為重復晃動
Log.e(TAG, "搖一搖,搖一搖");
new AllowShake().start();
} else {
Log.e(TAG, "2s 後再次允許搖動");
}
D. android應用開發中的感測器SensorManager mSensorManager 抽象類定義疑惑
只是轉換類型,例子中,getSystemService(SENSOR_SERVICE)得到的對象已經實例化。
E. android開發 重力感應感測器 該如何下手剛剛開始學習android,不該學什麼,該怎麼學,請大神指點
一步一步來吧。那個重力感測器涉及很多方面的東西的。可以去aide吧精品區,那裡有教程。
F. 感測器開發需要什麼,什麼流程,謝謝啦
首先要明白你要開發的感測器是什麼基理的,然後看看需要採用什麼樣的加工工藝來實現。加工工藝非常重要。如果你僅僅是二次開發,那就簡單的多了。
G. 安卓開發需要學習什麼
學習分三個階段:
1,Android基礎階段:平台架構特性(JAVA/C) Market/應用程序組件 環境搭建與部署/打包與發布 AVD/DDMS/AAPT 調試與測試 相關資源訪問/資源製作 Activity/Service/Broadcast Receiver/Content Provider/原理(生命周期)及深層實現
2,Android進階初級:組件Widget/ 菜單Menu/ 布局Layout 詳解 Xml解析(Pull/Dom/Sax)/JNI 解析SQL資料庫原理,。
SQLite /SharedPreferences/File詳解 多媒體Audio/Video/Camera 詳解
3,Android進階高級:藍牙/WIFI SMS/MMS 應用實現 深層次解析GPS原理。
實現LocationManager/LocationProvider 進行定位/跟蹤/查找/趨近警告以及Geocoder正逆向編解碼等技術細節 2D圖形庫(Graphics/View)詳解 SDCARD/感測器/手勢 應用實現
(7)安卓感測器如何開發擴展閱讀:
知識體系
1、Unix/Linux平台技術:基本命令,Linux下的開發環境
2、企業級資料庫技術:SQL語言、SQL語句調優、Oracle資料庫技術
3、Java 語言核心技術:Java語言基礎、Java面向對象編程、JDK核心API、Java集合框架、Java網路編 程、JavaI/O編程、Java多線程編程、Java異常機制、Java安全、JDBC、XML
4、軟體工程和設計模式:軟體工程概述、配置管理及SVN、UML、基本設計模式
5、Android應用開發基礎:Android開發平台、Eclipse+ADT開發環境、AVD及感測模擬器調試、Android核心組件、Android常用組件、Android高級組件、文件及網路訪問、SQLite資料庫編程、後台服務編程
6、互聯網核心技術: HTML、CSS、JavaScript、JQuery、Ajax應用
7、Android高級應用開發:音頻視頻攝像頭、互聯網應用、GPS和位置服務、Google Map、2D3D繪制、感測器開發、游戲開發、電話及SMS服務、網路BluetoothWi-Fi等。
8、Android系統級開發:移植、驅動、NDK(C方向)。
9、JavaEE核心技術:Servlet核心技術、JSP核心技術、Struts、Spring、Hibernate框架。
H. 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");
}
}
}