2013-06-25 5 views
6

ile adlandırılan bir Wii Balance Board ile benim Nexus 4 bağlanmaya çalışıyorum ama bu hatayı alıyorum:Android: getBluetoothService() hiçbir BluetoothManagerCallback

getBluetoothService() called with no BluetoothManagerCallback 
connect(), SocketState: INIT, mPfd: null 

Yani bağlantıyı bitmez.

Benim soket: bana hata verir

public final class wSocket 
{ 
    public static BluetoothSocket create(BluetoothDevice dev, int port) 
    { 
     try { 
     /* 
     * BluetoothSocket(int type, int fd, boolean auth, boolean encrypt, BluetoothDevice device, int port, ParcelUuid uuid) 
     */ 
      Constructor<BluetoothSocket> construct = BluetoothSocket.class.getDeclaredConstructor(int.class, int.class, boolean.class, 
       boolean.class, BluetoothDevice.class, int.class, ParcelUuid.class); 

      construct.setAccessible(true); 
      return construct.newInstance(3 /* TYPE_L2CAP */, -1, false, false, dev, port, null); 
     } catch (Exception ex) { 
      return null; 
     } 
    } 
} 

: getbluetoothservice() called with no bluetoothmanagercallback

herhangi biri:

private BluetoothSocket sk; 
... 
sk = wSocket.create(wm.dev, 0x11); 
... 
sk.connect(); 

hiçbir başarı ile bu bağlantıyı kontrol ettikten Sadece açık 1 soket çünkü keşfetmek ya da fikir keşfetmek?

+0

Hangi sürümü kullanıyorsunuz? Bu hatayı şimdi aniden alıyorum, ama daha önce hiç yapmadım. –

+0

Bu hatayı Android 4.4'te görmeye başladım. Çoğunlukla 2.x ve 3.x olmasına rağmen çok çeşitli cihazlarda Bluetooth ile çok çalıştım. –

cevap

1

Yuva nesnesini oluşturmadan önce BluetoothAdapter'i getDefaultAdapter() aracılığıyla almayı deneyin. Yukarıda bahsedilen çağrı ile BLuetoothAdater referans alındığında geri arama hizmeti yaratılmış gibi görünüyor. Ayrıntılar için getDefaultAdapter çağrıldığında mService = managerService.registerAdapter(mManagerCallback); adı verilen ile yüklenir.

https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/bluetooth/BluetoothSocket.java

dip not:

soketi için bağlantı() getBluetoothService() parametre değeri null olup, aşağıdaki kod bakın google, BluetoothSocket kurucusunun kullanımını doğrudan duyurmuyor ve soket oluşturmak için BluetoothDevice yöntemini kullanmayı istemiyor gibi görünüyor (google sitesinden referans).

+0

"_adapter = BluetoothAdapter.getDefaultAdapter();" adını verdiğimi söylemeyi unuttum; soket nesnesinin oluşturulmasından önce. – omniyo

+0

BluetoothDevice kullanarak soket oluşturmaya çalıştınız veya örtülü BluetoothSocket kurucusu ile daha iyi kontrol (port kanalı vb.) Elde etmek mi istiyorsunuz? Ve Android ürün revizyonlarında hangi kodu test ettiniz? –

+0

@omniyo sorunu çözebildiniz mi? – momo