2012-11-29 10 views
11

Diğer aygıtı zaten buldum ve zaten eşleştirdim. En azından Android telefonumda eşleştirilmiş cihazlar listesinde var. ŞimdiZaten keşfedilmiş ve eşleştirilmiş bir cihazın mevcut olduğunu nasıl tespit edebilirim?

BluetoothSocket.connect() ile iki sorunlar ortaya çıkabilir:

  1. uzak aygıt kapatılır ya da sadece bir çifti, çünkü aksi halde kullanılamaz
  2. uzak aygıt eşleştirme unuttu diğer cihaz ve farklı bir telefona

    => sonra bağlamak belli bir zaman aşımından sonra başarısız eşleştirilmiş edilmiştir.

bir zaten eşleştirilmiş cihaz gerçekten mevcuttur ve o bağlanmadan telefonumla eşleştirilmiş olduğunu hatırlar kontrol etmek mümkün mü? Bu, bir cihazın bağlı olup olmadığını tespit etmekle ilgili değildir. Eşleştirilmiş ve görülebilir bağlantı ile aynı değildir. bağlandı cihazı hatırlama

+0

Aşağıdaki bağlantılara bir bakın: http://stackoverflow.com/questions/14228289/android-device-bluetooth-pairing http://stackoverflow.com/questions/6675208/to-discover-and-pair-bluetooth -devices belki burada bazı fikirler alabilirsiniz. –

cevap

3

ve bağlı - - ama

  • Cihaz bağlı bağlı olmayan
  • Cihaz bağlı bağlı olmayan

    1. Cihaz: Tecrübelerime göre

  • 3 farklı olası BT cihaz durumları tedavi Sorgum var, ama cihazınızın başka bir tanesini bilmesinin bir yolu var. Ve uzak cihazın eşleştirmeyi kaldırmış olup olmadığını bilmek, bunu sormak zorundaydı, örn. bağlayın ve eşleştirmeyi isteyip istemediğini görün.

    diğer yolları bağlamadan önce bu onaylamak ya da belki bir dış kanal TCP/IP veya WiFi veya NFC kullanmak için kullanıcı almak olacaktır. Bunlardan hiçbiri büyülü güçler olmasaydı tek alternatif olurdu. : -)

    1
    1. aslında biraz basittir. Bir cihaza başarılı bir şekilde bağladığınızda, BluetoothDevice nesnesini alırsınız. getAddress() ile benzersiz mac adresini sorgulayabilirsiniz. Adresi bir kez paylaştıktan sonra paylaşılan bir tercihe kaydedin. Bu, "eşleştirildi" yi kapsar - bir sonraki sefer BluetoothAdapter'u kullanırız ve aralarında kayıtlı cihaz adresini arayabileceğimiz bağlı cihazlar listesini alırız.
    2. Şimdi cihazın tam adresini biliyoruz, nasıl biz "gerçekten mevcut" ise söyleyebilir? Eğer "keşif" seviyesinde mevcut olup olmadığını kontrol etmek için cihazı (startDiscovery()) denemeniz ve keşfetmeniz yeterli ise, o zaman hileyi bilirsiniz (liste 1). Cihazın keşfedilebilir ve olduğunu öğrendiyseniz, cihazı tam bağlantı için test etmeniz gerekir. Yeni bir soket açmanız ve pürüzsüz olup olmayacağını görmeniz gerekir.
    +3

    Ne yazık ki bu sadece diğer cihaz keşfedilebilirse çalışır – ocramot

    0

    Sen almak ve zaten eşlenmiş cihaz listesi ve çapraz bu sana o keşfedilebilir modda zaten eşleştirilmiş cihazlar verecektir güncel keşfedilebilir devices.So onları kontrol edebilirsiniz.

    Ama keşfedilemeyecektir cihazlar zorunlu için onlarla bağlanmak zorunda.Veriler başarıyla gönderildiğinde uzak cihaz etkinse aralarında soket bağlantısı oluşturmaya çalışın.

    Ayrıca gümrük durumunu kontrol etmek ve gümrük durum değişiklikleri geri arama almak için ACTION_BOND_STATE_CHANGED alıcısını kayıt uzaktan cihazın getBondState() kullanabilirsiniz.

    İlgili konular