<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                通過學習對《深入理解Android:卷I》(以后簡稱“卷I”)第7章的學習,相信大家已經對AudioTrack、AudioRecord、音頻設備路由等知識有了深入的了解。這一章將詳細介紹音頻系統在Java層的實現,圍繞AudioService這個系統服務深入探討在Android SDK 中看到的音頻相關的機制的實現。 在分析Android音頻系統時,習慣將其實現分為兩個部分:數據流和策略。數據流描述了音頻數據從數據源流向目的地的過程。而策略則是管理及控制數據流的路徑與呈現的過程。在卷I所探討的Native 層音頻系統里,AudioTrack、AudioRecord和AudioFlinger可以被劃歸到數據流的范疇去討論。而AudioPolicy相關的內容則屬于策略范疇。 音頻系統在Java層中基本上是不參與數據流的。雖然有AudioTrack和AudioRecord這兩個類,但是他們只是Native層同名類的Java封裝。拋開這兩個類,AudioService這個系統服務包含或使用了幾乎所的音頻相關的內容,所以說AudioService是一個音頻系統的大本營,它的功能非常多,而且它們之間的耦合性也不大,本章將從三個方面來探討AudioService。 - 音量控制。 - 從按下音量鍵到彈出音量調提示框的過程,以及靜音功能的工作原理。 - 音頻IO設備的管理。 我們將詳細探討從插入耳機到聲音經由耳機發出這個過程中,AudioService的工作內容。 - AudioFocus機制。 AudioService在2.3及以后版本中提供了AudioFocus機制用以結束多個音頻應用混亂的交互現狀。音頻應用在播放音頻的過程中需要合理的申請與釋放AudioFocus,并根據AudioFocus所有權的變化來調整自己的播放行為。我們將從音頻應用開始播放音頻,到播放完成的過程中探討AudioFocus的作用及原理。 AudioService的類圖如下: :-: ![](http://img.blog.csdn.net/20150811132628301?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center) 圖 3-1 AudioService 由圖3-1可知: - AudioService繼承自IAudioService.Stub。IAudioService.Stub類很明顯是通過IAudioService.aidl自動生成的。AudioService位于Bn端。 - AudioManager擁有AudioService的Bp端,是AudioService在客戶端的一個代理。幾乎所有客戶端對AudioManager進行的請求,最終都會交由AudioService實現。 - AudioService的功能實現依賴AudioSystem類,AudioSystem無法實例化,它是java層到native層的代理。AudioService將通過它與AudioPolicyService以及AudioFlinger進行交互。 那么,開始AudioService之旅吧。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看