MediaServer簡單分析

2021-05-28 08:03:28 字數 2257 閱讀 5379

android上的多**服務是有乙個叫做

mediaserver

的服務程序提供的。這個程序通過

binder

mediaserver伺服器程序的實現**在

/frameworks/base/media/mediaserver

目錄下,**很小。

該目錄下的android.mk

檔案:

local_path:

=$(call my-dir)

include

$(clear_vars)

local_src_files:=\

main_mediaserver.cpp 

local_shared_libraries :=

\libaudioflinger \

libcameraservice \

libmediaplayerservice \

libutils \

libbinder

base :=

$(local_path)/.

./..

local_c_includes :=

\$(base)

/libs/audioflinger \

$(base)

/camera/libcameraservice \

$(base)

/media/libmediaplayerservice

local_module:

=mediaserver

include

$(build_executable)

最後編譯出來的是mediaserver

,這個程序可以在模擬器或裝置系統中的

/system/sbin/

目錄下找到。

伺服器程序的實現原始碼:

// system headers required for setgroups, etc.

#include

#include

#include

#include

#include

#include

#include

log.h>

#include

#include

#include

#include

#include

<

private

/android_filesystem_config.h>

using

namespace

android;

intmain(

intargc,

char**

argv)

[1]

也就是說,在啟動系統的時候,mediaserver

會啟動,這樣也會隨之新增了服 務:

media.audio_flinger, media.player, media.camera, media.audio_policy。

這些服務會響應來自上層的mediaplayer

[2]在以上main()

函式中, 

defaultservicemanager()

函式獲取到當前的服務管理器

(iservicemanager)

//iservicemanager類是乙個介面,主要定義的介面函式有:

virtual

spgetservice(

const

string16&

name)

const=0;

// 獲取某個服務(若該服務不存在,則阻塞幾秒鐘)

virtual

spcheckservice(

const

string16&

name)

const=0;

// 檢查某個服務(若服務不存在,不阻塞)

virtual

status_t addservice(

const

string16&

name,

const

sp&service)=0;

// 新增乙個服務

virtual

vector

listservices()=

0;

// 列舉所有服務

MediaServer 目錄結構

深入理解android卷i audiofllinger 音訊系統中的核心服務 audiopolicyservice 音訊系統中關於音訊策略的重要服務 mediaplayerservice 多 系統中的重要服務 cameraservice 有關攝像 照相的重要服務 frameworks base li...

TOPSQL 簡單分析

正在學習oracle中,如果有什麼不對的地方,請牛大大們多多指正!目錄 2.4 按 parse calls 查詢topsql資訊 2.5按sharable mem 查詢topsql資訊 3.檢視sql 執行計畫 正文 1.topsql成因 產生top sql 的原因,細化起來有以下原因 1 表結構設...

sizeof簡單分析

include include typedef struct t1 a typedef struct t2 b a aa b bb int main void int b int malloc 20 sizeof int char str1 ab 0cde 0fg char str2 ab 0cde...