下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、-文件夾Hardware/Broadcom/Wlan/Ti/Wlan/Omap3/Msm7k/Libhardware_legacy/Libsensors/Qcom/Ril/RildRilreferenceLibrilInclude由此可見分為三類:1、第三方廠商部分,包括msm、broadcom、ti等2、老式硬件抽象層方案:libhardware_legacy3、獨立的硬件抽象設(shè)備:libsensors、ril、qcom(gps)等Msm7k是局通提供的一些文件:1、libaudio2、libcamera3、libcopybit4、libgralloc5、liblights6、libover
2、lay7、librpc-Audio:0、層次:media庫提供audio本地部分接口audioFlinger是audio的中間層audio硬件抽象層提供底層支持audio接口通過JNI提供給上層調(diào)用Audio管理環(huán)節(jié)Audio輸出Audio輸入Java層android.media.AudioSystemAndroid.media.AudioTrackAndroid.media.AudioRecorder本地框架層AudioSystemAudioTrackAudioRecorderAudioFlingerIAudioFlingerIAudioTrackIAudioRecorderHALAudio
3、HardwareInterfaceAudioStreamOutAudioStreamIn1、HAL層(AudioFlinge和Audio的硬件接口):hardware/msm7k/libaudio-qsd8k在這里,在msm7k的根目錄下的Android.mk中描述了如何選擇對應(yīng)平臺的庫,如果平臺是qsd8k的,則會直接選擇libaudio-qsd8k而不是libaudio原始庫,這部分就是平臺特定的代碼。在該文件中進行打開設(shè)備文件、ioctl等操作。該HAL的調(diào)用起點是:createAudioHardware(),由該函數(shù)實現(xiàn)audio的HAL實例化,并提供給AudioFlinger進行調(diào)用
4、。android的AudioHAL可以基于linux標(biāo)準(zhǔn)的ALSA或者OSS實現(xiàn),或基于私有的Audio驅(qū)動接口實現(xiàn)。HAL的主體是:AudioHardwareInterface類,HAL主要實現(xiàn)方式:實現(xiàn)AudioHardwareInterface、AudioStreamOut和AudioStreamIn三個類的繼承。HAL的實現(xiàn):(1) AudioHardwareStub.cpp是一個HAL的模擬實現(xiàn),不操作實際硬件,涉及到的輸入輸出都為空操作。(2) AudioHardwareGeneric.cpp是通用Audio抽象層,需要android的一種特殊聲音驅(qū)動支持(/dev/eac)。(3
5、) AudioDumpInterface.cpp提供帶有dump功能的HAL。(4) 自行設(shè)計的HAL,需要完成的工作和上面三個類似(比如基于OSS或者ALSA),對于有多個Audio設(shè)備的情況,可以HAL的setRouting函數(shù)設(shè)定。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已經(jīng)從ui庫中把camera剝離出來):1、HAL層:高通已實現(xiàn):hardware/msm7k/libcamera/接口在frameworks/base/include/camera/CameraService.h中定義樁實現(xiàn):CameraHardwareStub.cpp和FakeCamera.cpplibcamerastub.a2、Native層:framework/base/libs/camera/-libui:提供camera的框架部分Camera.h對上層的接
7、口ICameraClient.hICamera.hICameraService.h中間層實現(xiàn)框架CameraService繼承l(wèi)ibui,提供中間層支持(通過調(diào)用HAL實現(xiàn)),無對外的APIframework/base/camera/libcameraservice/實現(xiàn)ICameraService和ICamera兩個類在該service中,是否使用overlay是通過讀取cameraHAL的usOverlay實現(xiàn)的,如何使用overlay也是由cameraHAL完成。CameraClient3、JNI層:framework/base/core/jni/android_hardware_cam
8、era.cpp-Video-Overlay:注:overlay系統(tǒng)和其他系統(tǒng)的不同,其他系統(tǒng)一般只需要HAL即可,overlay則不僅需要HAL,而且還要在其他地方主動使用之,主要使用的地方為:視頻播放器實現(xiàn)部分的輸出環(huán)節(jié)和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名稱本地名稱數(shù)值加速度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模擬實現(xiàn):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的實現(xiàn)庫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和標(biāo)準(zhǔn)input驅(qū)動的原因,本部分在libui中使用標(biāo)準(zhǔn)方式實現(xiàn))-顯示輸出的硬件接口需要實現(xiàn)egl_native_window_t,是OpenGL結(jié)構(gòu),提供給libEGL使用的。在EGLDisplaySurface.cpp中mapFrameBuffer()實現(xiàn)對驅(qū)動的操作(1.6)-輸入的硬件接口:目的是統(tǒng)一向上層提供按鍵碼(KeyCode),這部分2.2也有了較大改變,輸入處理目前認(rèn)為是在libui中統(tǒng)一進行處理。EventHub.cppKeyCodeLabel等development/emulator/keymaps可以進
13、行參考對于不同硬件,只需要寫出不同的按鍵布局文件即可,目的是讓驅(qū)動程序中的整數(shù)值對應(yīng)到android按鍵名稱上。增加或者減少android的按鍵碼,相當(dāng)于更改android系統(tǒng)的api,降低了兼容性。2、Native層:libui(+libpixelflinger):框架集成庫,顯示的中樞,GUI中樞;定義了顏色格式:PixelFormat.hPoint.hRegion.hRect.hDisplayInfo.hEgl窗口:實現(xiàn)egl_native_window_t類,頭:EGLNativeSurface.hEGLDisplaySurface.hEGLNativeWindowSurface.h按
14、鍵和事件處理:EventHub.hKeycodeLabel.hKeyCharacterMap.hsurface:surfaceFlingeroverlay:用于視頻輸出,實現(xiàn)于surfaceflinger中,頭文件:IOverlay.hOverlay.hcamera:CameraService實現(xiàn)frameworks/base/include/ui/frameworks/base/libs/ui/Surface.h和SurfaceComposerClient.h為上層提供調(diào)用接口ISurface.hISurfaceFlingerClient.hISurfaceComposer.h是需要下層繼承
15、和實現(xiàn)的接口ISurface.h中的接口可以給本地程序進行調(diào)用,實現(xiàn)圖形數(shù)據(jù)的輸出。libpixelflinger(+libcutils)system/core/include/pixelflinger/system/core/libpixelflinger/libsurfaceflinger(+libui)繼承了libui的頭文件提供的類而實現(xiàn)framework/base/libs/surfaceflinger/surfaceflinger支持圖形層創(chuàng)建、疊加、混合等功能,這些功能依賴于的顯示設(shè)備是由DisplayHardware目錄中的DisplayHardware.cpp實現(xiàn)的,它調(diào)用了
16、EGL的HAL部分。-2D圖形系統(tǒng)庫skiaexternal/skia/libcorecg.so:核心圖形庫libligsgl.so:skia圖形庫libskiagl.so:和opengl相關(guān)的庫src/gl/對上層的接口:src/core/SkCanvans.cpp圖形編解碼接口:include/image/-3D圖形系統(tǒng)庫:framework/base/opengl/libGLESv1_CM.so:openGLES庫的封裝libEGL.so:openGLES庫的封裝libagl.so:openGL軟件實現(xiàn)庫3、JNI層:framework/base/core/jni/android_vie
17、w_Surface.cpp-2D圖形系統(tǒng)庫skia:framework/base/core/jni/android/graphic/-3D圖形系統(tǒng)庫: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/內(nèi)核部分的實現(xiàn)external/bluez/若干動態(tài)庫和可執(zhí)行程序libbluet
18、ooth:公共庫libhcid:主機接口實現(xiàn)liba2dp:藍牙立體聲服務(wù)。bluez適配libbluedroidsystem/Bluetooth/bluez使用DBUS和上層交互,因此適配層簡單,封裝了藍牙開關(guān)和射頻開關(guān)2、JNI層:frameworks/base/core/jni/android_bluetooth_*.cpp-GPS:1、HAL層+Native層:GPS定位適配層:關(guān)鍵接口: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,并實現(xiàn)自己的GpsCallback供GPS適配層進行回調(diào)。-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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 執(zhí)業(yè)獸醫(yī)考試考試題預(yù)防科目及答案
- 煙花爆竹考試題及答案
- 監(jiān)護人防溺水測試題附答案
- 幼兒教育題庫論述題及答案
- 二建網(wǎng)絡(luò)考試題及答案
- 新安全生產(chǎn)法試題庫及參考答案
- 中藥試題+答案
- 重癥醫(yī)學(xué)科考試試題與答案
- 陜西省延安市輔警公共基礎(chǔ)知識題庫(附答案)
- 客服營銷面試試題及答案
- 2026中國電信四川公用信息產(chǎn)業(yè)有限責(zé)任公司社會成熟人才招聘備考題庫及參考答案詳解1套
- 2025年廣東省生態(tài)環(huán)境廳下屬事業(yè)單位考試真題附答案
- 2026年安徽省公務(wù)員考試招錄7195名備考題庫完整參考答案詳解
- 【地理】期末模擬測試卷-2025-2026學(xué)年七年級地理上學(xué)期(人教版2024)
- LoRa技術(shù)教學(xué)課件
- GB/T 1957-2006光滑極限量規(guī)技術(shù)條件
- GB 28480-2012飾品有害元素限量的規(guī)定
- 劉一秒演說智慧經(jīng)典(內(nèi)部筆記)
- 管道TOFD檢測記錄及續(xù)表
- 馬克思主義哲學(xué)精講課件
- 期末考試總安排
評論
0/150
提交評論