1. 程式人生 > >鎖屏或按Home鍵後繼續播放音樂

鎖屏或按Home鍵後繼續播放音樂

參考

一般聽音樂的app在鎖屏狀態和按home鍵後都能繼續播放音樂,有些強大的甚至在來簡訊後能夠繼續播放,不被中斷,比如:百度ting。本文主要介紹鎖屏和按home鍵後仍播放音樂實現。

主要依靠“音訊會話”(AVAudioSession)來實現。詳細關於AVAudioSession的介紹見參考一。
它可以處理
1)您的音訊在Ring/Silent切換過程中是否變為無聲
2)在螢幕鎖定狀態時您的音訊是否停止
3)當您的音訊開始播放時,iPod音訊是繼續播放,還是變為無聲
更大的音訊上下文包括使用者所做的改變,比如使用者插入耳機,處理Clock和Calendar這樣的警告事件,或者處理呼入的電話。通過音訊會話,您可以對這樣的事件做出恰當的響應。

1.鎖屏後仍能繼續播放音樂,則只要將下面的程式碼包含到應用程式中即可

派生到我的程式碼片

    [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: nil nil];  
    [[AVAudioSession sharedInstance] setActive: YES error: nil nil];  

設定了AVAudioSessionCategoryPlayback,表示對於使用者切換靜音模式或者鎖屏 都不理睬,繼續播放音樂。並且不播放來自其他app的音樂,當然你可以設定kAudioSessionProperty_OverrideCategoryMixWithOthers  來實現與其他app的音樂混合。

除AVAudioSessionCategoryPlayback外,還有以下其他category。
    NSString *const AVAudioSessionCategoryAmbient;  
    NSString *const AVAudioSessionCategorySoloAmbient;  
    NSString *const AVAudioSessionCategoryPlayback;  
    NSString *const AVAudioSessionCategoryRecord;  
    NSString *const AVAudioSessionCategoryPlayAndRecord;  
    NSString *const AVAudioSessionCategoryAudioProcessing;  

AVAudioSessionCategoryAmbient靜音模式或者鎖屏下不再播放音樂,和其他app聲音混合。
AVAudioSessionCategorySoloAmbient預設模式,靜音模式或者鎖屏下不再播放音樂,不和其他app聲音混合。
AVAudioSessionCategoryRecord不播放音樂,鎖屏狀態繼續錄音
AVAudioSessionCategoryPlayAndRecord 播放音樂,並錄音
2.按home鍵後仍能播放
plist 新增Required  background modes ,內容設定為App plays audio,如下圖所示。


注意這個在simulator上是沒有效果的,但在真機上可以work。

另外,看到有人說home情況下,播放完一首歌會暫停,不再繼續播放。很挫的方法是用另外一個audioplay播放無聲的聲音,那麼
當你播放完一首歌的時候系統就不會將你的app suspend掉,這樣你可以切換到下一首繼續播放。
也許有更好的方法,這個只是mark一下。


相關推薦

Home繼續播放音樂

參考 一般聽音樂的app在鎖屏狀態和按home鍵後都能繼續播放音樂,有些強大的甚至在來簡訊後能夠繼續播放,不被中斷,比如:百度ting。本文主要介紹鎖屏和按home鍵後仍播放音樂實現。 主要依靠“音訊會話”(AVAudioSession)來實現。詳細關於AVAudio

Android橫豎切換, 手機以及Home和返回時的Activity的生命週期

用手機做了實驗,結果如下: 豎屏切橫屏會呼叫完整的生命週期: 03-09 17:08:35.170: I/MainActivity(14086): MainActivity Paused 03-09 17:08:35.200: I/MainActivity(14086):

google 分模式 home界面錯亂故障分析(二) 分的啟動過程

activity 根據 動作 home鍵 更新 lean 全屏 擴展 ddt google 進入分屏後在橫屏模式按home鍵界面錯亂(二) 你確定你了解分屏的整個流

homeActivity啟動慢的問題

場景: APP中有兩個Activity, MainActivity和TestActivity。首先開啟MainActivity,然後按home鍵回到launcher。這是從後臺(service)startActivity, 這個過程要等5秒左右,google官網有介紹,從後

google 分模式 home介面錯亂故障分析

問題描述 [Dialer&&MMS]進入分屏後在橫屏模式按home鍵介面錯亂 操作步驟 1.進入撥號盤2.長按recent進入分屏,按home回主介面3.點選MMs進入簡訊,轉到橫屏模式4按home鍵,故障發生 環境描述 android7.0.1 螢幕解析度 720*1280 手機:eng版

Home重新進入app又重新啟動問題解決

問題: 安裝完第一次使用的時候,點選home鍵,再進去會進入啟動頁。退出app第二次使用,就沒這問題。 解決方法: 在根activity的oncreate方法中 貼上這行程式碼 if (!is

home,重新開啟app2-3秒鐘顯示上次的頁面

按home鍵後,重新開啟app後2-3秒鐘顯示上個直播間的頁面(該問題出現的前提進入直播間,然後點選開始錄音的情況下,home間退到後臺)原因:在applicationDidEnterBackground傳送通知,對app退到後臺進行相關處理操作(如停止錄音操作);    

廣播喚起一個介面A home 點選應用圖示應用重新載入未出現介面A

問題 :     我做的一個視訊通話專案,當程式未在介面中來電了,我通過監聽來電廣播來啟動一個通話介面(這時候intent的啟動模式Intent.FLAG_ACTIVITY_NEW_TASK)因為當前應用已經完全退出,沒有存在Task棧,不這樣設定程式會因為找不到存放act

Android狀態下,快速兩次音量下實現抓拍功能(1.1Framework層使用廣播形式實現)

實現思路:     WindowManagerService迴圈讀取下面按鍵訊息並分發給視窗,在訊息分發前會在PhoneWindowManager.interceptKeyBeforeQueueing方法中進行訊息的過濾。因此該實現方式為在訊息分發前的interceptKe

Android狀態下,快速兩次音量下實現抓拍功能(一,Framework層實現)

    WindowManagerService迴圈讀取下面按鍵訊息並分發給視窗,在訊息分發前會在PhoneWindowManager.interceptKeyBeforeQueueing方法中進行訊息的過濾。因此該實現方式為在訊息分發前的interceptKeyBeforeQueueing方法中監聽當前按

HOME從懸浮層啟動Activity慢

    兄弟團隊碰到一個問題:在Activity介面,按下HOME鍵後,點選懸浮層按鈕,再啟動Activity, Activity要延時5S後才出來。     經驗證,這個問題不是應用自身的BUG。那怕該Activity是空的,也會有這個問題。     看了stack f

Android app執行時HOME,再次點選圖表從新呼叫啟動頁問題

如標題所述,最近被重複例項化launcher activity這個問題搞得很慘,這個問題有哪些表現呢?如下: 1. 在package installers 安裝介面安裝完一個應用後,直接開啟app,然後進入了 Activity_1, 此時再通過此activity用star

Android App首次安裝完成在安裝介面直接開啟應用,再home返回桌面,從桌面圖示重新進入app,返回不到之前的介面問題

概述 在做專案的時候遇到了,Android App首次安裝完成後在安裝介面直接開啟應用,再按home鍵返回桌面,從桌面圖示重新進入app,返回不到之前介面的問題;然而有一次完全退出應用後,這個問題就會消失。然後各種檢查程式碼覺得都沒有問題,後面通過對任務棧的實

android橫豎切換、home返回所觸發的生命週期

程式執行:onCreate()->onStart()->onResume() 按home鍵:onPause()->onSaveInstanceState()->onStop

取消強制關閉顯示器(無管理員權限的小夥伴)

IT active shell 情況下 就是 utf 電腦 windows () 一些公司出於某種原因讓員工的電腦到一定時間強制鎖屏或者關閉顯示器,一般情況下你只要簡單的百度一下你就知道怎麽去解決以上問題。(這是在你有管理員權限的情況下),如果你沒有管理員權限只是按照百度搜

home,再次點選頁面按鈕,回到退出頁面

第一步:去除application中的 android:launchMode=“singleTask” 第二步:然後新增:android:alwaysRetainTaskState=“true” (作用:是否保持原來的狀態。當我們按HOME鍵返回桌面,"true"表示任務棧的狀

正在執行的android程式,home之後退回到桌面,再次點選桌面圖示避免再次重新啟動程式的終極解決辦法

在網上找了好多方法,有的說 在AndroidManifest.xml中修改,MainActivity的launchMode,去掉android:launchMode="singleTask"啟動模式即可。 AndroidManifest.xml的配置程式碼 可是我的程式碼就是這樣

Android關於專案中遇到的home退出到桌面,再次開啟重新啟動程式的解決方法

我的專案是使用高德地圖做交通類的,主要是Activity和Fragment之間的切換。 我遇到的問題是:我在執行打包後的apk時,進入程式後,無論在哪個介面按home鍵回到桌面,當再次開啟需要重新啟動而不是回到開啟之前的操作介面;而在程式碼除錯的時候不會出現這種問題。 解決方法:在網上搜了好

Android打release包時Home,再桌面icon時出現app重新啟動的問題

在專案開發中遇到了按Home鍵,再按桌面icon時出現app重新啟動的問題,這個時候我們將啟動的那個activity(一般為廣告頁面GuideActivity)的啟動模式android:launchMode="singleTask"去掉即可,但是有些APP很奇怪,debug版

Android 點選 Home 再點選 APP圖示,APP 重新啟動了

正常情況下,點選 Home 鍵回到桌面,App 程序沒有被殺掉,再次進入 APP 應該都是回到之前顯示的頁面。 但是在某些不知名的情況下,也可能是某些手機會有這個問題。點選了 APP圖示 是重新開啟 APP,但是從近期工作列裡面開啟是回到之前已經開啟的頁面。 解決辦法: 在