Florent Just Posted March 14, 2012 Share Posted March 14, 2012 Bonjour, j'essaye de m'initier au developpement android et je voudrais faire une application de chat par bluetooth. du coup j'ai suivi quelque tuto que je me permet de cité : http://www.tutos-android.com/utilisation-bluetooth-application-android J'arrive a allumer le peripherique mais je n'arrive pas a faire la decouverte de nouveau peripherique. je vous presente mon code : Ma classe activity : package blueWorld.blueChat; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.TextView; import android.widget.Toast; public class PeripheriqueActivity extends Activity { private BlueServices blueservices; private MyException exception; private Button scanPeriph; private CheckBox activblue; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.peripherique); blueservices = new BlueServices(); exception = new MyException(); scanPeriph = (Button) findViewById(R.id.scanPeriph); activblue = (CheckBox) findViewById(R.id.activbluetooth); this.AddListener(); } //public void AddListener() public void AddListener() { activblue.setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if ( isChecked ) { try { String blueStatus = blueservices.ActivateBlue(); Toast.makeText(PeripheriqueActivity.this, blueStatus, Toast.LENGTH_SHORT).show(); } catch(Exception e) { exception.TraiteException(PeripheriqueActivity.this, e); } } else { try { String blueStatus = blueservices.DisableBlue(); Toast.makeText(PeripheriqueActivity.this, blueStatus, Toast.LENGTH_SHORT).show(); } catch(Exception e) { exception.TraiteException(PeripheriqueActivity.this, e); } } } }); scanPeriph.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { try{ blueservices.ScanDevices(PeripheriqueActivity.this); }catch (Exception e) { Toast.makeText(PeripheriqueActivity.this, "erreur " + e, Toast.LENGTH_SHORT).show(); } } }); } } Ma classe qui gère le bluetooth package blueWorld.blueChat; import java.util.ArrayList; import java.util.Set; 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.content.IntentFilter; import android.widget.ArrayAdapter; import android.widget.Toast; public class BlueServices extends Activity { private final BluetoothAdapter blueAdapter; private final MyBroadcastReceiver blueReceiver; protected Set<BluetoothDevice> mArrayAdapter; public BlueServices() { blueAdapter = BluetoothAdapter.getDefaultAdapter(); blueReceiver = new MyBroadcastReceiver(); } public boolean GetEtat() { if (blueAdapter.isEnabled()) { return true; } else { return false; } } public String ActivateBlue() { String returnedString = ""; if (!blueAdapter.isEnabled()) { try { blueAdapter.enable(); returnedString = "Le Bluetooth est activé"; } catch(Exception e) { returnedString = "Erreur : " + e.toString(); } } return returnedString; } public String DisableBlue() { String returnedString = ""; if (blueAdapter.isEnabled()) { try { blueAdapter.disable(); returnedString = "Le Bluetooth est désactivé"; } catch(Exception e) { returnedString = "Erreur : " + e.toString(); } } return returnedString; } public Set<BluetoothDevice> KnownDevices() { Set<BluetoothDevice> pairedDevices = blueAdapter.getBondedDevices(); return pairedDevices; } //public Set<BluetoothDevice> ScanDevices() public void ScanDevices(Context context) { try{ Toast.makeText(BlueServices.this, "demarage de la decouverte ", Toast.LENGTH_SHORT).show(); //blueAdapter.startDiscovery(); }catch (Exception e) { Toast.makeText(BlueServices.this, "erreur : " + e, Toast.LENGTH_SHORT).show(); } //return pairedDevices; } protected void onDestroy() { super.onDestroy(); blueAdapter.cancelDiscovery(); unregisterReceiver(blueReceiver); } public void ConnectDevice() { } public void DisconnectionDevice() { } } Et mon brodcast receiver package blueWorld.blueChat; import android.bluetooth.BluetoothDevice; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class MyBroadcastReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub String action = intent.getAction(); if (BluetoothDevice.ACTION_FOUND.equals(action)) { BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); Toast.makeText(context, "New Device = " + device.getName(), Toast.LENGTH_SHORT).show(); } } } Lorsque je clique sur le bouton "scanPeriph" j'ai le droit à un java.lang.NullPointerException. Une idée d'où cela peux venir? Merci Quote Link to comment Share on other sites More sharing options...
chpil Posted March 14, 2012 Share Posted March 14, 2012 Si tu as un NullPointerException, c'est que tu as quelque part une variable non initialisée. Regarde dans les traces de l'exception, tu y trouveras l'indication de la ligne dans ton code où cela se produit. Quote Link to comment Share on other sites More sharing options...
Florent Just Posted March 16, 2012 Author Share Posted March 16, 2012 (edited) Le NullPointerException semble vernir du e. quand je fais e.getmessage() il me dit erreur : null du coup ques ce que cela veux dire? qu'il n y a pas d'erreur? du coup pourquoi passe dans le catch. J'ai du mal à comprendre. Edited March 16, 2012 by Florent Just Quote Link to comment Share on other sites More sharing options...
chpil Posted March 16, 2012 Share Posted March 16, 2012 Et il est où, le e.getMessage(), dans ton code ? je ne le vois pas... Quote Link to comment Share on other sites More sharing options...
Maraumax Posted March 16, 2012 Share Posted March 16, 2012 J'ai juste survolé le code, mais j'ai vu que ça : public class BlueServices extends Activity { Ton extends ne sert à rien la ! Tu peut le retrirer. Quote Link to comment Share on other sites More sharing options...
Florent Just Posted March 21, 2012 Author Share Posted March 21, 2012 j'ai changer le listener sur le scanPeriph qui agit comme ca maintenant : scanPeriph.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { try{ blueservices.ScanDevices(PeripheriqueActivity.this); }catch (Exception e) { Toast.makeText(PeripheriqueActivity.this, "erreur " + e.getMessage(), Toast.LENGTH_SHORT).show(); } } }); d'où le e.getMessage qui m'affiche null. de plus mon public class BlueServices extends Activity { me permet d'avoir accès au Toast dans la classe blueservices J'ai modifier le code, j'ai enlever l'extend activity et ai retourné une String a la place ce qui donne ceci: Dans mon Activity : scanPeriph.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { try{ String message = blueservices.ScanDevices(PeripheriqueActivity.this); Toast.makeText(PeripheriqueActivity.this, message, Toast.LENGTH_SHORT).show(); }catch (Exception e) { Toast.makeText(PeripheriqueActivity.this, "erreur " + e.getMessage(), Toast.LENGTH_SHORT).show(); } } }); Dans ma classe BlueServices : public String ScanDevices(Context context) { String message = ""; try{ blueAdapter.startDiscovery(); message = "je scan !!"; }catch (Exception e) { message = "erreur : " + e.getMessage(); } return message; } du coup maintenant il arrive dans scandevices et m'affiche "erreur : null" Quote Link to comment Share on other sites More sharing options...
chpil Posted March 21, 2012 Share Posted March 21, 2012 Si tu obtiens le message "erreur : null", ton exception n'est pas nulle (sinon tu aurais un NPE), mais c'est que le message de l'exception est nul Pour avoir plus d'info, il te suffirait de mettre un log lors de la survenance de l'exception, et tu aurais une indication beaucoup plus détaillée de ce qui se passe, visible dans le LogCat }catch (Exception e) { Log.d("MonTag", "erreur scan devices", e); message = "erreur : " + e.getMessage(); } Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.