我正在使用VoIP應用程序,當用戶拔掉耳機後,設備會自動切換到揚聲器,但我希望設備切換到普通揚聲器。有什麼方法可以將它改爲普通揚聲器嗎?如何在android中設置默認模式耳機
回答
棘手的問題,尤其多臺設備的情況。
我曾在一個VoIP應用程序,這是我知道這一點。您所面對的可能是因爲在請求焦點後正在手動處理音頻管理器模式和/或流。您需要做的是將控制權轉移到通話流中,以便您的通話處於打開狀態時,連接和斷開耳機,轉接到電話聽筒等都由o.s.自動處理。
你也許可以做這一切或組合...
使用AudioManager {} .setMode(int mode) - 使用MODE_IN_COMMUNICATION,推薦用於VoIP或MODE_IN_CALL
此外,檢查STREAM_VOICE_CALL
你usinng - isSpeakerphoneOn() and setSpeakerphoneOn(boolean) - isBluetoothScoOn(),setBluetoothScoOn(boolean)?
將需要玩弄所有這些設備或耳機模型的具體問題。
有用的東西:
即使建立SCO連接,以下限制 適用於音頻輸出流,使他們能夠被路由到SCO 耳機:
- 流類型必須是STREAM_VOICE_CALL
- 格式必須是單聲道
- 採樣必須是16kHz或8kHz
要打開耳機編程試試這個:
audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
private void useEarpiece() {
audioManager.setMode(AudioManager.MODE_IN_CALL);
audioManager.setSpeakerphoneOn(false);
}
檢查您的權限:
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
爲了趕上事件:
private class HeadSetReceiver extends BroadcastReceiver {
@Override public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_HEADSET_PLUG)) {
int state = intent.getIntExtra("state", -1);
switch (state) {
case 0:
// Headset unplugged
break;
case 1:
// Headset plugged in
break;
}
}
}
}
我嘗試了,但是當我切換到普通音箱將開關前留在外放1.5s左右正常揚聲器 –
感謝這個兄弟! –
- 1. 在CtrlP中,如何將`mru`模式設置爲默認模式?
- 2. 在postgresql中設置默認模式(spring)
- 3. 設置默認模式名在Java中
- 4. Android相機,如何設置默認格式?
- 5. 如何在android中設置標籤主機的默認頁面?
- 6. 如何在Yii2中設置默認模式
- 7. 如何在Play中設置默認的PostgreSQL模式?
- 8. 如何在Spacemacs中設置文件的默認模式?
- 9. 如何設置PDO默認主機?
- 10. 設置默認打印機
- 11. Joomla:如何設置默認模板?
- 12. 如何在Android中檢測BT耳機或有線耳機
- 13. 如何在android中獲取耳機(耳機)的UUID?
- 14. Spine.js,設置模式默認值
- 15. MySQL PDO - 設置默認提取模式?
- 16. 問題設置默認模式
- 17. 爲SQL查詢設置默認模式
- 18. 如何在iPhone模擬器中設置默認設備?
- 19. 如何通知設備在Android中的默認設置路徑?
- 20. (Android)如何在mapview中設置默認GPS位置
- 21. 在Android中設置默認選項卡?
- 22. 默認情況下MINGW64 curl設置默認模式
- 23. 如何在DropDownListFor中設置默認值
- 24. 如何在NopDropDownList中設置默認值...?
- 25. 如何在jsp中設置默認值?
- 26. 如何在text_field中設置默認值?
- 27. 如何在forge.prefs中設置默認值?
- 28. 如何在Jplayer中設置默認值
- 29. 如何以編程方式更改相機默認設置
- 30. 如何以編程方式設置默認打印機
感謝您的幫助,但我有一個問題,它將在切換到普通揚聲器之前留在揚聲器約1.5秒 –
好吧..什麼音頻模式是你的應用程序在通話時? – user2450263
我認爲MODE_IN_CALL是因爲這個應用程序使用Cordova通過人行橫道在webview中撥打電話,所以我不知道爲什麼延遲切換到普通揚聲器 –