Bonjour à tous,

Je me casse un peu les dents depuis 1 journée sur ce problème,
Je développe un module qui permet de gérer les périphériques bluetooth et leur association.
J'arrive donc a faire le Pairing grace au code suivant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
/**
         * Association d'un périphérique bluetooth à la tablette.
         * @param btDevice périphérique bluetooth à associer 
         */
	private boolean createBond(BluetoothDevice btDevice) throws Exception { 
		//récupération de la fonction permettant d'associer les devices 
		Class<?> class1 = Class.forName("android.bluetooth.BluetoothDevice");
		Method createBondMethod = class1.getMethod("createBond");  
		Boolean returnValue = (Boolean) createBondMethod.invoke(btDevice);
		return returnValue.booleanValue();  
	}
je capte les différents états de Pairing de mon device grace à un broadcastreceiver

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
                IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_BOND_STATE_CHANGED);
		this.registerReceiver(broadcastReceiver, filter);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 
/**
         * Ecouteur d'évènements qui va écouter toutes les messages du context de
         * l'activité afin d'agir en fonction des filtres ajoutés dans onResume
         * 
         * @see onResume
         */
	private final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
		@Override
		public void onReceive(Context context, Intent intent) {
			String action = intent.getAction();
			if (BluetoothDevice.ACTION_FOUND.equals(action)) {
				// détection d'un nouveau périphérique et ajout à la liste des
				// périphériques détectés
				BluetoothDevice bluetoothDevice = intent
						.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
				// if (bluetoothDevice.getBondState() !=
				// BluetoothDevice.BOND_BONDED) {
				bluetoothArrayAdapter.add(bluetoothDevice);
				if (BuildConfig.DEBUG)
					Log.i(Constants.LOG_BLUETOOTH_ACTIVITY, "Device = " + bluetoothDevice.getName() + "\n"
							+ bluetoothDevice.getAddress());
				// }
			} else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED
					.equals(action)) {
				// Fin de la découverte des périphériques bluetooth
				// changement d'état de l'interface graphique
				startSearchItem.setVisible(true);
				stopSearchItem.setVisible(false);
				pbSearch.setVisibility(ProgressBarTextView.GONE);
				Toast.makeText(context, R.string.sToastEndScan,
						Toast.LENGTH_LONG).show();
			} else if (BluetoothDevice.ACTION_BOND_STATE_CHANGED.equals(action))
			{
				final BluetoothDevice btDevice 	= intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
				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_NONE && prevState == BluetoothDevice.BOND_BONDED){
					//device associé
				}else if (state == BluetoothDevice.BOND_NONE && prevState == BluetoothDevice.BOND_BONDING){
					//device en cours d'association 
                                        //affichage d'un message dans mon interface
				}
			}
		}
	};
Lors de l'association j'affiche un message dans mon interface graphique lorsque le bondState de mon BluetoothDevice est à BluetoothDevice.BOND_BONDING.
Je voudrais également changer ce message lorsque j'annule l'association dans la fenêtre affichée automatiquement.

Est-ce que l'un d'entre vous connaîtrait l’événement à capter pour cette annulation ?
En me renseignant j'ai trouvé ACTION_PAIRING_CANCEL mais elle est inaccessible.
Connaissez vous une manière détournée de gérer cet événement ?

Merci d'avance pour l'aide que vous pourrez m'apporter.