


下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、-文件夾Hardware/Broadcom/Wlan/Ti/Wlan/Omap3/Msm7k/Libhardware_legacy/Libsensors/Qcom/Ril/RildRilreferenceLibrilInclude由此可見分為三類:1、第三方廠商部分,包括msm、broadcom、ti等2、老式硬件抽象層方案:libhardware_legacy3、獨立的硬件抽象設備:libsensors、ril、qcom(gps)等Msm7k是局通提供的一些文件:1、libaudio2、libcamera3、libcopybit4、libgralloc5、liblights6、libover
2、lay7、librpc-Audio:0、層次:media庫提供audio本地部分接口audioFlinger是audio的中間層audio硬件抽象層提供底層支持audio接口通過JNI提供給上層調用Audio管理環節Audio輸出Audio輸入Java層android.media.AudioSystemAndroid.media.AudioTrackAndroid.media.AudioRecorder本地框架層AudioSystemAudioTrackAudioRecorderAudioFlingerIAudioFlingerIAudioTrackIAudioRecorderHALAudio
3、HardwareInterfaceAudioStreamOutAudioStreamIn1、HAL層(AudioFlinge和Audio的硬件接口):hardware/msm7k/libaudio-qsd8k在這里,在msm7k的根目錄下的Android.mk中描述了如何選擇對應平臺的庫,如果平臺是qsd8k的,則會直接選擇libaudio-qsd8k而不是libaudio原始庫,這部分就是平臺特定的代碼。在該文件中進行打開設備文件、ioctl等操作。該HAL的調用起點是:createAudioHardware(),由該函數實現audio的HAL實例化,并提供給AudioFlinger進行調用
4、。android的AudioHAL可以基于linux標準的ALSA或者OSS實現,或基于私有的Audio驅動接口實現。HAL的主體是:AudioHardwareInterface類,HAL主要實現方式:實現AudioHardwareInterface、AudioStreamOut和AudioStreamIn三個類的繼承。HAL的實現:(1) AudioHardwareStub.cpp是一個HAL的模擬實現,不操作實際硬件,涉及到的輸入輸出都為空操作。(2) AudioHardwareGeneric.cpp是通用Audio抽象層,需要android的一種特殊聲音驅動支持(/dev/eac)。(3
5、) AudioDumpInterface.cpp提供帶有dump功能的HAL。(4) 自行設計的HAL,需要完成的工作和上面三個類似(比如基于OSS或者ALSA),對于有多個Audio設備的情況,可以HAL的setRouting函數設定。2、Native層:libaudioflingerframework/base/libs/audioflingerlibmediaframework/base/include/mediaframework/bse/media/libmedia3、JNI層:framework/base/core/jni/audiolibandroid_runtime.so的一部
6、分android_media_AudioRecordAudioSystemAudioTrack-Video-Camera(2.2已經從ui庫中把camera剝離出來):1、HAL層:高通已實現:hardware/msm7k/libcamera/接口在frameworks/base/include/camera/CameraService.h中定義樁實現:CameraHardwareStub.cpp和FakeCamera.cpplibcamerastub.a2、Native層:framework/base/libs/camera/-libui:提供camera的框架部分Camera.h對上層的接
7、口ICameraClient.hICamera.hICameraService.h中間層實現框架CameraService繼承libui,提供中間層支持(通過調用HAL實現),無對外的APIframework/base/camera/libcameraservice/實現ICameraService和ICamera兩個類在該service中,是否使用overlay是通過讀取cameraHAL的usOverlay實現的,如何使用overlay也是由cameraHAL完成。CameraClient3、JNI層:framework/base/core/jni/android_hardware_cam
8、era.cpp-Video-Overlay:注:overlay系統和其他系統的不同,其他系統一般只需要HAL即可,overlay則不僅需要HAL,而且還要在其他地方主動使用之,主要使用的地方為:視頻播放器實現部分的輸出環節和camera的HAL。1、HAL層:libhardware/include/hardware/overlay.hhardware/libhardware/modules/overlay/2、Native層:libui:提供overlay的框架部分surfaceflinger:提供overlay中間層3、JNI層:overlay無JNI-Sensor:0、android支持的
9、傳感器類型:傳感器Java名稱本地名稱數值加速度TYPE_ACCELEROMETERSENSOR_TYPE_ACCELEROMETER1磁場TYPE_MAGNETIC_FIELDSENSOR_TYPE_MAGNETIC_FIELD2方向TYPE_ORIENTATIONSENSOR_TYPE_ORIENTATION3陀螺儀TYPE_GYROSCOPESENSOR_TYPE_GYROSCOPE4光線(亮度)TYPE_LIGHTSENSOR_TYPE_LIGHT5壓力TYPE_PRESSURESENSOR_TYPE_PRESSURE6溫度TYPE_TEMPERATURESENSOR_TYPE_TEM
10、PERATURE7接近TYPE_PROXIMITYSENSOR_TYPE_PROXIMITY81、HAL層:hardware/libhardware/include/hardware/sensor.h模擬實現:development/emulator/sensors2、Native層:暫無3、JNI層:frameworks/base/core/jni/android_hardware_SensorManager.cpp-RIL:1、HAL層:hardware/ril/include:RIL頭文件hardware/ril/libril:RIL庫,libril.sohardware/ril/ril
11、d:RIL守護進程,rildhardware/ril/reference-ril:RIL參考庫,libreference-ril.solibril.so是輔助功能庫,被libreference-ril.so和rild使用。ReferenceRIL是RIL的實現庫2、Native層:暫無3、JNI層:Java層和RIL的接口使用rild的socket。-GUI(HAL和Native混合,2.2中的libui部分有了較大變化):0、2.2對于1.6的提升:在native層,將camera部分從ui中分離。在native層,將surfaceflinger_client從ui庫中分離1、HAL層:In
12、put/Output和硬件接口(本屬于HAL層,但linux中fb和標準input驅動的原因,本部分在libui中使用標準方式實現)-顯示輸出的硬件接口需要實現egl_native_window_t,是OpenGL結構,提供給libEGL使用的。在EGLDisplaySurface.cpp中mapFrameBuffer()實現對驅動的操作(1.6)-輸入的硬件接口:目的是統一向上層提供按鍵碼(KeyCode),這部分2.2也有了較大改變,輸入處理目前認為是在libui中統一進行處理。EventHub.cppKeyCodeLabel等development/emulator/keymaps可以進
13、行參考對于不同硬件,只需要寫出不同的按鍵布局文件即可,目的是讓驅動程序中的整數值對應到android按鍵名稱上。增加或者減少android的按鍵碼,相當于更改android系統的api,降低了兼容性。2、Native層:libui(+libpixelflinger):框架集成庫,顯示的中樞,GUI中樞;定義了顏色格式:PixelFormat.hPoint.hRegion.hRect.hDisplayInfo.hEgl窗口:實現egl_native_window_t類,頭:EGLNativeSurface.hEGLDisplaySurface.hEGLNativeWindowSurface.h按
14、鍵和事件處理:EventHub.hKeycodeLabel.hKeyCharacterMap.hsurface:surfaceFlingeroverlay:用于視頻輸出,實現于surfaceflinger中,頭文件:IOverlay.hOverlay.hcamera:CameraService實現frameworks/base/include/ui/frameworks/base/libs/ui/Surface.h和SurfaceComposerClient.h為上層提供調用接口ISurface.hISurfaceFlingerClient.hISurfaceComposer.h是需要下層繼承
15、和實現的接口ISurface.h中的接口可以給本地程序進行調用,實現圖形數據的輸出。libpixelflinger(+libcutils)system/core/include/pixelflinger/system/core/libpixelflinger/libsurfaceflinger(+libui)繼承了libui的頭文件提供的類而實現framework/base/libs/surfaceflinger/surfaceflinger支持圖形層創建、疊加、混合等功能,這些功能依賴于的顯示設備是由DisplayHardware目錄中的DisplayHardware.cpp實現的,它調用了
16、EGL的HAL部分。-2D圖形系統庫skiaexternal/skia/libcorecg.so:核心圖形庫libligsgl.so:skia圖形庫libskiagl.so:和opengl相關的庫src/gl/對上層的接口:src/core/SkCanvans.cpp圖形編解碼接口:include/image/-3D圖形系統庫:framework/base/opengl/libGLESv1_CM.so:openGLES庫的封裝libEGL.so:openGLES庫的封裝libagl.so:openGL軟件實現庫3、JNI層:framework/base/core/jni/android_vie
17、w_Surface.cpp-2D圖形系統庫skia:framework/base/core/jni/android/graphic/-3D圖形系統庫:framework/base/core/jni/com_google_android_gles_jni_GLImpl.cppframework/base/core/jni/com_google_android_gles_jni_EGLImpl.cpp-BT:1、HAL層+Native層:Bt的HAL和Native是混合在一起的。blueznet/Bluetooth/內核部分的實現external/bluez/若干動態庫和可執行程序libbluet
18、ooth:公共庫libhcid:主機接口實現liba2dp:藍牙立體聲服務。bluez適配libbluedroidsystem/Bluetooth/bluez使用DBUS和上層交互,因此適配層簡單,封裝了藍牙開關和射頻開關2、JNI層:frameworks/base/core/jni/android_bluetooth_*.cpp-GPS:1、HAL層+Native層:GPS定位適配層:關鍵接口:GpsInterfaceGpsLocationhardware/libhardware_legacy/gps/hardware/libhardware_legacy/include/hardware_
19、legacy/gpslibloc_apihardware/qcom/gps/loc_api/libloc_apilibloc_api-rpc(+librpc)hardware/qcom/gps/loc_api/libloc_api-rpc2、JNI層:frameworks/base/core/jni/android_location_GpsLocationProvider.cpp直接和適配層交流,訪問適配層定義的GpsInterface,并實現自己的GpsCallback供GPS適配層進行回調。-Wifi:1、HAL層:wpa_supplicant程序external/wpa_supplicantwpa_supplicant適配層hardware/libhardware_legacy/wifi/libhardware_legacy的一部分封裝wpa_supplic
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高中生涯規劃與數學學科邏輯推理能力培養研究論文
- 歷史文化遺址保護教育對初中生歷史實踐能力培養的作用研究論文
- 節能節水等管理制度
- 英語培訓班管理制度
- 茶館俱樂部管理制度
- 低壓成套開關設備和控制設備設計規范書
- 趕集網簡介服務類-媒體資源網-中國權威的廣告媒體交易平臺
- 2025年廣東省深圳市南山第二外國語學校(集團)學府中學中考數學三模試卷
- 綠色卡通插畫綠植奇妙的種子認識種子主題
- 山東省青島市城陽區2024-2025學年九年級下學期期中歷史試題(含答案)
- 《ptc鈦酸鋇陶瓷》課件
- 氮氣安全知識培訓課件
- 銀發經濟的發展路徑
- 金礦融資計劃書范文
- 2024年11月人力資源管理師三級真題及答案
- JGJ46-2024 建筑與市政工程施工現場臨時用電安全技術標準
- 足球場草坪養護管理手冊
- 國際私法-001-國開機考復習資料
- 《安全事故案例》課件
- 皮瓣移植護理個案
- 基于社交媒體的時尚品牌營銷策略研究
評論
0/150
提交評論