編輯:關於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控制。
一個更好的方式是注冊和注銷媒體播放按鈕事件接受者,在你的應用程序獲取和失去音頻焦點的時候。這在下一個課程中詳細的說明。
你登陸論壇的時候,我們先看看浏覽器干了什麼事兒: 用Firefox打開HiPda 的登陸頁面,輸入用戶名和密碼,點登陸。 下面是通過firebug插件獲取的數據: 可
360來電顯示歸屬地怎麼設置? 1、如果你使用的是安卓手機,那麼下載安裝並打開安卓版360安全衛士,切換到隱私保護然後點擊右上角三點符號找到衛士設置;3
Fr'agment和Activity之間的通信1.在Fragment中聲明一個接口。2.在Activity中實現在Fargment中聲明的接口。3.在Fragme
本次博客主要介紹一個天氣效果的實現過程最近公司的項目加入天氣模塊,需要實現下面的效果: 然後根據自己的構想實現了下面的效果: 下面會詳