J'ai une classe qui était utilisée pour coupler et se connecter à un périphérique Bluetooth. J'utilise Android 6.0 pour l'implémenter. L'application a deux boutons qui sont pour la fonction de paire et de connexion. Cela a bien fonctionné pour la fonction de paire. Cependant, je ne peux pas implémenter la fonction de connexion. J'ai regardé un exemple de connexion Bluetooth, mais ils ne fonctionnent pas quand je l'ai utilisé dans cette classe. S'il vous plaît regardez ma classe et donnez-moi une direction pour la mettre en œuvre? Merci à tousComment se connecter à un périphérique Bluetooth lorsqu'ils sont couplés?
public class DeviceListActivity extends Activity {
private ListView mListView;
private DeviceListAdapter mAdapter;
private ArrayList<BluetoothDevice> mDeviceList;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_paired_devices);
mDeviceList = getIntent().getExtras().getParcelableArrayList("device.list");
mListView = (ListView) findViewById(R.id.lv_paired);
mAdapter = new DeviceListAdapter(this);
mAdapter.setData(mDeviceList);
mAdapter.setPairListener(new DeviceListAdapter.OnPairButtonClickListener() {
@Override
public void onPairButtonClick(int position) {
BluetoothDevice device = mDeviceList.get(position);
if (device.getBondState() == BluetoothDevice.BOND_BONDED) {
unpairDevice(device);
} else {
showToast("Pairing...");
pairDevice(device);
}
}
});
mAdapter.setConnectListener(new DeviceListAdapter.OnConnectButtonClickListener() {
@Override
public void onConnectButtonClick(int position) {
//Connect bluetooth
}
});
mListView.setAdapter(mAdapter);
registerReceiver(mPairReceiver, new IntentFilter(BluetoothDevice.ACTION_BOND_STATE_CHANGED));
}
@Override
public void onDestroy() {
unregisterReceiver(mPairReceiver);
super.onDestroy();
}
private void showToast(String message) {
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
}
private void pairDevice(BluetoothDevice device) {
try {
Method method = device.getClass().getMethod("createBond", (Class[]) null);
method.invoke(device, (Object[]) null);
} catch (Exception e) {
e.printStackTrace();
}
}
private void unpairDevice(BluetoothDevice device) {
try {
Method method = device.getClass().getMethod("removeBond", (Class[]) null);
method.invoke(device, (Object[]) null);
} catch (Exception e) {
e.printStackTrace();
}
}
private void connectDevice(BluetoothDevice device) {
// Connect bluetooth
}
private final BroadcastReceiver mPairReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_BOND_STATE_CHANGED.equals(action)) {
final int state = intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE, BluetoothDevice.ERROR);
final int prevState = intent.getIntExtra(BluetoothDevice.EXTRA_PREVIOUS_BOND_STATE, BluetoothDevice.ERROR);
if (state == BluetoothDevice.BOND_BONDED && prevState == BluetoothDevice.BOND_BONDING) {
showToast("Paired");
} else if (state == BluetoothDevice.BOND_NONE && prevState == BluetoothDevice.BOND_BONDED){
showToast("Unpaired");
}
mAdapter.notifyDataSetChanged();
}
}
};
}
Vous voudrez peut-être jeter un oeil à ceci: https://github.com/omaflak/Bluetooth-Library Bonne chance ;-) –
Merci A. Omar pour lib utile. Cependant, le lib utilisé un UUID fixe. Comment puis-je connaître mon UUID de ma classe? – Jame
Comme dit @ user2560571 l'UUID est similaire à un numéro de port. Je ** pense _ ** vous pouvez le garder comme ça ... –