IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Android Discussion :

Parallélisme avec le Scan bluetooth


Sujet :

API standards et tierces Android

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 65
    Points : 37
    Points
    37
    Par défaut Parallélisme avec le Scan bluetooth
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    public class BluetoothUtilities 
    {
     
        private BluetoothAdapter _bluetoothAdapter;
        private Vector<String> _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<String>();
            _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

  2. #2
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Points : 4 240
    Points
    4 240
    Par défaut
    Salut,

    Je ne sais pas si tu es au courant, mais y'a un exemple de "Chat" via bluetooth sur le site d'android :
    http://developer.android.com/resourc...tActivity.html

    Je n'ai jamais eu à utiliser le bluetooth, mais en parcourant vite fait le code, je viens de voir ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
            // Register for broadcasts when a device is discovered
            IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
            this.registerReceiver(mReceiver, filter);
     
            // Register for broadcasts when discovery has finished
            filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
            this.registerReceiver(mReceiver, filter);
    et du coup après, dans ton broadcast receiver, il fait ça pour écouter si c'est la fin de la recherche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     // When discovery is finished, change the Activity title
                } else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
                    setProgressBarIndeterminateVisibility(false);
                    setTitle(R.string.select_device);
                    if (mNewDevicesArrayAdapter.getCount() == 0) {
                        String noDevices = getResources().getText(R.string.none_found).toString();
                        mNewDevicesArrayAdapter.add(noDevices);
                    }
                }
    voilà, je pense qu'avec ça, tu devrais t'en sortir.
    Bon courage
    Si vous jugez mon post utile dans la résolution de votre problème, n'hésitez pas à utiliser le système de vote afin d'améliorer la qualité du forum

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 65
    Points : 37
    Points
    37
    Par défaut
    Merci, çà m'a bien aidé
    Mais j'ai maintenant un problème de porté de variable. Je crée un nouveau topic.

  4. #4
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Points : 4 240
    Points
    4 240
    Par défaut
    Pense à mettre le sujet en résolu si tel est le cas...
    Si vous jugez mon post utile dans la résolution de votre problème, n'hésitez pas à utiliser le système de vote afin d'améliorer la qualité du forum

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème avec J2ME et Bluetooth
    Par informatic87 dans le forum Java ME
    Réponses: 5
    Dernier message: 12/06/2009, 19h40
  2. Projet application java avec mutijoueur via bluetooth
    Par oliver-14 dans le forum Développement Mobile en Java
    Réponses: 3
    Dernier message: 03/10/2008, 09h47
  3. [wm6] Incompatibilité avec JAVA (soft bluetooth)
    Par Uchronie dans le forum Développement Mobile en Java
    Réponses: 4
    Dernier message: 31/01/2008, 19h47
  4. utiliser mpi pour créer le paraléllisme avec le builder c++
    Par randa84 dans le forum Développement
    Réponses: 1
    Dernier message: 21/02/2007, 13h41
  5. [MPI] Comment créer du parallélisme ?
    Par randa84 dans le forum Programmation parallèle, calcul scientifique et de haute performance (HPC)
    Réponses: 3
    Dernier message: 18/02/2007, 18h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo