在靜音模式下工作在VOIP應用程序上時,應該只在藍牙耳機上播放提示音或鈴聲。如果連接上耳機,可以在耳機上播放,但如果耳機未連接,則雖然移動設備處於靜音模式,但音頻會在揚聲器上播放。檢測是否連接了藍牙耳機
有人請解釋是否有辦法檢測到藍牙耳機已連接。
在靜音模式下工作在VOIP應用程序上時,應該只在藍牙耳機上播放提示音或鈴聲。如果連接上耳機,可以在耳機上播放,但如果耳機未連接,則雖然移動設備處於靜音模式,但音頻會在揚聲器上播放。檢測是否連接了藍牙耳機
有人請解釋是否有辦法檢測到藍牙耳機已連接。
支持藍牙耳機,你可以使用getConnectedDevices()
參考:http://developer.android.com/reference/android/bluetooth/BluetoothHeadset.html
感謝您的回答@cristallo
這是我處理的方式。
連接到代理
bluetoothAdapter.getProfileProxy(mContext, mProfileListener, BluetoothProfile.HEADSET);
創建從Detect programatically if headphone or bluetooth headset attached with android phone
的博客VIPUL創造了一個BluetoothHeadsetManager類,它處理越來越耳機個人資料中的監聽
private BluetoothProfile.ServiceListener mProfileListener = new BluetoothProfile.ServiceListener()
{
@Override
public void onServiceConnected(int profile, BluetoothProfile proxy)
{
if (profile == BluetoothProfile.HEADSET)
{
mBluetoothHeadset = (BluetoothHeadset) proxy;
if(mBluetoothHeadset.getConnectedDevices().size()>0) {
IS_BLUETOOTH_CONNECTED = true;
Logs.d(TAG,"Bluetooth device is connected");
}
}
}
@Override
public void onServiceDisconnected(int profile)
{
if (profile == BluetoothProfile.HEADSET)
{
mBluetoothHeadset = null;
IS_BLUETOOTH_CONNECTED = false;
Logs.d(TAG,"Bluetooth device is disconnected");
}
}
};
,處理聽呃,檢查藍牙是否啓用。我沒有使用廣播接收器。
switch (audioMgr.getRingerMode()) {
case AudioManager.RINGER_MODE_SILENT:
if(BluetoothHeadsetManager.IS_BLUETOOTH_CONNECTED) {
//play notification
}
break;
case AudioManager.RINGER_MODE_VIBRATE:
if(BluetoothHeadsetManager.IS_BLUETOOTH_CONNECTED) {
//play notification
}
break;
case AudioManager.RINGER_MODE_NORMAL:
//play ringtone
break;
default:
break;
}}