2017-08-10 113 views
2

在靜音模式下工作在VOIP應用程序上時,應該只在藍牙耳機上播放提示音或鈴聲。如果連接上耳機,可以在耳機上播放,但如果耳機未連接,則雖然移動設備處於靜音模式,但音頻會在揚聲器上播放。檢測是否連接了藍牙耳機

有人請解釋是否有辦法檢測到藍牙耳機已連接。

回答

0

感謝您的回答@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; 
     }} 
相關問題