Aller au contenu

Parallélisme avec le Scan bluetooth


jerror404

Recommended Posts

Bonjour,

j'ai une question en ce qui concerne le scan bluetooth.

J'ai une application qui doit récupérer les matériaux bluetooth environnent.

Pour cela j'ai une Activity qui lance le scan, et une class qui gère la récupération des données bluetooth etc :

Activity :

public class Main extends Activity 
{

   private BluetoothUtilities _bluetooth;

   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) 
   {

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

       _bluetooth = new BluetoothUtilities(this);

       if(!_bluetooth.isAvailable())
           System.exit(0);

       if(!_bluetooth.isEnable())
           _bluetooth.activer();

       _bluetooth.startScan();


       //while(_bluetooth.isDiscovering());

       //((TextView) findViewById(R.id.TextViewResult)).append("FINISH \n");

   }
}

BlutoothClass :

public class BluetoothUtilities 
{

   private BluetoothAdapter _bluetoothAdapter;
   private Vector _deviceDiscovered;
   private Activity _act;

   private final BroadcastReceiver _Receiver = new BroadcastReceiver() 
   {
       public void onReceive(Context context, Intent intent) 
       {
           String action = intent.getAction();

           if(BluetoothDevice.ACTION_FOUND.equals(action)) 
           {
               BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
               _deviceDiscovered.add(device.getName());
               ((TextView) _act.findViewById(R.id.TextViewResult)).append(_deviceDiscovered.lastElement()+"\n");
           }
       }
   };




   public BluetoothUtilities(Activity act)
   {
       _act = act;
       _deviceDiscovered = new Vector();
       _bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
   }


   public void startScan()
   {
       _bluetoothAdapter.startDiscovery();
       IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
       _act.registerReceiver(_Receiver, filter);
   }

   public boolean isDiscovering()
   {
       return _bluetoothAdapter.isDiscovering();
   }

   public void activer()
   {
       Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
       _act.startActivityForResult(enableBtIntent, 2);
   }

   public boolean isAvailable()
   {
       return !(_bluetoothAdapter == null);
   }

   public boolean isEnable()
   {
       return _bluetoothAdapter.isEnabled();
   }

}

Ici ce que je fais, c'est afficher dans mon TextView les périphériques détectes au fur et a mesure.

Mais ce que je voudrais, c'est attendre la fin du scan pour ensuite afficher le résultat.

J'ai donc rajouté les ligne commentées dans Activity, mais mon while(isDiscovering()) n'a pas l'air de fonctionner.

Je sais pas si je my prend de la bonne façons, mais il me faudrais une valeur de retour en ce qui concerne l'état du scan (ce que fait isDiscovering() il me semble).

Merci ;)

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...