Activation du Bluetooth

ErmalF - 10 déc. 2012 à 13:42
 hamsama - 13 janv. 2013 à 00:03
Bonjour,
Je fais appelle a vous car j’ai un petit problème avec une de mes applications.

Mon application fait une connexion entre un microcontrôleur et mon téléphone via le Bluetooth.
J’ai trouvé sur le net un tuto m’expliquant comment faire, et en plus ca marche. Je reçois et j’envois.

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

Par contre, la personne qui a fait le tuto na pas mis comment enclencher le Bluetooth. Pour que son appli fonctionne il faut enclencher et faire la recherche des périphériques Bluetooth manuellement.

J’ai commencé à chercher sur le net comment faire, j’ai trouvé un site qui m’explique (je crois) comment faire. Mais mon souci est que comme je suis débutant en programmation JAVA (Android), je sais pas trop ou je dois rajouter le code.

http://www.tutos-android.com/utilisation-bluetooth-application-android

Au début je le mettais dans onCreate, l’activation du bluetooth. Mais a chaque fois que j’essais mon application, l’icon du bluetooth apparaît, mais quant j’appuie sur le bouton connecte(bouton que j’ai créer pour créer une connexion avec le module bluetooth extérieur), mon application affiche un message disant « Votre application a été fermer » et elle ce ferme !!!!! et des que je re test une deuxième fois, ba ce marche.

Pour résumer, mon application fonctionne que quand j’active le bluetooth manuellement, je c pas comment programme cette étape dans mon application pour qu'elle ce face automatiquement.

Si quelqu'un peux m'aider Help Me Please!!!!!

Voici mon code Java:
package com.bluetooth.cfpt;

import android.os.Bundle;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.content.Intent;// Attention
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast; // Attention


public class MainActivityBluetooth extends Activity implements OnClickListener
{

private TextView connect_disconnect, logview,TextViewTemperature,TextViewPression,TextViewHumidite;
private EditText sendtext;
private Button connect, send;

private Bluetooth bt = null;

private long lastTime = 0;

private final static int REQUEST_CODE_ENABLE_BLUETOOTH = 0;//attention


Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{

String data = msg.getData().getString("receivedData");

if(data.startsWith("H")) // si la valeur ressu (string) commance par 'H'
{
TextViewHumidite.setText(data); // Remplacer le text par valeur ressu

}else if(data.startsWith("P")) // si la valeur ressu (string) commance par 'P'
{
TextViewPression.setText(data); // Remplacer le text par valeur ressu

}else if(data.startsWith("T")) // si la valeur ressu (string) commance par 'T'
{
TextViewTemperature.setText(data); // Remplacer le text par valeur ressu

}else // Sinon
{
long t = System.currentTimeMillis();
if(t-lastTime > 100)
{ // Pour éviter que les messages soit coupés
logview.append("\n");
lastTime = System.currentTimeMillis();
}
// Affichage de data
logview.append(data);
}

}

};

Handler handlerStatus = new Handler()
{
@Override
public void handleMessage(Message msg)
{
int co = msg.arg1;
if(co == 1)
{

connect_disconnect.setText("Connected\n");
}
else if(co == 2)
{
connect_disconnect.setText("Disconnected\n");
}
}
};

/** Called when the activity is first created. */

@Override
public void onCreate(Bundle savedInstanceState)
{


super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_activity_bluetooth);

bt = new Bluetooth (handlerStatus, handler);

TextViewTemperature = (TextView)findViewById(R.id.TextViewTemperature);
TextViewPression = (TextView)findViewById(R.id.TextViewPression);
TextViewHumidite = (TextView)findViewById(R.id.TextViewHumidite);
logview = (TextView)findViewById(R.id.logview);
connect_disconnect = (TextView)findViewById(R.id.connect_disconnect);
sendtext = (EditText)findViewById(R.id.sendtxt);

connect = (Button)findViewById(R.id.connect);
connect.setOnClickListener(this);

send = (Button)findViewById(R.id.send);
send.setOnClickListener(this);



// Regarde si il y a un Bluetooth sur le télépnone
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

if (bluetoothAdapter == null)
Toast.makeText(MainActivityBluetooth.this, "Pas de Bluetooth",
Toast.LENGTH_SHORT).show();
else
Toast.makeText(MainActivityBluetooth.this, "Avec Bluetooth",
Toast.LENGTH_SHORT).show();



// Activer le Bluetooth
if (!bluetoothAdapter.isEnabled()) {
Intent enableBlueTooth = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBlueTooth, REQUEST_CODE_ENABLE_BLUETOOTH);
}

// Suis-je visible
Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 1000);
startActivity(discoverableIntent);







}
public void onClick(View v)
{

if(v == connect)
{
bt.connect();

}
else if(v == send)
{
bt.sendData(sendtext.getText().toString());
}
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode != REQUEST_CODE_ENABLE_BLUETOOTH)
return;
if (resultCode == RESULT_OK) {
// L'utilisation a activé le bluetooth
} else {
// L'utilisation n'a pas activé le bluetooth
}
}
}



Et ca c'est la clace que j'ai créer:
package com.bluetooth.cfpt;

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

import android.bluetooth.BluetoothAdapter; //Classe qui représente le module bluetooth de votre Android, elle permet de scanner les périphériques présents, d'activer / désactiver le bluetooth, ...
import android.bluetooth.BluetoothDevice; //Classe qui représente un périphérique bluetooth
import android.bluetooth.BluetoothSocket; //Classe qui permet d'obtenir les canaux d'écriture (émission) et de lecture (réception) du périphérique

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;


public class Bluetooth
{

private BluetoothDevice device = null; // le périphérique (le module bluetooth)
private BluetoothSocket socket = null; // sa connexion
private InputStream receiveStream = null; // Canal de réception
private OutputStream sendStream = null; // Canal d'émission

private ReceiverThread receiverThread; // Thread de reception



Handler handler;

public Bluetooth(Handler hstatus, Handler h)
{


// On récupère la liste des périphériques Bluetooth associés au téléphonne
Set setpairedDevices = BluetoothAdapter.getDefaultAdapter().getBondedDevices();
BluetoothDevice[] pairedDevices = (BluetoothDevice[]) setpairedDevices.toArray(new BluetoothDevice[setpairedDevices.size()]);

// On parcours la liste pour trouver notre module bluetooth
for(int i=0;i 0)
{
byte buffer[] = new byte[100];

// On lit les données
int k = receiveStream.read(buffer, 0, 100); // k représente le nombre de bytes lu

if(k > 0)
{// On cree un tableau et on mais les valeurs dedant
byte rawdata[] = new byte[k];
for(int i=0;i

2 réponses

Utilisateur anonyme
10 déc. 2012 à 22:01
Salut,

Ton code étant assez dense (possible que j'ai raté quelque chose), peux-tu nous dire quels morceaux de code as-tu ajoutés et à quels endroits dans ton code ? J'ai l'impression que tu exécutes du code qui aurait dû l'être à un stade précis du cycle de vie d'une activity. As-tu des exceptions affichées dans ton logCat ?

--
Pylouq
Heureux sont ceux qui lisent le Réglement, ils ne finiront peut-être pas au bûcher.
0
Salut ErmalF

Je voulais savoir si entre temps tu as réussie à résoudre ton problème ?
Crlr
0