Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android Developers:控制你的應用程序音量和播放

Android Developers:控制你的應用程序音量和播放

編輯:關於Android編程

好的用戶體驗是可以預測的。如果你的應用程序播放音頻,你的用戶能使用硬件或者軟件音量控制,來控制他們設備,藍牙耳機,或者聽筒的音量是非常重要的。

相似的,在適當的地方可用,播放,停止,暫停,上一首,和下一首媒體回放鍵,應該在你的應用使用的音頻流上執行它們各自的動作。

確定在使用哪個音頻流

—————————————————————————————————————————————————————————————————

創建一個可預測的音頻體驗的第一步是知道你的應用程序將會使用哪個音頻流。

Android維護一個單獨的音頻流來播放音樂,鈴聲,消息,來電鈴聲,系統聲音,來電,音量提升和DTMP調節。這樣做的主要目的是為了允許用戶來單獨的控制每個流的音量。

大多數這些流都被系統事件限制,所以除非你的應用程序是鬧鐘的替代,你幾乎肯定能使用STREAM_MUSIC流播放你的音頻。

使用硬件音量鍵來控制你的應用個程序的音量

—————————————————————————————————————————————————————————————————

默認情況下,按音量鍵修改當前活動音頻流的音量。如果你的應用當前沒有播放任何音樂,按這個音量鍵調整鈴聲音量。

如果你有一個游戲或者音樂應用,他們想當用戶按音量鍵的時候,是控制游戲或者音樂音量的好機會,即使他們當前在歌曲之間或者在當前游戲沒有音樂播放。

你可能會嘗試和並監聽音量鍵,通過這種方法修改你的音頻流的音量。抵制沖動。Android提供了便利的setVolumeControlStream()方法直接按音量鍵到你指定的音頻流。

已經確定了你的應用程序將要使用的音頻流,你應該把它設置為音頻流目標。你應該在你的生命周期早期調用它—因為你僅僅需要在Activity生命周期調用它一次,你通常應該在onCreate()方法中調用它(控制你的媒體的Activity或者Fragment)。這保證你的應用在任何時候都是可見的,音量控制功能為用戶所期待的。

setVolumeControlStream(AudioManager.STREAM_MUSIC); 
從此以後,在設備上按壓音量鍵將影響你指定的音頻流(在”音樂“的請款跪下)無論目標Activity或者Fragment是否可見。

使用硬件回放控制鍵來控制你的應用程序的音頻播放

—————————————————————————————————————————————————————————————————

媒體回放鍵,如播放,暫停,停止,上一首和先一手在一些手機和一些連接的無線耳機是有效的。無論用戶什麼時候按下這些鍵中的一個,系統廣播一個包含ACTION_MEDIA_BUTTION動作的Intent。

為了響應音頻按鈕點擊,你需要在你的清單文件中注冊一個BroadcastReceiver,來監聽這個廣播動作,如下所示:

 
    
        
    
 
這個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注冊或知道你的媒體按鈕事件接受者。當注冊的時候,你的broadcast receiver是所有媒體按鈕廣播的獨有接受者。

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控制。

一個更好的方式是注冊和注銷媒體播放按鈕事件接受者,在你的應用程序獲取和失去音頻焦點的時候。這在下一個課程中詳細的說明。


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved