我的應用程序中有一個錄音服務,它將不斷錄製聲音。所以它會一直佔用AudioRecord。這意味着沒有其他應用程序可以使用錄音機,因爲它已被服務佔用。有什麼方法可以通知其他應用程序正在請求錄音機(以便我可以釋放它)以及應用程序何時發佈它(以便我可以將其分配回服務)?當其他應用程序請求錄製時發佈AudioRecord android
10
A
回答
1
也許一種可能的方法是創建一個BroadcastReceiver
,它從請求控制麥克風源的應用接收事件。方法onReceive()
應與服務交互並釋放資源。當其他應用程序正在完成時,它可以恢復進程以再次啓動服務。如果您無法控制請求應用程序的行爲,我認爲存在一個稍微不同的問題。無論如何:
問題是知道何時資源被請求,這可以通過AudioManager意向類型完成。 一定要檢查Managing audio focus哪些談論TRANSIENT方式的音頻聚焦損失!
1
0
這可以通過AudioManager.OnAudioFocusChangeListener回調完成。只需在AUDIOFOCUS_LOSS_TRANSIENT事件中停止錄製,然後再次開始AUDIOFOCUS_GAIN事件。 此解決方案適用於Google語音搜索(Google搜索小部件,Google Chrome等)。
但不幸的是,它對其他普通應用程序效果不佳(例如HTC M7 Voice Recorder應用程序無法在第一次單擊「錄製」按鈕時開始錄製,第二次點擊做竅門 - 似乎應用程序應該準備好重試多次錄製失敗)。
+0
謝謝,會檢查。 – berserk 2015-05-21 10:53:26
相關問題
- 1. 請求其他應用程序數據
- 2. Struts2向其他應用程序發送請求
- 3. 如何向其他Android應用程序請求信息?
- 4. 如何記錄由django應用程序發佈的SQL請求?
- 5. Android控制其他應用程序
- 6. Android發佈應用程序與admob請求addTestDevice?
- 7. 請求錯誤「啓用Cookie」,同時發佈的應用程序請求LinkedIn
- 8. 有時麥克風不會爲其他應用程序發佈
- 9. 其他Android應用程序
- 10. 請求的記錄聚焦從其他Android應用
- 11. 當應用程序在後臺時發送http請求
- 12. 當應用程序關閉時發送ajax請求
- 13. 當刪除應用程序請求時發生錯誤
- 14. android Intent.ACTION_TIME_TICK doent當其他應用程序在後臺時收到
- 15. Android,當其他應用程序啓動時檢測到
- 16. Android應用程序發佈
- 17. Sencha Touch - 有時會發布POST,其他人會收到請求
- 18. 如何讓應用程序在fuelphp中發佈POST請求
- 19. 在node.js應用程序中發出發佈請求
- 20. 通過C++桌面應用程序發送發佈請求
- 21. AJAX發佈停止其他應用程序事件發生
- 22. 如何從Android應用程序向流星服務器發出發佈請求
- 23. 如何從Angular2應用程序發送http發佈請求時啓用CORS
- 24. 要求其他requirejs應用程序
- 25. 如何授權的請求從其他應用程序
- 26. 從其他應用程序請求數據iphone
- 27. 使用其他應用程序控制應用程序
- 28. AVAudioRecorder:後其他記錄的應用程序無法錄製
- 29. 當程序複製到其他地方時,出現應用程序設置後
- 30. 使用AudioRecord錄製音頻android
我認爲這是不常見的senario,所以我想沒有辦法做到這一點。 – rekire 2014-09-18 09:34:05
@rekire即使服務正在運行,設備的呼叫功能也會自動使用麥克風。所以,我想一定有辦法。 – berserk 2014-09-18 09:36:32
我認爲它使用較低的本地API,它不適用於任何應用程序。 – rekire 2014-09-18 09:43:09