几天前,我在 Google Play 商店下载了蓝牙智能扫描仪软件。在我的三星 Galaxy S3 手机上安装后,我可以成功扫描我的蓝牙 LE 设备。
即使我尝试了所有方法来扫描我的蓝牙 LE 设备,我的计算机上也没有显示任何内容。于是我反编译了这个软件,startLeDiscovery()
包里面有个方法android.bluetooth
。android.jar
但让我感到困惑的是,我的 android sdk 15中不存在这种方法。
最后,我把蓝牙智能扫描仪软件的BlutoothAdapter.class
文件和BluetoothDevice.class
文件替换成了android.jar
它们,这样我就可以startLeDiscovery()
在Eclipse中成功调用该方法了。源代码如下图所示。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
IntentFilter intent = new IntentFilter();
intent.addAction(BluetoothDevice.ACTION_FOUND);
intent.addAction(BluetoothDevice.EXTRA_UUID);
intent.addAction(BluetoothDevice.ACTION_GATT_PRIMARY_UUID);
registerReceiver(searchDevices, intent);
//bluetooth.discovery();
bluetooth.startLeDiscovery();
}
private BroadcastReceiver searchDevices = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
BluetoothDevice device = null;
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
String msg = device.getName()+"\n"+device.getAddress();
Log.i("hella",msg);
bluetooth.cancelDiscovery();
connectDevice(device);
}
}
};`
事实证明,我在 Galaxy s3 手机上成功扫描了我的蓝牙 LE 设备,正如我所想的那样。否则,我发现那里也有一个com.samsung.bluetoothle
包。同样的,我在我的android.jar
. 但我无法使用该包中的这些方法连接到我的 LE 设备。
我恳请您帮助解决这个困扰我们很长时间的问题。为了方便开发,我会android.jar
在网站上贡献我的。您将在目录中看到startLeDiscovery()
方法和其他方法。android.bluetooth
当然,目录中也有一个 com.samsung.bluetoothle
包android
。