<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Android Frameworks 啟動過程--以 Radio Frameworks 為例

      Radio Frameworks

      • 收音機(jī)服務(wù)進(jìn)程在 Android 中在 frameworks/base/services/java/com/android/server/SystemServer.java/startOtherServices 中被調(diào)用啟動

      一、加載 Radio 權(quán)限配置文件

      image

      1. SystemConfig 在構(gòu)造函數(shù)中加載權(quán)限配置文件時,會在多個文件目錄下找權(quán)限配置文件,比如環(huán)境變量中設(shè)置的目錄,如 /system/etc/permissions/,還允許自定義設(shè)置環(huán)境變量目錄,比如 /vendor/etc/permissions/
      2. 但是這些配置文件都是由 frameworks/native/data/etc/ 目錄下拷貝過去的,比如收音機(jī)的權(quán)限配置文件是名為 android.hardware.broadcastradio.xml
      3. 拷貝命令一般都位于編譯的 mk 文件中,使用系統(tǒng)變量 PRODUCT_COPY_FILES
        1. 如想要移動收音機(jī)的配置權(quán)限從目錄 frameworks/native/data/etc/ 移動到 /vendor/etc/permissions,
        2. PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.broadcastradio.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.broadcastradio.xml

      二、啟動 Radio frameworks 進(jìn)程

      // frameworks/base/core/java/android/content/pm/PackageManager.java
      // 就是收音機(jī)權(quán)限配置文件中的 feature name
      public static final String FEATURE_BROADCAST_RADIO = "android.hardware.broadcastradio";
      // frameworks/base/services/java/com/android/server/SystemServer.java
      private void startOtherServices() {
          ...
          // 判斷收音機(jī)是否需要加載
          if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_BROADCAST_RADIO)) {
              traceBeginAndSlog("StartBroadcastRadioService");
              mSystemServiceManager.startService(BroadcastRadioService.class);    // 啟動 RadioHalService
              traceEnd();
          }    
          ...
      }
      // frameworks/base/services/core/java/com/android/server/broadcastradio/BroadcastRadioService.java
      public class BroadcastRadioService extends SystemService {
          public void onStart() {
              publishBinderService(Context.RADIO_SERVICE, mServiceImpl); // 注冊 Radio 的服務(wù)
          }
      }
      

      三、Radio App 啟動過程

      • Radio 的服務(wù)是由 App 的進(jìn)程調(diào)用,如以 Android 原生 APP 的調(diào)用
      • APP 的啟動是由 Launcher 服務(wù)啟動的

      image

      1. packages/apps/Car/Radio/src/com/android/car/radio 文件夾是原始的 Radio APP 代碼,主要是 Android 界面上 HMI 的代碼
      2. packages/apps/Car/Radio/src/com/android/car/radio/platform/ 是 RadioService 也就是訪問 Frameworks 接口的代碼。
      3. 一個是 HMI 專注于用戶交互,一個負(fù)責(zé)接收上層業(yè)務(wù)調(diào)用,并且調(diào)用 Android 原生的內(nèi)核接口傳遞請求到內(nèi)層。個人理解是前后依賴后者即可,但是在前者的原始 APP 代碼中,即 RadioService.java 文件中還引入了 import android.hardware.radio.RadioManager;。該設(shè)計不知道目的是什么?

      至此就完成了 RadioHalService 的啟動,注冊,上層應(yīng)用進(jìn)程獲取,使用的整個啟動過程。

      四、RadioService 使用 Frameworks 接口步驟

      1. 獲取 RadioManager 的實(shí)例化
          public RadioManagerExt(@NonNull Context ctx) {
              mRadioManager = (RadioManager)ctx.getSystemService(Context.RADIO_SERVICE);
              ...
          }
      
      1. 初始化 Modules,每個連接 RadioManager 的服務(wù)都有一個 ModuleId,用來支持多進(jìn)程訪問 Radio 服務(wù)的
      private void initModules() {}
      
      1. 打開一個 RadioTuner 實(shí)例,用來控制 Radio 設(shè)備的類,里面提供了 Radio 操作的功能,如 tune,scan,mute 等功能
      RadioTuner tuner = mRadioManager.openTuner( module.getId(),               null, true, cbExt, hwHandler);
      
      1. 使用 Tuner 的功能,如 tune,scan
      mRadioTuner.tune(ProgramSelectorExt.createAmFmSelector(lastChannel));
      mRadioTuner.scan(RadioTuner.DIRECTION_UP, true);
      

      ---- END ----

      posted @ 2024-04-01 15:01  王清河  閱讀(439)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 中文字幕av一区二区| 67194熟妇在线观看线路| 中文字幕久久人妻熟人妻| 北岛玲亚洲一区二区三区| 日韩av爽爽爽久久久久久| 中国大陆高清aⅴ毛片| 漂亮人妻被强中文字幕久久| AV教师一区高清| 人妻中出无码中字在线| 拍真实国产伦偷精品| 国产短视频精品一区二区| 亚洲国产青草衣衣一二三区| 亚洲av激情综合在线| 中文文字幕文字幕亚洲色| 69精品丰满人妻无码视频a片| 日韩中文字幕精品人妻| 国产精品揄拍100视频| 日韩精品一区二区三区中文无码| 欧美一区二区三区成人久久片| 亚洲色成人一区二区三区| 特黄特色的大片观看免费视频 | 亚洲最大的成人网站| 精品国产AⅤ无码一区二区| 国产免费无遮挡吃奶视频| 国产高清在线精品一本大道| 无码国模国产在线观看免费| 少妇高潮喷水在线观看| 成人国产亚洲精品一区二区| 公天天吃我奶躁我的在线观看| 最新高清无码专区| 国产一区二区三区色噜噜| 久久夜色精品国产亚洲av| 久久久久国产一级毛片高清版A| 在线中文字幕国产精品| 潮喷失禁大喷水av无码| 久99久热只有精品国产99| 精品人妻日韩中文字幕| 国产亚洲一在无在线观看| 亚洲第一极品精品无码久久| 精品无码专区久久久水蜜桃| 国产午夜伦伦午夜伦无码|