Commit 836c8cc5 authored by dizi's avatar dizi

补充提交

parent 241f791d
...@@ -55,7 +55,7 @@ dependencies { ...@@ -55,7 +55,7 @@ dependencies {
implementation 'androidx.constraintlayout:constraintlayout:2.0.4' implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation 'net.sourceforge.jexcelapi:jxl:2.6.12' implementation 'net.sourceforge.jexcelapi:jxl:2.6.12'
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.4' implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.4'
implementation files('libs/WmAceKG_v1.0.59_sdk.aar') implementation files('libs/WmAceKG_v1.0.59.2_sdk.aar')
testImplementation 'junit:junit:4.+' testImplementation 'junit:junit:4.+'
def room_version = '2.3.0' def room_version = '2.3.0'
implementation "androidx.room:room-runtime:$room_version" implementation "androidx.room:room-runtime:$room_version"
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
</activity> </activity>
<activity android:name=".ui.CropPicActivity" /> <!-- 适配 Android 7.0 文件意图 --> <!-- 适配 Android 7.0 文件意图 -->
<provider <provider
android:name="androidx.core.content.FileProvider" android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.provider" android:authorities="${applicationId}.provider"
......
...@@ -1997,4 +1997,10 @@ ...@@ -1997,4 +1997,10 @@
2237436 JP散装草头 2237436 JP散装草头
2261035 JP迷你胡萝卜 2261035 JP迷你胡萝卜
2236280 JP精品芦蒿 2236280 JP精品芦蒿
2236523 JP散装薄荷叶 2236523 JP散装薄荷叶
\ No newline at end of file 2000001 红苹果
2000002 长茄子
2000003 迷你胡萝卜
2000004 黄瓜
2000005 水晶梨
2000006 山东红富士
\ No newline at end of file
...@@ -21,7 +21,7 @@ public class WmPosDemoApp extends MultiDexApplication { ...@@ -21,7 +21,7 @@ public class WmPosDemoApp extends MultiDexApplication {
* 在manifest添加android:largeHeap="true" * 在manifest添加android:largeHeap="true"
* 注意第二个参数要传false * 注意第二个参数要传false
*/ */
int code = WmAceKG.init(this,false,0,0.85f); int code = WmAceKG.init(this,false,0,0.80f);
} }
@Override @Override
......
package com.wmdigit.wmposdemo.adapter; package com.wmdigit.wmposdemo.adapter;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.View;
import android.widget.EditText;
import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.viewholder.BaseViewHolder; import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.wmdigit.wmposdemo.R; import com.wmdigit.wmposdemo.R;
...@@ -35,5 +41,42 @@ public class ButtonAdapter extends BaseQuickAdapter<ApiButton, BaseViewHolder> { ...@@ -35,5 +41,42 @@ public class ButtonAdapter extends BaseQuickAdapter<ApiButton, BaseViewHolder> {
baseViewHolder.setTextColorRes(R.id.tv_level, R.color.gray); baseViewHolder.setTextColorRes(R.id.tv_level, R.color.gray);
break; break;
} }
// 参数输入框
if (apiButton.isEditTextEnable()){
baseViewHolder.setVisible(R.id.edt_params, true);
baseViewHolder.setVisible(R.id.tv_interface_title_3, true);
baseViewHolder.setText(R.id.edt_params, apiButton.getDefaultParams());
}
else{
baseViewHolder.setGone(R.id.edt_params, true);
baseViewHolder.setGone(R.id.tv_interface_title_3, true);
baseViewHolder.setText(R.id.edt_params, "");
}
TextWatcher watcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (TextUtils.isEmpty(s.toString())) {
apiButton.setDefaultParams("");
} else {
apiButton.setDefaultParams(s.toString().trim());
}
}
};
EditText edtParams = baseViewHolder.getView(R.id.edt_params);
if (edtParams.getTag() instanceof TextWatcher){
edtParams.removeTextChangedListener((TextWatcher) edtParams.getTag());
}
edtParams.addTextChangedListener(watcher);
edtParams.setTag(watcher);
} }
} }
package com.wmdigit.wmposdemo.model; package com.wmdigit.wmposdemo.model;
import android.view.View;
public interface AiSupport { public interface AiSupport {
void initPosPage(); void initPosPage();
void setCameraId(); void setCameraId();
...@@ -25,6 +27,6 @@ public interface AiSupport { ...@@ -25,6 +27,6 @@ public interface AiSupport {
void learnLocalVectorDataI(); void learnLocalVectorDataI();
void correctI(); void correctI();
void autoMatchProduct(); void autoMatchProduct();
void checkSnCodeVerification(); void checkSnCodeVerification(View v);
void preLearningData(); void preLearningData();
} }
...@@ -5,12 +5,15 @@ public class ApiButton { ...@@ -5,12 +5,15 @@ public class ApiButton {
private String methodName; private String methodName;
private String methodDesc; private String methodDesc;
private ApiLevel level; private ApiLevel level;
private boolean editTextEnable;
private String defaultParams = "";
public ApiButton(String methodNo, String methodName, String methodDesc) { public ApiButton(String methodNo, String methodName, String methodDesc) {
this.methodNo = methodNo; this.methodNo = methodNo;
this.methodName = methodName; this.methodName = methodName;
this.methodDesc = methodDesc; this.methodDesc = methodDesc;
this.level = ApiLevel.LEVEL_NORMAL; this.level = ApiLevel.LEVEL_NORMAL;
this.editTextEnable = false;
} }
public ApiButton(String methodNo, String methodName,String methodDesc, ApiLevel level) { public ApiButton(String methodNo, String methodName,String methodDesc, ApiLevel level) {
...@@ -18,6 +21,31 @@ public class ApiButton { ...@@ -18,6 +21,31 @@ public class ApiButton {
this.methodName = methodName; this.methodName = methodName;
this.methodDesc = methodDesc; this.methodDesc = methodDesc;
this.level = level; this.level = level;
this.editTextEnable = false;
}
public ApiButton(String methodNo, String methodName,String methodDesc, ApiLevel level, boolean editTextEnable) {
this.methodNo = methodNo;
this.methodName = methodName;
this.methodDesc = methodDesc;
this.level = level;
this.editTextEnable = editTextEnable;
}
public String getDefaultParams() {
return defaultParams;
}
public void setDefaultParams(String defaultParams) {
this.defaultParams = defaultParams;
}
public boolean isEditTextEnable() {
return editTextEnable;
}
public void setEditTextEnable(boolean editTextEnable) {
this.editTextEnable = editTextEnable;
} }
public String getMethodName() { public String getMethodName() {
......
...@@ -10,7 +10,7 @@ public class Constant { ...@@ -10,7 +10,7 @@ public class Constant {
// false-正式环境;true-测试环境 通常情况下,请用正式环境false // false-正式环境;true-测试环境 通常情况下,请用正式环境false
public static final boolean isDebug = false; public static final boolean isDebug = false;
// 这三条为注册信息,调试时请更换为我们通过邮件发给你的信息,其中POS_CODE可自定义,但不要重复 // 这三条为注册信息,调试时请更换为我们通过邮件发给你的信息,其中POS_CODE可自定义,但不要重复
public static final String SN_CODE = "C15936F9-ECBD-4DBD-8EED-FD0A83D6042A"; // public static final String SN_CODE = "C15936F9-ECBD-4DBD-8EED-FD0A83D6042A";
public static final String POS_CODE = "0022_0095"; public static final String POS_CODE = "0022_0095";
public static final String TENANT = "demo"; public static final String TENANT = "demo";
// 压力测试用,PLU随机范围 // 压力测试用,PLU随机范围
...@@ -46,7 +46,7 @@ public class Constant { ...@@ -46,7 +46,7 @@ public class Constant {
add(new ApiButton("3.27","learnLocalVectorData", "学习本地特征数据")); add(new ApiButton("3.27","learnLocalVectorData", "学习本地特征数据"));
add(new ApiButton("3.28","correct", "纠错")); add(new ApiButton("3.28","correct", "纠错"));
add(new ApiButton("3.29","thumbnailsAutoMatch","商品自动配图")); add(new ApiButton("3.29","thumbnailsAutoMatch","商品自动配图"));
add(new ApiButton("3.30","checkSnCodeVerification","校验SN码合法性")); add(new ApiButton("3.30","checkSnCodeVerification","校验SN码合法性", ApiLevel.LEVEL_NORMAL, true));
add(new ApiButton("3.31","preLearning","预学习商品数据")); add(new ApiButton("3.31","preLearning","预学习商品数据"));
} }
}; };
......
package com.wmdigit.wmposdemo.ui;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.TextureView;
import android.view.View;
import android.widget.Toast;
import androidx.databinding.DataBindingUtil;
import com.wmdigit.wmpos.WmAceKG;
import com.wmdigit.wmpos.ai.support.AiSupportActivity;
import com.wmdigit.wmpos.bean.ScaleBitmap;
import com.wmdigit.wmpos.bean.ScaleSetting;
import com.wmdigit.wmpos.cam.support.CamSupportActivity;
import com.wmdigit.wmposdemo.R;
import com.wmdigit.wmposdemo.databinding.ActivityCropPicBinding;
import com.wmdigit.wmposdemo.view.CropView;
public class CropPicActivity extends AiSupportActivity implements View.OnClickListener {
private ActivityCropPicBinding dataBinding;
TextureView textCameraView;
@Override
public void onCreate(Bundle savedInstanceState) {
dataBinding = DataBindingUtil.setContentView(this, R.layout.activity_crop_pic);
// setContentView(R.layout.activity_crop_pic);
textCameraView = findViewById(R.id.text_camera_view);
super.onCreate(savedInstanceState);
dataBinding.tvSure.setOnClickListener(this);
dataBinding.tvCancel.setOnClickListener(this);
dataBinding.tvCrop.setOnClickListener(this);
}
@Override
public TextureView getTextureView() {
return textCameraView;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.tv_crop:
dataBinding.rlPreview.setVisibility(View.GONE);
dataBinding.rlCrop.setVisibility(View.VISIBLE);
final ScaleBitmap clearestScaleBitmap = getScaleBitmap(false);
Bitmap raw = clearestScaleBitmap.getRaw();
dataBinding.cropImg.setImageBitmap(raw);
break;
case R.id.tv_sure:
dataBinding.cropImg.cropImage(new CropView.OnCropListener() {
@Override
public void onCropFinished(final Bitmap bitmap, final int left, final int top, final int width, final int height) {
runOnUiThread(new Runnable() {
@Override
public void run() {
ScaleSetting scaleSetting = new ScaleSetting(left, top, width, height);
int code = WmAceKG.saveScaleSetting(scaleSetting);
if (code == 0) {
Toast.makeText(CropPicActivity.this, "设置成功", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(CropPicActivity.this, WeighingActivity.class);
startActivity(intent);
finish();
} else {
Toast.makeText(CropPicActivity.this, "设置失敗,错误码:" + code, Toast.LENGTH_SHORT).show();
}
}
});
}
});
break;
case R.id.tv_cancel:
finish();
break;
}
}
}
...@@ -37,22 +37,13 @@ public class MainActivity extends AppCompatActivity { ...@@ -37,22 +37,13 @@ public class MainActivity extends AppCompatActivity {
binding.tvRecognition.setOnClickListener(v -> { binding.tvRecognition.setOnClickListener(v -> {
boolean isBind = SPStaticUtils.getBoolean(Constant.BIND, false); boolean isBind = SPStaticUtils.getBoolean(Constant.BIND, false);
if (isBind) { if (isBind) {
boolean isScale = WmAceKG.getScaleSetting(); Intent intent1 = new Intent(MainActivity.this, WeighingActivity.class);
if (!isScale) { startActivity(intent1);
toast("您还未裁剪秤盘,为您跳转至裁剪页");
Intent intent = new Intent(MainActivity.this, CropPicActivity.class);
startActivity(intent);
finish();
} else {
toast("获取秤盘信息成功,为您跳转至识别功能页");
Intent intent1 = new Intent(MainActivity.this, WeighingActivity.class);
startActivity(intent1);
}
} else { } else {
toast("您还未给pos机绑定SN号,为您跳转至注册页");
Intent intent = new Intent(this, RegisterActivity.class); Intent intent = new Intent(this, RegisterActivity.class);
startActivity(intent); startActivity(intent);
} }
finish();
}); });
binding.tvRegister.setOnClickListener(new View.OnClickListener() { binding.tvRegister.setOnClickListener(new View.OnClickListener() {
......
...@@ -34,7 +34,7 @@ public class RegisterActivity extends AppCompatActivity { ...@@ -34,7 +34,7 @@ public class RegisterActivity extends AppCompatActivity {
WmAceKG.queryPosByMac(new OnQueryPosRegisterInfoListener() { WmAceKG.queryPosByMac(new OnQueryPosRegisterInfoListener() {
@Override @Override
public void onSuccess(String posId, String snCode, String tenant) { public void onSuccess(String posId, String snCode, String tenant) {
Toast.makeText(RegisterActivity.this, "获取注册信息成功,已为您自动填写", Toast.LENGTH_SHORT).show(); Toast.makeText(RegisterActivity.this, "获取注册信息成功", Toast.LENGTH_SHORT).show();
binding.posEdit.setText(posId); binding.posEdit.setText(posId);
binding.posSnCode.setText(snCode); binding.posSnCode.setText(snCode);
binding.accountCompany.setText(tenant); binding.accountCompany.setText(tenant);
...@@ -79,16 +79,10 @@ public class RegisterActivity extends AppCompatActivity { ...@@ -79,16 +79,10 @@ public class RegisterActivity extends AppCompatActivity {
SPStaticUtils.put(Constant.POS_CODE, pos); SPStaticUtils.put(Constant.POS_CODE, pos);
SPStaticUtils.put(Constant.SN_CODE, snCode); SPStaticUtils.put(Constant.SN_CODE, snCode);
SPStaticUtils.put(Constant.BIND, true); SPStaticUtils.put(Constant.BIND, true);
boolean isScale = WmAceKG.getScaleSetting();
if (!isScale) { Intent intent1 = new Intent(RegisterActivity.this, WeighingActivity.class);
Toast.makeText(RegisterActivity.this, "您未裁剪秤盘,为您跳转至裁剪页", Toast.LENGTH_SHORT).show(); startActivity(intent1);
Intent intent = new Intent(RegisterActivity.this, CropPicActivity.class); finish();
startActivity(intent);
finish();
} else {
Intent intent1 = new Intent(RegisterActivity.this, WeighingActivity.class);
startActivity(intent1);
}
} }
}); });
}); });
......
package com.wmdigit.wmposdemo.ui; package com.wmdigit.wmposdemo.ui;
import static com.wmdigit.wmposdemo.utils.Constant.SN_CODE;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.res.AssetManager; import android.content.res.AssetManager;
...@@ -12,6 +14,7 @@ import android.text.method.ScrollingMovementMethod; ...@@ -12,6 +14,7 @@ import android.text.method.ScrollingMovementMethod;
import android.util.Log; import android.util.Log;
import android.view.TextureView; import android.view.TextureView;
import android.view.View; import android.view.View;
import android.widget.EditText;
import android.widget.Toast; import android.widget.Toast;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
...@@ -29,6 +32,7 @@ import com.wmdigit.wmpos.bean.ImageProductBean; ...@@ -29,6 +32,7 @@ import com.wmdigit.wmpos.bean.ImageProductBean;
import com.wmdigit.wmpos.bean.ProductMatch; import com.wmdigit.wmpos.bean.ProductMatch;
import com.wmdigit.wmpos.bean.ScaleBitmap; import com.wmdigit.wmpos.bean.ScaleBitmap;
import com.wmdigit.wmpos.bean.ScaleSetting; import com.wmdigit.wmpos.bean.ScaleSetting;
import com.wmdigit.wmpos.dao.repository.impl.ProductSelfLearnRepository;
import com.wmdigit.wmpos.http.OnCheckSnCodeVerificationListener; import com.wmdigit.wmpos.http.OnCheckSnCodeVerificationListener;
import com.wmdigit.wmpos.http.OnProductMatchListener; import com.wmdigit.wmpos.http.OnProductMatchListener;
import com.wmdigit.wmpos.http.OnQueryPosRegisterInfoListener; import com.wmdigit.wmpos.http.OnQueryPosRegisterInfoListener;
...@@ -36,6 +40,7 @@ import com.wmdigit.wmpos.http.OnUnBindPosListener; ...@@ -36,6 +40,7 @@ import com.wmdigit.wmpos.http.OnUnBindPosListener;
import com.wmdigit.wmpos.listener.OnBitmapSaveListener; import com.wmdigit.wmpos.listener.OnBitmapSaveListener;
import com.wmdigit.wmpos.listener.OnDataExportListener; import com.wmdigit.wmpos.listener.OnDataExportListener;
import com.wmdigit.wmpos.listener.OnPreLearningListener; import com.wmdigit.wmpos.listener.OnPreLearningListener;
import com.wmdigit.wmpos.utils.SPStaticUtils;
import com.wmdigit.wmpos.utils.StopWatch; import com.wmdigit.wmpos.utils.StopWatch;
import com.wmdigit.wmposdemo.R; import com.wmdigit.wmposdemo.R;
import com.wmdigit.wmposdemo.adapter.ButtonAdapter; import com.wmdigit.wmposdemo.adapter.ButtonAdapter;
...@@ -154,7 +159,10 @@ public class WeighingActivity extends AiSupportActivity implements OnItemClickLi ...@@ -154,7 +159,10 @@ public class WeighingActivity extends AiSupportActivity implements OnItemClickLi
public void initData() { public void initData() {
context = this; context = this;
random = new Random(1); random = new Random(1);
// 初始化data
buttonList = Constant.API_BUTTONS; buttonList = Constant.API_BUTTONS;
buttonList.get(28).setDefaultParams(SPStaticUtils.getString(SN_CODE, ""));
adapter = new ButtonAdapter(R.layout.item_button, Constant.API_BUTTONS); adapter = new ButtonAdapter(R.layout.item_button, Constant.API_BUTTONS);
weighingBinding.rvButtons.setAdapter(adapter); weighingBinding.rvButtons.setAdapter(adapter);
GridLayoutManager gridLayoutManager = new GridLayoutManager(this, ScreenUtils.isScreenLandscape(this) ? 5 : 3); GridLayoutManager gridLayoutManager = new GridLayoutManager(this, ScreenUtils.isScreenLandscape(this) ? 5 : 3);
...@@ -268,7 +276,7 @@ public class WeighingActivity extends AiSupportActivity implements OnItemClickLi ...@@ -268,7 +276,7 @@ public class WeighingActivity extends AiSupportActivity implements OnItemClickLi
case "3.30": case "3.30":
// 校验SN合法性 // 校验SN合法性
checkSnCodeVerification(); checkSnCodeVerification(view);
break; break;
case "3.31": case "3.31":
...@@ -338,7 +346,7 @@ public class WeighingActivity extends AiSupportActivity implements OnItemClickLi ...@@ -338,7 +346,7 @@ public class WeighingActivity extends AiSupportActivity implements OnItemClickLi
@Override @Override
public void unBindPos() { public void unBindPos() {
WmAceKG.unBindPos(Constant.TENANT, Constant.SN_CODE, new OnUnBindPosListener() { WmAceKG.unBindPos(Constant.TENANT, SN_CODE, new OnUnBindPosListener() {
@Override @Override
public void unBindFail(int code, String message) { public void unBindFail(int code, String message) {
weighingBinding.tvInfo.setText("解绑失败:" + code + "," + message); weighingBinding.tvInfo.setText("解绑失败:" + code + "," + message);
...@@ -645,10 +653,9 @@ public class WeighingActivity extends AiSupportActivity implements OnItemClickLi ...@@ -645,10 +653,9 @@ public class WeighingActivity extends AiSupportActivity implements OnItemClickLi
} }
@Override @Override
public void checkSnCodeVerification() { public void checkSnCodeVerification(View view) {
// 检验SN合法性 // 检验SN合法性
// todo snCode请替换成设备真实SN String snCode = ((EditText)view.findViewById(R.id.edt_params)).getText().toString();
String snCode = "77C4AD47-04B3-47B7-B9DF-A55D91F9E0BA";
weighingBinding.tvInfo.setText("正在校验SN合法性:" + snCode + "\n"); weighingBinding.tvInfo.setText("正在校验SN合法性:" + snCode + "\n");
// 第二个参数为接口网络请求的超时时间 // 第二个参数为接口网络请求的超时时间
WmAceKG.checkSnCodeVerification(snCode, 1L, new OnCheckSnCodeVerificationListener() { WmAceKG.checkSnCodeVerification(snCode, 1L, new OnCheckSnCodeVerificationListener() {
......
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="5dp"/>
<solid android:color="@color/white"/>
<stroke android:width="1dp"
android:color="@color/gray"/>
</shape>
\ No newline at end of file
...@@ -156,6 +156,7 @@ ...@@ -156,6 +156,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:padding="10dp"
android:text="3.26 查询POS注册信息" android:text="3.26 查询POS注册信息"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:textSize="20sp" android:textSize="20sp"
......
...@@ -101,6 +101,32 @@ ...@@ -101,6 +101,32 @@
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
/> />
<TextView
android:id="@+id/tv_interface_title_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="参数:"
android:textSize="18sp"
android:textColor="#787878"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/edt_params"
app:layout_constraintBottom_toBottomOf="@+id/edt_params"
/>
<EditText
android:id="@+id/edt_params"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="18sp"
android:textColor="@color/black"
android:background="@drawable/rect_5_white_gray"
android:padding="8dp"
android:layout_marginTop="5dp"
android:singleLine="true"
app:layout_constraintStart_toStartOf="@+id/tv_interface_desc"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_interface_desc"/>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView> </androidx.cardview.widget.CardView>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment