蓝牙连接原理

This commit is contained in:
lixu 2023-08-20 17:16:56 +08:00
parent 05ac0641d0
commit 49f2148c3d
5 changed files with 50 additions and 45 deletions

View File

@ -14,6 +14,7 @@ public class MyApplication extends Application {
//初始化Tencent Bugly
CrashReport.initCrashReport(getApplicationContext(), "835a968d72", false);
//1.初始化nqpen sdk
NQPenSDK.getInstance().logSwitch(this,false,false);
LogUtils.getConfig().setLogSwitch(true);
LogUtils.getConfig().setLog2FileSwitch(true);

View File

@ -91,7 +91,7 @@ public class DeviceListActivity extends Activity implements SwipeRefreshLayout.O
LogUtils.d("onCreate");
context = this;
requestWindowFeature(Window.FEATURE_NO_TITLE);
requestWindowFeature(Window.FEATURE_NO_TITLE);//隐藏标题栏
setContentView(R.layout.activity_device_list);
usbManager = (UsbManager) context.getSystemService(Context.USB_SERVICE);
@ -262,6 +262,10 @@ public class DeviceListActivity extends Activity implements SwipeRefreshLayout.O
}).show();
}
/**
* 设备列表的事件监听
* 点击设备 关闭activity 回到主界面
*/
private OnItemClickListener mDeviceClickListener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
@ -287,7 +291,7 @@ public class DeviceListActivity extends Activity implements SwipeRefreshLayout.O
PenCtrlSdkManager.getInstance().connect(PenCtrlSdkManager.getInstance().getCurNQDev());
finish();
}
} else {
} else {//连接类型为蓝牙
PenCtrlSdkManager.getInstance().connect(PenCtrlSdkManager.getInstance().getCurNQDev());
finish();
}
@ -301,7 +305,7 @@ public class DeviceListActivity extends Activity implements SwipeRefreshLayout.O
@Override
public void onRefresh() {
// PenCtrlSdkManager.getInstance().stopSearchPeripheralsList();
// PenCtrlSdkManager.getInstance().stopSearchPeripheralsList();
deviceList.clear();
deviceAdapter.notifyDataSetChanged();

View File

@ -1,6 +1,7 @@
package com.eningqu.aipen.demo.activity;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.bluetooth.BluetoothAdapter;
@ -152,7 +153,7 @@ public class MainActivity extends Activity {
}
};
private SendThread sendThread;
private SendThread sendThread;//实时转换字迹的线程
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -194,7 +195,7 @@ public class MainActivity extends Activity {
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.scan_usb:
case R.id.scan_usb://扫描usb
//关闭侧边栏
mBinding.drawerLayout.closeDrawer(GravityCompat.START);
//检查设备是否支持USB的HOST模式
@ -206,16 +207,16 @@ public class MainActivity extends Activity {
startScanDeviceActivity();
}
break;
case R.id.scan_ble:
case R.id.scan_ble://扫描蓝牙
//关闭侧边栏
mBinding.drawerLayout.closeDrawer(GravityCompat.START);
//检查设备是否支持蓝牙
if (!isBluetoothAvailable()) {
ToastUtils.showLong("Bluetooth is not available");
} else {
PenCtrlSdkManager.getInstance().release();
intiPenSDK(NQPenSDK.CONN_TYPE.BLE);
startScanDeviceActivity();
PenCtrlSdkManager.getInstance().release();//释放原先的连接
intiPenSDK(NQPenSDK.CONN_TYPE.BLE);//初始化蓝牙连接
startScanDeviceActivity();//开始扫描
}
break;
case R.id.sdk_version:
@ -506,6 +507,9 @@ public class MainActivity extends Activity {
PenCtrlSdkManager.getInstance().startScanDevice();
}
/**
* 设置各类事件监听
*/
private void setPenListener() {
//设置实时书写点接收监听
PenCtrlSdkManager.getInstance().setDotListener(penDotListener);
@ -539,44 +543,44 @@ public class MainActivity extends Activity {
public void run() {
int width = ScreenUtils.getScreenWidth();
int height = (int) ((float) ScreenUtils.getScreenWidth() / pageWHRatio);
int width = ScreenUtils.getScreenWidth();
int height = (int) ((float) ScreenUtils.getScreenWidth() / pageWHRatio);
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(width, height);
layoutParams.width = ScreenUtils.getScreenWidth();
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(width, height);
layoutParams.width = ScreenUtils.getScreenWidth();
canvasFrame.setLayoutParams(layoutParams);
canvasFrame.setLayoutParams(layoutParams);
final CanvasDrawView drawView = canvasFrame.bDrawl;
if (null != drawView) {
drawView.setZOrderOnTop(true); // 在最顶层会遮挡一切view
drawView.setZOrderMediaOverlay(true);// 如已绘制SurfaceView则在surfaceView上一层绘制
drawView.setDrawing(true);
}
final CanvasDrawView drawView = canvasFrame.bDrawl;
if (null != drawView) {
drawView.setZOrderOnTop(true); // 在最顶层会遮挡一切view
drawView.setZOrderMediaOverlay(true);// 如已绘制SurfaceView则在surfaceView上一层绘制
drawView.setDrawing(true);
}
canvasFrame.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
canvasFrame.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// mCanvasHeight = drawView.getHeight();
// mCanvasWidth = drawView.getWidth();
LogUtils.d("onGlobalLayout 设置触摸监听");
canvasFrame.getViewTreeObserver().removeOnGlobalLayoutListener(this);
if (null != frameLayout) {
LogUtils.d("onGlobalLayout 设置触摸监听");
canvasFrame.getViewTreeObserver().removeOnGlobalLayoutListener(this);
if (null != frameLayout) {
frameLayout.setOnTouchListener(new TouchListener(canvasFrame, frameLayout.getWidth(),
frameLayout.getHeight(), canvasFrame.getMeasuredWidth(), canvasFrame.getMeasuredHeight()));
}
//设置笔默认的颜色和大小
// setDefaultPenSizeAndColour();
canvasFrame.initDrawBroad = true;
frameLayout.setOnTouchListener(new TouchListener(canvasFrame, frameLayout.getWidth(),
frameLayout.getHeight(), canvasFrame.getMeasuredWidth(), canvasFrame.getMeasuredHeight()));
}
});
frameLayout.removeAllViews();
frameLayout.addView(canvasFrame);
//设置笔默认的颜色和大小
setDefaultPenSizeAndColour();
canvasFrame.initDrawBroad = true;
}
});
frameLayout.removeAllViews();
frameLayout.addView(canvasFrame);
}
});
}
@ -789,7 +793,6 @@ public class MainActivity extends Activity {
}
void resumeThread() {
synchronized (lock) {
lock.notify();
}
@ -814,10 +817,10 @@ public class MainActivity extends Activity {
+ ", page=" + nqDot.page + "bookNum=" + nqDot.bookNum
+ ", Width=" + nqDot.book_width + ", Height=" + nqDot.book_height);
if(page==-1){
if(page==-1){//第一次更新页面信息
page=nqDot.page;
}else {
if(page!=nqDot.page){
if(page!=nqDot.page){//点阵笔迹携带的页面信息与界面展示的界面信息不一样
Message message= new Message();
page=nqDot.page;
message.what=3;
@ -828,11 +831,8 @@ public class MainActivity extends Activity {
canvasDrawView.addDot(mac, nqDot);
}
onPause();
}
}
}
@ -1155,6 +1155,7 @@ public class MainActivity extends Activity {
/**
* 动态权限
*/
@SuppressLint("CheckResult")
private void requestPermissions() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
rxPermission.request(

View File

@ -325,7 +325,6 @@ public class CanvasDrawView extends SurfaceView implements SurfaceHolder.Callbac
canvas.drawPath(strokes.get(i).fullPath, mPaint);
}
}
}
}

0
gradlew vendored Normal file → Executable file
View File