junkchen / blelib Goto Github PK
View Code? Open in Web Editor NEWBleLib是Android低功耗蓝牙4.0及以上开发的辅助库,一行代码解决Ble初始化、扫描、连接、特性读写、设置通知等操作。
License: Apache License 2.0
BleLib是Android低功耗蓝牙4.0及以上开发的辅助库,一行代码解决Ble初始化、扫描、连接、特性读写、设置通知等操作。
License: Apache License 2.0
大概在BleService.java的85行 错误代码为 mScanLeDeviceList.clear();
错误信息
Caused by: java.lang.NullPointerException: Attempt to invoke interface method'void java.util.List.clear()' on a null object reference
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才会监听?
对此有点疑惑,可以帮解答一下吗?
在做一个血压计通信项目,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);
方法报错的话,忽略
直接编译运行,修改之后,两个手机都可以正常连接
(此问题不知是否跟血压设备有关系,不知其他情况是否适用)
您好,我的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);
是這段嗎?
寫了沒有接收到東西還是需要其他動作呢?
你好,你的代码很不错,节省了很多时间。但是在使用中发现有些地方还有遗漏。
希望能够尽点微薄之力帮忙完善这个代码
蓝牙调scanLeDevice() 给false为什么不停止扫描设备啊
当我在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();//写入数据
调用以上三个方法却没有任何响应,还请指点一下,谢谢。
我用来扫描开着蓝牙的手机,但是扫不到,是什么原因呢
从手机端断开再连接时没有问题 但是如果先从设备端断开连接再从手机端连接会显示This is device already connected.
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(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);
}
}
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)
我的邮箱[email protected]谢谢了
public void onReadRemoteRssi(BluetoothGatt gatt, int rssi, int status) {
}
这个函数重实现怎么做呢,我想要随时获取状态。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.