Android 2.3 的更新:SensorService 的「Native 化」

jollen 發表於 January 3, 2011 4:45 PM

近期在進行 Android 2.3 的新框架程式碼研究,Android 2.3 在 Platform (Framework) 部份包含了許多重大的更新,其中一個部份就是 SensorService 改寫成 Native Service 形式。在 Android 2.2 以前的框架,SensorService 包含在 SystemServer 裡,實務上,可能也會對 SensorService 做小幅度改寫,以增進效能,或是將 SensorService 獨立成為一個 process。

在 Android 2.3 裡的 SystemServer 已經找不到 SensorService 了,這個重要的 Android Service 被改寫成 Native Service。「如何將 Android Service 改寫為 Native Service」,以及「Native Service」的開發,從 Android 2.3 開始,將成為重量級主題。由於本週即將進行「Android HAL & Framework: 軟硬整合實作訓練」課程,利用元旦假期,也順利完成課程以及教材的更新,將開始著重 Native Service 的講解,並透過實例解說 Native Service 的開發。

由於 Android 2.2/2.3 可能是併行的關係,而非取代關係。因此,Android 2.2 以及 Android 2.3 的學習必要性很高;意思是,最好能由 2.1/2.2 的框架開發開始學習。了解 Android 2.1/2.2 的 SensorService 架構,再對 Android 2.3 的 SensorService 進行了解,除了可比較其設計與實作差異外,也能知道「效能改進之道」。了解過去 SensorService 架構與實作上的不足,以及 Android 2.3 的改寫,解決了什麼問題。

Android 2.3 的 libhardware 沒有太大變動。從 Anroid 2.1/2.2 開始的開發者,可以由 Android 2.3 的 SensorService 做為「更新知識」的進入點。

讀者留言 (1)

  • joe 於 March 1, 2011 14:28:

    请问一下,我现在有一个G-sensor和一个L-sensor
    现在G-sensor能正常工作,G-sensor的hal到:hardware\libhardware\modules\sensors\sensor.c
    这个文件只有对G-sensor抽象,现在我把L-sensor驱动写好了,对于上层不太懂,还请你帮助。是不是也要写另一个hal,应该怎么样做?还请指教,谢谢!

    ==================================
    看了好久的上层代码,了解到:有java架构:servicemanage.java和sensorservice.java和JNI相对应的二个C++的文件。难道还要为L-sensor写个服务?


留言功能維護中。將於近日重新開放。

連絡作者

Jollen Chen,Moko365(仕橙3G教室)講師,熱愛研究 Linux 與 Android 技術。曾為 Motorola、HTC、Foxconn、LG、OPPO、騰迅、廣達電腦、緯創、仁寶等超過 50 家企業講授課程。目前在 MokoVersity 擔任軟體工程師,撰寫 Node.js 程式,也在幾家科技廠兼任 Android Framework 研發顧問。您可透過電子郵件 <jollen (at) jollen (dot) org> 或這裡與我連絡。