使用Samsung Galaxy S3创建与BluetoothLE设备的连接

时间:2012-11-01 02:03:44

标签: bluetooth bluetooth-lowenergy

几天前,我在Google Play商店下载了Bluetooth Smart Scanner软件。在我的三星Galaxy S3手机上安装后,我可以成功扫描我的蓝牙LE设备。

即使我已经尝试过扫描我的蓝牙LE设备的所有方法,但我的计算机上没有显示任何内容。所以我反编译了这个软件,包startLeDiscovery()中有一个android.bluetooth方法。但令我感到困惑的是,这个方法在我的android.jar android sdk 15中不存在。

最后,我将BlutoothAdapter.class文件和BluetoothDevice.class文件替换为蓝牙智能扫描仪软件的android.jar文件,以便我可以成功调用startLeDiscovery()方法日食。源代码如下所示。

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包。

您可以下载android.jarhereMirror)。

2 个答案:

答案 0 :(得分:0)

android.jar文件被认为是Android设备上可用的类:如果我没记错,这些类不包含在为您的应用生成的APK中,因此添加了{{1} } com.samsung.bluetoothle的课程不会将它们添加到您的应用中。

为什么不从三星网站(http://developer.samsung.com/ble)下载整个SDK而不是反编译并将其添加到android.jar文件中,而只是以推荐的方式使用它?

答案 1 :(得分:0)

您需要在AndroidManifest.xml中使用uses-library标签告诉应用程序使用Galaxy S3蓝牙库。三星从未公开为开发人员发布过一个库,因此你必须制作自己的jar文件进行编译,但不要在你的apk包装中包含jar。

<uses-library android:name="com.samsung.bluetoothle.BluetoothLEClientProfile" android:required="false" />

要访问BluetoothAdapter和BluetoothDevice的方法,最好使用反射来获取所需方法的引用并以此方式调用它们。