亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

【Android Developers Training】 44. 控制你應

系統 2014 0

注:本文翻譯自Google官方的Android Developers Training文檔,譯者技術一般,由于喜愛安卓而產生了翻譯的念頭,純屬個人興趣愛好。

原文鏈接: http://developer.android.com/training/managing-audio/volume-playback.html


一個良好的用戶體驗是一種可預測的。如果你的應用播放多媒體,那么很重要的一點就是你的用戶可以通過他們設備上的(藍牙耳機,耳機等等)硬件或軟件音量控制方法,來調整應用的音量。


一). 確定使用的是什么媒體流

要創建一個可預測的音頻體驗,第一步是要明確你的應用要使用什么音頻流。

Android系統中,對于播放音樂,鬧鈴,通知,來電鈴聲,系統提示音,按鍵音等都分別對應不同的音頻流。這樣做的目的主要是可以讓用戶分別對不同的音頻流控制其音量。

大多數的這些音頻流被限制為系統級事件,所以除非你的應用替代了鬧鈴,你才能使用 STREAM_MUSIC 流來播放你的音頻。


二). 使用硬件音量鍵來控制你的應用音頻音量

默認的,按下音量控制鍵會修改當前激活的音頻流的音量。如果你的應用現在沒有播放任何東西,那么按下音量鍵將會調整鈴聲音量。

如果你有一個游戲或者音樂音樂,那么當用戶希望修改游戲或音樂的音量時,按下音量控制鍵是有效的,甚至用戶現在處于兩個音樂播放之間的間隔,或者在當前的游戲所處位置沒有音樂在播放。

你可能很渴望嘗試監聽音量鍵按下的事件,并且通過這種方式來修改你的音頻流的音量。放棄這種復雜的想法吧, Android提供了 setVolumeControlStream() 這個方法來直接調整你制定的音頻流的音量。

確定了你的應用要使用的音頻流之后,你應該將它設置為當前音量流目標。你應該在你應用生命周期的早期調用響應的方法,因為你只需要在Activity整個生命周期中調用它一次,你應該在控制你的媒體的 Activity 或者 Fragment onCreate()方法中調用它。這樣可以保證不管你的應用當前是否是可見的,音量控制表現的將會與用戶期望的一致。

      setVolumeControlStream(AudioManager.STREAM_MUSIC);
    

從現在開始,按下設備的音量鍵將會影響你特定的音頻流(此例中為“ music ”),不管目標activity或fragment是否是可見的。


三). 使用硬件的播放控制鍵老控制你的應用的音頻播放

媒體播放按鈕,比如播放、暫停、停止、跳過、回放鍵在一些手持設備或其他有限設備上面還是有的。當用戶按下一個或其他這類硬件按鍵時,系統會廣播一個具有 ACTION_MEDIA_BUTTON 行為的intent。

要響應媒體按鈕的點擊事件,你需要在你的清單文件中注冊一個廣播接收器( BroadcastReceiver ),來監聽這一行為的廣播,如下所示:

      
        <
      
      
        receiver 
      
      
        android:name
      
      
        =".RemoteControlReceiver"
      
      
        >
      
      
        <
      
      
        intent-filter
      
      
        >
      
      
        <
      
      
        action 
      
      
        android:name
      
      
        ="android.intent.action.MEDIA_BUTTON"
      
      
        />
      
      
        </
      
      
        intent-filter
      
      
        >
      
      
        </
      
      
        receiver
      
      
        >
      
    

這個接收器的實現需要提取出造成這個廣播所按下的鍵是哪個。廣播的 Intent 會在 EXTRA_KEY_EVENT 鍵中包含這一信息,同時在 KeyEvent 類中包含了一系列的“ KEYCODE_MEDIA_* ”靜態常量,來表示每一個可能按下的多媒體按鍵,如: KEYCODE_MEDIA_PLAY_PAUSE KEYCODE_MEDIA_NEXT 。

下面的代碼展示了如何提取出是哪個多媒體按鈕暗下了,并對媒體播放做出相應的操作:

      
        public
      
      
        class
      
       RemoteControlReceiver 
      
        extends
      
      
         BroadcastReceiver {

    @Override

    
      
      
        public
      
      
        void
      
      
         onReceive(Context context, Intent intent) {

        
      
      
        if
      
      
         (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) {

            KeyEvent event 
      
      =
      
         (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);

            
      
      
        if
      
       (KeyEvent.KEYCODE_MEDIA_PLAY ==
      
         event.getKeyCode()) {

                
      
      
        //
      
      
         Handle key press.
      
      
                    }

        }

    }

}
      
    

因為大多數應用可能希望監聽多媒體按鍵按下的事件,當你的應用希望接收媒體按鍵按下的事件時, 你也必須 從代碼上控制多媒體。

下面的代碼通過使用 AudioManager 來注冊或者注銷你的媒體按鍵事件接收器,這可以用在你的應用中。當注冊了以后,你的廣播接收器將會是唯一的,監聽所有的媒體按鈕廣播的接收器:

      AudioManager am =
      
         mContext.getSystemService(Context.AUDIO_SERVICE);

...




      
      
        //
      
      
         Start listening for button presses
      
      
        am.registerMediaButtonEventReceiver(RemoteControlReceiver);

...




      
      
        //
      
      
         Stop listening for button presses
      
      

am.unregisterMediaButtonEventReceiver(RemoteControlReceiver);
    

通常情況下,應用應該在他們變成非激活狀態或不可見時(比如在 onStop() 回調函數階段),注銷他們的接收器。然而,對于播放應用來說,事情沒有那么簡單。事實上,因為當你的應用不可見或者不能在當前屏幕的UI界面被控制,時還能響應媒體按鍵的事件時很重要的。

一個更好的方法是在你的應用獲取和丟失音頻焦點時,注冊或注銷媒體按鈕事件接收器。

【Android Developers Training】 44. 控制你應用的音量和播放


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!?。?/p>

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产三级做爰在线播放最爱 | 欧美手机手机在线视频一区 | 四虎影永久在线观看网址 | 99在线视频精品费观看视 | 伊人网伊人| 精品69久久久久久99 | 久久久久久久久久免免费精品 | 欧美国产日韩精品 | 啪啪婷婷| 元龙第三季免费观看 | 成年人免费网址 | 99久久日本一区二区波多野结衣 | 全黄h全肉边做边吃奶在线观看 | 久久厕所精品国产精品亚洲 | 国产一区在线免费观看 | 亚洲黄色成人 | 91视频免费播放 | 欧美三级一区二区三区 | 伊人365影院| 狠狠色丁香婷婷久久综合2021 | 日本人一级大毛片 | 日本伊人色综合网 | 久久精品免费一区二区三区 | a毛片在线 | 午夜欧美视频 | 一级毛片免费一级直接观看 | 中文国产日韩欧美视频 | 黄色小视频在线免费观看 | 中文字幕一区日韩在线视频 | 亚洲国产精品热久久 | 成人在线一区二区三区 | 一本久道综合久久精品 | 国产自精品在线 | 国产精品人人视频 | 国产a不卡片精品免费观看 国产a高清 | 思思影院 | 免费一级特黄 欧美大片 | 大学生一级毛片 | 欧日韩一区二区三区 | 五月婷激情 | 国产亚洲午夜精品 |