Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 高級開發 >> 對Android傳感器系統全解析

對Android傳感器系統全解析

編輯:高級開發

android 是一個靈活、有吸引力的平台,Google的android 領域發展迅速,並且越來越發展的強大,下面的文章進行全面的介紹android傳感器和報告系統有關的應用程序架構。

應用程序(活動)暫停後,需要注銷偵聽器,這樣以後就不會再收到傳感器更新。這通過 SensorManager 的 unregisterListener 方法實現。惟一的參數是 SensorListener 的實例。在 registerListener 和 unregisterListener 方法調用中,應用程序使用關鍵字 this。注意類定義中的 implements 關鍵字。

其中聲明了該類實現 SensorListener 接口。這就是要將它傳遞到 registerListener 和 unregisterListener 的原因。SensorListener 必須實現兩個方法 onSensorChange 和onAccuracyChanged。示例應用程序不關心傳感器的准確度。

但關注傳感器當前的 X、Y 和 Z 值。onAccuracyChanged 方法實質上不執行任何操作;它只在每次調用時添加一個日志項。似乎經常需要調用 onSensorChanged 方法,因為加速表和方向傳感器正在快速發送數據。查看第一個參數確定哪個傳感器在發送數據。

確認了發送數據的傳感器之後,將使用方法第二個參數傳遞的浮點值數組中所包含的數據更新相應的 UI 元素。該示例只是顯示這些值,但在更加高級的應用程序中,還可以分析這些值,比較原來的值,或者設置某種模式識別算法來確定用戶(或外部環境)的行為。

現在您已經了解了傳感器子系統,接下來的部分將回顧一個在android傳感器上錄制音頻的代碼樣例。該樣例運行在 DEV1 開發設備上。android.media 包包含與媒體子系統交互的類。使用 android.media.MediaRecorder 類進行媒體采樣,包括音頻和視頻。MediaRecorder 作為狀態機運行。

您需要設置不同的參數,比如源設備和格式。設置後,可執行任何時間長度的錄制,直到用戶停止。清單 2 包含的代碼在 android 設備上錄制音頻。顯示的代碼不包括應用程序的 UI 元素(完整源代碼見 下載)。在 startRecording 方法中,實例化並初始化 MediaRecorder 的實例:

輸入源被設置為麥克風(MIC)。輸出格式被設置為 3GPP(*.3gp 文件),這是移動設備專用的媒體格式。編碼器被設置為 AMR_NB,這是音頻格式,采樣率為 8 KHz。NB 表示窄頻。SDK 文檔 解釋了不同的數據格式和可用的編碼器。

音頻文件存儲在存儲卡而不是內存中。External.getExternalStorageDirectory() 返回存儲卡位置的名稱,在該目錄中將創建一個臨時文件名。然後,通過調用 setOutputFile 方法將文件關聯到 MediaRecorder 實例。音頻數據將存儲到該文件中。調用 prepare 方法完成 MediaRecorder 的初始化。

准備開始錄制流程時,將調用 start 方法。在調用 stop 方法之前,將對存儲卡上的文件進行錄制。release 方法將釋放分配給 MediaRecorder 實例的資源。在該代碼樣例中,processaudiofile 方法將音頻添加到媒體庫。使用 Intent 通知設備上的媒體應用程序有新內容可用。

關於該代碼片段最後要注意的是:如果您試用,它一開始不會錄制音頻。您將看到創建的文件,但是沒有任何音頻。您需要向 androidManifest.XML 文件添加權限。現在,您已經學了一點關於與 android 傳感器和錄制音頻相關的內容。下一節將更全面的介紹與數據采集和報告系統有關的應用程序架構。

該架構很靈活;應用程序邏輯可以劃分為本地 android 設備和服務器端資源(可以實現更大的數據庫和計算功能)。例如,本地 android 設備上錄制的音軌可以 POST 到 Web 服務器,其中將根據音頻模式數據庫比較數據。很明顯,這僅僅是冰山一角。希望您能更深入地研究,讓 android 平台超越移動電話的范疇。

該架構很靈活;應用程序邏輯可以劃分為本地 Android 設備和服務器端資源(可以實現更大的數據庫和計算功能)。例如,本地 android 設備上錄制的音軌可以 POST 到 Web 服務器,其中將根據音頻模式數據庫比較數據。很明顯,這僅僅是冰山一角。希望您能更深入地研究,讓android傳感器超越移動電話的范疇。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved