Précédent   Forum des professionnels en informatique > Java > Général Java > Java & Mobiles > Android
Android Forum d'entraide sur Android, la plateforme mobile de Google pour téléphones portables et Smartphones. Avant de poster -> FAQ Android
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Actualité déjà publiée
 
Outils de la discussion
Publicité
'
Vieux 25/03/2011, 17h06   #1
Rédacteur
 
Avatar de Viish
 
Homme Sylvain Berfini
Etudiant en alternance
Inscription : février 2009
Messages : 421
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Berfini
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2009
Messages : 421
Points : 1 420
Points : 1 420
Par défaut Introduction à l'utilisation du Bluetooth

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.
__________________
Développeur Android
http://www.thinkdroid.eu/
http://sberfini.developpez.com/
Viish est déconnecté   Envoyer un message privé Réponse avec citation 40
Vieux 25/03/2011, 17h14   #2
Rédacteur/Modérateur
 
Avatar de MrDuChnok
 
Homme
Ingénieur développement logiciels
Inscription : juin 2002
Messages : 1 953
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
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 : 1 953
Points : 3 475
Points : 3 475
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
MrDuChnok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2011, 22h24   #3
Membre expérimenté
 
Avatar de ZouBi
 
Etudiant Ingénieur
Inscription : octobre 2007
Messages : 445
Détails du profil
Informations professionnelles :
Activité : Etudiant Ingénieur
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : octobre 2007
Messages : 445
Points : 598
Points : 598
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?
__________________
Site web : www.jidul.com
Tutoriels : http://jodul.developpez.com
ZouBi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2011, 10h29   #4
Responsable Android
 
Avatar de Feanorin
 
Inscription : avril 2004
Messages : 2 402
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 2 402
Points : 3 531
Points : 3 531
Envoyer un message via Skype™ à Feanorin
Citation:
- 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


Citation:
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.
Feanorin est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/11/2011, 16h06   #5
Membre expérimenté
 
Avatar de ZouBi
 
Etudiant Ingénieur
Inscription : octobre 2007
Messages : 445
Détails du profil
Informations professionnelles :
Activité : Etudiant Ingénieur
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : octobre 2007
Messages : 445
Points : 598
Points : 598
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?
__________________
Site web : www.jidul.com
Tutoriels : http://jodul.developpez.com
ZouBi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2011, 17h18   #6
Responsable Android
 
Avatar de Feanorin
 
Inscription : avril 2004
Messages : 2 402
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 2 402
Points : 3 531
Points : 3 531
Envoyer un message via Skype™ à Feanorin
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 .
Feanorin est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/01/2012, 09h42   #7
Invité de passage
 
Femme Morgane
Étudiant
Inscription : janvier 2012
Messages : 3
Détails du profil
Informations personnelles :
Nom : Femme Morgane
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2012
Messages : 3
Points : 3
Points : 3
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 !
RestlessDream est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 16h35   #8
Invité régulier
 
Inscription : avril 2008
Messages : 61
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 61
Points : 7
Points : 7
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
vivelapsp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 18h10   #9
Invité de passage
 
Femme Morgane
Étudiant
Inscription : janvier 2012
Messages : 3
Détails du profil
Informations personnelles :
Nom : Femme Morgane
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2012
Messages : 3
Points : 3
Points : 3
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.
RestlessDream est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2012, 18h09   #10
Invité de passage
 
Inscription : juillet 2010
Messages : 34
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 34
Points : 3
Points : 3
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 :
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.
GGelec est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2012, 18h16   #11
Membre actif
 
christian
Développeur indépendant
Inscription : août 2004
Messages : 251
Détails du profil
Informations personnelles :
Nom : christian
Âge : 43
Localisation : France

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

Informations forums :
Inscription : août 2004
Messages : 251
Points : 184
Points : 184
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 :
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 :
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 :
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>
eomer212 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2012, 19h12   #12
Invité de passage
 
Inscription : juillet 2010
Messages : 34
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 34
Points : 3
Points : 3
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/
GGelec est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2012, 19h18   #13
Membre actif
 
christian
Développeur indépendant
Inscription : août 2004
Messages : 251
Détails du profil
Informations personnelles :
Nom : christian
Âge : 43
Localisation : France

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

Informations forums :
Inscription : août 2004
Messages : 251
Points : 184
Points : 184
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.?
eomer212 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2012, 19h23   #14
Invité de passage
 
Inscription : juillet 2010
Messages : 34
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 34
Points : 3
Points : 3
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
GGelec est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Actualité déjà publiée
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h01.


 
 
 
 
Partenaires

Hébergement Web