《電子技術應用》
您所在的位置:首頁 > 微波|射頻 > 設計應用 > Android特色開發之傳感器和語音識別
Android特色開發之傳感器和語音識別
摘要: Android是一個面向應用程序開發的豐富平臺,它擁有許多具有吸引力的用戶界面元素、數據管理和網絡應用等優秀的功能。Android還提供了很多頗具特色的接口。
Abstract:
Key words :

  Android特色開發

  Android 是一個面向應用程序開發的豐富平臺,它擁有許多具有吸引力的用戶界面元素、數據管理和網絡應用等優秀的功能。Android 還提供了很多頗具特色的接口。本文我們將分別介紹這些吸引開發者眼球的特色開發,主要包括:傳感器系統(Sensor)、語音識別技術(RecognizerIntent)、Google Map和用來開發桌面的插件(Widget)。通過本文的學習,讀者將對Android有一個更深入的了解,可以開發出一些有特色、有創意的應用程序。

  一 傳感器

  據調查,2008年全球傳感器銷售額為506億美元,預計到2010年全球傳感器銷售額可達600億美元以上。調查顯示,東歐、亞太區和加拿大成為傳感器市場增長最快的地區,而美國、德國、日本依舊是傳感器市場分布最大的地區。就世界范圍而言,傳感器市場增長最快的領域依舊是汽車,占第二位的是過程控制,當然現在也被廣泛應用于通信。那么,傳感器的定義是什么呢?有哪些種類的傳感器呢?Android中提供了哪些傳感器呢?

  1.傳感器的定義

  傳感器是一種物理裝置或生物器官,能夠探測、感受外界的信號、物理條件(如光、熱、濕度)或化學組成(如煙霧),并將探知的信息傳遞給其他裝置或器官。國家標準GB7665—87對傳感器的定義是:“能感受規定的被測量并按照一定的規律轉換成可用信號的器件或裝置,通常由敏感元件和轉換元件組成”。傳感器是一種檢測裝置,能感受被測量的信息,并能將檢測的感受到的信息,按一定規律變換成為電信號或其他所需形式的信息輸出,以滿足信息的傳輸、處理、存儲、顯示、記錄和控制等要求。它是實現自動檢測和自動控制的首要環節。

  2.傳感器的種類

  可以從不同的角度對傳感器進行分類:轉換原理(傳感器工作的基本物理或化學效應);用途;輸出信號類型以及制作材料和工藝等。

  根據工作原理,傳感器可分為物理傳感器和化學傳感器兩大類。

  物理傳感器應用的是物理效應,諸如壓電效應,磁致伸縮現象,離化、極化、熱電、光電、磁電等效應。被測信號量的微小變化都將轉換成電信號。

  化學傳感器包括那些以化學吸附、電化學反應等現象為因果關系的傳感器,被測信號量的微小變化也將轉換成電信號。

  大多數傳感器是以物理原理為基礎運作的。化學傳感器的技術問題較多,例如可靠性問題、規模生產的可能性、價格問題等,解決了這些問題,化學傳感器的應用將會有巨大增長。而有些傳感器既不能劃分為物理類,也不能劃分為化學類。

  3.Android中傳感器的種類

  Google Android操作系統中內置了很多傳感器,比如G1自帶了一個非常實用的加速感應器(微型陀螺儀),有了它,G1手機就支持重力感應、方向判斷等功能,在部分游戲或軟件中可以自動識別屏幕的橫屏、豎屏方向來改變屏幕顯示布局。下面是Android中支持的幾種傳感器:

  Sensor.TYPE_ACCELEROMETER:加速度傳感器。

  Sensor.TYPE_GYROSCOPE:陀螺儀傳感器。

  Sensor.TYPE_LIGHT:亮度傳感器。

  Sensor.TYPE_MAGNETIC_FIELD:地磁傳感器。

  Sensor.TYPE_ORIENTATION:方向傳感器。

  Sensor.TYPE_PRESSURE:壓力傳感器。

  Sensor.TYPE_PROXIMITY:近程傳感器。

  Sensor.TYPE_TEMPERATURE:溫度傳感器。

  下面我們通過一個例子來分析Android中傳感器的使用(具體實現參見本書所附代碼:第9章\ Examples_09_01),這里分析的是方向傳感器(TYPE_ORIENTATION)。

  4.Android 中傳感器的功能

  要在Android中使用傳感器,首先需要了解SensorManager和SensorEventListener。顧名思義,SensorManager就是所有傳感器的一個綜合管理類,包括了傳感器的種類、采樣率、精準度等。我們可以通過getSystemService方法來取得一個SensorManager對象。代碼如下:

  SensorManager mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);

  取得SensorManager對象之后,可以通過getSensorList方法來獲得我們需要的傳感器類型,保存到一個傳感器列表中。通過如下代碼可以得到一個方向傳感器:

  List sensors = mSensorManager.getSensorList(Sensor.TYPE_ORIENTATION);

  要與傳感器交互,應用程序必須注冊以偵聽與一個或多個傳感器相關的活動。Android中提供了registerListener來注冊一個傳感器,并提供了unregisterListener來卸載一個傳感器。registerListener方法包括3個參數:第1個參數,接收信號的Listener實例;第2個參數,想接收的傳感器類型的列表(即上一步創建的List對象);第3個參數,接收頻度。調用之后返回一個布爾值,true表示成功,false表示失敗。當然,之后不再使用時,我們還需要卸載。代碼如下:

  //注冊傳感器

  Boolean mRegisteredSensor = mSensorManager.registerListener(this, sensor,

  SensorManager.SENSOR_DELAY_FASTEST);

  //卸載傳感器

  mSensorManager.unregisterListener(this);

  其中,SensorEventListener是使用傳感器的核心部分,包括以下兩個方法必須實現:

  onSensorChanged (SensorEvent event) 方法在傳感器值更改時調用。該方法只由受此應用程序監視的傳感器調用。該方法的參數包括一個SensorEvent對象,該對象主要包括一組浮點數,表示傳感器獲得的方向、加速度等信息。例如,以下代碼可以取得其值:

  float x = event.values[SensorManager.DATA_X];

  float y = event.values[SensorManager.DATA_Y];

  float z = event.values[SensorManager.DATA_Z];

  onAccuracyChanged (Sensor sensor,int accuracy) 方法在傳感器的精準度發生改變時調用。其參數包括兩個整數:一個表示傳感器,另一個表示該傳感器新的準確值。

  具體實現如代碼清單1所示。

  代碼清單1 \Examples_09_01\src\com\yarin\android\Examples_09_01\Activity01.java

  public class Activity01 extends Activity implements SensorEventListener

  {

  private boolean mRegisteredSensor;

  //定義SensorManager

  private SensorManager mSensorManager;

  public void onCreate(Bundle savedInstanceState)

  {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  mRegisteredSensor = false;

  //取得SensorManager實例

  mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);

  }

  protected void onResume()

  {

  super.onResume();

  //接收SensorManager的一個列表(Listener)

  //這里我們指定類型為TYPE_ORIENTATION(方向傳感器)

  List sensors = mSensorManager.getSensorList

  (Sensor.TYPE_ORIENTATION);

  if (sensors.size() > 0)

  {

  Sensor sensor = sensors.get(0);

  //注冊SensorManager

  //this->接收sensor的實例

  //接收傳感器類型的列表

  //接收的頻率

  mRegisteredSensor = mSensorManager.registerListener(this,

  sensor, SensorManager.SENSOR_DELAY_FASTEST);

  }

  }

  protected void onPause()

  {

  if (mRegisteredSensor)

  {

  //如果調用了registerListener

  //這里我們需要unregisterListener來卸載/取消注冊

  mSensorManager.unregisterListener(this);

  mRegisteredSensor = false;

  }

  super.onPause();

  }

  //當精準度發生改變時

  //sensor->傳感器

  //accuracy->精準度

  public void onAccuracyChanged(Sensor sensor, int accuracy)

  {

  //處理精準度改變

  }

  // 當傳感器在被改變時觸發

  public void onSensorChanged(SensorEvent event)

  {

  // 接收方向傳感器的類型

  if (event.sensor.getType() == Sensor.TYPE_ORIENTATION)

  {

  //這里我們可以得到數據,然后根據需要來處理

  //由于模擬器上面無法測試效果,因此我們暫時不處理數據

  float x = event.values[SensorManager.DATA_X];

  float y = event.values[SensorManager.DATA_Y];

  float z = event.values[SensorManager.DATA_Z];

  }

  }

  }

  上面的例子中演示了如何獲得方向傳感器的方向、加速度等信息,我們可以根據得到的數值與上一次得到的數值之間的關系來進行需要的操作。SensorManager中還有很多常量和一些常用的方法,如下:

  getDefaultSensor:得到默認的傳感器對象。

  getInclination:得到地磁傳感器傾斜角的弧度值。

  getOrientation:得到設備旋轉的方向。

  getSensorList:得到指定傳感器的列表。

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
99国产一区| 免费亚洲电影| 亚洲第一黄色| 亚洲影视在线| 在线中文字幕一区| 亚洲精品字幕| 亚洲清纯自拍| 亚洲高清免费| 在线免费高清一区二区三区| 国一区二区在线观看| 国产精品日韩二区| 国产精品久久久亚洲一区| 欧美特黄a级高清免费大片a级| 欧美精品一区二区三区在线播放 | 欧美aⅴ99久久黑人专区| 久久久精品性| 久久免费黄色| 免费观看国产成人| 欧美激情一区在线| 欧美日韩精品一区视频| 欧美日韩一区在线观看视频| 欧美性色视频在线| 国产精品黄页免费高清在线观看| 国产精品久久久久久久午夜| 国产精品热久久久久夜色精品三区 | 欧美精品电影在线| 欧美日本一区| 国产精品国产成人国产三级| 国产精品午夜国产小视频| 国产伦精品一区二区三| 国产一区二区三区不卡在线观看| 国内精品国语自产拍在线观看| 黄色日韩精品| 亚洲欧洲日本一区二区三区| 日韩亚洲精品电影| 亚洲视频狠狠| 羞羞答答国产精品www一本| 久久精品国产视频| 亚洲乱码国产乱码精品精天堂| 一本久道久久久| 亚洲欧美综合v| 久久人体大胆视频| 欧美高清你懂得| 欧美日韩午夜剧场| 国产日韩欧美不卡在线| 在线观看av一区| 亚洲精品在线观看免费| 亚洲午夜av在线| 欧美一区二区精品在线| 亚洲精品你懂的| 午夜精品国产| 开元免费观看欧美电视剧网站| 欧美激情在线免费观看| 国产精品视频内| 亚洲第一搞黄网站| 一区二区三区精品国产| 欧美影院久久久| 亚洲美女视频在线观看| 亚洲欧美日本在线| 欧美成人精品h版在线观看| 国产精品成人免费| 激情文学综合丁香| 一区二区三区免费看| 久久精品123| 亚洲无线视频| 开元免费观看欧美电视剧网站| 欧美三级午夜理伦三级中视频| 国产亚洲精品激情久久| 亚洲人成啪啪网站| 欧美在线视频日韩| 亚洲午夜精品久久| 免费日韩成人| 国产乱码精品1区2区3区| 亚洲高清激情| 先锋影音国产精品| 在线午夜精品| 老司机午夜精品视频| 国产精品国产精品| 亚洲欧洲一区二区天堂久久 | 欧美精品成人91久久久久久久| 国产精品一区二区欧美| 91久久国产综合久久| 欧美一区三区二区在线观看| 亚洲手机在线| 欧美韩日一区二区三区| 国产日韩亚洲欧美精品| 一本色道久久综合亚洲精品不卡| 久久精品国产精品亚洲| 性色av一区二区三区红粉影视| 欧美精品1区2区| 在线电影欧美日韩一区二区私密| 午夜激情久久久| 亚洲一区二区欧美日韩| 男女视频一区二区| 韩国自拍一区| 欧美一级久久久久久久大片| 亚洲一区在线免费| 欧美国产一区二区在线观看| 国产在线拍揄自揄视频不卡99| 亚洲视频一起| 一区二区三区国产在线| 欧美肥婆bbw| 亚洲福利视频专区| 亚洲国产精品电影| 久久婷婷人人澡人人喊人人爽| 国产精品亚洲а∨天堂免在线| 一本色道久久综合一区| 一本色道久久综合亚洲二区三区| 免费日韩av片| 影音先锋在线一区| 亚洲电影视频在线| 久久五月天婷婷| 国产亚洲欧美一级| 欧美一区二区三区四区夜夜大片| 性久久久久久久久| 国产精品久久久久久久一区探花| 99re热这里只有精品视频| 亚洲理伦在线| 欧美日本在线一区| 亚洲美女黄网| 一区二区三区你懂的| 欧美日韩八区| 亚洲精选在线观看| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 国产精品无码专区在线观看| 亚洲视频一二三| 亚洲在线观看| 国产精品丝袜xxxxxxx| 亚洲影院色在线观看免费| 午夜电影亚洲| 国产伦精品一区二区三区视频孕妇 | 欧美成人精品一区二区| 亚洲国产日韩一级| 亚洲最新在线视频| 欧美午夜欧美| 亚洲欧美日韩中文播放| 欧美在线免费看| 国模吧视频一区| 亚洲福利视频专区| 欧美国产激情| 亚洲免费成人av电影| 亚洲一区欧美二区| 国产乱子伦一区二区三区国色天香| 性欧美超级视频| 久久久久亚洲综合| 亚洲国产mv| 在线一区二区三区做爰视频网站| 国产精品高清免费在线观看| 欧美亚洲一区二区三区| 蜜桃久久精品乱码一区二区| 亚洲国产专区校园欧美| 亚洲午夜在线| 国产亚洲欧美色| 亚洲狼人综合| 国产精品免费一区二区三区在线观看| 午夜精品视频在线| 毛片av中文字幕一区二区| 亚洲激情视频| 亚洲欧美一区在线| 精品动漫3d一区二区三区免费| 一本色道久久综合亚洲精品按摩| 国产精品无人区| 亚洲国产高清高潮精品美女| 欧美久久电影| 亚洲欧美日韩人成在线播放| 老鸭窝亚洲一区二区三区| 日韩视频不卡| 久久超碰97中文字幕| 亚洲国产视频一区二区| 午夜视频精品| 亚洲成色777777在线观看影院| 中文在线资源观看网站视频免费不卡| 国产精品伊人日日| 亚洲欧洲日韩综合二区| 欧美午夜不卡| 亚洲国产精品欧美一二99| 欧美吻胸吃奶大尺度电影| 久久精品国产一区二区三区免费看| 欧美日韩成人精品| 午夜精品美女自拍福到在线| 欧美金8天国| 欧美在线国产| 欧美日韩一卡二卡| 亚洲电影免费观看高清完整版在线观看 | 国产精品在线看| 日韩视频一区二区三区| 国产日韩亚洲欧美综合| 一区二区三区精密机械公司| 国产一区二区三区四区在线观看| 一区二区三区日韩精品| 国内外成人免费视频| 亚洲欧美日韩人成在线播放| 亚洲国产欧美在线人成| 久久精品99无色码中文字幕| 一本久久a久久免费精品不卡| 久久夜色精品国产欧美乱极品| 亚洲一区二区三区中文字幕| 欧美精品久久久久a| 久久精品国产69国产精品亚洲 | 午夜精品福利一区二区蜜股av|