Android: mise à Jour de bluetooth rssi chaque seconde
J'essaie d'afficher le bluetooth de la force du signal (rssi) evry seconde (Timer()
) à partir de périphériques détectés, mais je ne pouvais pas appeler onRecive()
plusieurs fois, car Récepteur Du Cycle De Vie.
J'ai besoin d'un moyen(idée) pour actualiser les RSSI, ou une autre façon de mesurer un signal à chaque seconde?
Est-il plus facile si l'appareil est connecté?
App donne une valeur constante toujours:
DeviceName 2b:3c:d5:6c:3x:0X 40 db
Le cadre de l'application stockée dans Timer()
méthode:
BroadcastReceiver mReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
//When discovery finds a device
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
//Get the BluetoothDevice object from the Intent
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
short rssi = intent.getShortExtra(BluetoothDevice.EXTRA_RSSI,Short.MIN_VALUE);
//Add the name and address to an array adapter to show in a ListView
msg = device.getName() + " " + device.getAddress() + " " +rssi+ " db";
}
}};
OriginalL'auteur | 2013-04-27
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez obtenir la valeur RSSI lors d'une découverte de périphérique de numérisation. (Bluetooth Découverte vs Connexion)
"Est-il plus facile si l'appareil est connecté?" En conséquence, avec android docs:
"si vous détenez déjà une connexion avec un périphérique, puis effectue une découverte peut réduire de manière significative la bande passante disponible pour la connexion, donc vous ne devriez pas effectuer la découverte lorsqu'il est connecté."
Avez-vous vraiment besoin de procéder à une enquête, à des intervalles de 1 seconde? Permettra de consommer beaucoup de batterie...
Car vous avez besoin pour effectuer la mesure périodiquement, pourquoi ne pas utiliser AlarmManager ou CountDownTimer?
Dans votre cas particulier, je crois que vous devriez être en utilisant AlarmManager, car il peut répéter indéfiniment. Si vous voulez quelque chose d'exécuter toutes les secondes pendant 10 secondes, par exemple, l'utilisation CountDownTimer.
OriginalL'auteur Blitz