我正在开发一个 Android 项目,我想在我的 Android 设备和 Wii 遥控器/平衡板之间进行连接和通信。目前我正在尝试使用motej 库和bluecove 库来实现这一点。我知道这两个库可以在 Android 下协同工作以连接设备,因为我设置了一个正确连接的测试应用程序(并且可以发送数据,我可以使遥控器发出隆隆声并打开或关闭任何 LED)但它在建立连接后意外关闭。我不知道为什么它的结局是这样的。我对蓝牙开发非常陌生,所以我认为通过图书馆走这条路可以让我启动并运行,而不必了解有关连接的大部分细节。但是由于我当前的测试应用程序遇到了一些问题,我开始怀疑我是否应该完全使用这些库,或者在 Android 蓝牙 API 下工作以使设备连接和通信是否更有效。所以我的问题是:
- 是否可以连接和发送/接收我需要的数据,以便在标准 Android 蓝牙 API 下获得 wii 遥控器的所有功能,或者我将不得不使用我拥有的 bluecove 库之类的东西现在?
- 如果可以在没有 3rd 方蓝牙库的情况下做到这一点,我是否会更好地修改 motej 库之类的东西以使用 Android 蓝牙 API,而不是现在如何使用 javax.bluetooth?或者它是否需要如此多的改变,以至于我干脆放弃它并开始在我自己的新库上工作?
- 有没有人有任何线索可以为我指明正确的方向来获得它的测试应用程序,因为我现在已经修复了它?我的日志输出如下,我通过连接正常,但一秒钟后我的应用程序关闭,没有强制关闭对话框或任何东西。
- 有谁知道一个旨在通过蓝牙访问 Wii 遥控器的库,该遥控器实际上是为与 Android 而不仅仅是 java 一起工作而构建的?
INFO/System.out(31264):发现微尘:00191D652A6B
INFO/WiiMoteTest1(31264): 00191D652A6B
WARN/System.err(31264): 14821 [DeviceInquiryThread-0] INFO motej.MoteFinder - found device: TOSHIBA-USER - 00037AB338F7 - 256:12 - 1835008
ERROR/BluetoothEventLoop.cpp(9154): event_filter: Received signal org.bluez.Adapter:DeviceFound from /org/bluez/30823/hci0
DEBUG/BluetoothService(9154): updateDeviceServiceChannelCache(00:03:7A:B3:38:F7)
ERROR/BluetoothEventLoop.cpp(9154): event_filter: Received signal org.bluez.Adapter:DeviceFound from /org/bluez/30823/hci0
DEBUG/BluetoothService(9154): updateDeviceServiceChannelCache(00:03:7A:B3:38:F7)
WARN/System.err(31264): 17470 [DeviceInquiryThread-0] INFO motej.MoteFinder - inquiry completed
DEBUG/dalvikvm(30209): GC_EXPLICIT freed 93 objects / 4464 bytes in 80ms
DEBUG/dalvikvm(31264): Debugger has detached; object registry had 0 entries
WARN/dalvikvm(31264): ReferenceTable overflow (max=512)
WARN/dalvikvm(31264): Last 10 entries in JNI local reference table:
WARN/dalvikvm(31264): 502: 0x44d3a8b8 cls=Ljava/lang/Class; 'Lcom/intel/bluetooth/BluetoothStackBlueZ;' (164 bytes)
WARN/dalvikvm(31264): 503: 0x44d3a8b8 cls=Ljava/lang/Class; 'Lcom/intel/bluetooth/BluetoothStackBlueZ;' (164 bytes)
WARN/dalvikvm(31264): 504: 0x44d3a8b8 cls=Ljava/lang/Class; 'Lcom/intel/bluetooth/BluetoothStackBlueZ;' (164 bytes)
WARN/dalvikvm(31264): 505: 0x44d3a8b8 cls=Ljava/lang/Class; 'Lcom/intel/bluetooth/BluetoothStackBlueZ;' (164 bytes)
WARN/dalvikvm(31264): 506: 0x44d3a8b8 cls=Ljava/lang/Class; 'Lcom/intel/bluetooth/BluetoothStackBlueZ;' (164 bytes)
WARN/dalvikvm(31264): 507: 0x44d3a8b8 cls=Ljava/lang/Class; 'Lcom/intel/bluetooth/BluetoothStackBlueZ;' (164 bytes)
WARN/dalvikvm(31264): 508: 0x44d3a8b8 cls=Ljava/lang/Class; 'Lcom/intel/bluetooth/BluetoothStackBlueZ;' (164 bytes)
WARN/dalvikvm(31264): 509: 0x44d3a8b8 cls=Ljava/lang/Class; 'Lcom/intel/bluetooth/BluetoothStackBlueZ;' (164 bytes)
WARN/dalvikvm(31264): 510: 0x44d3a8b8 cls=Ljava/lang/Class; 'Lcom/intel/bluetooth/BluetoothStackBlueZ;' (164 bytes)
WARN/dalvikvm(31264): 511: 0x44d3a8b8 cls=Ljava/lang/Class; 'Lcom/intel/bluetooth/BluetoothStackBlueZ;' (164 bytes)
WARN/dalvikvm(31264): JNI local reference table summary (512 entries):
WARN/dalvikvm(31264): 512 of Ljava/lang/Class; 164B (1 unique)
WARN/dalvikvm(31264): Memory held directly by tracked refs is 164 bytes
ERROR/dalvikvm(31264): Failed adding to JNI local ref table (has 512 entries)
INFO/dalvikvm(31264): "in:00191D652A6B" prio=5 tid=12 RUNNABLE
INFO/dalvikvm(31264): | group="main" sCount=0 dsCount=0 s=N obj=0x44d59738 self=0x2501b8
INFO/dalvikvm(31264): | sysTid=31283 nice=0 sched=0/0 cgrp=default handle=2425592
INFO/dalvikvm(31264): | schedstat=( 49835206 61798099 541 )
INFO/dalvikvm(31264): at com.intel.bluetooth.BluetoothStackBlueZ.l2Receive(Native Method)
INFO/dalvikvm(31264): at com.intel.bluetooth.BluetoothL2CAPConnection.receive(BluetoothL2CAPConnection.java:117)
INFO/dalvikvm(31264): at motej.IncomingThread.run(IncomingThread.java:260)
ERROR/dalvikvm(31264): VM aborting