Aller au contenu
Florent Just

Recherche de peripheriques Bluetooth

Recommended Posts

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Modifié par Florent Just

Partager ce message


Lien à poster
Partager sur d’autres sites

Et il est où, le e.getMessage(), dans ton code ? je ne le vois pas...

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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"

Partager ce message


Lien à poster
Partager sur d’autres sites

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();
}

Partager ce message


Lien à poster
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.






  • Contenu similaire

    • Par playj
      Bonjour à tous,
      Depuis hier, sans raisons je rencontre des soucis au niveau de ma connexion 3G par le(s) navigateurs Web.
      J'entends par là que tout fonctionne normalement avec les applications "externes" (Market, FB, Earth, Maps) mais, dès que je tente de me connecter par l'intermédiaire d’Opéra ou du navigateur de base, je tombe sur un écran de ce type.

      J'ai bien tenté de désactiver/réactiver la 3G, de rechercher les réseaux mobiles mais rien n'y fait. Evidemment tout fonctionne parfaitement en Wi-Fi.
      Avez vous déjà rencontré ce problème et savez vous comment le résoudre?
      Merci d'avance.
      EDIT : J'ai trouvé le problème. C'est le logiciel "HTTP proxy Settings" qui avait été désinstallé sans "rétablir les paramètres par défaut"... Réinstallation et désinstallation obligatoire.
    • Par Epsilon11
      Bonjour,
      Hier j'ai suivi ce tutoriel et avant d'installer des roms customs, j'aimerais réaliser une sauvegarde complète de l'OS par défaut.
      Pour cela, j'ai utilisé Rom Manager et j'ai fait une sauvegarde.
      N'ayant pas de carte SD sur mon Atrix, au début, j'ai utilisé une carte de 2Go, mais ça n'a pas marché, donc je suis passé à une carte de 8Go...
      A la fin de la sauvegarde, il m'affiche ça : (pendant moins d'une seconde)
      https://plus.google....190428300534817
      Donc il semblerait que ça ait marché... Mais lorsque je reviens sur Rom Manager et que je fais "gestion et restauration de backup", il n'y a rien...
      De plus, je vois sur windows que ni la carte sd ni la mémoire interne n'est plus remplie...
      Donc d'après vous, quel est le problème ?
    • Par mani300
      Bonjour tout le monde,
      Je m’apprête a changer de Rom, car j'ai de plus en plus de bug, et surtout dernierement une impossibilité de recevoir des message qui font plus de 1sms (160 caracteres), je recois cependant tres bien les mms. bref
      Je me présente juste ici pour avoir vos conseils, car je suis novice en la matiere et je me demandais si avec cette version de la rom officiel nu : 3.4.2-164, je pouvais passer a C7 car dans le tuto il dise qu'il vaut mieux avoir la version 3.4.2-179...
      Ah oui voila aussi je me demandais si le 2ndInit était toujours installé apres le flashage de la rom officiel (j'ai flasher il n'y pas longtemps ma Rom Orange pour mettre une nue) car quand je rallume le telephone, il n'y pas la diode bleu qui s'affiche et qui avant me permettais d'acceder au bootmenu...
      Voila voila.
      Merci d'avance pour vos réponses :)
      Bon je me suis lancé au final a mes risques et péril, j'ai finalement eu quelques unes de mes réponses, mais maintenant j'ai de nouveau un probleme:
      Je ne peux plus utiliser internet ( je tombe sur la page orange qui me dit blocage mobile, vous devez faire une mise a jour du mobile etc... mais rien a faire malgres leurs instructions rien ne marche) et je ne peux pas ajouter (enfin me synchroniser) mon compte google...
      Merci j'ai finalement réussi a me débrouiller comme un grand, non sans mal mais j'y suis arrivé ! a plus tard, j'espere ne plus avoir de probleme !
    • Par Florent Chayrou
      Bonjour,
      En fait j'ai un Samsung Galaxy Gio sous Android 2.2.1, j'aurais bien aimé le passer en 2.3, je l'ai donc branché sur mon ordinateur et sur Kies, à l'endroit où il y'a les infos sur le micrologiciel, il y'a marqué "votre périphérique ne prend pas en charge la mise à niveau du logiciel via kies", que faire ?
      Merci d'avance.
    • Par t3kNo
      Bonjour à tous!
      J'ai acheté, il y a quelques mois, une oreillette bluetooth Sony Ericsson VH110. Je reçois très bien les appels, mais j'aurais bien aimé écouter de la musique par cette oreillette! On m'a conseillé "PowerAMP" mais elle payante et non disponible sur Black Market... Connaiteriez-vous une appli gratuite (ou disponible sur Black Market) qui permet de faire ça?
      Mercii! :)
×
×
  • Créer...