一些简单的说明
- 所用的外设为乐福衡器有限公司生产的蓝牙体脂秤。
- 由于需要蓝牙连接,Demo需要真机运行。
- 如果需要体重值以外的信息需要输入身高、年龄、性别并且光脚上秤。
- 身高的取值范围:30-220厘米;年龄的取值范围:10-99岁;单位0代表千克,1代表斤,2代表镑;性别1代表男,0代表女;用户组取值范围0-9(特定的秤需要这个值)
- 使用Demo过程中需要您打开蓝牙,同时给予Demo定位权限
DEMO的使用
Demo的主页面如下图
261545290467_.pic.jpg
-
绑定设备 - 在这个控制器在被实例化后会开始扫描附近的外设,并将您的外设做一个记录。
-
上秤称重 - 这个控制器在被实例化后也会开始扫描附近的外设,通过过滤去连接已绑定过的设备。所以只有被绑定过后才能去进行上秤称重,否则无法接收到数据。
-
设备管理 - 这个控制器会用列表的方式展示你在“绑定设备”页面绑定的外设。你可以通过长按的方式去删除已绑定设备。
-
在“绑定设备”和“上秤称重”页面接收到外设返回的数据后,会自动停止扫描并断开与外设的连接,然后把数据通过回调的方式传回“主页信息”更新体重一栏,具体的数据可以去“ 数据详情”页查看。
引入ppscalelibrary到你的工程
在工程目录下的AndroidManifest文件中加入如下权限
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
把ppscalelibrary拖入到工程目录下的lib文件夹并在build.gradle中进行依赖
repositories {
flatDir {
dirs 'lib'
}
}
dependencies {
implementation(name: 'ppscalelibrary_v1.0.0', ext: 'aar')
}
ppscalelibrary的使用
ppscalelibrary提供了一个工具类入口BleManager,该对象为一个单例,保证你在不同控制器中调用的时候蓝牙的状态是一致的。
public static BleManager shareInstance(Context context)
调用类方法获取实例对象,需传入当前的上下文。
public void searchDevice(boolean isBinding, List<BleDeviceModel> deviceList, BleUserModel userModel, BleDataProtocoInterface protocoInterface)
- 入参 isBinding和 deviceList 两个关联性很强。
当isBinding为true,代表蓝牙在扫描外设的过程中会将deviceList中所包含的外设忽略掉。为false,代表蓝牙在扫描外设的过程中只会接收deviceList中包含的外设的信息。 - 入参userModel 是用户的身体信息
实现BleDataProtocoInterface这个接口类中的方法来获取秤发出的信息。
void progressData(LFPeopleGeneral var1);
- LFPeopleGeneral 称重过程中的数据
void lockedData(LFPeopleGeneral var1, BleDeviceModel var2);
- LFPeopleGeneral 锁定数据,由于用户可能没有传入正缺范围内的身高性别等信息或者秤重过程中的一些别的原因(穿鞋,没踩到电极片等),锁定数据中只有体重和BMI的数据。
- BleDeviceModel 秤的设备信息
void historyData(boolean var1, LFPeopleGeneral var2, String var3);
- 带有历史数据功能的秤才会走的回调,如果你所选的型号支持读取历史数据功能,那么会走这个回调。
void deviceInfo(BleDeviceModel var1);
- BleDeviceModel 秤的设备信息
public void stopSearch()
- 最后你需要在离开页面的之前调用stopSearch方法。
- 具体的实现请参考Demo中BindingDeviceActivity和ScaleWeightActivity中的代码。
网友评论