GithubHelp home page GithubHelp logo

junkchen / blelib Goto Github PK

View Code? Open in Web Editor NEW
243.0 243.0 73.0 253 KB

BleLib是Android低功耗蓝牙4.0及以上开发的辅助库,一行代码解决Ble初始化、扫描、连接、特性读写、设置通知等操作。

License: Apache License 2.0

Java 100.00%

blelib's People

Contributors

junkchen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

blelib's Issues

1.2.3版本扫描的时候还是会出现空指针

java.lang.NullPointerException: Attempt to invoke interface method 'void java.util.List.clear()' on a null object reference
04-25 14:50:04.544 21158-21158/com.ugobiking.ugobikeapp W/System.err: at com.junkchen.blelib.BleService.scanLeDevice(BleService.java:185)
04-25 14:50:04.544 21158-21158/com.ugobiking.ugobikeapp W/System.err: at com.ugobiking.ugobikeapp.module.MainActivity.unlock(MainActivity.java:915)
04-25 14:50:04.544 21158-21158/com.ugobiking.ugobikeapp W/System.err: at com.ugobiking.ugobikeapp.module.MainActivity.onActivityResult(MainActivity.java:798)
04-25 14:50:04.544 21158-21158/com.ugobiking.ugobikeapp W/System.err: at android.app.Activity.dispatchActivityResult(Activity.java:6805)
04-25 14:50:04.544 21158-21158/com.ugobiking.ugobikeapp W/System.err: at android.app.ActivityThread.deliverResults(ActivityThread.java:3904)
04-25 14:50:04.544 21158-21158/com.ugobiking.ugobikeapp W/System.err: at android.app.ActivityThread.handleSendResult(ActivityThread.java:3951)
04-25 14:50:04.544 21158-21158/com.ugobiking.ugobikeapp W/System.err: at android.app.ActivityThread.-wrap16(ActivityThread.java)
04-25 14:50:04.544 21158-21158/com.ugobiking.ugobikeapp W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1524)
04-25 14:50:04.544 21158-21158/com.ugobiking.ugobikeapp W/System.err: at android.os.Handler.dispatchMessage(Handler.java:111)
04-25 14:50:04.544 21158-21158/com.ugobiking.ugobikeapp W/System.err: at android.os.Looper.loop(Looper.java:207)
04-25 14:50:04.545 21158-21158/com.ugobiking.ugobikeapp W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5743)
04-25 14:50:04.545 21158-21158/com.ugobiking.ugobikeapp W/System.err: at java.lang.reflect.Method.invoke(Native Method)
04-25 14:50:04.545 21158-21158/com.ugobiking.ugobikeapp W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
04-25 14:50:04.545 21158-21158/com.ugobiking.ugobikeapp W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:766)

关于服务发现的疑问

我在帮助中发现了两个关于服务发现的东东
1、可以直接返回服务列表
mBleService.getSupportedGattServices();//获取服务
2、发现服务的的回调函数
//Ble服务发现回调
mBleService.setOnServicesDiscoveredListener(new BleService.OnServicesDiscoveredListener() {
@OverRide
public void onServicesDiscovered(BluetoothGatt gatt, int status) {

}

});

这两个要同时使用吗?还是我使用了1之后2才会监听?
对此有点疑惑,可以帮解答一下吗?

遇到onConnectionStateChange status =133问题,可以试一下。

在做一个血压计通信项目,debug后发现 onConnectionStateChange =133
用魅族手机 mx3 (android 5.0) 还有三星s6(�Android 7.0) 测试,一直是133

解决方 将 mBluetoothGatt = device.connectGatt(this, false, mGattCallback);
替换成 mBluetoothGatt = device.connectGatt(this, false, mGattCallback,2);
方法报错的话,忽略
直接编译运行,修改之后,两个手机都可以正常连接

(此问题不知是否跟血压设备有关系,不知其他情况是否适用)

onScean方法空指针

您好,我的app有时候放在那里不动的时候,会报此错误,请问是什么原因啊

AndroidRuntime: FATAL EXCEPTION: main
Process: com.junyuanrobot.aite, PID: 3863
java.lang.NullPointerException: Attempt to invoke interface method 'boolean java.util.List.contains(java.lang.Object)' on a null object reference
at com.junkchen.blelib.BleService$2.onLeScan(BleService.java:468)
at android.bluetooth.BluetoothAdapter$2.onScanResult(BluetoothAdapter.java:1805)
at android.bluetooth.le.BluetoothLeScanner$BleScanCallbackWrapper$1.run(BluetoothLeScanner.java:331)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5275)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704)

请问写入数据时如何进行指令分包传输

在部分Android手机中,发送指令最长只能是20个字节,我的指令带有固定的包头,导致长度超出20个字节,在实际测试中发送指令后经常没有进行回应。而纯粹的将指令拆成两段,设备无法识别指令

請問怎麼接收資料?

mBleService.setOnDataAvailableListener(mOnDataAvailable);
是這段嗎?
寫了沒有接收到東西還是需要其他動作呢?

可以贡献修改代码么

你好,你的代码很不错,节省了很多时间。但是在使用中发现有些地方还有遗漏。
希望能够尽点微薄之力帮忙完善这个代码

运行demo时出现问题?

当我在ubuntu下的Android Studio上运行例子时,出现了如下问题
Error:Execution failed for task ':blelib:processReleaseResources'. > com.android.ide.common.process.ProcessException: Failed to execute aapt
我不知道这是为什么,是因为我的Sdk不同导致的么?

