package com.power.orgmodel.helper;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.bluetooth.BluetoothGatt;
import android.content.Context;
import android.graphics.PorterDuff;
import android.os.Handler;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import com.clj.fastble.BleManager;
import com.clj.fastble.callback.BleGattCallback;
import com.clj.fastble.callback.BleNotifyCallback;
import com.clj.fastble.callback.BleScanCallback;
import com.clj.fastble.data.BleDevice;
import com.clj.fastble.exception.BleException;
import com.flyco.roundview.RoundRelativeLayout;
import com.power.orgmodel.R;
import com.power.orgmodel.model.WarmGunConnectBean;
import com.power.orgmodel.utils.Constants;
import com.power.orgmodel.utils.ToolUtils;
import com.power.orgmodel.utils.XLog;
import com.walnutin.hardsdk.ProductList.sdk.HardSdk;
import com.yanzhenjie.permission.Action;
import com.yanzhenjie.permission.AndPermission;
import java.util.List;
import androidx.core.widget.ContentLoadingProgressBar;
import cn.pedant.SweetAlert.SweetAlertDialog;
/**
* 温枪连接帮助类
* @author hutao
* @date 2020/6/4
*/
public class BleSanHelper extends BleScanCallback implements PermissionCallBack {
private Context mContext;
//活动状态
private boolean isActiveBle = false;
private boolean isCloseLoading = false;
private TempCallBack callBack;
public BleSanHelper(){
this.mContext = HardSdk.getInstance().getContext();
}
/**
* 设置监听
* @param callBack
*/
public void setOnTemperature(TempCallBack callBack){
this.callBack = callBack;
}
/**
* 开始连接
*/
public void connect(){
if(!isActiveBle){
String[] permission = {
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.ACCESS_NETWORK_STATE,
Manifest.permission.ACCESS_WIFI_STATE,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION
};
requestPermission(permission,BleSanHelper.this);
}
}
/**
* 断开连接
*/
public void disConnect(){
isCloseLoading = true;
BleManager.getInstance().disconnectAllDevice();
}
@Override
public void onScanFinished(List<BleDevice> scanResultList) {
}
@Override
public void onScanStarted(boolean success) {
//开始扫描连接
loadingDialog(mContext.getString(R.string.startScanLoading));
}
@Override
public void onScanning(BleDevice bleDevice) {
//扫描到一个就停止了扫描
if(null != bleDevice){
BleManager.getInstance().cancelScan();
connectWarmGun(bleDevice);
}
}
/**
*重连机制
* @param device
*/
private void reConnect(BleDevice device) {
//自动重连
connectWarmGun(device);
isActiveBle = true;
}
/**
* 开始连接温枪
* @param bleDevice
*/
private void connectWarmGun(BleDevice bleDevice) {
BleManager.getInstance().connect(bleDevice, new BleGattCallback() {
@Override
public void onStartConnect() {
Log.e("onStartConnect","开始连接温枪");
loadingDialog(mContext.getString(R.string.findDeviceToConnect));
}
@Override
public void onConnectFail(BleDevice bleDevice, BleException exception) {
Log.e("onConnectFail",exception.getDescription());
reConnect(bleDevice);
}
@Override
public void onConnectSuccess(BleDevice bleDevice, BluetoothGatt gatt, int status) {
Log.e("onConnectSuccess",bleDevice.getName());
connectNotification(bleDevice);
}
@Override
public void onDisConnected(boolean isActiveDisConnected, final BleDevice device, BluetoothGatt gatt, int status) {
Log.e("onDisConnected","断开连接");
if(isCloseLoading){
return;
}
isActiveBle = false;
callBack.switchButton(false);
actionSweetDialog(mContext.getString(R.string.tips),
mContext.getString(R.string.isReconnect), new DialogCallBack() {
@Override
public void cancel() {
}
@Override
public void confirm() {
reConnect(device);
}
});
}
});
}
/**
* 开始连接广播
* @param bleDevice
*/
private void connectNotification(final BleDevice bleDevice) {
BleManager.getInstance().notify(bleDevice, Constants.SERVICE_UUID, Constants.NOTIFY_UUID, new BleNotifyCallback() {
@Override
public void onNotifySuccess() {
Log.e("onNotifySuccess","onNotifySuccess");
WarmGunConnectBean warmGunConnectModel = new WarmGunConnectBean();
warmGunConnectModel.setName(bleDevice.getName());
warmGunConnectModel.setUuid(bleDevice.getMac());
callBack.switchButton(true);
//
loadingDialog(mContext.getString(R.string.connectSucceeded));
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
closeLoading();
}
},1000);
}
@Override
public void onNotifyFailure(BleException exception) {
Log.e("onNotifyFailure",exception.getDescription());
}
@Override
public void onCharacteristicChanged(byte[] data) {
closeLoading();
//截取前10位,之后只保留前6位在转成10进制, FEE70D0A00000DD1000C2C000B39A509 只要中间5位====== 000DD1 ===16转10进制
String byte2HexString = ToolUtils.byteArrHexToString(data);
String hex2decimal = ToolUtils.BigIntDecimalToHex(byte2HexString.substring(10, byte2HexString.length() - 16));
String temperature = hex2decimal.substring(0,2)+"."+ hex2decimal.substring(2,hex2decimal.length()-1);
Log.e("测量出来的温度",temperature);
callBack.setTemperature(temperature);
}
});
}
@Override
public void permissionSuccess() {
isActiveBle = true;
BleManager.getInstance().scan(this);
}
@Override
public void permissionFailed() {
}
@SuppressLint("WrongConstant")
private void requestPermission(String[] permissionArr, final PermissionCallBack callBack){
AndPermission.with(mContext)
.runtime().permission(permissionArr)
.onGranted(new Action<List<String>>() {
@Override
public void onAction(List<String> permission2) {
callBack.permissionSuccess();
}
}
)
.onDenied(new Action<List<String>>() {
@Override
public void onAction(List<String> permission) {
没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
收起资源包目录
Uni-App模块化开发的组件封装 (418个子文件)
weex_livepusher-release.aar 14.26MB
uniapp-release.aar 12.75MB
amap-libs-release.aar 12.21MB
media-release.aar 10.69MB
uniMPSDK-release.aar 3.79MB
speech_baidu-release.aar 2.01MB
share-tencent-release.aar 1011KB
media-livepusher-release.aar 664KB
audio-mp3aac-release.aar 645KB
openDefault-4.4.1.aar 385KB
miit_mdid_1.0.10.aar 264KB
alipaySdk-15.6.5-20190718211159-noUtdid.aar 243KB
hardsdk_1.16.aar 242KB
hardsdk_1.16.aar 242KB
map-amap-release.aar 168KB
android-gif-drawable-release@1.2.17.aar 144KB
weex_videoplayer-release.aar 140KB
gallery-dmcBig-release.aar 113KB
oauth-miui-release.aar 92KB
weex_amap-release.aar 87KB
Bluetooth-release.aar 27KB
share-sina-release.aar 26KB
share-weixin-release.aar 25KB
contacts-release.aar 25KB
oauth-weixin-release.aar 19KB
iBeacon-release.aar 16KB
messaging-release.aar 13KB
payment-weixin-release.aar 11KB
oauth-sina-release.aar 11KB
speech-release.aar 10KB
share-qq-release.aar 8KB
geolocation-amap-release.aar 8KB
oauth-qq-release.aar 8KB
fingerprint-release.aar 5KB
sqlite-release.aar 5KB
payment-alipay-release.aar 5KB
gradlew.bat 2KB
outputFiles.bin 51KB
sha1-checksums.bin 21KB
fileHashes.bin 20KB
last-build.bin 1B
view.css 49KB
view.css 49KB
view.css 49KB
.gitignore 222B
.gitignore 50B
.gitignore 6B
.gitignore 6B
.gitignore 6B
build.gradle 2KB
build.gradle 2KB
build.gradle 2KB
build.gradle 553B
settings.gradle 98B
gradlew 5KB
dcloud_error.html 3KB
local.html 2KB
__uniappview.html 961B
__uniappview.html 961B
__uniappview.html 961B
app.iml 20KB
OrgModel.iml 15KB
OrgComponent.iml 15KB
UniOrganization.app.iml 14KB
UniOrganization.OrgModel.iml 9KB
UniOrganization.OrgComponent.iml 9KB
UniOrganization.iml 1KB
qq_sdk_v3.3.5.jar 284KB
wechat-sdk-android-without-mta-5.4.3.jar 119KB
qq_mta-sdk-1.6.2.jar 75KB
gradle-wrapper.jar 53KB
alipayutdid.jar 50KB
BleSanHelper.java 11KB
Constants.java 7KB
MainActivity.java 7KB
BluetoothService.java 6KB
BluetoothHelper.java 3KB
ToolUtils.java 2KB
OrgMethodModel.java 2KB
App.java 2KB
ToastUtils.java 2KB
XLog.java 2KB
BluetoothDeviceInfoEvent.java 2KB
MySplashView.java 1KB
TestPageActivity.java 1KB
AppUserInfo.java 972B
ExampleInstrumentedTest.java 789B
ExampleInstrumentedTest.java 788B
ExampleInstrumentedTest.java 780B
OrgViewComponent.java 696B
WarmGunConnectBean.java 405B
ExampleUnitTest.java 402B
ExampleUnitTest.java 399B
ExampleUnitTest.java 395B
BluetoothStateEvent.java 312B
WXPayEntryActivity.java 184B
WXEntryActivity.java 172B
PermissionCallBack.java 170B
TempCallBack.java 157B
DialogCallBack.java 117B
共 418 条
- 1
- 2
- 3
- 4
- 5
hutao881020
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0