2012-07-10 11 views
11

Supongo que debo escribir una aplicación que actuará como cliente bluetooth. Lo que trato de hacer es averiguar cuál sería la mejor forma de averiguar si el dispositivo específico que estoy admitiendo está dentro del alcance sin intentar hacer un BluetoothDevice.connect() en él todo el tiempo y fallando. si no está dentro del alcance Aquí asumimos que el dispositivo ya se ha emparejado.¿La forma correcta de encontrar si un dispositivo Bluetooth Android sincronizado está dentro del alcance?

Me temo que sería una mala práctica intentar conectarme a un dispositivo específico todo el tiempo hasta que esté dentro del alcance. Me parece que sería malo para la batería.

¿Alguien sabe de algún método o concepto que deba usarse para lograr lo que estoy tratando de hacer?

Gracias!

+2

¿Has mirado aquí: http://stackoverflow.com/questions/9596978/samsung-galaxy-bluetooth-drivers –

+0

Me echó un vistazo, pero no pude encontrar nada directamente relacionado con mi pregunta, tal vez me perdí ¿eso? –

+0

Bueno, muéstranos qué código has probado y podemos trabajar desde allí. –

Respuesta

1

Ok, ¿por lo que entiendo por su pregunta es que quiere obtener el nombre del dispositivo con el que se emparejó, y si está en rango?

Así que aquí está la solución: -

  1. Crear una clase DeviceDetails con nombre:

DeviceDetails clase {String nombre pública; public String address; dispositivo remoto de dispositivo Bluetooth público; }

  1. es necesario conectar y vincular los dispositivos como se explica here, una vez hecho esto y se hace la conexión, crear un objeto de DeviceDetails.

  2. DeviceDetails selectedDevice; y si tiene un adaptador personalizado para mostrar la lista de dispositivos pasan la posición de la vista a la referencia del dispositivo seleccionado. Ejemplo: - selectedDevice = adapter.getItem(pos);

  3. Ahora usted tiene el objeto SelectedDevice que se ha seleccionado para emparejar, así usted puede ahorrar su dirección y el nombre de

    preferencias.

    Example:- 
    savePairedDeviceInfo(selectedDevice.name, selectedDevice.address); 
        public void savePairedDeviceInfo(String name, String addr) 
         { 
          if(name != null && !name.equalsIgnoreCase("")) 
           editor.putString(PNAME_OF_DEVICE, name); 
    
          if(addr != null && !addr.equalsIgnoreCase("")) 
           editor.putString(MAC_ADDRESS_OF_DEVICE, addr); 
    
          editor.commit(); 
         } 
    
  4. Ahora, la próxima vez, cuando cada vez que desee comprobar si se realiza la configuración de emparejamiento o no esté buscando el nombre y la dirección del dispositivo al obtener los valores de las preferencias. Use un cheque (si es bueno) para devolver verdadero que el dispositivo más antiguo que fue emparejado fue el mismo o algún otro.

  5. Si el dispositivo emparejado está dentro del rango, obtendría el mismo valor, de lo contrario, intentaría emparejarlo con algún otro dispositivo.

Avísame, si entendiste por mi explicación o no.

0

Usted puede seguir por debajo manera:

  1. Obtener la lista de dispositivos vinculados del adaptador bluetooth
  2. inicio descubrimiento
  3. Cuando un dispositivo se encuentra digamos dispositivo A, se puede verificar si el dispositivo A es allí en lista de dispositivos emparejados o no.Si el Dispositivo A es uno de los dispositivos emparejados, significa que se trata de un dispositivo disponible emparejado dentro del alcance.
Cuestiones relacionadas