当我切换到Win7下没有上面的问题,但是在手机上运行例子时会闪退(我的是华为手机,Android 6.0)
请问这又是什么原因?

当我简单进行测试的时候,任意调用一个API,都会导致闪退。我已经懵逼了。

请问如何读取和写入数据

mBleService.setCharacteristicNotification();//设置通知
mBleService.readCharacteristic();//读取数据
mBleService.writeCharacteristic();//写入数据
调用以上三个方法却没有任何响应,还请指点一下,谢谢。

扫不到手机

我用来扫描开着蓝牙的手机,但是扫不到,是什么原因呢

我发现一个bug,不知道是怎么回事!

private final BluetoothAdapter.LeScanCallback mScanCallback = new BluetoothAdapter.LeScanCallback() {
    @Override
    public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {
        if (mScanLeDeviceList.contains(device)) return;
        mScanLeDeviceList.add(device);
        if (mOnLeScanListener != null) {
            mOnLeScanListener.onLeScan(device, rssi, scanRecord);
        }
        broadcastUpdate(ACTION_BLUETOOTH_DEVICE, device);
    }
};

当我扫描设备的时候,我设备发送广播非常快,差不多200ms一次,然后扫描停止的时候程序就崩溃了。

FATAL EXCEPTION: main
Process: com.application.android.box, PID: 10950
java.lang.NullPointerException: Attempt to invoke interface method 'boolean java.util.List.contains(java.lang.Object)' on a null object reference
at com.application.android.box.blelib.BleService$2.onLeScan(BleService.java:464)

这是错误消息!

程序崩溃

你好,为什么监听蓝牙的开启关闭,绑定和解绑service会崩溃

下载运行项目必报空指针

11-29 14:16:52.141 3123-3123/com.junkchen.blelib.sample E/AndroidRuntime: FATAL EXCEPTION: main Process: com.junkchen.blelib.sample, PID: 3123 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference at com.junkchen.blelib.sample.BleScanActivity$5.convert(BleScanActivity.java:229) at com.junkchen.blelib.sample.BleScanActivity$5.convert(BleScanActivity.java:226) at com.junkchen.blelib.sample.adapter.CommonAdapter.getView(CommonAdapter.java:55) at android.widget.AbsListView.obtainView(AbsListView.java:2464) at android.widget.ListView.measureHeightOfChildren(ListView.java:1286) at android.widget.ListView.onMeasure(ListView.java:1194) at android.view.View.measure(View.java:17782) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5625) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1692) at android.widget.LinearLayout.measureVertical(LinearLayout.java:760) at android.widget.LinearLayout.onMeasure(LinearLayout.java:629) at android.view.View.measure(View.java:17782) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5625) at android.widget.FrameLayout.onMeasure(FrameLayout.java:459) at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135) at android.view.View.measure(View.java:17782) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5625) at android.support.v7.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:391) at android.view.View.measure(View.java:17782) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5625) at android.widget.FrameLayout.onMeasure(FrameLayout.java:459) at android.view.View.measure(View.java:17782) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5625) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1692) at android.widget.LinearLayout.measureVertical(LinearLayout.java:760) at android.widget.LinearLayout.onMeasure(LinearLayout.java:629) at android.view.View.measure(View.java:17782) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5625) at android.widget.FrameLayout.onMeasure(FrameLayout.java:459) at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2644) at android.view.View.measure(View.java:17782) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2398) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1407) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1631) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1285) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6509) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:821) at android.view.Choreographer.doCallbacks(Choreographer.java:624) at android.view.Choreographer.doFrame(Choreographer.java:593) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:807) at android.os.Handler.handleCallback(Handler.java:815) at android.os.Handler.dispatchMessage(Handler.java:104) at android.os.Looper.loop(Looper.java:194) at android.app.ActivityThread.main(ActivityThread.java:5562) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:968) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:763)

OnDataAvailableListener没有添加onCharacteristicWrite方法

OnDataAvailableListener没有添加onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status);
读取设备通知的时候将无法获取数据,因此建议在listener中加入该方法,方便进行回调

public void onCharacteristicWrite(BluetoothGatt gatt,
                                      BluetoothGattCharacteristic characteristic, int status) {

        String address = gatt.getDevice().getAddress();
        for (int i = 0; i < characteristic.getValue().length; i++) {
            Log.i(TAG, "address: " + address + ",Write: " + characteristic.getValue()[i]);
        }
        if (mOnDataAvailableListener != null) {
            mOnDataAvailableListener.onCharacteristicWrite(gatt, characteristic, status);
        }

    }

Simple第一次扫描失败后,按后退推出,再次点击“扫描BLE”报空指针异常

java.lang.NullPointerException: Attempt to invoke interface method 'void java.util.List.clear()' on a null object reference at com.junkchen.blelib.BleService.scanLeDevice(BleService.java:182) at com.junkchen.blelib.BleService.scanLeDevice(BleService.java:204) at com.junkchen.blelib.sample.BleScanActivity.verifyIfRequestPermission(BleScanActivity.java:154) at com.junkchen.blelib.sample.BleScanActivity.access$200(BleScanActivity.java:61) at com.junkchen.blelib.sample.BleScanActivity$3.onClick(BleScanActivity.java:207) at android.view.View.performClick(View.java:4851) at android.view.View$PerformClick.run(View.java:20016) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5481) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:952) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747)

如何是先读取RSSI

public void onReadRemoteRssi(BluetoothGatt gatt, int rssi, int status) {
}
这个函数重实现怎么做呢,我想要随时获取状态。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.