public class BluetoothConnect { private DeviceReceiver devicecReceiver; List<BluetoothDevice> devices = new ArrayList<BluetoothDevice>(); private BluetoothA2dp mBluetoothA2dp; private BluetoothAdapter bluetoothAdapter; //蓝牙适配器 public void setDevices(List<BluetoothDevice> devices) { this.devices = devices; } public void setDevicecReceiver(DeviceReceiver DeviceReceiver) { this.devicecReceiver = DeviceReceiver; } //打开蓝牙 public void openBt() { bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if(!bluetoothAdapter.isEnabled()) { bluetoothAdapter.enable(); } else {} } //搜索蓝牙设备 public void searchBt() { devices.clear(); bluetoothAdapter.startDiscovery(); getBluetoothA2DP(); devicecReceiver.deviceRecv(); while(bluetoothAdapter.isDiscovering()); bluetoothAdapter.cancelDiscovery(); } //连接蓝牙音响 public void connect(BluetoothDevice btDev) { if(mBluetoothA2dp == null){ return; } if(bluetoothAdapter == null){ return; } if(btDev.getBondState() == BluetoothDevice.BOND_NONE) { //btDevice.createBond(); try { Method createBondMethod = BluetoothDevice.class .getMethod("createBond"); createBondMethod.invoke(btDev); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } while(btDev.getBondState() != BluetoothDevice.BOND_BONDED); try { Method connect = mBluetoothA2dp.getClass().getDeclaredMethod("connect", BluetoothDevice.class); connect.setAccessible(true); connect.invoke(mBluetoothA2dp,btDev); } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) { e.printStackTrace(); } } private void getBluetoothA2DP() { if (bluetoothAdapter == null) { return; } if (mBluetoothA2dp != null) { return; } bluetoothAdapter.getProfileProxy(MainFragmentActivity.instance, new BluetoothProfile.ServiceListener() { @Override public void onServiceConnected(int profile, BluetoothProfile proxy) { if (profile == BluetoothProfile.A2DP) { //Service连接成功,获得BluetoothA2DP mBluetoothA2dp = (BluetoothA2dp) proxy; } } @Override public void onServiceDisconnected(int profile) { } }, BluetoothProfile.A2DP); } public interface DeviceReceiver { public void deviceRecv(); } }
android连接蓝牙音响
最新推荐文章于 2021-08-30 17:45:44 发布