APPLICATIONS
JAVA
Android
Partie IV
Ivan MADJAROV - 2014
4. Application réseaux,
Bluetooth, Wi-Fi, TCP,
Géolocalisation
Android
Applications Java sous Android IvMad, 2011-2014 2
L'objectif principal de ce cours est de découvrir la programmation sous
Android, sa plate-forme de développement et les spécificités du développement
embarqué sur téléphone mobile. Le cours s’inspire, reprend, modifie et enrichi
des supports disponibles sur Internet.
Android : LogCat view
Le développement pose toujours le problème de tester l'application
avant sa mise en "service". La View de l'application est en mode
graphique. Les logs permettent l'affichage en mode texte dans la
fenêtre du LogCat.
Pour afficher les opérateurs 'log' dans Eclipse il faut activer le LogCat
view:
Window->Show View->Other...->LogCat.
Pour écrire un opérateur 'Log' il faut importer la classe android.util.Log
qui propose les méthodes Log.i() "Info", Log.d() "Debug", Log.w()
"Warning", Log.e() "Error" .
Exemple:
Log.i("NameActivity", "Bonjour, ça marche!");
Applications Java sous Android IvMad, 2011-2014 3
Android : Bluetooth (1)
Bluetooth est un protocole d'interconnexion à de courtes distances, de
type "peer-to-peer" avec une bande passante faible. La communication est
cryptée entre les périphériques appariés. L'API Bluetooth permet de
scanner et de lier les appareils entre eux et de transférer des données.
Les connexions Bluetooth sont gérées par les classes suivantes :
BluetoothAdapter : est l'unité locale où l'application Bluetooth est lancée.
BluetoothDevice : est le périphérique distant avec lequel on cherche à
communiquer.
BluetoothSocket : fait une demande de connexion au périphérique distant par
l'appel de la méthode createRfcommSocketToServiceRecord.
BluetoothServerSocket : installe un Socket Bluetooth serveur pour écouter les
demandes de connexion entrantes en utilisant la méthode
listenUsingRfcommWithServiceRecord.
Applications Java sous Android IvMad, 2011-2014 4
Android : Bluetooth (2)
Pour s'assurer que le périphérique possède le Bluetooth on procéder à
une vérification rapide en instanciant la classe BluetoothAdapter.Le
retour de son objet va indiquer la présence ou non de cette option.
BluetoothAdapter bluetoothAdapter =BluetoothAdapter.getDefaultAdapter();
if(bluetoothAdapter ==null)
Toast.makeText(BluetoothActivity.this,"PasdeBluetooth!",
Toast.LENGTH_SHORT).show();
else
Toast.makeText(BluetoothActivity.this,"LeBluetoothestdisponible",
Toast.LENGTH_SHORT).show();
Pour autoriser l'opération, il faut ajouter la permission d'accéder aux
API Bluetooth en ajoutant la ligne suivante dans le fichier
AndroidManifest.xml :
<usespermissionandroid:name="android.permission.BLUETOOTH"/>
Applications Java sous Android IvMad, 2011-2014 5
Android : Bluetooth (3)
Le Bluetooth peut être disponible sur l'appareil mais non activé. On peut
demander l'autorisation à l'utilisateur d'activer cette option. Pour cela,
on appelle la méthode startActivityForResult avec un paramètre d'Intent
BluetoothAdapter.ACTION_REQUEST_ENABLE. On vérifie que le
Bluetooth n'est pas activé et on demande son activation :
privatefinalstaticint BLUETOOTH_ACTIVATION=1;
BluetoothAdapter bluetoothAdapter =BluetoothAdapter.getDefaultAdapter();
........................................
if(!bluetoothAdapter.isEnabled(){
startActivityForResult(newIntent(BluetoothAdapter.ACTION_REQUEST_ENABLE),
BLUETOOTH_ACTIVATION);
}
Un dialog-box incitera l'utilisateur d'accepter ou non l'activation du
Bluetooth sur son appareil. Le résultat de sa décision est récupérable par
la méthode onActivityResult.
Applications Java sous Android IvMad, 2011-2014 6
Android : Bluetooth (4)
On surcharge la méthode onActivityResult pour savoir si le Bluetooth est
activé ou non. La méthode est appelée à la sortie de la boite de dialogue
@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data){
super.onActivityResult(requestCode,resultCode,data);
if(requestCode ==BLUETOOTH_ACTIVATION){
if(resultCode ==RESULT_OK){
Toast.makeText(BluetoothActivity.this,"Bluetoothestactivé",
Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(BluetoothActivity.this,"Bluetoothnonactivé",
Toast.LENGTH_SHORT).show();
}
}
}
Applications Java sous Android IvMad, 2011-2014 7
Android : Bluetooth (5)
Si on rend l'appareil Bluetooth détectable cela permet à d'autres appareils
de le découvrir et de se connecter par la suite. Pour cela, on utilise la
méthode startActivityForResult avec le paramètre Intent approprié :
startActivityForResult(new
Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE),
BLUETOOTH_SCAN);
On obtient la liste des appareils déjà liés avec getBoundedDevices.
Set<BluetoothDevice>knownDevices =bluetoothAdapter.getBoundedDevices();
for(BluetoothDevice device :knownDevices){
Log.v("BluetoothActivity","appareil="+devices.getName());
}
Set : interface de collection pour des objets qui n'autorisent pas des
doublons dans l'ensemble, existe au moins un nul (un tableau d'objets).
for-each : boucle qui accède à chaque élément d'une collection d'objets
comme dans un tableau (eg, ArrayList).
Applications Java sous Android IvMad, 2011-2014 8
Android : Bluetooth (6)
Le code complet (étudiez les instructions 'Set' et 'for') :
publicclassBluetoothDeviceListActivity extendsActivity{
privatefinalstaticint BLUETOOTH_SCAN=1;
Strings="";
@Override
protected void onCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
BluetoothAdapter bluetoothAdapter =BluetoothAdapter.getDefaultAdapter();
startActivityForResult(new
Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE),BLUETOOTH_SCAN);
Set<BluetoothDevice>knownDevices =
bluetoothAdapter.getBondedDevices();
for(BluetoothDevice device :knownDevices){
s+="appareil="+device.getName();
}
Toast.makeText(BluetoothDeviceListActivity.this,"LesBluetoothliés:
"+s,Toast.LENGTH_SHORT).show();
}}
Applications Java sous Android IvMad, 2011-2014 9
Android : Bluetooth (7)
La recherche d'appareils inconnus est un traitement asynchrone et
gourmant en energie effectué par le Broadcast Receiver.
Android permet de créer une classe qui implémente BroadcastReceiver pour recevoir
des Intents et appliquer des comportements spécifiques au code.
L’interface BroadcastReceiver possède une seule méthode onReceive() qu'on doit
implémenter.
BroadcastReceiver bluetoothReceiver =newBroadcastReceiver(){
publicvoid onReceive(Context context,Intent intent){
Stringaction=intent.getAction();
if(BluetoothDevice.ACTION_FOUND.equals(action)){
BluetoothDevice device =
intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
Toast.makeText(BluetoothActivity.this,"NewDevice ="+
device.getName(),Toast.LENGTH_SHORT).show();
}
}};
Applications Java sous Android IvMad, 2011-2014 10
1 / 17 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !