|
@@ -76,6 +76,7 @@ import java.util.HashMap;
|
|
|
import java.util.HashSet;
|
|
|
import java.util.List;
|
|
|
import java.util.Locale;
|
|
|
+import java.util.Map;
|
|
|
import java.util.Objects;
|
|
|
import java.util.Set;
|
|
|
import java.util.concurrent.ExecutorService;
|
|
@@ -315,8 +316,8 @@ public class MainActivity extends BaseActivity {
|
|
|
turnOnLight.setOnClickListener(new View.OnClickListener() {
|
|
|
@Override
|
|
|
public void onClick(View v) {
|
|
|
- if (serialPortManager != null){
|
|
|
- serialPortManager.turnOnLight(6);
|
|
|
+ if (lightPortManager != null){
|
|
|
+ lightPortManager.turnOnLight(6);
|
|
|
}
|
|
|
}
|
|
|
});
|
|
@@ -324,10 +325,7 @@ public class MainActivity extends BaseActivity {
|
|
|
closeLight.setOnClickListener(new View.OnClickListener() {
|
|
|
@Override
|
|
|
public void onClick(View v) {
|
|
|
- if (serialPortManager!=null){
|
|
|
- serialPortManager.close();
|
|
|
- serialPortManager = null;
|
|
|
- }
|
|
|
+ toCloseLight();
|
|
|
}
|
|
|
});
|
|
|
|
|
@@ -370,7 +368,28 @@ public class MainActivity extends BaseActivity {
|
|
|
|
|
|
Log.e("------->","-------->"+UserCache.getSerialName());
|
|
|
}
|
|
|
-
|
|
|
+ // -------------------------------------WebInterface相关方法开始----------------------------
|
|
|
+ String mUrl = "https://dwytb.qingyaokeji.com/index.html#/";
|
|
|
+ private void checkNet() {
|
|
|
+ if (!MyTools.isNetworkAvailable(getApplicationContext())) {
|
|
|
+ ll_nonet.setVisibility(View.VISIBLE);
|
|
|
+ ll_web.setVisibility(View.GONE);
|
|
|
+ } else {
|
|
|
+ ll_nonet.setVisibility(View.GONE);
|
|
|
+ ll_web.setVisibility(View.VISIBLE);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ private void getUrl() {
|
|
|
+ mWebView.loadUrl(mUrl);
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
|
|
|
+ if (keyCode == KeyEvent.KEYCODE_BACK && mWebView.canGoBack()) {
|
|
|
+ mWebView.goBack();
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return super.onKeyDown(keyCode, event);
|
|
|
+ }
|
|
|
private AndroidInterface aIn;
|
|
|
|
|
|
private class AndroidInterface {
|
|
@@ -402,9 +421,10 @@ public class MainActivity extends BaseActivity {
|
|
|
if(!FastClickUtil.isFastClick()) {
|
|
|
toGetPortStatus();
|
|
|
new Handler().postDelayed(() -> {
|
|
|
- Log.i(TAG, "getPortStatus:" + JSONObject.toJSONString(requestParam));
|
|
|
- runOnUiThread(() -> mWebView.loadUrl("javascript:getPortStatus('" + JSONObject.toJSONString(requestParam) + "')"));
|
|
|
- }, 8000);
|
|
|
+ Log.i(TAG, "getPortStatus:" + JSONObject.toJSONString(portStatusParam));
|
|
|
+ runOnUiThread(() -> mWebView.loadUrl("javascript:getPortStatus('" + JSONObject.toJSONString(portStatusParam) + "')"));
|
|
|
+ }, 9000);
|
|
|
+ // XToast.showToast("正在初始化串口");
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -494,24 +514,22 @@ public class MainActivity extends BaseActivity {
|
|
|
@JavascriptInterface
|
|
|
public void connectLight(String name) {
|
|
|
Log.e(TAG, "connectLight");
|
|
|
- toConnectLight(name);
|
|
|
+ if(!FastClickUtil.isFastClick()) {
|
|
|
+ toConnectLight(name);
|
|
|
+ // XToast.showToast("connectLight");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@JavascriptInterface
|
|
|
public void controlLight(int address, int type) {
|
|
|
Log.e(TAG, "openLight"+"address="+address+",type="+type);
|
|
|
- if (serialPortManager != null){
|
|
|
- serialPortManager.turnOnLight(address, type);
|
|
|
- }
|
|
|
+ toOpenLight(address, type);
|
|
|
}
|
|
|
|
|
|
@JavascriptInterface
|
|
|
public void disConnectLight() {
|
|
|
Log.e(TAG, "closeLight");
|
|
|
- if (serialPortManager!=null){
|
|
|
- serialPortManager.close();
|
|
|
- serialPortManager = null;
|
|
|
- }
|
|
|
+ toCloseLight();
|
|
|
}
|
|
|
|
|
|
@JavascriptInterface
|
|
@@ -530,80 +548,26 @@ public class MainActivity extends BaseActivity {
|
|
|
@JavascriptInterface
|
|
|
public void connectPort(String name) {
|
|
|
Log.e(TAG, "connectPort");
|
|
|
- toConnectPort(name);
|
|
|
+ if(!FastClickUtil.isFastClick()) {
|
|
|
+ toConnectPort(name);
|
|
|
+ XToast.showToast("正在连接串口");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@JavascriptInterface
|
|
|
public void disConnectPort(String name) {
|
|
|
Log.e(TAG, "disConnectPort");
|
|
|
- for (SerialPortManager port:mPortList) {
|
|
|
- if (port.serialHelper.getPort().equals(name)) {
|
|
|
- port.close();
|
|
|
- return;
|
|
|
- }
|
|
|
- }
|
|
|
+ disconnectPortSingle(name);
|
|
|
}
|
|
|
|
|
|
@JavascriptInterface
|
|
|
public void disConnectPortAll() {
|
|
|
- Log.e(TAG, "disConnectPortAll");
|
|
|
- mPortList.clear();
|
|
|
-// for (SerialPortManager port:mPortList) {
|
|
|
-// port.close();
|
|
|
-// }
|
|
|
+ toDisconnectPortAll();
|
|
|
}
|
|
|
}
|
|
|
+ // -------------------------------------WebInterface相关方法结束----------------------------
|
|
|
|
|
|
- private void toCloseCamera() {
|
|
|
- // 如果相机预览还开着, 则关闭
|
|
|
- cameraIsOpening = false;
|
|
|
- if(previewViewLayout.getVisibility() == View.VISIBLE) {
|
|
|
- previewViewLayout.setVisibility(View.GONE);
|
|
|
- }
|
|
|
- // 关闭的时候摄像头还在录像
|
|
|
- if(recording!=null) {
|
|
|
- openAndCloseVideo();
|
|
|
- }
|
|
|
- if (cameraProvider!=null){
|
|
|
- cameraProvider.unbindAll();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void toOpenCamera(boolean isShowPreview) {
|
|
|
- cameraIsOpening = true;
|
|
|
- // 请求 CameraProvider
|
|
|
- cameraProviderFuture = ProcessCameraProvider.getInstance(this);
|
|
|
- //检查 CameraProvider 可用性,验证它能否在视图创建后成功初始化
|
|
|
- cameraProviderFuture.addListener(() -> {
|
|
|
- try {
|
|
|
- ProcessCameraProvider cameraProvider = cameraProviderFuture.get();
|
|
|
- bindPreview(cameraProvider, isShowPreview, 1);
|
|
|
- } catch (Exception e) {
|
|
|
- // No errors need to be handled for this Future.
|
|
|
- // This should never be reached.
|
|
|
- Log.i(TAG, "toOpenCamera: exception: " + e.getMessage());
|
|
|
- }
|
|
|
- }, ContextCompat.getMainExecutor(this));
|
|
|
- }
|
|
|
-
|
|
|
- private void toOpenRecorder(boolean isShowPreview) {
|
|
|
- cameraIsOpening = true;
|
|
|
- // 请求 CameraProvider
|
|
|
- cameraProviderFuture = ProcessCameraProvider.getInstance(this);
|
|
|
- //检查 CameraProvider 可用性,验证它能否在视图创建后成功初始化
|
|
|
- cameraProviderFuture.addListener(() -> {
|
|
|
- try {
|
|
|
- ProcessCameraProvider cameraProvider = cameraProviderFuture.get();
|
|
|
- bindPreview(cameraProvider, isShowPreview, 2);
|
|
|
- } catch (Exception e) {
|
|
|
- // No errors need to be handled for this Future.
|
|
|
- // This should never be reached.
|
|
|
- Log.i(TAG, "toOpenRecorder: exception: " + e.getMessage());
|
|
|
- }
|
|
|
- }, ContextCompat.getMainExecutor(this));
|
|
|
- }
|
|
|
-
|
|
|
- // ------------------------获取usb口状态开始-------------------
|
|
|
+ // -------------------------------------获取usb口状态开始-----------------------------------
|
|
|
private Handler sendCommandhandler = new Handler();
|
|
|
private List<String> sendCommands = new ArrayList<String>(){
|
|
|
{
|
|
@@ -611,13 +575,20 @@ public class MainActivity extends BaseActivity {
|
|
|
add("A00000A0");
|
|
|
}
|
|
|
};
|
|
|
- Set<String> scannerList;
|
|
|
- Set<String> lightList;
|
|
|
- JSONObject requestParam;
|
|
|
- private synchronized void toGetPortStatus() {
|
|
|
- scannerList = new HashSet<>();
|
|
|
- lightList = new HashSet<>();
|
|
|
- requestParam = new JSONObject();
|
|
|
+ Set<String> scannerList = new HashSet<>();
|
|
|
+ Set<String> lightList = new HashSet<>();
|
|
|
+ Map<String, Set<String>> portStatusParam = new HashMap<>();
|
|
|
+ private void toGetPortStatus() {
|
|
|
+ // 清除上次连接的数据
|
|
|
+ scannerList.clear();
|
|
|
+ lightList.clear();
|
|
|
+ portStatusParam.clear();
|
|
|
+ portStatusParam.put("scanners", scannerList);
|
|
|
+ portStatusParam.put("lights", lightList);
|
|
|
+ // 断开扫码头的连接
|
|
|
+ toDisconnectPortAll();
|
|
|
+ // 断开灯的连接
|
|
|
+ toCloseLight();
|
|
|
// 遍历串口
|
|
|
SerialPortFinder finder = new SerialPortFinder();
|
|
|
// 保存能够连接上的串口
|
|
@@ -667,21 +638,21 @@ public class MainActivity extends BaseActivity {
|
|
|
if (data.contains("04D00000FF2C")) {
|
|
|
Log.i(TAG, "查找USB SCANNER成功:" + seriesName + "-->" + data);
|
|
|
scannerList.add(seriesName);
|
|
|
- requestParam.put("scanners", scannerList);
|
|
|
+ portStatusParam.put("scanners", scannerList);
|
|
|
} else if(data.contains("A00000A0")) {
|
|
|
Log.i(TAG, "查找USB Light成功:" + seriesName + "-->" + data);
|
|
|
lightList.add(seriesName);
|
|
|
- requestParam.put("lights", lightList);
|
|
|
+ portStatusParam.put("lights", lightList);
|
|
|
}
|
|
|
};
|
|
|
|
|
|
@Override
|
|
|
public void openCallBack(int code) {
|
|
|
if (code == 1) {
|
|
|
- Log.i(TAG, "findSpecificSeries2: " + "尝试打开连接" + seriesName + "成功...");
|
|
|
+ Log.i(TAG, "findAllSpecificSeries: " + "尝试打开连接" + seriesName + "成功...");
|
|
|
availableSeries.add(seriesName);
|
|
|
} else {
|
|
|
- Log.i(TAG, "findSpecificSeries2: " + "尝试打开连接" + seriesName + "失败...");
|
|
|
+ Log.i(TAG, "findAllSpecificSeries: " + "尝试打开连接" + seriesName + "失败...");
|
|
|
Toast.makeText(MainActivity.this, "串口未打开", Toast.LENGTH_SHORT).show();
|
|
|
}
|
|
|
}
|
|
@@ -751,7 +722,57 @@ public class MainActivity extends BaseActivity {
|
|
|
|
|
|
|
|
|
}
|
|
|
- // ------------------------获取usb口状态结束----------------------
|
|
|
+ // -------------------------------------获取usb口状态结束---------------------------------
|
|
|
+
|
|
|
+ // -------------------------------------拍照相关方法结束----------------------------------
|
|
|
+ private void toCloseCamera() {
|
|
|
+ // 如果相机预览还开着, 则关闭
|
|
|
+ cameraIsOpening = false;
|
|
|
+ if(previewViewLayout.getVisibility() == View.VISIBLE) {
|
|
|
+ previewViewLayout.setVisibility(View.GONE);
|
|
|
+ }
|
|
|
+ // 关闭的时候摄像头还在录像
|
|
|
+ if(recording!=null) {
|
|
|
+ openAndCloseVideo();
|
|
|
+ }
|
|
|
+ if (cameraProvider!=null){
|
|
|
+ cameraProvider.unbindAll();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void toOpenCamera(boolean isShowPreview) {
|
|
|
+ cameraIsOpening = true;
|
|
|
+ // 请求 CameraProvider
|
|
|
+ cameraProviderFuture = ProcessCameraProvider.getInstance(this);
|
|
|
+ //检查 CameraProvider 可用性,验证它能否在视图创建后成功初始化
|
|
|
+ cameraProviderFuture.addListener(() -> {
|
|
|
+ try {
|
|
|
+ ProcessCameraProvider cameraProvider = cameraProviderFuture.get();
|
|
|
+ bindPreview(cameraProvider, isShowPreview, 1);
|
|
|
+ } catch (Exception e) {
|
|
|
+ // No errors need to be handled for this Future.
|
|
|
+ // This should never be reached.
|
|
|
+ Log.i(TAG, "toOpenCamera: exception: " + e.getMessage());
|
|
|
+ }
|
|
|
+ }, ContextCompat.getMainExecutor(this));
|
|
|
+ }
|
|
|
+
|
|
|
+ private void toOpenRecorder(boolean isShowPreview) {
|
|
|
+ cameraIsOpening = true;
|
|
|
+ // 请求 CameraProvider
|
|
|
+ cameraProviderFuture = ProcessCameraProvider.getInstance(this);
|
|
|
+ //检查 CameraProvider 可用性,验证它能否在视图创建后成功初始化
|
|
|
+ cameraProviderFuture.addListener(() -> {
|
|
|
+ try {
|
|
|
+ ProcessCameraProvider cameraProvider = cameraProviderFuture.get();
|
|
|
+ bindPreview(cameraProvider, isShowPreview, 2);
|
|
|
+ } catch (Exception e) {
|
|
|
+ // No errors need to be handled for this Future.
|
|
|
+ // This should never be reached.
|
|
|
+ Log.i(TAG, "toOpenRecorder: exception: " + e.getMessage());
|
|
|
+ }
|
|
|
+ }, ContextCompat.getMainExecutor(this));
|
|
|
+ }
|
|
|
|
|
|
private void toTakePhoto(String path, String name) {
|
|
|
Log.e("-------->","------>toTakePhoto");
|
|
@@ -841,6 +862,48 @@ public class MainActivity extends BaseActivity {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // 选择相机并绑定生命周期和用例
|
|
|
+ // bindType: 1-绑定照相机, 2-绑定录像机
|
|
|
+ private void bindPreview(@NonNull ProcessCameraProvider cp, boolean isShowPreview, int bindType) {
|
|
|
+ this.cameraProvider=cp;
|
|
|
+ Preview preview = new Preview.Builder()
|
|
|
+ .build();
|
|
|
+
|
|
|
+ @SuppressLint("UnsafeOptInUsageError")
|
|
|
+ CameraSelector cameraSelector = new CameraSelector.Builder()
|
|
|
+ .requireLensFacing(CameraSelector.LENS_FACING_BACK)//CameraSelector.LENS_FACING_EXTERNAL
|
|
|
+ .build();
|
|
|
+ // 打开摄像头的同时是否显示预览界面
|
|
|
+ if(isShowPreview) {
|
|
|
+ preview.setSurfaceProvider(previewView.getSurfaceProvider());
|
|
|
+ previewViewLayout.setVisibility(View.VISIBLE);
|
|
|
+ }
|
|
|
+ cameraProvider.unbindAll();//解绑组件
|
|
|
+ if(bindType == 1) {
|
|
|
+ // 创建一个 ImageCapture 对象,用于拍摄照片。
|
|
|
+ // 设置拍照模式为最小化延迟模式,这意味着拍照时将尽可能快地捕获图像。
|
|
|
+ videoCapture = null;
|
|
|
+ imageCapture = new ImageCapture.Builder()
|
|
|
+ .setCaptureMode(ImageCapture.CAPTURE_MODE_MINIMIZE_LATENCY)
|
|
|
+ // 设置JPEG的质量为85%
|
|
|
+ .setJpegQuality(85)
|
|
|
+ .build();
|
|
|
+ cameraProvider.bindToLifecycle((LifecycleOwner) this, cameraSelector, preview, imageCapture);
|
|
|
+ }else if(bindType == 2) {
|
|
|
+ // 创建一个 videoCapture 对象,用于录像
|
|
|
+ // 打开后自动录像
|
|
|
+ boolean isAutoTake = true;
|
|
|
+ imageCapture = null;
|
|
|
+ Recorder recorder = new Recorder.Builder().build();
|
|
|
+ videoCapture = VideoCapture.withOutput(recorder);
|
|
|
+ cameraProvider.bindToLifecycle((LifecycleOwner) this, cameraSelector, preview, videoCapture);
|
|
|
+ if(isAutoTake) {
|
|
|
+ openAndCloseVideo();
|
|
|
+ }
|
|
|
+ }
|
|
|
+// preview.setSurfaceProvider(previewView.getSurfaceProvider());
|
|
|
+ }
|
|
|
+
|
|
|
boolean isStart = false;
|
|
|
ExecutorService fixedThreadPool;
|
|
|
private void savePicture(File file, String path, String name) {
|
|
@@ -863,31 +926,14 @@ public class MainActivity extends BaseActivity {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void checkNet() {
|
|
|
- if (!MyTools.isNetworkAvailable(getApplicationContext())) {
|
|
|
- ll_nonet.setVisibility(View.VISIBLE);
|
|
|
- ll_web.setVisibility(View.GONE);
|
|
|
- } else {
|
|
|
- ll_nonet.setVisibility(View.GONE);
|
|
|
- ll_web.setVisibility(View.VISIBLE);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- String mUrl = "http://192.168.1.115:8080/index.html#/";
|
|
|
- private void getUrl() {
|
|
|
- mWebView.loadUrl(mUrl);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public boolean onKeyDown(int keyCode, KeyEvent event) {
|
|
|
- if (keyCode == KeyEvent.KEYCODE_BACK && mWebView.canGoBack()) {
|
|
|
- mWebView.goBack();
|
|
|
- return true;
|
|
|
- }
|
|
|
- return super.onKeyDown(keyCode, event);
|
|
|
+ public static String getImagePath(String imageName) {
|
|
|
+ File picturesDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
|
|
|
+ File imageFile = new File(picturesDir, imageName);
|
|
|
+ return imageFile.exists() ? imageFile.getAbsolutePath() :"";
|
|
|
}
|
|
|
+ // -------------------------------------拍照相关方法结束---------------------------------
|
|
|
|
|
|
-
|
|
|
+ // -------------------------------------打印相关方法开始---------------------------------
|
|
|
static int mPot = 8;//mm转像素8倍
|
|
|
static int mWFont = 24;//字体宽度
|
|
|
static int mHFont = 24;//字体高度
|
|
@@ -1034,48 +1080,6 @@ public class MainActivity extends BaseActivity {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 选择相机并绑定生命周期和用例
|
|
|
- // bindType: 1-绑定照相机, 2-绑定录像机
|
|
|
- private void bindPreview(@NonNull ProcessCameraProvider cp, boolean isShowPreview, int bindType) {
|
|
|
- this.cameraProvider=cp;
|
|
|
- Preview preview = new Preview.Builder()
|
|
|
- .build();
|
|
|
-
|
|
|
- @SuppressLint("UnsafeOptInUsageError")
|
|
|
- CameraSelector cameraSelector = new CameraSelector.Builder()
|
|
|
- .requireLensFacing(CameraSelector.LENS_FACING_BACK)//CameraSelector.LENS_FACING_EXTERNAL
|
|
|
- .build();
|
|
|
- // 打开摄像头的同时是否显示预览界面
|
|
|
- if(isShowPreview) {
|
|
|
- preview.setSurfaceProvider(previewView.getSurfaceProvider());
|
|
|
- previewViewLayout.setVisibility(View.VISIBLE);
|
|
|
- }
|
|
|
- cameraProvider.unbindAll();//解绑组件
|
|
|
- if(bindType == 1) {
|
|
|
- // 创建一个 ImageCapture 对象,用于拍摄照片。
|
|
|
- // 设置拍照模式为最小化延迟模式,这意味着拍照时将尽可能快地捕获图像。
|
|
|
- videoCapture = null;
|
|
|
- imageCapture = new ImageCapture.Builder()
|
|
|
- .setCaptureMode(ImageCapture.CAPTURE_MODE_MINIMIZE_LATENCY)
|
|
|
- // 设置JPEG的质量为85%
|
|
|
- .setJpegQuality(85)
|
|
|
- .build();
|
|
|
- cameraProvider.bindToLifecycle((LifecycleOwner) this, cameraSelector, preview, imageCapture);
|
|
|
- }else if(bindType == 2) {
|
|
|
- // 创建一个 videoCapture 对象,用于录像
|
|
|
- // 打开后自动录像
|
|
|
- boolean isAutoTake = true;
|
|
|
- imageCapture = null;
|
|
|
- Recorder recorder = new Recorder.Builder().build();
|
|
|
- videoCapture = VideoCapture.withOutput(recorder);
|
|
|
- cameraProvider.bindToLifecycle((LifecycleOwner) this, cameraSelector, preview, videoCapture);
|
|
|
- if(isAutoTake) {
|
|
|
- openAndCloseVideo();
|
|
|
- }
|
|
|
- }
|
|
|
-// preview.setSurfaceProvider(previewView.getSurfaceProvider());
|
|
|
- }
|
|
|
-
|
|
|
public static int getStrLength(String xm){
|
|
|
int xmLength = 0;
|
|
|
for (int i = 0; i < xm.length(); i++) {
|
|
@@ -1165,77 +1169,9 @@ public class MainActivity extends BaseActivity {
|
|
|
}
|
|
|
return isChinese;
|
|
|
}
|
|
|
+ // -------------------------------------------------打印相关方法结束-----------------------------------
|
|
|
|
|
|
- public static String getImagePath(String imageName) {
|
|
|
- File picturesDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
|
|
|
- File imageFile = new File(picturesDir, imageName);
|
|
|
- return imageFile.exists() ? imageFile.getAbsolutePath() :"";
|
|
|
- }
|
|
|
-
|
|
|
- private static final int REQUEST_CODE_OPEN_GPS = 1;
|
|
|
- private static final int REQUEST_CODE_PERMISSION_LOCATION = 2;
|
|
|
- private void checkPermissions(String name) {
|
|
|
- bleName = name;
|
|
|
- BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
|
|
|
- if (!bluetoothAdapter.isEnabled()) {
|
|
|
- Toast.makeText(this, getString(R.string.please_open_blue), Toast.LENGTH_LONG).show();
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- String[] permissions = {Manifest.permission.ACCESS_FINE_LOCATION};
|
|
|
- List<String> permissionDeniedList = new ArrayList<>();
|
|
|
- for (String permission : permissions) {
|
|
|
- int permissionCheck = ContextCompat.checkSelfPermission(this, permission);
|
|
|
- if (permissionCheck == PackageManager.PERMISSION_GRANTED) {
|
|
|
- onPermissionGranted(permission);
|
|
|
- } else {
|
|
|
- permissionDeniedList.add(permission);
|
|
|
- }
|
|
|
- }
|
|
|
- if (!permissionDeniedList.isEmpty()) {
|
|
|
- Log.e("------->","----->checkPermissions permissionDeniedList="+permissionDeniedList);
|
|
|
- String[] deniedPermissions = permissionDeniedList.toArray(new String[permissionDeniedList.size()]);
|
|
|
- ActivityCompat.requestPermissions(this, deniedPermissions, REQUEST_CODE_PERMISSION_LOCATION);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void onPermissionGranted(String permission) {
|
|
|
- Log.e("------->","----->onPermissionGranted permission="+permission);
|
|
|
- switch (permission) {
|
|
|
- case Manifest.permission.ACCESS_FINE_LOCATION:
|
|
|
- setScanRule();
|
|
|
- startScan(bleName);
|
|
|
-// Log.e("------->","----->checkGPSIsOpen="+checkGPSIsOpen());
|
|
|
-// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !checkGPSIsOpen()) {
|
|
|
-// new AlertDialog.Builder(this)
|
|
|
-// .setTitle(R.string.notifyTitle)
|
|
|
-// .setMessage(R.string.gpsNotifyMsg)
|
|
|
-// .setNegativeButton(R.string.cancel,
|
|
|
-// new DialogInterface.OnClickListener() {
|
|
|
-// @Override
|
|
|
-// public void onClick(DialogInterface dialog, int which) {
|
|
|
-// finish();
|
|
|
-// }
|
|
|
-// })
|
|
|
-// .setPositiveButton(R.string.setting,
|
|
|
-// new DialogInterface.OnClickListener() {
|
|
|
-// @Override
|
|
|
-// public void onClick(DialogInterface dialog, int which) {
|
|
|
-// Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
|
|
|
-// startActivityForResult(intent, REQUEST_CODE_OPEN_GPS);
|
|
|
-// }
|
|
|
-// })
|
|
|
-//
|
|
|
-// .setCancelable(false)
|
|
|
-// .show();
|
|
|
-// } else {
|
|
|
-// setScanRule();
|
|
|
-// startScan(bleName);
|
|
|
-// }
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
+ // -------------------------------------------------蓝牙相关方法开始-----------------------------------
|
|
|
//关闭蓝牙扫码器
|
|
|
BleDevice mBleDevice;
|
|
|
BluetoothGattCharacteristic mCharacteristic;
|
|
@@ -1249,27 +1185,6 @@ public class MainActivity extends BaseActivity {
|
|
|
BleManager.getInstance().removeConnectGattCallback(mBleDevice);
|
|
|
}
|
|
|
}
|
|
|
- @Override
|
|
|
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
|
- super.onActivityResult(requestCode, resultCode, data);
|
|
|
- if (requestCode == REQUEST_CODE_OPEN_GPS) {
|
|
|
-// if (checkGPSIsOpen()) {
|
|
|
- setScanRule();
|
|
|
- startScan(bleName);
|
|
|
-// }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void onBackPressed() {
|
|
|
- if(cameraIsOpening) {
|
|
|
- // 当前的摄像头正在打开状态
|
|
|
- toCloseCamera();
|
|
|
- return;
|
|
|
- }
|
|
|
- super.onBackPressed();
|
|
|
- }
|
|
|
-
|
|
|
private boolean checkGPSIsOpen() {
|
|
|
// LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
|
|
|
// if (locationManager == null)
|
|
@@ -1430,7 +1345,9 @@ public class MainActivity extends BaseActivity {
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
+ // --------------------------蓝牙相关方法结束--------------------------
|
|
|
|
|
|
+ // --------------------------打印机相关方法结束--------------------------
|
|
|
public String hexStringToGbk(String hexString) {
|
|
|
byte[] bytes = new byte[hexString.length() / 2];
|
|
|
for (int i = 0; i < hexString.length(); i += 2) {
|
|
@@ -1472,7 +1389,9 @@ public class MainActivity extends BaseActivity {
|
|
|
curConnect.close();
|
|
|
}
|
|
|
}
|
|
|
+ // --------------------------打印机相关方法结束--------------------------
|
|
|
|
|
|
+ // --------------------------灯相关的方法开始----------------------------
|
|
|
private IConnectListener connectListener = new IConnectListener() {
|
|
|
@Override
|
|
|
public void onStatus(int code, String connInfo, String msg) {
|
|
@@ -1504,13 +1423,12 @@ public class MainActivity extends BaseActivity {
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
-
|
|
|
- private SerialPortManager serialPortManager;
|
|
|
+ private SerialPortManager lightPortManager;
|
|
|
|
|
|
private void toConnectLight(String name){
|
|
|
- if (serialPortManager == null){
|
|
|
- serialPortManager = new SerialPortManager();
|
|
|
- serialPortManager.init(MainActivity.this, name, UserCache.getSerialRate(), new SerialPortManager.SerialCallBack() {
|
|
|
+ if (lightPortManager == null){
|
|
|
+ lightPortManager = new SerialPortManager();
|
|
|
+ lightPortManager.init(MainActivity.this, name, UserCache.getSerialRate(), new SerialPortManager.SerialCallBack() {
|
|
|
@Override
|
|
|
public void dataCallBack(String data) {
|
|
|
Log.e("--------->","------->data="+data);
|
|
@@ -1538,10 +1456,25 @@ public class MainActivity extends BaseActivity {
|
|
|
}
|
|
|
});
|
|
|
}else {
|
|
|
- serialPortManager.open();
|
|
|
+ lightPortManager.open();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void toCloseLight() {
|
|
|
+ if (lightPortManager !=null){
|
|
|
+ lightPortManager.close();
|
|
|
+ lightPortManager = null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ private void toOpenLight(int address, int type) {
|
|
|
+ if (lightPortManager != null){
|
|
|
+ lightPortManager.turnOnLight(address, type);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // ------------------------------灯相关的方法结束--------------------------------------
|
|
|
+
|
|
|
+ // ------------------------------连接及断开除灯之外的其他串口的相关方法开始------------------
|
|
|
private List<SerialPortManager> mPortList = new ArrayList<>();
|
|
|
private void toConnectPort(String name){
|
|
|
Log.i("===","------->toConnectPort name="+name);
|
|
@@ -1617,7 +1550,24 @@ public class MainActivity extends BaseActivity {
|
|
|
}
|
|
|
Log.i("===","------->toConnectPort end="+name);
|
|
|
}
|
|
|
-
|
|
|
+ private void toDisconnectPortAll() {
|
|
|
+ Log.e(TAG, "disConnectPortAll");
|
|
|
+ if(mPortList.size()>0) {
|
|
|
+ for (SerialPortManager port:mPortList) {
|
|
|
+ port.close();
|
|
|
+ }
|
|
|
+ mPortList.clear();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ private void disconnectPortSingle(String name) {
|
|
|
+ for (SerialPortManager port:mPortList) {
|
|
|
+ if (port.serialHelper.getPort().equals(name)) {
|
|
|
+ port.close();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // ------------------------------连接及断开除灯之外的其他串口的相关方法开始------------------
|
|
|
@Override
|
|
|
protected void onDestroy() {
|
|
|
super.onDestroy();
|
|
@@ -1628,4 +1578,90 @@ public class MainActivity extends BaseActivity {
|
|
|
fixedThreadPool.shutdown();
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
|
+ super.onActivityResult(requestCode, resultCode, data);
|
|
|
+ if (requestCode == REQUEST_CODE_OPEN_GPS) {
|
|
|
+// if (checkGPSIsOpen()) {
|
|
|
+ setScanRule();
|
|
|
+ startScan(bleName);
|
|
|
+// }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onBackPressed() {
|
|
|
+ if(cameraIsOpening) {
|
|
|
+ // 当前的摄像头正在打开状态
|
|
|
+ toCloseCamera();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ super.onBackPressed();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private static final int REQUEST_CODE_OPEN_GPS = 1;
|
|
|
+ private static final int REQUEST_CODE_PERMISSION_LOCATION = 2;
|
|
|
+ private void checkPermissions(String name) {
|
|
|
+ bleName = name;
|
|
|
+ BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
|
|
|
+ if (!bluetoothAdapter.isEnabled()) {
|
|
|
+ Toast.makeText(this, getString(R.string.please_open_blue), Toast.LENGTH_LONG).show();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ String[] permissions = {Manifest.permission.ACCESS_FINE_LOCATION};
|
|
|
+ List<String> permissionDeniedList = new ArrayList<>();
|
|
|
+ for (String permission : permissions) {
|
|
|
+ int permissionCheck = ContextCompat.checkSelfPermission(this, permission);
|
|
|
+ if (permissionCheck == PackageManager.PERMISSION_GRANTED) {
|
|
|
+ onPermissionGranted(permission);
|
|
|
+ } else {
|
|
|
+ permissionDeniedList.add(permission);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!permissionDeniedList.isEmpty()) {
|
|
|
+ Log.e("------->","----->checkPermissions permissionDeniedList="+permissionDeniedList);
|
|
|
+ String[] deniedPermissions = permissionDeniedList.toArray(new String[permissionDeniedList.size()]);
|
|
|
+ ActivityCompat.requestPermissions(this, deniedPermissions, REQUEST_CODE_PERMISSION_LOCATION);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void onPermissionGranted(String permission) {
|
|
|
+ Log.e("------->","----->onPermissionGranted permission="+permission);
|
|
|
+ switch (permission) {
|
|
|
+ case Manifest.permission.ACCESS_FINE_LOCATION:
|
|
|
+ setScanRule();
|
|
|
+ startScan(bleName);
|
|
|
+// Log.e("------->","----->checkGPSIsOpen="+checkGPSIsOpen());
|
|
|
+// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !checkGPSIsOpen()) {
|
|
|
+// new AlertDialog.Builder(this)
|
|
|
+// .setTitle(R.string.notifyTitle)
|
|
|
+// .setMessage(R.string.gpsNotifyMsg)
|
|
|
+// .setNegativeButton(R.string.cancel,
|
|
|
+// new DialogInterface.OnClickListener() {
|
|
|
+// @Override
|
|
|
+// public void onClick(DialogInterface dialog, int which) {
|
|
|
+// finish();
|
|
|
+// }
|
|
|
+// })
|
|
|
+// .setPositiveButton(R.string.setting,
|
|
|
+// new DialogInterface.OnClickListener() {
|
|
|
+// @Override
|
|
|
+// public void onClick(DialogInterface dialog, int which) {
|
|
|
+// Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
|
|
|
+// startActivityForResult(intent, REQUEST_CODE_OPEN_GPS);
|
|
|
+// }
|
|
|
+// })
|
|
|
+//
|
|
|
+// .setCancelable(false)
|
|
|
+// .show();
|
|
|
+// } else {
|
|
|
+// setScanRule();
|
|
|
+// startScan(bleName);
|
|
|
+// }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|