app/build.gradle
@@ -1,20 +1,55 @@ apply plugin: 'com.android.application' android { compileSdkVersion 32 compileSdkVersion 30 /* buildToolsVersion "33.0.0"*/ defaultConfig { applicationId "com.lotaai.canguiayw" minSdkVersion 22 targetSdkVersion 33 targetSdkVersion 30 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } //签名 signingConfigs { release { storeFile file("cangui.jks") storePassword "sinata" keyAlias "cangui" keyPassword "sinata" } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' applicationVariants.all { variant -> // 更新至Android Studio 3.3 gradle 4.10.1 variant.outputs.all { outputFileName = "cangui-${defaultConfig.versionName}-${new Date().format("yyyy-MM-dd" , TimeZone.getTimeZone("GMT+08")) }.apk" } } // ndk { // abiFilters "armeabi-v7a","arm64-v8a" // 保留这种架构的CPU // } } debug { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.release // ndk { // abiFilters "armeabi-v7a" ,"arm64-v8a" // 保留这种架构的CPU // } } } app/cangui.jksBinary files differ
app/release/cangui-1.0-2024-09-04.apkBinary files differ
app/release/output.json
@@ -1 +1 @@ [{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":2,"versionName":"1.2","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}] [{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0","enabled":true,"outputFile":"cangui-1.0-2024-09-04.apk","fullName":"release","baseName":"release","dirName":""},"path":"cangui-1.0-2024-09-04.apk","properties":{}}] app/src/main/AndroidManifest.xml
@@ -47,6 +47,7 @@ <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".PickCodeListActivity" /> <service android:name=".device.service.CanGuiService" app/src/main/java/com/lotaai/canguiayw/CunOjbActivity.java
@@ -1,6 +1,5 @@ package com.lotaai.canguiayw; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.os.Handler; @@ -24,6 +23,7 @@ import com.lotaai.canguiayw.device.CanguiStatus; import com.lotaai.canguiayw.device.DeviceMessage; import com.lotaai.canguiayw.device.MessageType; import com.lotaai.canguiayw.view.TipDialog; import com.pranavpandey.android.dynamic.toasts.DynamicToast; import org.greenrobot.eventbus.EventBus; @@ -41,11 +41,15 @@ public class CunOjbActivity extends AppCompatActivity { OpenDoorFragment openDoorFragment; public String pickupCode; public int isHand; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_cunobj); pickupCode = getIntent().getStringExtra("code"); isHand = getIntent().getIntExtra("isHand",0); openDoorFragment = new OpenDoorFragment(); getSupportFragmentManager().beginTransaction().replace(R.id.mframe, openDoorFragment).commitAllowingStateLoss(); } @@ -58,4 +62,18 @@ } public void showResult(String msg){ TipDialog tipDialog = new TipDialog(); Bundle bundle = new Bundle(); bundle.putString("msg",msg); tipDialog.setArguments(bundle); tipDialog.show(getSupportFragmentManager(),"res"); tipDialog.callback = new TipDialog.ExitCallback() { @Override public void onExit() { finish(); } }; } } app/src/main/java/com/lotaai/canguiayw/LoginActivity.java
@@ -20,7 +20,6 @@ import com.lotaai.canguiayw.common.HttpLoggerInterceptor; import com.lotaai.canguiayw.common.HttpUrlDefine; import com.lotaai.canguiayw.common.SettingConfig; import com.lotaai.canguiayw.device.service.CanGuiService; import com.pranavpandey.android.dynamic.toasts.DynamicToast; import java.io.IOException; @@ -58,7 +57,9 @@ intent.setClass(LoginActivity.this, TakeActivity.class); startActivity(intent); }else if (_side.equals("2")){ Intent intent = new Intent(); intent.setClass(LoginActivity.this, StartSaveActivity.class); startActivity(intent); } LogUtils.i("VERSION.SDK_INT:" + VERSION.SDK_INT); context = LoginActivity.this; @@ -181,7 +182,9 @@ intent.setClass(LoginActivity.this, TakeActivity.class); startActivity(intent); }else if (side.equals("2")){ Intent intent = new Intent(); intent.setClass(LoginActivity.this, StartSaveActivity.class); startActivity(intent); } } else { Message msg = new Message(); app/src/main/java/com/lotaai/canguiayw/OpenDoorFragment.java
@@ -12,28 +12,46 @@ import android.widget.AdapterView; import android.widget.Button; import android.widget.GridView; import android.widget.TextView; import android.widget.ThemedSpinnerAdapter; import androidx.fragment.app.Fragment; import com.blankj.utilcode.util.CacheDiskUtils; import com.blankj.utilcode.util.GsonUtils; import com.blankj.utilcode.util.LogUtils; import com.liys.lswitch.BaseSwitch; import com.liys.lswitch.LSwitch; import com.lotaai.canguiayw.common.HttpLoggerInterceptor; import com.lotaai.canguiayw.common.HttpUrlDefine; import com.lotaai.canguiayw.common.SettingConfig; import com.lotaai.canguiayw.data.BaseDto; import com.lotaai.canguiayw.device.CanGuiCommand; import com.lotaai.canguiayw.device.CanguiStatus; import com.lotaai.canguiayw.device.DeviceMessage; import com.lotaai.canguiayw.device.DeviceType; import com.lotaai.canguiayw.device.MessageType; import com.lotaai.canguiayw.view.GridTableAdapter; import com.lotaai.canguiayw.view.GridTableAdapterNew; import com.pranavpandey.android.dynamic.toasts.DynamicToast; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.concurrent.TimeUnit; import okhttp3.Call; import okhttp3.Callback; import okhttp3.FormBody; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; public class OpenDoorFragment extends Fragment { @@ -53,6 +71,7 @@ private Button fugui003; private Button fugui004; private Button fugui005; private TextView tv_close; private int cureentSelectGui = 0; private boolean isCanRun = false; @@ -119,6 +138,7 @@ fugui003 = root.findViewById(R.id.gui003); fugui004 = root.findViewById(R.id.gui004); fugui005 = root.findViewById(R.id.gui005); tv_close = root.findViewById(R.id.tv_close); for (int g = 0; g < SettingConfig.getInstance().statusList.size(); g++) { if (SettingConfig.getInstance().statusList.get(g).getGuiHao() == 0) { if (zhugui.getVisibility() != View.VISIBLE) { @@ -222,6 +242,13 @@ cureentSelectGui = 5; initView(); } }); tv_close.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { requireActivity().finish(); } }); } @@ -352,15 +379,23 @@ } } Collections.sort(gridStatusList); GridTableAdapter adapter = new GridTableAdapter(context, gridStatusList, R.layout.framgment_tablegrid_item); if (gridStatusList.size() == 8){ CanguiStatus e = new CanguiStatus(); e.setGridNo(-1); gridStatusList.add(4, e); } GridTableAdapterNew adapter = new GridTableAdapterNew(context, gridStatusList, R.layout.item_box_new); gridtable = root.findViewById(R.id.gridtable); gridtable.setAdapter(adapter); gridtable.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { CanguiStatus cangui = gridStatusList.get(i); ((CunOjbActivity) getActivity()).setData(cangui); if (cangui.getGridNo()!=-1){ //存餐 takeCheckCode(((CunOjbActivity) getActivity()).pickupCode,0,cangui.getGridNo(),((CunOjbActivity) getActivity()).isHand); } // ((CunOjbActivity) getActivity()).setData(cangui); /* View item = gridtable.getChildAt(i).findViewById(R.id.gridLineLayout); if (checkIsSelectedAndOrRemove(cangui,true)) { item.setBackgroundColor(Color.GRAY); @@ -371,6 +406,66 @@ }); } public void takeCheckCode(String code, final int guino, final int gridno, int isHand) { HttpLoggerInterceptor loggingInterceptor = new HttpLoggerInterceptor(true); OkHttpClient client = new OkHttpClient.Builder() .connectTimeout(20, TimeUnit.SECONDS)//响应时间,读取时间 .readTimeout(20, TimeUnit.SECONDS) .callTimeout(20, TimeUnit.SECONDS) .addInterceptor(loggingInterceptor)//添加日志拦截器 .build(); LogUtils.i(CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Code), code); RequestBody body = new FormBody.Builder() .build(); final Request request = new Request.Builder() .url(HttpUrlDefine.checkStatus + "?pickNum=" + code + "&boxNum=" + guino + "&cartNum=" + gridno+ "&isHand=" + isHand+ "&sn=" + CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Code)) /* .addHeader("language", "zh-CN")*/ .post(body) .build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { requireActivity().runOnUiThread(new Runnable() { @Override public void run() { DynamicToast.makeError(context, "Request error!", 3).show(); } }); } @Override public void onResponse(Call call, Response response) throws IOException { String result = response.body().string(); LogUtils.i("获取到的数据:" + result); final BaseDto baseDto = GsonUtils.fromJson(result, BaseDto.class); requireActivity().runOnUiThread(new Runnable() { @Override public void run() { if (baseDto.getCode() == 200) { byte[] command = CanGuiCommand.getInstance().controlGridCommand(guino, gridno, 1, 255, 0, 0, 0, 0); DeviceMessage message = new DeviceMessage(); message.setMessageType(MessageType.SENDMESSAGE.ordinal()); message.setDeviceType(DeviceType.CANGUI.ordinal()); message.setMessageByte(command); EventBus.getDefault().post(message); // new Handler(Looper.getMainLooper()).postDelayed(() -> finish(), 3000); ((CunOjbActivity)requireActivity()).showResult("Place meal into the box."); } else { DynamicToast.makeError(context, baseDto.getMsg(), 3).show(); } } }); } }); } /** * @param status * @param isControl 是否从控制删除和添加,选中变不选,不选变选 app/src/main/java/com/lotaai/canguiayw/PickCodeListActivity.java
New file @@ -0,0 +1,114 @@ package com.lotaai.canguiayw; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.widget.LinearLayout; import android.widget.TextView; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import com.alibaba.fastjson.JSONObject; import com.blankj.utilcode.util.CacheDiskUtils; import com.blankj.utilcode.util.LogUtils; import com.lotaai.canguiayw.common.HttpLoggerInterceptor; import com.lotaai.canguiayw.common.HttpUrlDefine; import com.lotaai.canguiayw.common.SettingConfig; import com.pranavpandey.android.dynamic.toasts.DynamicToast; import java.io.IOException; import java.util.concurrent.TimeUnit; import okhttp3.Call; import okhttp3.Callback; import okhttp3.FormBody; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; public class PickCodeListActivity extends AppCompatActivity { private LinearLayout llCode; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_code_list); findViewById(R.id.tv_close).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { finish(); } }); llCode = findViewById(R.id.ll_code); getCode(); } public void getCode() { HttpLoggerInterceptor loggingInterceptor = new HttpLoggerInterceptor(true); OkHttpClient client = new OkHttpClient.Builder() .connectTimeout(20, TimeUnit.SECONDS)//响应时间,读取时间 .readTimeout(20, TimeUnit.SECONDS) .callTimeout(20, TimeUnit.SECONDS) .addInterceptor(loggingInterceptor)//添加日志拦截器 .build(); RequestBody body = new FormBody.Builder() .build(); final Request request = new Request.Builder() .url(HttpUrlDefine.list + "?sn=" + CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Code)) .post(body) .build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { Message msg = new Message(); msg.what = 0; msg.obj = "Request failed"; showHandler.sendMessage(msg); LogUtils.e(e); } @Override public void onResponse(Call call, Response response) throws IOException { String result = response.body().string(); LogUtils.i("获取到的数据:" + result); final JSONObject obj = JSONObject.parseObject(result); if ("200".equals(obj.getString("code"))) { runOnUiThread(new Runnable() { @Override public void run() { String[] data = obj.getString("data").split(","); for (int i =0;i<data.length;i++){ View view = getLayoutInflater().inflate(R.layout.item_code, llCode, false); ((TextView)view.findViewById(R.id.tv_code)).setText(data[i]); llCode.addView(view); } } }); } else { Message msg = new Message(); msg.what = 0; msg.obj = obj.getString("msg"); showHandler.sendMessage(msg); } } }); } private Handler showHandler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 0) { DynamicToast.makeError(PickCodeListActivity.this, msg.obj.toString(), 3).show(); } else if (msg.what == 1) { DynamicToast.makeSuccess(PickCodeListActivity.this, msg.obj.toString(), 3).show(); } else { DynamicToast.makeWarning(PickCodeListActivity.this, msg.obj.toString(), 3).show(); } } }; } app/src/main/java/com/lotaai/canguiayw/StartSaveActivity.java
@@ -1,6 +1,7 @@ package com.lotaai.canguiayw; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Looper; @@ -26,7 +27,9 @@ import com.lotaai.canguiayw.device.DeviceMessage; import com.lotaai.canguiayw.device.DeviceType; import com.lotaai.canguiayw.device.MessageType; import com.lotaai.canguiayw.device.service.CanGuiService; import com.lotaai.canguiayw.device.service.CrontrolGridModel; import com.lotaai.canguiayw.view.TipDialog; import com.pranavpandey.android.dynamic.toasts.DynamicToast; import org.greenrobot.eventbus.EventBus; @@ -45,20 +48,22 @@ public class StartSaveActivity extends AppCompatActivity { private Context context; private EditText editText; CanguiStatus canguidata; private TextView titleinfo; private TextView tv_see_code; // CanguiStatus canguidata; String ss; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_startsave); canguidata = (CanguiStatus) getIntent().getSerializableExtra("info"); initView(); ss = CrontrolGridModel.getGridNoStr(canguidata.getGuiHao(), canguidata.getGridNo()); titleinfo.setText("选择的格子号:" + ss); // canguidata = (CanguiStatus) getIntent().getSerializableExtra("info"); // ss = CrontrolGridModel.getGridNoStr(canguidata.getGuiHao(), canguidata.getGridNo()); context = StartSaveActivity.this; Intent startIntent = new Intent(context, CanGuiService.class); startService(startIntent); editText = (EditText) findViewById(R.id.edt_borrow_case_number); tv_see_code = (TextView) findViewById(R.id.tv_see_code); editText.setInputType(InputType.TYPE_NULL); // 屏蔽软键盘 DynamicToast.Config.getInstance().setTextSize(30).apply(); // 软键盘设置统一按钮监听方法,数字键直接将text内容填充到edittext中,删除和确认才设置事件 @@ -76,20 +81,31 @@ // 调用后台 String gridNo = editable.toString(); if (null == gridNo || "".equals(gridNo.trim())) { DynamicToast.makeError(context, "取餐码不能为空。", 3).show(); showResult("Please enter pickup code."); return; } else { if (gridNo.length() != 6) { editText.setText(""); DynamicToast.makeError(context, "取餐码输入错误,请重试。", 3).show(); showResult("The pickup code input is incorrect,\nplease try again."); return; } //调用判断是否可以取餐 editText.setText(""); takeCheckCode(gridNo, canguidata.getGuiHao(), canguidata.getGridNo()); // takeCheckCode(gridNo, canguidata.getGuiHao(), canguidata.getGridNo()); checkCode(gridNo,0); } } else if (key == R.id.tv_by_hand) { // 调用后台 String gridNo = editable.toString(); if (null == gridNo || "".equals(gridNo.trim())) { showResult("Please enter pickup code."); return; } else { //调用判断是否可以取餐 editText.setText(""); // takeCheckCode(gridNo, canguidata.getGuiHao(), canguidata.getGridNo()); checkCode(gridNo,1); } } else { Button button = (Button) v; editable.insert(index, button.getText()); @@ -108,6 +124,7 @@ View view0 = findViewById(R.id.borrow_bt0); View view11 = findViewById(R.id.borrow_bt_delete); View view12 = findViewById(R.id.borrow_bt_confirm); View view13 = findViewById(R.id.tv_by_hand); view1.setOnClickListener(clickListener); view2.setOnClickListener(clickListener); view3.setOnClickListener(clickListener); @@ -120,7 +137,15 @@ view0.setOnClickListener(clickListener); view11.setOnClickListener(clickListener); view12.setOnClickListener(clickListener); view13.setOnClickListener(clickListener); tv_see_code.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(StartSaveActivity.this, PickCodeListActivity.class); startActivity(intent); } }); } public void backMian(View view) { @@ -130,7 +155,7 @@ finish(); } public void takeCheckCode(String code, int guino, int gridno) { public void checkCode(final String code, final int isHand) { HttpLoggerInterceptor loggingInterceptor = new HttpLoggerInterceptor(true); OkHttpClient client = new OkHttpClient.Builder() .connectTimeout(20, TimeUnit.SECONDS)//响应时间,读取时间 @@ -138,13 +163,12 @@ .callTimeout(20, TimeUnit.SECONDS) .addInterceptor(loggingInterceptor)//添加日志拦截器 .build(); LogUtils.i(CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Code), code); String sn = CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Code); RequestBody body = new FormBody.Builder() .build(); final Request request = new Request.Builder() .url(HttpUrlDefine.checkStatus + "?pickNum=" + code + "&boxNum=" + guino + "&cartNum=" + gridno) .url(HttpUrlDefine.check + "?pickNum=" + code + "&sn=" + sn+ "&isHand=" + isHand) /* .addHeader("language", "zh-CN")*/ .post(body) .build(); @@ -154,7 +178,7 @@ runOnUiThread(new Runnable() { @Override public void run() { DynamicToast.makeError(context, "请求失败!", 3).show(); DynamicToast.makeError(context, "Request error!", 3).show(); } }); @@ -169,25 +193,16 @@ @Override public void run() { if (baseDto.getCode() == 200) { /* byte[] command = CanGuiCommand.getInstance().controlGridCommand(guino, gridno, 1, 255, 0, 0, 0, 0); DeviceMessage message = new DeviceMessage(); message.setMessageType(MessageType.SENDMESSAGE.ordinal()); message.setDeviceType(DeviceType.CANGUI.ordinal()); message.setMessageByte(command); EventBus.getDefault().post(message);*/ DynamicToast.makeSuccess(context, "订单已创建,请将餐食放入" + ss + "柜中", 3).show(); // new Handler(Looper.getMainLooper()).postDelayed(() -> finish(), 3000); finish(); //取餐码可用,去选柜子 Intent intent = new Intent(StartSaveActivity.this, CunOjbActivity.class); intent.putExtra("code",code); intent.putExtra("isHand",isHand); startActivity(intent); } else { DynamicToast.makeError(context, baseDto.getMsg(), 3).show(); showResult(baseDto.getMsg()); } } }); } }); } @@ -258,6 +273,13 @@ }; private void initView() { titleinfo = (TextView) findViewById(R.id.titleinfo); } public void showResult(String msg){ TipDialog tipDialog = new TipDialog(); Bundle bundle = new Bundle(); bundle.putString("msg",msg); tipDialog.setArguments(bundle); tipDialog.show(getSupportFragmentManager(),"res"); } } app/src/main/java/com/lotaai/canguiayw/TakeActivity.java
@@ -97,14 +97,14 @@ // 调用后台 String gridNo = editable.toString(); if (null == gridNo || "".equals(gridNo.trim())) { showResult("Please enter pickup code."); showResult("Please enter pickup code.",false); return; } else { if (gridNo.length() !=6) { editText.setText(""); showResult("The pickup code input is incorrect,\nplease try again."); return; } // if (gridNo.length() !=6) { // editText.setText(""); // showResult("The pickup code input is incorrect,\nplease try again."); // return; // } //调用判断是否可以取餐 editText.setText(""); takeCheckCode(gridNo); @@ -156,13 +156,11 @@ .callTimeout(20, TimeUnit.SECONDS) .addInterceptor(loggingInterceptor)//添加日志拦截器 .build(); LogUtils.i(CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Code), code); String sn = CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Code); RequestBody body = new FormBody.Builder() .build(); final Request request = new Request.Builder() .url(HttpUrlDefine.pickOrder+"?pickNum="+code) .url(HttpUrlDefine.pickOrder+"?pickNum="+code+"&sn="+sn) /* .addHeader("language", "zh-CN")*/ .post(body) .build(); @@ -196,9 +194,9 @@ message.setMessageByte(command); EventBus.getDefault().post(message); showResult("Door opened succcessfully! \n" + "Please pickup your meal."); "Please pickup your meal.",true); }else{ showResult(baseDto.getMsg()); showResult(baseDto.getMsg(),false); } } }); @@ -206,64 +204,13 @@ }); } public void showResult(String msg){ public void showResult(String msg,boolean isCountdown){ TipDialog tipDialog = new TipDialog(); Bundle bundle = new Bundle(); bundle.putString("msg",msg); bundle.putBoolean("isCountdown",isCountdown); tipDialog.setArguments(bundle); tipDialog.show(getSupportFragmentManager(),"res"); } public void pickOrder(String code) { HttpLoggerInterceptor loggingInterceptor = new HttpLoggerInterceptor(true); OkHttpClient client = new OkHttpClient.Builder() .connectTimeout(20, TimeUnit.SECONDS)//响应时间,读取时间 .readTimeout(20, TimeUnit.SECONDS) .callTimeout(20, TimeUnit.SECONDS) .addInterceptor(loggingInterceptor)//添加日志拦截器 .build(); LogUtils.i(CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Code), code); RequestBody body = new FormBody.Builder() .build(); final Request request = new Request.Builder() .url(HttpUrlDefine.pickOrder+"?pickNum="+code) /* .addHeader("language", "zh-CN")*/ .post(body) .build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { runOnUiThread(new Runnable() { @Override public void run() { DynamicToast.makeError(context, "请求失败!", 3).show(); } }); } @Override public void onResponse(Call call, Response response) throws IOException { String result = response.body().string(); LogUtils.i("获取到的数据:" + result); final BaseDto baseDto = GsonUtils.fromJson(result, BaseDto.class); runOnUiThread(new Runnable() { @Override public void run() { if (baseDto.isData()) { DynamicToast.makeSuccess(context, "验证成功!", 3).show(); }else{ DynamicToast.makeError(context, "验证失败!", 3).show(); } } }); } }); } app/src/main/java/com/lotaai/canguiayw/common/HttpUrlDefine.java
@@ -1,11 +1,11 @@ package com.lotaai.canguiayw.common; public class HttpUrlDefine { private static String rootHost = "http://192.168.110.111:8080/"; // private static String rootHost = "http://192.168.110.111:8080/"; //private static String rootHost = "http://221.182.45.100:8081/"; // private static String rootHost = " http://18.130.221.37:8080/"; // private static String rootHost = "http://13.42.24.196:8080/"; private static String rootHost = "http://13.42.24.196:8080/"; public static String equipmentBind = rootHost + "/lotaai-api/api/eq/equipmentBind"; public static String equipmentLogin = rootHost + "/lotaai-api/api/eq/equipmentLogin"; public static String equipmentCunCan = rootHost + "/lotaai-api/api/eq/putInFood"; @@ -20,5 +20,7 @@ public static String login = rootHost + "equipment/equipment/deviceBlind1"; public static String adver = rootHost + "order/order/get/adver"; public static String check = rootHost + "order/order/check"; public static String list = rootHost + "order/order/get/list"; } app/src/main/java/com/lotaai/canguiayw/view/GridTableAdapterNew.java
New file @@ -0,0 +1,76 @@ package com.lotaai.canguiayw.view; import android.content.Context; import android.graphics.Color; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import androidx.annotation.LayoutRes; import com.lotaai.canguiayw.R; import com.lotaai.canguiayw.device.CanguiStatus; import com.lotaai.canguiayw.device.service.CrontrolGridModel; import java.util.List; public class GridTableAdapterNew extends BaseAdapter { private List<CanguiStatus> mData; private int mResource; private Context mContext; public GridTableAdapterNew(Context context, List<CanguiStatus> data, @LayoutRes int resource ){ this.mContext = context; this.mResource = resource; this.mData = data; } @Override public int getCount() { return mData.size(); } @Override public Object getItem(int i) { return mData.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder vh = null; if (convertView == null) { convertView = LayoutInflater.from(mContext).inflate(mResource, null); vh = new ViewHolder(); vh.gridNo= (TextView) convertView.findViewById(R.id.gridNo); vh.gridLineLayout = (LinearLayout)convertView.findViewById(R.id.gridLineLayout); convertView.setTag(vh); } vh = (ViewHolder) convertView.getTag(); if (mData != null && mData.size() > 0) { CanguiStatus status = mData.get(position); if (status.getGridNo() == -1){ vh.gridNo.setText(""); vh.gridLineLayout.setBackgroundResource(0); } String ss = CrontrolGridModel.getGridNoStr(status.getGuiHao(),status.getGridNo()); vh.gridNo.setText(ss); // vh.gridNo.setText(Integer.toString(status.getGridNo())); } return convertView; } class ViewHolder { TextView gridNo; LinearLayout gridLineLayout; } } app/src/main/java/com/lotaai/canguiayw/view/TipDialog.java
@@ -1,6 +1,8 @@ package com.lotaai.canguiayw.view; import android.content.DialogInterface; import android.os.Bundle; import android.os.CountDownTimer; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; @@ -14,6 +16,7 @@ import com.lotaai.canguiayw.R; public class TipDialog extends DialogFragment { private CountDownTimer timer; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { @@ -41,7 +44,8 @@ super.onViewCreated(view, savedInstanceState); TextView tvMsg = view.findViewById(R.id.tv_msg); tvMsg.setText(getArguments().getString("msg")); view.findViewById(R.id.tv_action).setOnClickListener(new View.OnClickListener() { final TextView tvAction = view.findViewById(R.id.tv_action); tvAction.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (callback!=null) @@ -49,6 +53,28 @@ dismissAllowingStateLoss(); } }); boolean isCountdown = getArguments().getBoolean("isCountdown", false); if (isCountdown){ timer = new CountDownTimer(5000,1000){ @Override public void onTick(long l) { tvAction.setText(((l/1000)+1)+"S"); } @Override public void onFinish() { dismissAllowingStateLoss(); } }; timer.start(); } } @Override public void onDismiss(@NonNull DialogInterface dialog) { super.onDismiss(dialog); if (timer!=null) timer.cancel(); } public interface ExitCallback { app/src/main/res/drawable/bg_box.xml
New file @@ -0,0 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#29FFFFFF"/> <corners android:radius="3dp"/> <stroke android:color="@color/white" android:width="1dp"/> </shape> app/src/main/res/drawable/bg_oragne_line_6.xml
New file @@ -0,0 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:radius="6dp"/> <solid android:color="@color/white"/> <stroke android:color="@color/colorPrimary" android:width="1dp"/> </shape> app/src/main/res/layout/activity_code_list.xml
New file @@ -0,0 +1,39 @@ <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto" android:background="@color/black"> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:background="@drawable/bg_white_3" android:layout_marginHorizontal="90dp" android:layout_marginVertical="70dp" android:layout_height="match_parent"> <TextView android:id="@+id/tv_close" android:layout_width="120dp" android:layout_height="40dp" android:textSize="18sp" android:gravity="center" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" android:textColor="@color/colorPrimary" android:layout_marginBottom="28dp" app:layout_constraintBottom_toBottomOf="parent" android:textStyle="bold" android:text="Close" android:background="@drawable/bg_oragne_line_6"/> <ScrollView android:layout_width="match_parent" android:layout_height="0dp" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toTopOf="@id/tv_close"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/ll_code" android:orientation="vertical"/> </ScrollView> </androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout> app/src/main/res/layout/activity_startsave.xml
@@ -10,200 +10,231 @@ android:orientation="vertical" tools:context=".TakeActivity"> <RelativeLayout <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tv_see_code" android:layout_gravity="end" android:layout_marginTop="50dp" android:layout_marginEnd="15dp" android:text="Manual pickuo code" android:textSize="13sp" android:background="@drawable/bg_white_3" android:padding="10dp" /> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="5"> android:layout_height="match_parent"> <ImageButton android:layout_width="80dp" android:layout_height="80dp" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_gravity="center" android:alpha="1" android:background="@drawable/back_go_button" android:onClick="backMian" android:scaleType="centerCrop" android:src="@mipmap/fanhui" /> <TextView android:id="@+id/titleinfo" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_marginTop="19dp" android:background="@null" android:gravity="center" android:text="Please enter pickup code and place meal" android:textAlignment="center" android:textColor="@color/white" android:textColorHint="@color/white" android:textSize="25sp" android:textStyle="bold" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent"/> <EditText android:id="@+id/edt_borrow_case_number" android:layout_width="0dp" android:layout_height="65dp" android:background="@drawable/bg_white_3" android:layout_marginTop="29dp" android:gravity="center" android:inputType="number" android:textAlignment="center" android:textColor="@color/black" android:textColorHint="@color/white" android:textSize="24sp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintStart_toStartOf="@id/keyboard" app:layout_constraintEnd_toEndOf="@id/keyboard" app:layout_constraintTop_toBottomOf="@id/titleinfo" /> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent"> <TableLayout android:id="@+id/keyboard" android:layout_width="390dp" android:layout_height="219dp" android:stretchColumns="*" app:layout_constraintTop_toBottomOf="@id/edt_borrow_case_number" android:layout_marginTop="15dp" android:paddingVertical="6dp" android:paddingHorizontal="4dp" android:layout_marginHorizontal="29dp" android:background="@drawable/bg_grey_6dp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent"> <TextView android:id="@+id/titleinfo" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_marginTop="16dp" android:background="@null" android:gravity="center" android:text="选择的柜子号:" android:textAlignment="center" android:textColor="@color/white" android:textColorHint="@color/white" android:textSize="30dp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintWidth_percent="0.5" /> <EditText app:layout_constraintTop_toBottomOf="@+id/titleinfo" android:id="@+id/edt_borrow_case_number" <TableRow android:layout_width="0dp" app:layout_constraintWidth_percent="0.5" android:layout_height="0dp" android:background="@null" android:layout_marginTop="10dp" android:gravity="center" android:hint="请输入取餐码" android:inputType="number" android:textAlignment="center" android:textColor="@color/white" android:textColorHint="@color/white" android:textSize="30dp" app:layout_constraintHeight_percent="0.15" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" /> android:layout_weight="2"> <TableLayout <Button android:id="@+id/borrow_bt1" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@drawable/number_button_left" android:text="1" android:textSize="24sp" /> <Button android:id="@+id/borrow_bt2" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginStart="8dp" android:background="@drawable/number_button_mid" android:text="2" android:textSize="24sp" /> <Button android:id="@+id/borrow_bt3" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginStart="8dp" android:background="@drawable/number_button_right" android:text="3" android:textSize="24sp" /> </TableRow> <TableRow android:layout_width="0dp" app:layout_constraintDimensionRatio="2:1" android:layout_height="0dp" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:stretchColumns="*" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintHeight_percent="0.6" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent"> android:layout_marginTop="6dp" android:layout_weight="2"> <TableRow android:layout_width="0dp" android:layout_height="0dp" android:layout_weight="2"> <Button android:id="@+id/borrow_bt4" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@drawable/number_button_left" android:text="4" android:textSize="24sp" /> <Button android:id="@+id/borrow_bt1" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@drawable/number_button_left" android:text="1" android:textSize="30sp" /> <Button android:id="@+id/borrow_bt5" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@drawable/number_button_mid" android:text="5" android:layout_marginStart="8dp" android:textSize="24sp" /> <Button android:id="@+id/borrow_bt2" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@drawable/number_button_mid" android:text="2" android:textSize="30sp" /> <Button android:id="@+id/borrow_bt6" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@drawable/number_button_right" android:text="6" android:layout_marginStart="8dp" android:textSize="24sp" /> </TableRow> <Button android:id="@+id/borrow_bt3" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@drawable/number_button_right" android:text="3" android:textSize="30sp" /> </TableRow> <TableRow android:layout_width="0dp" android:layout_height="0dp" android:layout_marginTop="6dp" android:layout_weight="2"> <TableRow android:layout_width="0dp" android:layout_height="0dp" android:layout_weight="2"> <Button android:id="@+id/borrow_bt7" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@drawable/number_button_left" android:text="7" android:textSize="24sp" /> <Button android:id="@+id/borrow_bt4" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@drawable/number_button_left" android:text="4" android:textSize="30sp" /> <Button android:id="@+id/borrow_bt8" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@drawable/number_button_mid" android:text="8" android:layout_marginStart="8dp" android:textSize="24sp" /> <Button android:id="@+id/borrow_bt5" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@drawable/number_button_mid" android:text="5" android:textSize="30sp" /> <Button android:id="@+id/borrow_bt9" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@drawable/number_button_right" android:text="9" android:layout_marginStart="8dp" android:textSize="24sp" /> </TableRow> <Button android:id="@+id/borrow_bt6" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@drawable/number_button_right" android:text="6" android:textSize="30sp" /> </TableRow> <TableRow android:layout_width="0dp" android:layout_height="0dp" android:layout_marginTop="6dp" android:layout_weight="2"> <TableRow android:layout_width="0dp" android:layout_height="0dp" android:layout_weight="2"> <Button android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@null" android:textSize="24sp" /> <Button android:id="@+id/borrow_bt7" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@drawable/number_button_left" android:text="7" android:textSize="30sp" /> <Button android:id="@+id/borrow_bt0" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@drawable/number_button_mid" android:text="0" android:layout_marginStart="8dp" android:textSize="24sp" /> <Button android:id="@+id/borrow_bt8" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@drawable/number_button_mid" android:text="8" android:textSize="30sp" /> <ImageView android:id="@+id/borrow_bt_delete" android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:src="@mipmap/delete" android:scaleType="center" android:layout_marginStart="8dp" android:textSize="24sp" /> </TableRow> </TableLayout> <TextView android:id="@+id/borrow_bt_confirm" android:layout_width="150dp" android:layout_height="40dp" app:layout_constraintTop_toBottomOf="@id/keyboard" app:layout_constraintEnd_toEndOf="@id/keyboard" android:textSize="18sp" android:gravity="center" android:layout_marginEnd="23dp" android:layout_marginTop="30dp" android:textColor="@color/white" android:textStyle="bold" android:text="Order setup" android:background="@drawable/bg_oragne_6"/> <TextView android:id="@+id/tv_by_hand" android:layout_width="150dp" android:layout_height="40dp" app:layout_constraintTop_toBottomOf="@id/keyboard" app:layout_constraintStart_toStartOf="@id/keyboard" android:textSize="18sp" android:gravity="center" android:layout_marginStart="23dp" android:layout_marginTop="30dp" android:textColor="@color/colorPrimary" android:textStyle="bold" android:text="Maual setup" android:background="@drawable/bg_oragne_line_6"/> </androidx.constraintlayout.widget.ConstraintLayout> <Button android:id="@+id/borrow_bt9" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@drawable/number_button_right" android:text="9" android:textSize="30sp" /> </TableRow> <TableRow android:layout_width="0dp" android:layout_height="0dp" android:layout_weight="2"> <Button android:id="@+id/borrow_bt_delete" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@drawable/number_button_left" android:text="DEL" android:textSize="30sp" /> <Button android:id="@+id/borrow_bt0" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@drawable/number_button_mid" android:text="0" android:textSize="30sp" /> <Button android:id="@+id/borrow_bt_confirm" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@drawable/number_button_right" android:gravity="center" android:text="OK" android:textSize="30sp" /> </TableRow> </TableLayout> </androidx.constraintlayout.widget.ConstraintLayout> </RelativeLayout> </LinearLayout> app/src/main/res/layout/framgment_opendoor.xml
@@ -16,6 +16,7 @@ android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:visibility="gone" android:orientation="vertical"> <Button @@ -93,10 +94,10 @@ android:id="@+id/gridtable" android:layout_width="match_parent" android:layout_height="match_parent" android:columnWidth="80dp" android:horizontalSpacing="10dp" android:columnWidth="130dp" android:horizontalSpacing="18dp" android:numColumns="3" android:verticalSpacing="10dp"></GridView> android:verticalSpacing="18dp"></GridView> </LinearLayout> </LinearLayout> @@ -160,4 +161,17 @@ app:track_color_off="@color/cheng" app:track_color_on="@color/DarkGray" /> </LinearLayout> <TextView android:id="@+id/tv_close" android:layout_width="120dp" android:layout_height="40dp" android:textSize="18sp" android:gravity="center" android:layout_gravity="center" android:layout_marginTop="20dp" android:textColor="@color/colorPrimary" android:layout_marginBottom="28dp" android:textStyle="bold" android:text="Close" android:background="@drawable/bg_oragne_line_6"/> </LinearLayout> app/src/main/res/layout/item_box_new.xml
New file @@ -0,0 +1,26 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:background="@color/black" android:orientation="vertical"> <RelativeLayout android:id="@+id/gridLineLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/bg_box" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:id="@+id/gridNo" android:textStyle="bold" android:textColor="@color/white" android:textSize="17sp" android:text="A1"/> </RelativeLayout> </LinearLayout> app/src/main/res/layout/item_code.xml
New file @@ -0,0 +1,23 @@ <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" xmlns:app="http://schemas.android.com/apk/res-auto"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tv_code" android:paddingVertical="18dp" android:paddingHorizontal="16dp" android:text="Pickup code" android:textSize="16sp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" android:textStyle="bold" android:textColor="@color/black"/> <View android:layout_width="match_parent" android:layout_height="1px" android:background="#F0F0F0" app:layout_constraintTop_toBottomOf="@id/tv_code"/> </androidx.constraintlayout.widget.ConstraintLayout>