Commit 836c8cc5 authored by dizi's avatar dizi

补充提交

parent 241f791d
......@@ -55,7 +55,7 @@ dependencies {
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation 'net.sourceforge.jexcelapi:jxl:2.6.12'
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.+'
def room_version = '2.3.0'
implementation "androidx.room:room-runtime:$room_version"
......
......@@ -34,7 +34,7 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ui.CropPicActivity" /> <!-- 适配 Android 7.0 文件意图 -->
<!-- 适配 Android 7.0 文件意图 -->
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.provider"
......
......@@ -1997,4 +1997,10 @@
2237436 JP散装草头
2261035 JP迷你胡萝卜
2236280 JP精品芦蒿
2236523 JP散装薄荷叶
\ No newline at end of file
2236523 JP散装薄荷叶
2000001 红苹果
2000002 长茄子
2000003 迷你胡萝卜
2000004 黄瓜
2000005 水晶梨
2000006 山东红富士
\ No newline at end of file
......@@ -21,7 +21,7 @@ public class WmPosDemoApp extends MultiDexApplication {
* 在manifest添加android:largeHeap="true"
* 注意第二个参数要传false
*/
int code = WmAceKG.init(this,false,0,0.85f);
int code = WmAceKG.init(this,false,0,0.80f);
}
@Override
......
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.viewholder.BaseViewHolder;
import com.wmdigit.wmposdemo.R;
......@@ -35,5 +41,42 @@ public class ButtonAdapter extends BaseQuickAdapter<ApiButton, BaseViewHolder> {
baseViewHolder.setTextColorRes(R.id.tv_level, R.color.gray);
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;
import android.view.View;
public interface AiSupport {
void initPosPage();
void setCameraId();
......@@ -25,6 +27,6 @@ public interface AiSupport {
void learnLocalVectorDataI();
void correctI();
void autoMatchProduct();
void checkSnCodeVerification();
void checkSnCodeVerification(View v);
void preLearningData();
}
......@@ -5,12 +5,15 @@ public class ApiButton {
private String methodName;
private String methodDesc;
private ApiLevel level;
private boolean editTextEnable;
private String defaultParams = "";
public ApiButton(String methodNo, String methodName, String methodDesc) {
this.methodNo = methodNo;
this.methodName = methodName;
this.methodDesc = methodDesc;
this.level = ApiLevel.LEVEL_NORMAL;
this.editTextEnable = false;
}
public ApiButton(String methodNo, String methodName,String methodDesc, ApiLevel level) {
......@@ -18,6 +21,31 @@ public class ApiButton {
this.methodName = methodName;
this.methodDesc = methodDesc;
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() {
......
......@@ -10,7 +10,7 @@ public class Constant {
// false-正式环境;true-测试环境 通常情况下,请用正式环境false
public static final boolean isDebug = false;
// 这三条为注册信息,调试时请更换为我们通过邮件发给你的信息,其中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 TENANT = "demo";
// 压力测试用,PLU随机范围
......@@ -46,7 +46,7 @@ public class Constant {
add(new ApiButton("3.27","learnLocalVectorData", "学习本地特征数据"));
add(new ApiButton("3.28","correct", "纠错"));
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","预学习商品数据"));
}
};
......
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 {
binding.tvRecognition.setOnClickListener(v -> {
boolean isBind = SPStaticUtils.getBoolean(Constant.BIND, false);
if (isBind) {
boolean isScale = WmAceKG.getScaleSetting();
if (!isScale) {
toast("您还未裁剪秤盘,为您跳转至裁剪页");
Intent intent = new Intent(MainActivity.this, CropPicActivity.class);
startActivity(intent);
finish();
} else {
toast("获取秤盘信息成功,为您跳转至识别功能页");
Intent intent1 = new Intent(MainActivity.this, WeighingActivity.class);
startActivity(intent1);
}
Intent intent1 = new Intent(MainActivity.this, WeighingActivity.class);
startActivity(intent1);
} else {
toast("您还未给pos机绑定SN号,为您跳转至注册页");
Intent intent = new Intent(this, RegisterActivity.class);
startActivity(intent);
}
finish();
});
binding.tvRegister.setOnClickListener(new View.OnClickListener() {
......
......@@ -34,7 +34,7 @@ public class RegisterActivity extends AppCompatActivity {
WmAceKG.queryPosByMac(new OnQueryPosRegisterInfoListener() {
@Override
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.posSnCode.setText(snCode);
binding.accountCompany.setText(tenant);
......@@ -79,16 +79,10 @@ public class RegisterActivity extends AppCompatActivity {
SPStaticUtils.put(Constant.POS_CODE, pos);
SPStaticUtils.put(Constant.SN_CODE, snCode);
SPStaticUtils.put(Constant.BIND, true);
boolean isScale = WmAceKG.getScaleSetting();
if (!isScale) {
Toast.makeText(RegisterActivity.this, "您未裁剪秤盘,为您跳转至裁剪页", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(RegisterActivity.this, CropPicActivity.class);
startActivity(intent);
finish();
} else {
Intent intent1 = new Intent(RegisterActivity.this, WeighingActivity.class);
startActivity(intent1);
}
Intent intent1 = new Intent(RegisterActivity.this, WeighingActivity.class);
startActivity(intent1);
finish();
}
});
});
......
package com.wmdigit.wmposdemo.ui;
import static com.wmdigit.wmposdemo.utils.Constant.SN_CODE;
import android.content.Context;
import android.content.Intent;
import android.content.res.AssetManager;
......@@ -12,6 +14,7 @@ import android.text.method.ScrollingMovementMethod;
import android.util.Log;
import android.view.TextureView;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import androidx.annotation.NonNull;
......@@ -29,6 +32,7 @@ import com.wmdigit.wmpos.bean.ImageProductBean;
import com.wmdigit.wmpos.bean.ProductMatch;
import com.wmdigit.wmpos.bean.ScaleBitmap;
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.OnProductMatchListener;
import com.wmdigit.wmpos.http.OnQueryPosRegisterInfoListener;
......@@ -36,6 +40,7 @@ import com.wmdigit.wmpos.http.OnUnBindPosListener;
import com.wmdigit.wmpos.listener.OnBitmapSaveListener;
import com.wmdigit.wmpos.listener.OnDataExportListener;
import com.wmdigit.wmpos.listener.OnPreLearningListener;
import com.wmdigit.wmpos.utils.SPStaticUtils;
import com.wmdigit.wmpos.utils.StopWatch;
import com.wmdigit.wmposdemo.R;
import com.wmdigit.wmposdemo.adapter.ButtonAdapter;
......@@ -154,7 +159,10 @@ public class WeighingActivity extends AiSupportActivity implements OnItemClickLi
public void initData() {
context = this;
random = new Random(1);
// 初始化data
buttonList = Constant.API_BUTTONS;
buttonList.get(28).setDefaultParams(SPStaticUtils.getString(SN_CODE, ""));
adapter = new ButtonAdapter(R.layout.item_button, Constant.API_BUTTONS);
weighingBinding.rvButtons.setAdapter(adapter);
GridLayoutManager gridLayoutManager = new GridLayoutManager(this, ScreenUtils.isScreenLandscape(this) ? 5 : 3);
......@@ -268,7 +276,7 @@ public class WeighingActivity extends AiSupportActivity implements OnItemClickLi
case "3.30":
// 校验SN合法性
checkSnCodeVerification();
checkSnCodeVerification(view);
break;
case "3.31":
......@@ -338,7 +346,7 @@ public class WeighingActivity extends AiSupportActivity implements OnItemClickLi
@Override
public void unBindPos() {
WmAceKG.unBindPos(Constant.TENANT, Constant.SN_CODE, new OnUnBindPosListener() {
WmAceKG.unBindPos(Constant.TENANT, SN_CODE, new OnUnBindPosListener() {
@Override
public void unBindFail(int code, String message) {
weighingBinding.tvInfo.setText("解绑失败:" + code + "," + message);
......@@ -645,10 +653,9 @@ public class WeighingActivity extends AiSupportActivity implements OnItemClickLi
}
@Override
public void checkSnCodeVerification() {
public void checkSnCodeVerification(View view) {
// 检验SN合法性
// todo snCode请替换成设备真实SN
String snCode = "77C4AD47-04B3-47B7-B9DF-A55D91F9E0BA";
String snCode = ((EditText)view.findViewById(R.id.edt_params)).getText().toString();
weighingBinding.tvInfo.setText("正在校验SN合法性:" + snCode + "\n");
// 第二个参数为接口网络请求的超时时间
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 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="10dp"
android:text="3.26 查询POS注册信息"
android:layout_marginTop="10dp"
android:textSize="20sp"
......
......@@ -101,6 +101,32 @@
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.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