IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

[Problème] Comment capter l'évènement ACTION_PAIRING_CANCEL


Sujet :

Android

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2012
    Messages : 5
    Points : 6
    Points
    6
    Par défaut [Problème] Comment capter l'évènement ACTION_PAIRING_CANCEL
    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.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Points : 1 241
    Points
    1 241
    Par défaut
    Citation Envoyé par Cyrille86 Voir le message
    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 ?
    Inaccessible ? C'est à dire ?
    au pire, tu peux essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IntentFilter filter = new IntentFilter("android.bluetooth.device.action.PAIRING_CANCEL");
    this.registerReceiver(broadcastReceiver, filter);
    Je sais pas si ça marche mais tu n'as rien à perde à essayer...

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2012
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par atha2 Voir le message
    Inaccessible ? C'est à dire ?
    J'ai trouvé ça dans le code source de BluetoothDevice,
    https://code.google.com/p/backport-a...vice.java?r=47

    On a bien une constante ACTION_PAIRING_CANCEL, j'ai essayé la méthode que tu m'a indiquée mais aucun changement dans le onReceive du broadcast receiver lorsque j'annule le pairing.

    Je vais fouiller encore un peu ...

    Merci pour ton aide

Discussions similaires

  1. [VB5]comment capter l'évènement MM_MCINOTIFY
    Par ebureau dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/09/2006, 15h45
  2. Réponses: 5
    Dernier message: 25/07/2005, 09h29
  3. Réponses: 5
    Dernier message: 21/12/2004, 12h00
  4. Réponses: 2
    Dernier message: 14/07/2004, 16h55
  5. [COM] Comment utiliser les événements Word ?
    Par Laurent Dardenne dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 30/05/2004, 12h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo