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

API standards et tierces Android Discussion :

Introduction à l'utilisation du Bluetooth [Tutoriel]


Sujet :

API standards et tierces Android

  1. #1
    Rédacteur
    Avatar de Viish
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2009
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 427
    Points : 1 499
    Points
    1 499
    Par défaut Introduction à l'utilisation du Bluetooth
    Pour alimenter la page des meilleurs cours et tutoriels pour apprendre la programmation Android, ce nouveau tutoriel a pour objectif de vous apprendre à manipuler le périphérique Bluetooth, présent sur la plupart des terminaux Android, dans une application.

    Nous allons donc voir toutes les étapes de la création d'une liaison Bluetooth entre deux terminaux.
    Ingénieur Développement Mobile (Android / Windows Phone / Blackberry10)

  2. #2
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Points : 4 240
    Points
    4 240
    Par défaut
    Merci pour ta contribution
    Si vous jugez mon post utile dans la résolution de votre problème, n'hésitez pas à utiliser le système de vote afin d'améliorer la qualité du forum

  3. #3
    Membre éclairé
    Avatar de ZouBi
    Inscrit en
    Octobre 2007
    Messages
    508
    Détails du profil
    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 508
    Points : 812
    Points
    812
    Par défaut
    Merci du tutoriel.

    J'ai deux questions :
    - Peut-on communiquer depuis une application Android avec plusieurs périphériques Bluetooth en parallèle?

    - A quel moment (si le périphérique n'a jamais été appareillé) l'association se fait (là où chacun doit rentrer un code)? Est-ce que c'est le système Android qui le gère automatiquement?

  4. #4
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    - Peut-on communiquer depuis une application Android avec plusieurs périphériques Bluetooth en parallèle?
    La dessus pas de souci , tu peux , le code est fait pour cela via la création de Socket et normalement le Bluetooth(matériel) devrait supporter la multiconnexion


    A quel moment (si le périphérique n'a jamais été appareillé) l'association se fait (là où chacun doit rentrer un code)? Est-ce que c'est le système Android qui le gère automatiquement?
    Dans le code il me semble que c'est lors du create ou du connect , pas pu vérifier exactement mais le l'appairage se fait sur une de ces deux action.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  5. #5
    Membre éclairé
    Avatar de ZouBi
    Inscrit en
    Octobre 2007
    Messages
    508
    Détails du profil
    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 508
    Points : 812
    Points
    812
    Par défaut
    Merci beaucoup Feanorin !

    J'ai une autre question : quand on souhaite appareiller le téléphone avec un ordinateur où le Bluetooth est activé (par exemple), ce dernier joue quel rôle? Client ou Serveur?

  6. #6
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Si tu l'appareille depuis ton téléphone alors c'est lui qui demande donc le téléphone client et le PC serveur.

    Le serveur reçoit , le client demande .
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  7. #7
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 10
    Points : 18
    Points
    18
    Par défaut
    Bonjour,

    Je souhaite tout d'abord remercier Viish pour son tutoriel qui m'a bien été utile à comprendre comment marche le bluetooth sous Android !

    J'aurais une question vis à vis de ça. J'aimerais réaliser une connexion bluetooth de façon totalement transparente/indécelable pour l'utilisateur.

    J'ai réussi cela grâce à ce tuto mais il me reste une zone d'ombre. Lorsque les deux appareils n'ont jamais été interconnecté, il y a toujours une pop-up demandant au server et au client une confirmation de connexion (je parle de cette pop-up là : http://sberfini.developpez.com/tutor...ng_request.png).


    Est-il possible d'automatiser cette étape pour que ça soit totalement transparent pour l'utilisateur ?


    Merci d'avance pour vos réponse et je vous souhaite une bonne année 2012 !

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 61
    Points : 24
    Points
    24
    Par défaut
    RestlessDream, à ce que je sache, non, on ne peut passer outre cet écran.
    De plus, il y a un autre écran auquel je pense et ou tu ne peux passer outre, l'écran de demande de visibilité bluetooth coté serveur (discoverable). Si tu as réussi à forcer cela sans demander une confirmation à l'utilisateur, éclaire moi stp

  9. #9
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 10
    Points : 18
    Points
    18
    Par défaut
    Bonjour Vivelapsp, merci beaucoup pour ta réponse. C'est pas celle que j'aurais aimé mais c'est celle que je redoutais !
    J'avais pas mal cherché mais jamais trouvé comment passer outre cet écran...
    Et pour ce qui est de la visibilité bluetooth coté serveur il en va de même oui. C'était juste moins gênant pour moi.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 66
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par Viish Voir le message
    Ce tutoriel a pour objectif de vous apprendre à manipuler le périphérique Bluetooth, présent sur la plupart des terminaux Android, dans une application.

    Nous allons donc voir toutes les étapes de la création d'une liaison Bluetooth entre deux terminaux.
    Bonjour,

    tout d'abord merci pour le tuto sur le bluetooth

    Je débute sous l'environnement Android mais j'ai quelques connaissances en JAVA.

    voici mon projet : établir une communication bluetooth entre mon smartphone et un équipement bluetooth. J'aimerai simplement envoyer des commandes une fois la liaison établie (SPP : serial port protocol). L'équipement bluetooth fonctionne avec un PC (hyperterminal) pour le moment. J'aimerai juste pouvoir communiquer à partir de mon smartphone au lieu du PC.

    J'ai commencé à écrire une partie de code pour l'application, mais je rencontre des difficultés à détecter mon équipement bluetooth.

    voici mon code:

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    package com.ggelec.unids6;
     
    import android.app.Activity;
    import android.bluetooth.BluetoothAdapter;
    import android.bluetooth.BluetoothDevice;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;
    import android.view.*;
     
    public class UniDS6BluetoothActivity extends Activity implements android.view.View.OnClickListener{
     
     
    	Button buttonConnection;
    	BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
     
    	/** Called when the activity is first created. */
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    		Log.i("", "onCreate");
    		buttonConnection = ((Button)this.findViewById(R.id.buttonConnection));
    		buttonConnection.setOnClickListener(this);
     
    	}
     
    	@Override
    	protected void onStart() {
    		Log.i("", "onStart");
     
    		if (bluetoothAdapter == null) {
    			Toast.makeText(UniDS6BluetoothActivity.this,
    					"No Bluetooth devices", Toast.LENGTH_SHORT).show();
    			Log.e("ERROR", "No Bluetooth devices");
    		} else {
    			Toast.makeText(UniDS6BluetoothActivity.this, "Bluetooth available",
    					Toast.LENGTH_SHORT).show();
    			Log.i("INFO", "Bluetooth available");
    		}
    		if (!bluetoothAdapter.isEnabled()) {
    			   bluetoothAdapter.enable();	
     
    			}
    		super.onStart();
    	}
     
    	@Override
    	protected void onResume() {
    		Log.i("", "onResume");
    		super.onResume();
    	}
     
    	@Override
    	protected void onPause() {
    		Log.i("", "onPause");
    		super.onPause();
    	}
     
    	@Override
    	protected void onStop() {
    		Log.i("", "onStop");
    		super.onStop();
    	}
     
    	@Override
    	protected void onDestroy() {
    		Log.i("", "onDestroy");
    		if (bluetoothAdapter.isEnabled()) {
    				bluetoothAdapter.cancelDiscovery();
    				bluetoothAdapter.disable();
    				Log.i("INFO", "Bluetooth disable");
    			}
    		super.onDestroy();
    	}
     
    	public void onClick(View v) {
    		Toast.makeText(UniDS6BluetoothActivity.this, "searching...",
    				Toast.LENGTH_SHORT).show();
    		Log.i("INFO", "searching...");
    		bluetoothAdapter.startDiscovery();
     
    	}
    	private final BroadcastReceiver bluetoothReceiver = new BroadcastReceiver() {
    		public void onReceive(Context context, Intent intent) {
    		  String action = intent.getAction();
    		  if (BluetoothDevice.ACTION_FOUND.equals(action)) {
    		    BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
    		    Toast.makeText(UniDS6BluetoothActivity.this, "New Device = " + device.getName(), Toast.LENGTH_SHORT).show();
    		  }
    		}
    		};
     
     
    }
    Par ailleurs, je n'ai pas encore trouvé comment on pouvait envoyer du texte par exemple une fois pairé avec son équipement bluetooth.

    Mais avant, j'aimerai juste pouvoir détecter mon équipement bluetooth.

    Voilà, j'espère avoir donné assez de détails.

    Merci d'avance pour votre aide.

  11. #11
    Membre confirmé
    Profil pro
    Développeur indépendant
    Inscrit en
    Août 2004
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur indépendant
    Secteur : Transports

    Informations forums :
    Inscription : Août 2004
    Messages : 372
    Points : 512
    Points
    512
    Par défaut retour
    ben justement, je me suis mis au java et android pour un projet. relier un lecteur de code barre au terminal android pour recuperer les codes barres lus par ce terminal. (OPTICON OPN2002)
    il fonctionne, j'ai pu tester la chose avec une appliquation du market.
    mais au dela de la detection des periphériques, j'échoue dans mon implementation sur la mise en place effective de la connexion.

    le tutorial sur le bluetooth est une excellente idée, malheureusement gachée par toutes les zones d'ombre laissée sans éclairage.
    toujours pour la même raison, d'ailleurs compréhensible..
    l'auteur connait tellement bien le sujet, que pour lui c'est l'évidence même, alors que ce sont des points cruciaux pour quelqu'un n'ayant jamais traité de ce sujet.
    ce qui est mon cas pour android est java, je me suis plongé vraiment dedans il y a 4 jours.
    concernant le tutorial, il serait bien d'avoir les points suivants:
    d'abord, un lien vers le projet complet, histoire de pouvoir tester si la solution fonctionne vraiment, rapidement.
    un petit retour sur les UUID et comment on s'en sert ou comment on le determine..
    le passage sur les changements d'états du bluetooth est trés limite.

    toutes ces parties basiques, sont largement couvertes, heureusement par d'autres tutos, ca permet de boucher les trous.
    mais c'est dommage.
    enfin, derniére chose, c'est aprés que tout se complique.
    hors, c'est encore là qu'on a le moins d'expliquations..
    utilisation de variable de stockage sans meme avoir leurs déclarations...
    bref, c'est du trop vite fait.

    encore dommage, surtout quand le document est censé avoir été relu..

    bref, j'ai passé l'étape de detection de périphériques, mais je bloque sur la mise en place de la connexion, dans un thread séparé, ou autre, je sais pas trop.
    comme bien sur, le bluetooth ne fonctionne pas dans l'emulateur, impossible de déboguer pour comprendre ce qui se passe, on revient au tracage des operations comme il y a 10 ans.
    ben oui, j'ai qu'un xperia X10 en android 2.3.3 pour tester, et c'est pas supporté par le driver de deboguage de sony ericson. super.

    j'ai basé mon code sur le projet android de base genere par eclipse.
    pas d'interface specifique ou autre, ca affiche juste les resultats dans un textview (j'ai modifié main.xml pour avoir accés à ce textView).
    pour ceux que ca interesse, et pour ceux qui pourraient orienter sur la suite à donner pour l'etablissement de la connexion vers le scanner de code barre..

    oui, je sais, un peu bordelique, mais je débute en java..
    de même, certains imports peuvent être marqués comme étant inutilisés, no problem.

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    package VOTREPACKAGE;
     
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.Set;
    import java.util.UUID;
     
    import android.app.Activity;
    import android.bluetooth.BluetoothAdapter;
    import android.bluetooth.BluetoothDevice;
    import android.bluetooth.BluetoothServerSocket;
    import android.bluetooth.BluetoothSocket;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.TextView;
    import android.widget.Toast;
     
     
    public class Bluetooth1Activity extends Activity {
     
     
    	BluetoothAdapter bluetooth =BluetoothAdapter.getDefaultAdapter();
    	private static int DISCOVERY_REQUEST = 1;
    	private final static int REQUEST_CODE_ENABLE_BLUETOOTH = 0; 
    	private ArrayList<BluetoothDevice> foundDevices; 
     
    	TextView temoin;
    	private void affiche(String texte){
    		// petit stub pour faciliter l'affichage des données temoin.
    		temoin.append("\n"+texte);
    	}
                                                	/** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
     
            registerReceiver(discoveryResult, 
                    new IntentFilter(BluetoothDevice.ACTION_FOUND));
     
            temoin=(TextView) findViewById(R.id.text1);
     
            // test existence adapter bluetooth
            if (bluetooth==null) {
            	//Toast.makeText(this, "Pas de Bluetooth", Toast.LENGTH_SHORT).show();
            	affiche("Pas de Bluetooth");
     
     
            }
            else
            	affichebluetooth();
     
        }
     
        private Set<BluetoothDevice> pairedDevices ;
        private Set<BluetoothDevice> discoveredDevices ;	
     
        /* (non-Javadoc)
    	 * @see android.app.Activity#onDestroy()
    	 */
    	@Override
    	protected void onDestroy() {
    		// TODO Auto-generated method stub
     
    		super.onDestroy();
    	}
     
    	private String appareiladdress="";
    	private String appareilname="";
     
    	void affichebluetooth()
        {
        	 String ToastText;
    	        if (bluetooth.isEnabled())
    	        {
    	        	pairedDevices= bluetooth.getBondedDevices();
    	        	appareiladdress=bluetooth.getAddress();
    	        	appareilname=bluetooth.getName();
    	        	ToastText="Bluetooth activé\n"+appareilname+" : "+appareiladdress;
     
    	        	 Intent disc = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
    	             startActivityForResult(disc, DISCOVERY_REQUEST);  
    	        }
    	        else
    	        {
    	        	ToastText="Bluetooth désactivé";
    	        	String actionStatechanged=BluetoothAdapter.ACTION_STATE_CHANGED;
    	        	String actionrequestEnable=BluetoothAdapter.ACTION_REQUEST_ENABLE;
    	        	registerReceiver(bluetoothState, new IntentFilter(actionStatechanged));
    	        	startActivityForResult(new Intent(actionrequestEnable), 0);
    	        }
    	       	        affiche(ToastText);
        }
     
    	// creation du broadcastreceiver pour recuperer les messages d'etat 
        BroadcastReceiver bluetoothState = new BroadcastReceiver() {
     
    		@Override
    		public void onReceive(Context context, Intent intent) {
    			// TODO Auto-generated method stub
    			String prevstateExtra= BluetoothAdapter.EXTRA_PREVIOUS_STATE;
    			String stateExtra= BluetoothAdapter.EXTRA_STATE;
    			int state = intent.getIntExtra(stateExtra, -1);
    			int previousState = intent.getIntExtra(prevstateExtra, -1);
     
    			String tt = "";
    			switch (state){
    				case (BluetoothAdapter.STATE_TURNING_ON):{
    						tt="BCR Bluetooth en cours d'activation";break;
    					}
    				case (BluetoothAdapter.STATE_ON):{
    						tt="BCR bluetooth activé";
    						unregisterReceiver(this);
    						affichebluetooth();
    						break;
    					}
    				case (BluetoothAdapter.STATE_TURNING_OFF):{
    						tt="BCR bluetooth en cours de désactivation";
    						break;
    					}
    				case (BluetoothAdapter.STATE_OFF):{
    						tt="BCR bluetooth désactivé";
    						break;
    					}
    				default: break;
    			}
    						affiche(tt);
    		}
     
     
    	};
    	/* (non-Javadoc)
    	 * @see android.app.Activity#onActivityResult(int, int, android.content.Intent)
    	*	traitement des retours d'activation du bluetooth, et de la demande de découverte des périphériques.
    	 */
    	@Override
    	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     
    		// verifier en retour si la demande d'activation du bluetooth a été validée.
    		//super.onActivityResult(requestCode, resultCode, data);
    		if (requestCode==REQUEST_CODE_ENABLE_BLUETOOTH)
    		{
    			if (resultCode == RESULT_OK) {
     
    				affiche("Activation Bluetooth Effectuée!");
    			}
    			else
    			{
    				affiche("Activation Bluetooth Refusée!");
    			}
    		}
     
    		if (requestCode==DISCOVERY_REQUEST){
    			affiche("demande discovery");
    			if (!bluetooth.isDiscovering()) {
    				affiche("StartDiscovery");
    				registerReceiver(discoveryResult, 
                            new IntentFilter(BluetoothDevice.ACTION_FOUND));
     
    				registerReceiver(discoveryResult,new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED));
    				bluetooth.startDiscovery();
    	          }
    		}
    	}
     
     
     
    	BroadcastReceiver discoveryResult = new BroadcastReceiver() {
    	    @Override
    	    public void onReceive(Context context, Intent intent) {
     
    	    String action = intent.getAction(); 
    	    	  if (BluetoothDevice.ACTION_FOUND.equals(action)) {
    	       		  affiche("péripherique detecté!");
    		    BluetoothDevice remoteDevice;
    		      remoteDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
    		     if (!bluetooth.getBondedDevices().contains(remoteDevice)) 
    		      {
    		    	 // le périphérique n'était pas déja apparié
    		        String namedevice = remoteDevice.getName();
    		        String adressedevice = remoteDevice.getAddress();
    		        affiche("Device detecté\n"+namedevice+"\n"+adressedevice);
    		      }
    		     else
    		     {
    		    	 // périphérique déja appariée, affichage témoin
    		    	 String namedevice = remoteDevice.getName();
    			        String adressedevice = remoteDevice.getAddress();
    			        affiche("Device apairé detecté\n"+namedevice+"\n"+adressedevice);
    		     }
     
    		    }else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) 
    		      {
    		    	// fin du processu de découverte des périphériques
    		    	  if (bluetooth!=null)
    		  			bluetooth.cancelDiscovery();
    		    	  unregisterReceiver(this);
    		    	  affiche("Fin de la detection");
     
    		    	    String textf="nb devices apairés: "+ pairedDevices.size();
    		    	    affiche(textf);
     
    		    	  Iterator<BluetoothDevice> itdevice = pairedDevices.iterator();
    		    	  if(itdevice.hasNext())
    		    	  {
    		    		BluetoothDevice localdevice =itdevice.next();
    					String namedevice = localdevice.getName();
    					String adressedevice = localdevice.getAddress();
     
    					affiche("Device découvert\n"+namedevice+"\n"+adressedevice);
    				/*	
    				 * 	j'ai essayé ca en direct, mais ca semble bloquer le thread principal. 
    				 * try {
    						final  UUID uuid= UUID.fromString(appareiladdress);
     
    						BluetoothDevice device = bluetooth.getRemoteDevice(adressedevice);
    						BluetoothSocket clientSocket =
    								device.createInsecureRfcommSocketToServiceRecord(uuid);
    						//Toast.makeText(getApplicationContext(), "ouverture socket", Toast.LENGTH_SHORT).show();
    						affiche("ouverture socket");
    						clientSocket.connect();
    						//Toast.makeText(getApplicationContext(), "socket ouvert", Toast.LENGTH_SHORT).show();
    						affiche("socket ouvert");
    						clientSocket.close();
    						//Toast.makeText(getApplicationContext(), "socket fermé", Toast.LENGTH_SHORT).show();
    						affiche("socket fermé");
    					} catch (IOException e) {
    						// TODO: handle exception
    					}
    		    	*/  }
     
    		      }
    	    }
    	  };
     
    }
    de meme,ca peut servir, j'ai fait une petite modif dans main.xml.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
     
        <TextView
            android:id="@+id/text1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/hello" />
     
    </LinearLayout>
    et pour ceux qui se poseraient la question, le strings.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
     
        <string name="hello">Hello World, Bluetooth1Activity!</string>
        <string name="app_name">Bluetooth1</string>
     
    </resources>

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 66
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par eomer212 Voir le message
    ben justement, je me suis mis au java et android pour un projet. relier un lecteur de code barre au terminal android pour recuperer les codes barres lus par ce terminal. (OPTICON OPN2002)
    il fonctionne, j'ai pu tester la chose avec une appliquation du market.
    mais au dela de la detection des periphériques, j'échoue dans mon implementation sur la mise en place effective de la connexion.

    le tutorial sur le bluetooth est une excellente idée, malheureusement gachée par toutes les zones d'ombre laissée sans éclairage.
    toujours pour la même raison, d'ailleurs compréhensible..
    l'auteur connait tellement bien le sujet, que pour lui c'est l'évidence même, alors que ce sont des points cruciaux pour quelqu'un n'ayant jamais traité de ce sujet.
    ce qui est mon cas pour android est java, je me suis plongé vraiment dedans il y a 4 jours.
    concernant le tutorial, il serait bien d'avoir les points suivants:
    d'abord, un lien vers le projet complet, histoire de pouvoir tester si la solution fonctionne vraiment, rapidement.
    un petit retour sur les UUID et comment on s'en sert ou comment on le determine..
    le passage sur les changements d'états du bluetooth est trés limite.

    toutes ces parties basiques, sont largement couvertes, heureusement par d'autres tutos, ca permet de boucher les trous.
    mais c'est dommage.
    enfin, derniére chose, c'est aprés que tout se complique.
    hors, c'est encore là qu'on a le moins d'expliquations..
    utilisation de variable de stockage sans meme avoir leurs déclarations...
    bref, c'est du trop vite fait.

    encore dommage, surtout quand le document est censé avoir été relu..

    bref, j'ai passé l'étape de detection de périphériques, mais je bloque sur la mise en place de la connexion, dans un thread séparé, ou autre, je sais pas trop.
    comme bien sur, le bluetooth ne fonctionne pas dans l'emulateur, impossible de déboguer pour comprendre ce qui se passe, on revient au tracage des operations comme il y a 10 ans.
    ben oui, j'ai qu'un xperia X10 en android 2.3.3 pour tester, et c'est pas supporté par le driver de deboguage de sony ericson. super.

    j'ai basé mon code sur le projet android de base genere par eclipse.
    pas d'interface specifique ou autre, ca affiche juste les resultats dans un textview (j'ai modifié main.xml pour avoir accés à ce textView).
    pour ceux que ca interesse, et pour ceux qui pourraient orienter sur la suite à donner pour l'etablissement de la connexion vers le scanner de code barre..

    oui, je sais, un peu bordelique, mais je débute en java..
    de même, certains imports peuvent être marqués comme étant inutilisés, no problem.
    J'avoue que le tuto aurait pu être plus clair sur certain point. D'ailleurs la plupart des infos qu'on y retrouve sont déjà en partie expliquées dans la documentation google qui traite du même sujet.

    Quoiqu'il en soit j'ai ouvert un post sur le sujet bluetooth.

    Peut-être devrions nous y exposer nos différents problèmes. Afin de laisser cette page intacte.

    http://www.developpez.net/forums/d11...peripheriques/

  13. #13
    Membre confirmé
    Profil pro
    Développeur indépendant
    Inscrit en
    Août 2004
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur indépendant
    Secteur : Transports

    Informations forums :
    Inscription : Août 2004
    Messages : 372
    Points : 512
    Points
    512
    Par défaut detection
    ben déja si tu regardes le code que j'ai posté, la detection marche.
    c'est aprés, au niveau de la mise en place effective de la connexion que je sais plus trop comment faire, je suis en train de regarder comment fonctionne les asyncTask, j'ai fait de petits essais pour comprendre.
    ca me semble le plus approprié pour gérer la connexion sans bloquer le thread principal.
    est-ce que je me trompe la dessus.?

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 66
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par eomer212 Voir le message
    ben déja si tu regardes le code que j'ai posté, la detection marche.
    c'est aprés, au niveau de la mise en place effective de la connexion que je sais plus trop comment faire, je suis en train de regarder comment fonctionne les asyncTask, j'ai fait de petits essais pour comprendre.
    ca me semble le plus approprié pour gérer la connexion sans bloquer le thread principal.
    est-ce que je me trompe la dessus.?
    Effectivement, c'est ce qui est conseillé pour gérer la connexion (client, server) si j'ai bien compris. Malheureusement, je n'y suis pas encore. je ne saurai pas t'en dire plus...

    Je vais regarder ton code et comparer avec le mien pour voir ce que j'aurai pu oublier.

    merci

  15. #15
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Merci encore pour cet article, je vais pouvoir établir la communication entre mon device Android et un programme écrit en C++ sous Windows (sur un PC qui a un bluetooth quand même )

    Bonne continuation
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

Discussions similaires

  1. Réponses: 33
    Dernier message: 15/08/2017, 01h07
  2. Application android utilisant le bluetooth
    Par zikog dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 30/11/2011, 16h56
  3. Utilisation du bluetooth
    Par zax-tfh dans le forum Framework .NET
    Réponses: 4
    Dernier message: 13/06/2007, 13h50

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