我需要从蓝牙耳机发送和读取音频。我已经实现了广播接收器来检测设备何时配对。当应用启动且设备已与手机配对时,这可以正常工作并检测设备。但是,如果我启动我的应用程序且该设备未配对,则广播接收器将不会检测到该设备随后与该设备配对的时间。我的应用启动后,如何设置接收器以检测SCO设备何时与手机配对? 这是我的广播接收器:
public class BluetoothReceiver : BroadcastReceiver
{
public AudioManager Audiomanager { get; set; }
public override void OnReceive(Context context, Intent intent)
{
//https://www.programering.com/q/MDN5ATMwATk.html
Android.Media.ScoAudioState state = (Android.Media.ScoAudioState)intent.GetIntExtra(AudioManager.ExtraScoAudioState, -1);
if(state == ScoAudioState.Connected)
{
//record
}
}
}
这就是我在非UI线程中实例化它的方式:
private void StartAudioBroadcastReceiver()
{
try
{
AudioManager manager = (AudioManager)GetSystemService(Context.AudioService);
m_bluetoothReceiver = new BluetoothReceiver()
{
Audiomanager = manager
};
manager.Mode = Mode.Normal;
bool bluetoothMicAvailable = manager.IsBluetoothScoAvailableOffCall;
if (bluetoothMicAvailable)
{
manager.BluetoothScoOn = true;
RegisterReceiver(m_bluetoothReceiver, new IntentFilter(AudioManager.ActionScoAudioStateUpdated));
manager.StartBluetoothSco();
}
}
catch (Exception ex)
{
}
}