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

Android Discussion :

registerReceiver force de signal du WIFI


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Par défaut registerReceiver force de signal du WIFI
    Bonjour,

    J'aimerai savoir si pour récupérer l'événement de la force du signal du wifi c'est bien avec ConnectivityManager.CONNECTIVITY_ACTION!

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    		filter = new IntentFilter();
    		filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
    		registerReceiver(layoutStatusBar.getNetworkPowerReceiver(), filter);
    Sinon que dois je mettre?


    Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    542
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 542
    Par défaut
    Connectivity_ACTION sert uniquement à savoir si la connexion a eu lieu.

    Ceci permet de savoir si la force du signal du wifi à changer:
    WifiManager.RSSI_CHANGED_ACTION

    ceci permet de savoir si c'est activé, désactivé.... :

    WifiManager.WIFI_STATE_CHANGED_ACTION

  3. #3
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Par défaut
    Merci beaucoup pour ta réponse

    Sais tu comment savoir de la même manière la force du signal pour savoir si on capte ou non (les 4 barres dans la barre de status)?

    Un StrengthsChanged ou un truc du genre

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    542
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 542
    Par défaut
    Ceci t'aidera:

    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
     
     
    WifiManager wm = (WifiManager) context
    				.getSystemService(Context.WIFI_SERVICE);
     
     
    		WifiInfo connectedInfo = wm.getConnectionInfo();
     
    		if (connectedInfo != null) {
    			int rssiWifi = connectedInfo.getRssi();
     
    			int signalLevelWifi = WifiManager.calculateSignalLevel(rssiWifi,
    					NUM_LEVEL_WIFI);
     
    }

  5. #5
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Par défaut
    Merci

    Dans mon dernier poste je parlais plutot de la connectivité et non du wifi

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    542
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 542
    Par défaut
    Il faut que tu crée une classe qui hérite de PhoneStateListener puis tu implémente cette méthode qui vérifie les évenements qui ont lieu sur le signal:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    @Override
    	public void onSignalStrengthsChanged(SignalStrength signalStrength) {
    		super.onSignalStrengthsChanged(signalStrength);
     
    		int signalRssiStrengh = 0;
    		if (signalStrength.isGsm()) {
    			signalRssiStrengh = signalStrength.getGsmSignalStrength();
    		} 
    }

  7. #7
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Par défaut
    C'est encore moi!

    J'ai un problème!

    Le wifi est bien détecté et son signal aussi!

    Le problème est qu'il est toujours affiché meme quand il est desactivé!
    Qu'est ce qu'il n eva pas dans mon code?


    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
     
     int NUM_LEVEL_WIFI = 5;
    WifiManager wm = (WifiManager) context
    		.getSystemService(Context.WIFI_SERVICE);
    		WifiInfo connectedInfo = wm.getConnectionInfo();
    		if (connectedInfo != null) {
    			int rssiWifi = connectedInfo.getRssi();
    			int signalLevelWifi = WifiManager.calculateSignalLevel(rssiWifi, NUM_LEVEL_WIFI);
    			switch (signalLevelWifi)
    			{
    				case 0:	//barre à 0
    						break;
    				case 1:	//barre à 1
    						break;
    				case 2:	//barre à 2
    						break;
    				case 3:	//barre à 3
    						break;
    				case 4:	//barre à 4
    						break;
    				default:// barre croix
    						break;
    			}
    		}
    		else
    		{
    			//Masquage du wifi
    		}

  8. #8
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Par défaut
    Apparemment lorsque calculateSignalLevel vaut 0 alors il faut masquer le wifi ce qui veut dire que le wifi est désactiver!

    Mais alors que signifie les autres valeurs???

  9. #9
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Bonjour,

    public static int calculateSignalLevel (int rssi, int numLevels)

    Since: API Level 1
    Calculates the level of the signal. This should be used any time a signal is being shown.
    Parameters

    rssi The power of the signal measured in RSSI.
    numLevels The number of levels to consider in the calculated level.
    Returns

    A level of the signal, given in the range of 0 to numLevels-1 (both inclusive).
    D'après la doc les autres valeurs correspondent à la puissance du signal sur une échelle de 0 à numLevels-1. Après méfie toi les deux valeurs sont inclues

    Maintenant ne peux tu pas utiliser plutôt cette méthode un BroadCast avec
    comme Intent-filter WifiManager.WIFI_STATE_CHANGED_ACTION ?

  10. #10
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Par défaut
    Oui c'est exactement ce que je fais et dans ma methode onReceive j'utilise calculateSignalLevel pour savoir quelle image afficher!

    Cependant, ceci ne fonctionne pas et je ne sais pas comment faire!
    Sachant que mon NUM_LEVEL_WIFI = 5;
    Dans mon onReceive:
    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
     
    int NUM_LEVEL_WIFI = 5;
    WifiManager wm = (WifiManager) context
    		.getSystemService(Context.WIFI_SERVICE);
    		WifiInfo connectedInfo = wm.getConnectionInfo();
    		if (connectedInfo != null) {
    			int rssiWifi = connectedInfo.getRssi();
    			int signalLevelWifi = WifiManager.calculateSignalLevel(rssiWifi, NUM_LEVEL_WIFI);
    			switch (signalLevelWifi)
    			{
    				case 0:	//barre à 0
    						break;
    				case 1:	//barre à 1
    						break;
    				case 2:	//barre à 2
    						break;
    				case 3:	//barre à 3
    						break;
    				case 4:	//barre à 4
    						break;
    				default:// barre croix
    						break;
    			}
    		}
    		else
    		{
    			//Masquage du wifi
    		}
    En faites, ou dois je placer ce qui est en commentaire exactement?

    EDIT: J'ai trouvé le code de la fonction calculateSignalLevel:

    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
     
     
        /** Anything worse than or equal to this will show 0 bars. */
        private static final int MIN_RSSI = -100;
     
        /** Anything better than or equal to this will show the max bars. */
        private static final int MAX_RSSI = -55;
     
       /**
         * Calculates the level of the signal. This should be used any time a signal
         * is being shown.
         *
         * @param rssi The power of the signal measured in RSSI.
         * @param numLevels The number of levels to consider in the calculated
         *            level.
         * @return A level of the signal, given in the range of 0 to numLevels-1
         *         (both inclusive).
         */
        public static int calculateSignalLevel(int rssi, int numLevels) {
            if (rssi <= MIN_RSSI) {
                return 0;
            } else if (rssi >= MAX_RSSI) {
                return numLevels - 1;
            } else {
                int partitionSize = (MAX_RSSI - MIN_RSSI) / (numLevels - 1);
                return (rssi - MIN_RSSI) / partitionSize;
            }
        }
    Mais ca ne m'avance pas vraiment :s

Discussions similaires

  1. mesure de force de signal
    Par androidyassin dans le forum Android
    Réponses: 1
    Dernier message: 13/04/2011, 14h17
  2. [WIFI] Amplification de signal avec D-LINK
    Par freud dans le forum Hardware
    Réponses: 5
    Dernier message: 03/05/2007, 14h31
  3. Récupérer la puissance du signal wifi
    Par mohamed.chedly dans le forum Linux
    Réponses: 10
    Dernier message: 24/04/2006, 15h40
  4. Puissance SIgnal WIFI
    Par el3gans dans le forum C
    Réponses: 4
    Dernier message: 09/11/2005, 14h16

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