Android传感器编程带实例
一、前言
?????? 我很喜歡電腦,可是筆記本還是太大,筆記本電腦再小還是要弄個小包背起來的,智能手機則不同,它完全就是一個手機,可以隨意裝在一個口袋里隨身攜帶。因此我在2002年左右時最喜歡玩裝備是Dell的PDA,2007年的時候最喜歡玩的是N73,而在2010年最喜歡玩的則是Milestone。眼見著手機的功能越來越強,時至今日智能手機甚至在某些方面已經強過了臺式機和筆記本。本節課講的就是智能手機強過臺式機和筆記本的地方:傳感器。
2008年的時候我很喜歡我的小白筆記本Macbook,喜歡玩它的一個小軟件,一拍桌子,筆記本感受到了震動,它就轉換了一個桌面出來,這讓我像個小孩子一樣沒事就拍拍桌子。這一功能這得益于蘋果筆記本內置有傳感器。
我不知道iPhone手機是不是第一個把各種各樣的傳感器運用在手機上的,不過我知道iPhone是把傳感器運用在手機上最成功的第一個。隨后的Android系統也內置了大量的傳感器,這讓Android系統手機和普通的諾基亞智能機和Windows CE智能機相比牛氣了許多,在擁有了Milestone之后,我的N73就被仍在抽屜的角落里了。
從Android1.5開始,系統內置了對多達八種傳感器的支持,他們分別是:加速度傳感器(accelerometer)、陀螺儀(gyroscope)、環境光照傳感器(light)、磁力傳感器(magnetic field)、方向傳感器(orientation)、壓力傳感器(pressure)、距離傳感器(proximity)和溫度傳感器(temperature)。
利用這些傳感器我們可以制作出各種有趣的應用程序和游戲。譬如在口袋里晃一晃手機,手機就開始神不知鬼不覺的錄音,不要著急這個很容易做,我們在本文的結尾就一起制作這個小應用。
本講的學習方式還是在實戰中學習,需要提醒的是模擬器中無法模擬傳感器,因此你需要準備一款Android真機才能運行本講的例子。
二、實例:手機傳感器清單
?????? 我們還是先看程序后解釋。
?????? 1、創建一個項目 Lesson37_HelloSensor ,主Activity名字叫 mainActivity.java。
?????? 2、UI布局文件main.xml的內容如下:
XML/HTML代碼???????3、mainActivity.java的內容如下:
Java代碼?????? 4、連接真機Milestone,編譯并運行程序,顯示結果如下:
?????? 5、結合上面的程序我們做一些解釋。
?????? 1)Android所有的傳感器都歸傳感器管理器 SensorManager 管理,獲取傳感器管理器的方法很簡單:
?????? String service_name = Context.SENSOR_SERVICE;
?????? SensorManager sensorManager = (SensorManager)getSystemService(service_name);
?????? 2)現階段Android支持的傳感器有8種,它們分別是:
| 傳感器類型常量 | 內部整數值 | 中文名稱 |
| Sensor.TYPE_ACCELEROMETER | 1 | 加速度傳感器 |
| Sensor.TYPE_MAGNETIC_FIELD | 2 | 磁力傳感器 |
| Sensor.TYPE_ORIENTATION | 3 | 方向傳感器 |
| Sensor.TYPE_GYROSCOPE | 4 | 陀螺儀傳感器 |
| Sensor.TYPE_LIGHT | 5 | 環境光照傳感器 |
| Sensor.TYPE_PRESSURE | 6 | 壓力傳感器 |
| Sensor.TYPE_TEMPERATURE | 7 | 溫度傳感器 |
| Sensor.TYPE_PROXIMITY | 8 | 距離傳感器 |
?????? 3)從傳感器管理器中獲取其中某個或者某些傳感器的方法有如下三種:
?????? 第一種:獲取某種傳感器的默認傳感器
?????? Sensor defaultGyroscope = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
?????? 第二種:獲取某種傳感器的列表
???????List<Sensor> pressureSensors = sensorManager.getSensorList(Sensor.TYPE_PRESSURE);
?????? 第三種:獲取所有傳感器的列表,我們這個例子就用的第三種
?????? List<Sensor> allSensors = sensorManager.getSensorList(Sensor.TYPE_ALL);
?????? 4)對于某一個傳感器,它的一些具體信息的獲取方法可以見下表:
| 方法 | 描述 |
| getMaximumRange() | 最大取值范圍 |
| getName() | 設備名稱 |
| getPower() | 功率 |
| getResolution() | 精度 |
| getType() | 傳感器類型 |
| getVentor() | 設備供應商 |
| getVersion() | 設備版本號 |
???????三、實例:窈窈錄音器
?????? 通過上面的例子我們學會了如何獲得某種類型的傳感器,下面我通過一個實例來學會如何使用某一個類型的傳感器。我們這里使用加速度傳感器來實現這樣一個功能:開啟我們的錄音程序放在你的口袋或者提包里,需要錄音的時候把衣服整理一下,或者把提包挪動個位置,那么此時手機就會感受到變化從而開始錄音。由此達到神不知鬼不覺的錄音效果。說起來似乎有點神,其實做起來很簡單,讓我們開始吧。
?????? 簡單的錄音程序已經在第28講的時候做過了,我們在28講程序的基礎上寫本講的代碼。
?????? 1、新建一個項目 Lesson37_YYRecorder ,主文件叫 MainActivity.java 。
???????2、這里只貼出于28講不同的 MainActivity.java? 的代碼,請注意看注釋:
Java代碼?????? 3、連接真機Milestone,編譯并運行程序:
?????? 晃動機器,開始錄音。
?????? 查看錄音文件,效果還可以:
原文地址: http://www.cnblogs.com/shouce/p/5249326.html
總結
以上是生活随笔為你收集整理的Android传感器编程带实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 开发, Android
- 下一篇: android sina oauth2.