霍尼韦尔EDA50p,在返回桌面,点击了新的扫描之后,出现再进入程序(新打开一样)无法扫描,从而导致问题,添加了一个stop2的方法,针对霍尼韦尔eda50p,不进行销毁,在真正销毁的方法关闭服务,还是存在程序返回桌面无法扫描问题,但是退出程序之后,新打开程序可以扫描

This commit is contained in:
2024-01-11 17:27:22 +08:00
parent bcfb6155d2
commit 832b0e3368
5 changed files with 46 additions and 2 deletions

View File

@ -11,7 +11,7 @@ android {
minSdk 28
targetSdk 28
versionCode 1
versionName "1.7"
versionName "1.8"
// 1.0 IDATA广播模式处理
// 1.1 霍尼韦尔的监听修改扫描网站二维码跳出程序监听失效调整、斑马PDA广播模式设置

View File

@ -13,6 +13,7 @@
<uses-permission android:name="com.symbol.emdk.permission.EMDK"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="com.honeywell.decode.permission.DECODE" />
<uses-permission android:name="android.permission.STOP_SERVICE" />
<application
android:allowBackup="true"

View File

@ -208,7 +208,7 @@ public class MainActivity extends AppCompatActivity implements ResultListener{
// voiceEngine.reload();
super.onResume();
if (adapter != null) {
adapter.stop();
adapter.stop2();
adapter.start();
}
}

View File

@ -29,4 +29,8 @@ public interface Adapter{
*/
public void stop();
public default void stop2() {
stop();
}
}

View File

@ -1,12 +1,15 @@
package chaoran.business.adapter;
import android.app.ActivityManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Build;
import java.util.List;
import chaoran.business.activity.ResultListener;
import chaoran.business.service.ScanServiceEDA50P;
import chaoran.business.service.ScanServiceZEBRA;
@ -31,10 +34,16 @@ public class HoneywellAdapter implements Adapter {
openContinueScan();
}
@Override
public void stop2() {
}
@Override
public void stop() {
new ScanServiceEDA50P().onDestroy();
strategy.exclusiveStrategy();
this.stopContinueScan();
}
public class Receiver extends BroadcastReceiver implements Strategy {
@ -57,6 +66,36 @@ public class HoneywellAdapter implements Adapter {
}
}
public void stopContinueScan() {
Class clazz = null;
if("eda50p".equals(Build.MODEL.toLowerCase())){ // 扫描正常
intent = new Intent(context, ScanServiceEDA50P.class);
clazz = ScanServiceEDA50P.class;
}else if("eda51".equals(Build.MODEL.toLowerCase())){ // 扫描正常
intent = new Intent(context, ScanServiceEDA50P.class);
clazz = ScanServiceEDA50P.class;
}
else if("tc26".equals(Build.MODEL.toLowerCase())){
intent = new Intent(context, ScanServiceZEBRA.class);
clazz = ScanServiceZEBRA.class;
}
if (clazz != null && isServiceRunning(clazz)) {
context.stopService(intent);
}
}
private boolean isServiceRunning(Class<?> serviceClass) {
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningServiceInfo> runningServices = manager.getRunningServices(Integer.MAX_VALUE);
for (ActivityManager.RunningServiceInfo service : runningServices) {
if (serviceClass.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
public void openContinueScan(){
if("eda50p".equals(Build.MODEL.toLowerCase())){ // 扫描正常