Les classes

Résolu
ErmalF - 26 nov. 2012 à 12:36
 ErmalF - 4 déc. 2012 à 12:52
Bonjour tous le monde,

Je vous écris car j'ai besoin de vous!!!!

Je débute en programmation Java sur Eclips parce que je veux créer une application sur mon téléphone portable (HTC).

Je voulais créer une application qui me permettrais de faire une liaison bluetooth entre mon microcontroleur et mon HTC.

J'ai trouvé un site internet qui m'explique comment faire, et en plus ca marche!!!!!!

http://nononux.free.fr/index.php?page=elec-brico-bluetooth-android-microcontroleur

Par contre je ne comprend pas toute les lignes de code. J'ai déjà fais de la programmation en "c" et en "c++", mais pas en java.

Voici le code complais :

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Set;
import java.util.UUID;

import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;

public class BtInterface 
{

private BluetoothDevice device = null;
private BluetoothSocket socket = null;
private InputStream receiveStream = null;
private OutputStream sendStream = null;

private ReceiverThread receiverThread;

Handler handler;

public BtInterface(Handler hstatus, Handler h) 
{
Set setpairedDevices = BluetoothAdapter.getDefaultAdapter().getBondedDevices();
BluetoothDevice[] pairedDevices = (BluetoothDevice[]) setpairedDevices.toArray(new BluetoothDevice[setpairedDevices.size()]);

for(int i=0;i 0) 
{

byte buffer[] = new byte[100];
int k = receiveStream.read(buffer, 0, 100);

if(k > 0) 
{
byte rawdata[] = new byte[k];
for(int i=0;i<k;i++)
rawdata[i] = buffer[i];

String data = new String(rawdata);

Message msg = handler.obtainMessage();
Bundle b = new Bundle();
b.putString("receivedData", data);
                msg.setData(b);
                handler.sendMessage(msg);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

}


Mes questions sont:

Tous d’abord, est-ce que c'est les variables de classe? et a quoi ça sert?
	private BluetoothDevice device = null;
private BluetoothSocket socket = null;
private InputStream receiveStream = null;
private OutputStream sendStream = null;


Pareille pour cette ligne de code, c'est une variable d'instance? et a quoi ça sert? :
private ReceiverThread receiverThread;


Et pour finir, il fais appelle a cette classe avec 2 variables (enfin je crois que c'est des variables)d'entrée Handler.

Mais je comprend pas ce que c'est ce Handler!!!.

public BtInterface(Handler hstatus, Handler h) 
{
Set setpairedDevices = BluetoothAdapter.getDefaultAdapter().getBondedDevices();
BluetoothDevice[] pairedDevices = (BluetoothDevice[]) setpairedDevices.toArray(new BluetoothDevice[setpairedDevices.size()]);

for(int i=0;i<pairedDevices.length;i++) 
{
if(pairedDevices[i].getName().contains("ModuleBluetooth")) 
{
device = pairedDevices[i];
try 
{
socket = device.createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
receiveStream = socket.getInputStream();
sendStream = socket.getOutputStream();
} catch (IOException e) {
e.printStackTrace();
}
break;
}
}

handler = hstatus;

receiverThread = new ReceiverThread(h);
}


Alors si quelqu'un peux m'aider à comprendre les classe et ça création, et aussi me dire ce que c'est que ce Handleur(de mer..), ce serais super cool.

Merci beaucoup

Ermal


Ermal

3 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
26 nov. 2012 à 14:21
Salut,

Tout d'abord, je dirais que tu n'as pas forcément tous les concepts de la programmation objet. Toutes les variables qui ne sont pas précédées de static sont des variables liées à l'instance de ta classe.

Donc tout ca :
private BluetoothDevice device = null;
private BluetoothSocket socket = null;
private InputStream receiveStream = null;
private OutputStream sendStream = null;

private ReceiverThread receiverThread;


ce sont des variables liées à l'instance de ta classe.

Après le terme variable de classe et variable d'instance : ce n'est pas vraiment du vocabulaire objet mais ca signifie dans tous les cas : attribut de la classe.
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
26 nov. 2012 à 14:23
Pour les handler, c'est un moyen de créer un thread qui bosse en arrière plan :

Le moyen le plus souple de créer un thread en arrière-plan avec Android consiste à créer une
instance d’une sous-classe de Handler. Vous n’avez besoin que d’un seul objet Handler par
activité et il n’est pas nécessaire de l’enregistrer manuellement ou quoi que ce soit d’autre –
la création de l’instance suffit à l’enregistrer auprès du sous-système de gestion des threads.

Le thread en arrière-plan peut communiquer avec le Handler qui effectuera tout son travail
dans le thread de l’interface utilisateur de votre activité. C’est important car les changements de cette interface – la modification de ses widgets, par exemple – ne doivent intervenir que dans le thread de l’interface de l’activité.

Vous avez deux possibilités pour communiquer avec le Handler : les messages et les objets
Runnable.
3
Merci beaucoup Julien39, dsl pour le retard mais j'avais un pire bug sur mon ordinateur.


Ermal
0
Rejoignez-nous