diff --git a/app/build.gradle b/app/build.gradle index 689415b..3d23554 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -45,4 +45,10 @@ dependencies { androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' implementation files('libs\\sdkapi.jar') compileOnly files('libs/sdkapi.jar') + + implementation 'com.lzy.net:okgo:3.0.4' + + //图片加载 + implementation 'com.github.bumptech.glide:glide:4.11.0' + annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0' } diff --git a/app/src/main/java/com/bpa/scalage/MenuSelectionActivity.java b/app/src/main/java/com/bpa/scalage/MenuSelectionActivity.java index 6c6bf4a..1da1e16 100644 --- a/app/src/main/java/com/bpa/scalage/MenuSelectionActivity.java +++ b/app/src/main/java/com/bpa/scalage/MenuSelectionActivity.java @@ -176,6 +176,11 @@ public class MenuSelectionActivity extends AppCompatActivity{ { DataBus.getInstance().organize=model.data; ConfigName.getInstance().Shop_Id=DataBus.getInstance().organize.id; + if(!ConfigName.getInstance().Shop_Name.equals(model.data.store_Name)) + { + ConfigName.getInstance().Shop_Name=model.data.store_Name; + Main.getInstance().SavePZ(); + } //拉取菜菜品 Main.getInstance().GetCaiPin(); }else diff --git a/app/src/main/java/com/bpa/scalage/app/ICSAppFood.java b/app/src/main/java/com/bpa/scalage/app/ICSAppFood.java index aa88423..29be548 100644 --- a/app/src/main/java/com/bpa/scalage/app/ICSAppFood.java +++ b/app/src/main/java/com/bpa/scalage/app/ICSAppFood.java @@ -4,6 +4,9 @@ import android.app.Application; import android.content.Context; import android.os.Environment; +import com.bpa.scalage.helper.CrashHandler; +import com.lzy.okgo.OkGo; + import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; @@ -21,6 +24,9 @@ public class ICSAppFood extends Application { @Override public void onCreate() { super.onCreate(); + OkGo.getInstance().init(this); + //0.全局异常捕获,保存为SD卡本级目录 crash + CrashHandler.getInstance().init(this); initSD(); //ImageLoaderConfig.initImageLoader(this, Constants.BASE_IMAGE_CACHE); diff --git a/app/src/main/java/com/bpa/scalage/app/Main.java b/app/src/main/java/com/bpa/scalage/app/Main.java index 2a95d09..f5af0c3 100644 --- a/app/src/main/java/com/bpa/scalage/app/Main.java +++ b/app/src/main/java/com/bpa/scalage/app/Main.java @@ -36,14 +36,31 @@ public class Main { { //1.加载配置 LoadingPZ(); + //0.加载环境配置 + ToggleEnvironment(); //2.获取组织信息 GetOrganize(); } + + /** + * 切换环境 + */ + public void ToggleEnvironment() { + if (ConfigName.getInstance().Environment.equals("开发环境")) { + ConfigName.getInstance().SaasAddress = "https://bpa.black-pa.com:21527"; + } else if (ConfigName.getInstance().Environment.equals("测试环境")) { + ConfigName.getInstance().SaasAddress = "https://bpa.black-pa.com:21528"; + } else if (ConfigName.getInstance().Environment.equals("正式环境")) { + ConfigName.getInstance().SaasAddress = "https://witt.black-pa.com"; + } + } + /** * 加载配置 */ public void LoadingPZ() { + ConfigName.getInstance().Environment =ConfigUtil.read(DataBus.getInstance().dishesCon,"Environment", ConfigName.getInstance().Environment); //1.店铺配置 ConfigName.getInstance().Shop_Name =ConfigUtil.read(DataBus.getInstance().dishesCon,"Shop_Name", ConfigName.getInstance().Shop_Name); ConfigName.getInstance().AutKey =ConfigUtil.read(DataBus.getInstance().dishesCon,"AutKey", ConfigName.getInstance().AutKey); @@ -64,6 +81,7 @@ public class Main { */ public void SavePZ() { + ConfigUtil.write(DataBus.getInstance().dishesCon,"Environment", ConfigName.getInstance().Environment); //1.店铺配置 ConfigUtil.write(DataBus.getInstance().dishesCon,"Shop_Name", ConfigName.getInstance().Shop_Name); ConfigUtil.write(DataBus.getInstance().dishesCon,"AutKey", ConfigName.getInstance().AutKey); @@ -77,6 +95,8 @@ public class Main { ConfigUtil.write(DataBus.getInstance().dishesCon,"Plate_Com_Name", ConfigName.getInstance().Plate_Com_Name); ConfigUtil.write(DataBus.getInstance().dishesCon,"Plate_Com_Port", ConfigName.getInstance().Plate_Com_Port); ConfigUtil.write(DataBus.getInstance().dishesCon,"Plate_Com_Format", ConfigName.getInstance().Plate_Com_Format); + + ToggleEnvironment(); } /** diff --git a/app/src/main/java/com/bpa/scalage/config/ConfigName.java b/app/src/main/java/com/bpa/scalage/config/ConfigName.java index 2ff9be0..40f9e9d 100644 --- a/app/src/main/java/com/bpa/scalage/config/ConfigName.java +++ b/app/src/main/java/com/bpa/scalage/config/ConfigName.java @@ -26,7 +26,7 @@ public class ConfigName { /** * 店铺设备号 */ - public String AutKey="95"; + public String AutKey="79"; /** * 店铺ID */ @@ -36,22 +36,31 @@ public class ConfigName { */ public String Shop_DeviceId=java.util.UUID.randomUUID().toString(); + //region + + //region 环境配置 + /** + * 环境配置 + */ + public String Environment = "开发环境"; + //endregion + //region uRL //Sass地址 - public String SaasAddress="https://bpa.black-pa.com:21527"; - //public String SaasAddress="https://witt.black-pa.com"; + //public String SaasAddress="https://bpa.black-pa.com:21528"; + public String SaasAddress="https://witt.black-pa.com"; //获取店铺菜品接口 Get - public String GetFruitUrl=SaasAddress+"/kitchen/api/StoreHelper/StoreGoodsMenuByStoreId?storeId="; + public String GetFruitUrl="/kitchen/api/StoreHelper/StoreGoodsMenuByStoreId?storeId="; //获取店铺详细信息 Get - public String GetStore=SaasAddress+"/kitchen/api/StoreHelper/GetStoreInfoById?storeId="; + public String GetStore="/kitchen/api/StoreHelper/GetStoreInfoById?storeId="; //获取用户信息uRL - public String GetUserUrl=SaasAddress+"/kitchen/api/member-helper/memberinfobywechat/"; + public String GetUserUrl="/kitchen/api/member-helper/memberinfobywechat/"; //查询Vip用户信息 - public String GetVipUserUrl=SaasAddress+"/kitchen/api/member-helper/memberinfobymemberid_wechat/"; + public String GetVipUserUrl="/kitchen/api/member-helper/memberinfobymemberid_wechat/"; //获取用户与卡的订单的关联关系 https://bpa.black-pa.com:21528/order/order/orderantusericard/64F9D80311A204E0/d55b4e04-d17f-45df-bc0a-12e39734ff00 - public String GetUserOrCartGX=SaasAddress+"/order/order/orderantusericard/"; + public String GetUserOrCartGX="/order/order/orderantusericard/"; //创建子订单接口 - public String AddSuOrderUrl=SaasAddress+"/order/order/orderdetail"; + public String AddSuOrderUrl="/order/order/orderdetail"; //endregion //region 菜品放置区 diff --git a/app/src/main/java/com/bpa/scalage/control/FruitAdapter.java b/app/src/main/java/com/bpa/scalage/control/FruitAdapter.java index 76a4819..a5666df 100644 --- a/app/src/main/java/com/bpa/scalage/control/FruitAdapter.java +++ b/app/src/main/java/com/bpa/scalage/control/FruitAdapter.java @@ -62,7 +62,7 @@ public class FruitAdapter extends ArrayAdapter { }); } // 设置要显示的图片和文字 - fruitimage.setImageURL(fruit.cover); + fruitimage.glideAppLoadUrlImage(fruit.cover); fruitname.setText(fruit.name); fruitprice.setText("非会员 ¥"+new java.text.DecimalFormat("#.00").format(fruit.price)+"/50g"); fruitvipprice.setText("会员 ¥"+new java.text.DecimalFormat("#.00").format(fruit.vipPrice)+"/50g"); diff --git a/app/src/main/java/com/bpa/scalage/control/MyImageView.java b/app/src/main/java/com/bpa/scalage/control/MyImageView.java index 6af5c1e..8a8c33a 100644 --- a/app/src/main/java/com/bpa/scalage/control/MyImageView.java +++ b/app/src/main/java/com/bpa/scalage/control/MyImageView.java @@ -1,4 +1,5 @@ package com.bpa.scalage.control; + import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; @@ -7,12 +8,17 @@ import android.os.Message; import android.util.AttributeSet; import android.widget.ImageView; import android.widget.Toast; + +import com.bpa.scalage.R; +import com.bumptech.glide.Glide; +import com.bumptech.glide.load.engine.DiskCacheStrategy; + import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; -public class MyImageView extends ImageView { +public class MyImageView extends ImageView { public static final int GET_DATA_SUCCESS = 1; public static final int NETWORK_ERROR = 2; public static final int SERVER_ERROR = 3; @@ -20,16 +26,16 @@ public class MyImageView extends ImageView { private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { - switch (msg.what){ + switch (msg.what) { case GET_DATA_SUCCESS: Bitmap bitmap = (Bitmap) msg.obj; setImageBitmap(bitmap); break; case NETWORK_ERROR: - Toast.makeText(getContext(),"网络连接失败",Toast.LENGTH_SHORT).show(); + Toast.makeText(getContext(), "网络连接失败", Toast.LENGTH_SHORT).show(); break; case SERVER_ERROR: - Toast.makeText(getContext(),"服务器发生错误",Toast.LENGTH_SHORT).show(); + Toast.makeText(getContext(), "服务器发生错误", Toast.LENGTH_SHORT).show(); break; } } @@ -74,7 +80,7 @@ public class MyImageView extends ImageView { msg.what = GET_DATA_SUCCESS; handler.sendMessage(msg); inputStream.close(); - }else { + } else { //服务启发生错误 handler.sendEmptyMessage(SERVER_ERROR); } @@ -87,4 +93,23 @@ public class MyImageView extends ImageView { }.start(); } + /** + * 通过GlideApp加载网络图片 + * + * @param img + */ + public void glideAppLoadUrlImage(String img) { + Glide.with(getContext()).load(img) + //.override(width, height) +// .thumbnail(0.1f) // 加载原始图片的10%作为缩略图 + //.fitCenter() // 缩放图片以适应ImageView的尺寸 + .override(800, 400) // 设置目标图片的宽度和高度 + .placeholder(R.mipmap.gli) + .error(R.mipmap.gli1) + .skipMemoryCache(true) // 禁用内存缓存 + .diskCacheStrategy(DiskCacheStrategy.NONE) + //.diskCacheStrategy(DiskCacheStrategy.ALL) // 缓存所有版本的图片 + .into(this); + } + } \ No newline at end of file diff --git a/app/src/main/java/com/bpa/scalage/helper/CrashHandler.java b/app/src/main/java/com/bpa/scalage/helper/CrashHandler.java new file mode 100644 index 0000000..57f2e27 --- /dev/null +++ b/app/src/main/java/com/bpa/scalage/helper/CrashHandler.java @@ -0,0 +1,232 @@ +package com.bpa.scalage.helper; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.content.Intent; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.content.pm.PackageManager.NameNotFoundException; +import android.os.Build; +import android.os.Environment; +import android.os.Looper; +import android.os.SystemClock; +import android.util.Log; +import android.widget.Toast; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.FilenameFilter; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.io.Writer; +import java.lang.Thread.UncaughtExceptionHandler; +import java.lang.reflect.Field; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +@SuppressLint("SimpleDateFormat") +public class CrashHandler implements UncaughtExceptionHandler { + + public static String TAG = "MyCrash"; + // ϵͳĬ�ϵ�UncaughtException������ + private UncaughtExceptionHandler mDefaultHandler; + + private static CrashHandler instance = new CrashHandler(); + private Context mContext; + + // �����洢�豸��Ϣ���쳣��Ϣ + private Map infos = new HashMap(); + + // ���ڸ�ʽ������,��Ϊ��־�ļ�����һ���� + private DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); + + /** ��ֻ֤��һ��CrashHandlerʵ�� */ + private CrashHandler() { + } + + /** ��ȡCrashHandlerʵ�� ,����ģʽ */ + public static CrashHandler getInstance() { + return instance; + } + + /** + * ��ʼ�� + * + * @param context + */ + public void init(Context context) { + mContext = context; + mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler(); + Thread.setDefaultUncaughtExceptionHandler(this); + autoClear(120); + } + + /** + * ��UncaughtException����ʱ��ת��ú��������� + */ + @Override + public void uncaughtException(Thread thread, Throwable ex) { + if (!handleException(ex) && mDefaultHandler != null) { + mDefaultHandler.uncaughtException(thread, ex); + } else { + SystemClock.sleep(3000); + android.os.Process.killProcess(android.os.Process.myPid()); + System.exit(1); + } + } + + /** + * �Զ��������,�ռ�������Ϣ ���ʹ��󱨸�Ȳ������ڴ����. + * + * @param ex + * @return true:��������˸��쳣��Ϣ; ���򷵻�false. + */ + private boolean handleException(Throwable ex) { + if (ex == null) + return false; + + try { + new Thread() { + + @Override + public void run() { + Looper.prepare(); + Toast.makeText(mContext, "大爷我崩溃了.自动修复中!!!", + Toast.LENGTH_LONG).show(); + Looper.loop(); + } + }.start(); + collectDeviceInfo(mContext); + saveCrashInfoFile(ex); + + Intent intent = mContext.getPackageManager().getLaunchIntentForPackage(mContext.getPackageName()); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + mContext.startActivity(intent); + SystemClock.sleep(3000); + } catch (Exception e) { + e.printStackTrace(); + } + + return true; + } + + /** + * �ռ��豸������Ϣ + * + * @param ctx + */ + public void collectDeviceInfo(Context ctx) { + try { + PackageManager pm = ctx.getPackageManager(); + PackageInfo pi = pm.getPackageInfo(ctx.getPackageName(), + PackageManager.GET_ACTIVITIES); + if (pi != null) { + String versionName = pi.versionName + ""; + String versionCode = pi.versionCode + ""; + infos.put("versionName", versionName); + infos.put("versionCode", versionCode); + } + } catch (NameNotFoundException e) { + Log.e(TAG, "an error occured when collect package info", e); + } + Field[] fields = Build.class.getDeclaredFields(); + for (Field field : fields) { + try { + field.setAccessible(true); + infos.put(field.getName(), field.get(null).toString()); + } catch (Exception e) { + Log.e(TAG, "an error occured when collect crash info", e); + } + } + } + + /** + * ���������Ϣ���ļ��� + * @param ex + * @return �����ļ�����,���ڽ��ļ����͵������� + * @throws Exception + */ + private String saveCrashInfoFile(Throwable ex) throws Exception { + StringBuffer sb = new StringBuffer(); + try { + SimpleDateFormat sDateFormat = new SimpleDateFormat( + "yyyy-MM-dd HH:mm:ss"); + String date = sDateFormat.format(new Date()); + sb.append("\r\n" + date + "\n"); + for (Map.Entry entry : infos.entrySet()) { + String key = entry.getKey(); + String value = entry.getValue(); + sb.append(key + "=" + value + "\n"); + } + + Writer writer = new StringWriter(); + PrintWriter printWriter = new PrintWriter(writer); + ex.printStackTrace(printWriter); + Throwable cause = ex.getCause(); + while (cause != null) { + cause.printStackTrace(printWriter); + cause = cause.getCause(); + } + printWriter.flush(); + printWriter.close(); + String result = writer.toString(); + sb.append(result); + + String fileName = writeFile(sb.toString()); + return fileName; + } catch (Exception e) { + Log.e(TAG, "an error occured while writing file...", e); + sb.append("an error occured while writing file...\r\n"); + writeFile(sb.toString()); + } + return null; + } + + private String writeFile(String sb) throws Exception { + String time = formatter.format(new Date()); + String fileName = "crash-" + time + ".log"; + if (FileUtil.hasSdcard()) { + String path = getGlobalpath(); + File dir = new File(path); + if (!dir.exists()) + dir.mkdirs(); + + FileOutputStream fos = new FileOutputStream(path + fileName, true); + fos.write(sb.getBytes()); + fos.flush(); + fos.close(); + } + return fileName; + } + + public static String getGlobalpath() { + return Environment.getExternalStorageDirectory().getAbsolutePath() + + File.separator + "crash" + File.separator; + } + + public static void setTag(String tag) { + TAG = tag; + } + + /** + * �ļ�ɾ�� + * @param �ļ��������� + */ + public void autoClear(final int autoClearDay) { + FileUtil.delete(getGlobalpath(), new FilenameFilter() { + + @Override + public boolean accept(File file, String filename) { + String s = FileUtil.getFileNameWithoutExtension(filename); + int day = autoClearDay < 0 ? autoClearDay : -1 * autoClearDay; + String date = "crash-" + DateUtil.getOtherDay(day); + return date.compareTo(s) >= 0; + } + }); + + } + +} diff --git a/app/src/main/java/com/bpa/scalage/helper/DateUtil.java b/app/src/main/java/com/bpa/scalage/helper/DateUtil.java new file mode 100644 index 0000000..c3e20df --- /dev/null +++ b/app/src/main/java/com/bpa/scalage/helper/DateUtil.java @@ -0,0 +1,374 @@ +package com.bpa.scalage.helper; + +import android.annotation.SuppressLint; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; + +@SuppressLint("SimpleDateFormat") +public final class DateUtil { + + /** yyyy-MM-dd HH:mm:ss�ַ��� */ + public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss"; + + /** yyyy-MM-dd�ַ��� */ + public static final String DEFAULT_FORMAT_DATE = "yyyy-MM-dd"; + + /** HH:mm:ss�ַ��� */ + public static final String DEFAULT_FORMAT_TIME = "HH:mm:ss"; + + /** yyyy-MM-dd HH:mm:ss��ʽ */ + public static final ThreadLocal defaultDateTimeFormat = new ThreadLocal() { + + @Override + protected SimpleDateFormat initialValue() { + return new SimpleDateFormat(DEFAULT_DATE_TIME_FORMAT); + } + + }; + + /** yyyy-MM-dd��ʽ */ + public static final ThreadLocal defaultDateFormat = new ThreadLocal() { + + @Override + protected SimpleDateFormat initialValue() { + return new SimpleDateFormat(DEFAULT_FORMAT_DATE); + } + + }; + + /** HH:mm:ss��ʽ */ + public static final ThreadLocal defaultTimeFormat = new ThreadLocal() { + + @Override + protected SimpleDateFormat initialValue() { + return new SimpleDateFormat(DEFAULT_FORMAT_TIME); + } + + }; + + private DateUtil() { + throw new RuntimeException("�� 3��"); + } + + /** + * ��longʱ��ת��yyyy-MM-dd HH:mm:ss�ַ���
+ * @param timeInMillis ʱ��longֵ + * @return yyyy-MM-dd HH:mm:ss + */ + public static String getDateTimeFromMillis(long timeInMillis) { + return getDateTimeFormat(new Date(timeInMillis)); + } + + /** + * ��longʱ��ת��yyyy-MM-dd�ַ���
+ * @param timeInMillis + * @return yyyy-MM-dd + */ + public static String getDateFromMillis(long timeInMillis) { + return getDateFormat(new Date(timeInMillis)); + } + + /** + * ��dateת��yyyy-MM-dd HH:mm:ss�ַ��� + *
+ * @param date Date���� + * @return yyyy-MM-dd HH:mm:ss + */ + public static String getDateTimeFormat(Date date) { + return dateSimpleFormat(date, defaultDateTimeFormat.get()); + } + + /** + * �������յ�intת��yyyy-MM-dd���ַ��� + * @param year �� + * @param month �� 1-12 + * @param day �� + * ע���±�ʾCalendar���£���ʵ��С1 + * ��������δ���ж� + */ + public static String getDateFormat(int year, int month, int day) { + return getDateFormat(getDate(year, month, day)); + } + + /** + * ��dateת��yyyy-MM-dd�ַ���
+ * @param date Date���� + * @return yyyy-MM-dd + */ + public static String getDateFormat(Date date) { + return dateSimpleFormat(date, defaultDateFormat.get()); + } + + /** + * ���HH:mm:ss��ʱ�� + * @param date + * @return + */ + public static String getTimeFormat(Date date) { + return dateSimpleFormat(date, defaultTimeFormat.get()); + } + + /** + * ��ʽ��������ʾ��ʽ + * @param sdate ԭʼ���ڸ�ʽ "yyyy-MM-dd" + * @param format ��ʽ�������ڸ�ʽ + * @return ��ʽ�����������ʾ + */ + public static String dateFormat(String sdate, String format) { + SimpleDateFormat formatter = new SimpleDateFormat(format); + java.sql.Date date = java.sql.Date.valueOf(sdate); + return dateSimpleFormat(date, formatter); + } + + /** + * ��ʽ��������ʾ��ʽ + * @param date Date���� + * @param format ��ʽ�������ڸ�ʽ + * @return ��ʽ�����������ʾ + */ + public static String dateFormat(Date date, String format) { + SimpleDateFormat formatter = new SimpleDateFormat(format); + return dateSimpleFormat(date, formatter); + } + + /** + * ��dateת���ַ��� + * @param date Date + * @param format SimpleDateFormat + *
+ * ע�� SimpleDateFormatΪ��ʱ������Ĭ�ϵ�yyyy-MM-dd HH:mm:ss��ʽ + * @return yyyy-MM-dd HH:mm:ss + */ + public static String dateSimpleFormat(Date date, SimpleDateFormat format) { + if (format == null) + format = defaultDateTimeFormat.get(); + return (date == null ? "" : format.format(date)); + } + + /** + * ��"yyyy-MM-dd HH:mm:ss" ��ʽ���ַ���ת��Date + * @param strDate ʱ���ַ��� + * @return Date + */ + public static Date getDateByDateTimeFormat(String strDate) { + return getDateByFormat(strDate, defaultDateTimeFormat.get()); + } + + /** + * ��"yyyy-MM-dd" ��ʽ���ַ���ת��Date + * @param strDate + * @return Date + */ + public static Date getDateByDateFormat(String strDate) { + return getDateByFormat(strDate, defaultDateFormat.get()); + } + + /** + * ��ָ����ʽ��ʱ���ַ���ת��Date���� + * @param strDate ʱ���ַ��� + * @param format ��ʽ���ַ��� + * @return Date + */ + public static Date getDateByFormat(String strDate, String format) { + return getDateByFormat(strDate, new SimpleDateFormat(format)); + } + + /** + * ��String�ַ�������һ����ʽת��Date
+ * ע�� SimpleDateFormatΪ��ʱ������Ĭ�ϵ�yyyy-MM-dd HH:mm:ss��ʽ + * @param strDate ʱ���ַ��� + * @param format SimpleDateFormat���� + * @exception ParseException ���ڸ�ʽת������ + */ + private static Date getDateByFormat(String strDate, SimpleDateFormat format) { + if (format == null) + format = defaultDateTimeFormat.get(); + try { + return format.parse(strDate); + } catch (ParseException e) { + e.printStackTrace(); + } + return null; + } + + /** + * �������յ�intת��date + * @param year �� + * @param month �� 1-12 + * @param day �� + * ע���±�ʾCalendar���£���ʵ��С1 + */ + public static Date getDate(int year, int month, int day) { + Calendar mCalendar = Calendar.getInstance(); + mCalendar.set(year, month - 1, day); + return mCalendar.getTime(); + } + + /** + * ����������������� + * + * @param strat ��ʼ���ڣ���ʽyyyy-MM-dd + * @param end ��ֹ���ڣ���ʽyyyy-MM-dd + * @return ��������������� + */ + public static long getIntervalDays(String strat, String end) { + return ((java.sql.Date.valueOf(end)).getTime() - (java.sql.Date + .valueOf(strat)).getTime()) / (3600 * 24 * 1000); + } + + /** + * ��õ�ǰ��� + * @return year(int) + */ + public static int getCurrentYear() { + Calendar mCalendar = Calendar.getInstance(); + return mCalendar.get(Calendar.YEAR); + } + + /** + * ��õ�ǰ�·� + * @return month(int) 1-12 + */ + public static int getCurrentMonth() { + Calendar mCalendar = Calendar.getInstance(); + return mCalendar.get(Calendar.MONTH) + 1; + } + + /** + * ��õ��¼��� + * @return day(int) + */ + public static int getDayOfMonth() { + Calendar mCalendar = Calendar.getInstance(); + return mCalendar.get(Calendar.DAY_OF_MONTH); + } + + /** + * ��ý��������(��ʽ��yyyy-MM-dd) + * @return yyyy-MM-dd + */ + public static String getToday() { + Calendar mCalendar = Calendar.getInstance(); + return getDateFormat(mCalendar.getTime()); + } + + /** + * ������������(��ʽ��yyyy-MM-dd) + * @return yyyy-MM-dd + */ + public static String getYesterday() { + Calendar mCalendar = Calendar.getInstance(); + mCalendar.add(Calendar.DATE, -1); + return getDateFormat(mCalendar.getTime()); + } + + /** + * ���ǰ�������(��ʽ��yyyy-MM-dd) + * @return yyyy-MM-dd + */ + public static String getBeforeYesterday() { + Calendar mCalendar = Calendar.getInstance(); + mCalendar.add(Calendar.DATE, -2); + return getDateFormat(mCalendar.getTime()); + } + + /** + * ��ü���֮ǰ���߼���֮������� + * @param diff ��ֵ�����������ƣ�������ǰ�� + * @return + */ + public static String getOtherDay(int diff) { + Calendar mCalendar = Calendar.getInstance(); + mCalendar.add(Calendar.DATE, diff); + return getDateFormat(mCalendar.getTime()); + } + + /** + * ȡ�ø������ڼ���һ������������ڶ���. + * + * @param date ���������ڶ��� + * @param amount ��Ҫ��ӵ��������������ǰ��������ʹ�ø����Ϳ���. + * @return Date ����һ�������Ժ��Date����. + */ + public static String getCalcDateFormat(String sDate, int amount) { + Date date = getCalcDate(getDateByDateFormat(sDate), amount); + return getDateFormat(date); + } + + /** + * ȡ�ø������ڼ���һ������������ڶ���. + * + * @param date ���������ڶ��� + * @param amount ��Ҫ��ӵ��������������ǰ��������ʹ�ø����Ϳ���. + * @return Date ����һ�������Ժ��Date����. + */ + public static Date getCalcDate(Date date, int amount) { + Calendar cal = Calendar.getInstance(); + cal.setTime(date); + cal.add(Calendar.DATE, amount); + return cal.getTime(); + } + + /** + * ���һ������ʮ����֮������ڶ��� + * @param date + * @param hOffset ʱƫ��������Ϊ�� + * @param mOffset ��ƫ��������Ϊ�� + * @param sOffset ��ƫ��������Ϊ�� + * @return + */ + public static Date getCalcTime(Date date, int hOffset, int mOffset, int sOffset) { + Calendar cal = Calendar.getInstance(); + if (date != null) + cal.setTime(date); + cal.add(Calendar.HOUR_OF_DAY, hOffset); + cal.add(Calendar.MINUTE, mOffset); + cal.add(Calendar.SECOND, sOffset); + return cal.getTime(); + } + + /** + * ����ָ����������Сʱ���룬����һ��java.Util.Date���� + * + * @param year �� + * @param month �� 0-11 + * @param date �� + * @param hourOfDay Сʱ 0-23 + * @param minute �� 0-59 + * @param second �� 0-59 + * @return һ��Date���� + */ + public static Date getDate(int year, int month, int date, int hourOfDay, + int minute, int second) { + Calendar cal = Calendar.getInstance(); + cal.set(year, month, date, hourOfDay, minute, second); + return cal.getTime(); + } + + /** + * ������������� + * @param sDate yyyy-MM-dd��ʽ + * @return arr[0]:�꣬ arr[1]:�� 0-11 , arr[2]�� + */ + public static int[] getYearMonthAndDayFrom(String sDate) { + return getYearMonthAndDayFromDate(getDateByDateFormat(sDate)); + } + + /** + * ������������� + * @return arr[0]:�꣬ arr[1]:�� 0-11 , arr[2]�� + */ + public static int[] getYearMonthAndDayFromDate(Date date) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + int[] arr = new int[3]; + arr[0] = calendar.get(Calendar.YEAR); + arr[1] = calendar.get(Calendar.MONTH); + arr[2] = calendar.get(Calendar.DAY_OF_MONTH); + return arr; + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/bpa/scalage/helper/FileUtil.java b/app/src/main/java/com/bpa/scalage/helper/FileUtil.java new file mode 100644 index 0000000..eadf17c --- /dev/null +++ b/app/src/main/java/com/bpa/scalage/helper/FileUtil.java @@ -0,0 +1,588 @@ +package com.bpa.scalage.helper; + +import android.os.Environment; +import android.text.TextUtils; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.FileWriter; +import java.io.FilenameFilter; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public final class FileUtil { + + private FileUtil() { + throw new Error("���n��"); + } + + /** �ָ���. */ + public final static String FILE_EXTENSION_SEPARATOR = "."; + + /**"/"*/ + public final static String SEP = File.separator; + + /** SD����Ŀ¼ */ + public static final String SDPATH = Environment + .getExternalStorageDirectory() + File.separator; + + /** + * �ж�SD���Ƿ���� + * @return SD�����÷���true + */ + public static boolean hasSdcard() { + String status = Environment.getExternalStorageState(); + return Environment.MEDIA_MOUNTED.equals(status); + } + + /** + * ��ȡ�ļ������� + *
+ * Ĭ��utf-8���� + * @param filePath �ļ�·�� + * @return �ַ��� + * @throws IOException + */ + public static String readFile(String filePath) throws IOException { + return readFile(filePath, "utf-8"); + } + + /** + * ��ȡ�ļ������� + * @param filePath �ļ�Ŀ¼ + * @param charsetName �ַ����� + * @return String�ַ��� + */ + public static String readFile(String filePath, String charsetName) + throws IOException { + if (TextUtils.isEmpty(filePath)) + return null; + if (TextUtils.isEmpty(charsetName)) + charsetName = "utf-8"; + File file = new File(filePath); + StringBuilder fileContent = new StringBuilder(""); + if (file == null || !file.isFile()) + return null; + BufferedReader reader = null; + try { + InputStreamReader is = new InputStreamReader(new FileInputStream( + file), charsetName); + reader = new BufferedReader(is); + String line = null; + while ((line = reader.readLine()) != null) { + if (!fileContent.toString().equals("")) { + fileContent.append("\r\n"); + } + fileContent.append(line); + } + return fileContent.toString(); + } finally { + if (reader != null) { + try { + reader.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + /** + * ��ȡ�ı��ļ���List�ַ���������(Ĭ��utf-8����) + * @param filePath �ļ�Ŀ¼ + * @return �ļ������ڷ���null�����򷵻��ַ������� + * @throws IOException + */ + public static List readFileToList(String filePath) + throws IOException { + return readFileToList(filePath, "utf-8"); + } + + /** + * ��ȡ�ı��ļ���List�ַ��������� + * @param filePath �ļ�Ŀ¼ + * @param charsetName �ַ����� + * @return �ļ������ڷ���null�����򷵻��ַ������� + */ + public static List readFileToList(String filePath, + String charsetName) throws IOException { + if (TextUtils.isEmpty(filePath)) + return null; + if (TextUtils.isEmpty(charsetName)) + charsetName = "utf-8"; + File file = new File(filePath); + List fileContent = new ArrayList(); + if (file == null || !file.isFile()) { + return null; + } + BufferedReader reader = null; + try { + InputStreamReader is = new InputStreamReader(new FileInputStream( + file), charsetName); + reader = new BufferedReader(is); + String line = null; + while ((line = reader.readLine()) != null) { + fileContent.add(line); + } + return fileContent; + } finally { + if (reader != null) { + try { + reader.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + /** + * ���ļ���д������ + * @param filePath �ļ�Ŀ¼ + * @param content Ҫд������� + * @param append ���Ϊ true��������д���ļ�ĩβ����������д���ļ���ʼ�� + * @return д��ɹ�����true�� д��ʧ�ܷ���false + * @throws IOException + */ + public static boolean writeFile(String filePath, String content, + boolean append) throws IOException { + if (TextUtils.isEmpty(filePath)) + return false; + if (TextUtils.isEmpty(content)) + return false; + FileWriter fileWriter = null; + try { + createFile(filePath); + fileWriter = new FileWriter(filePath, append); + fileWriter.write(content); + fileWriter.flush(); + return true; + } finally { + if (fileWriter != null) { + try { + fileWriter.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + + /** + * ���ļ���д������
+ * Ĭ�����ļ���ʼ������д������ + * @param filePath �ļ�Ŀ¼ + * @param stream �ֽ������� + * @return д��ɹ�����true�����򷵻�false + * @throws IOException + */ + public static boolean writeFile(String filePath, InputStream stream) + throws IOException { + return writeFile(filePath, stream, false); + } + + /** + * ���ļ���д������ + * @param filePath �ļ�Ŀ¼ + * @param stream �ֽ������� + * @param append ���Ϊ true��������д���ļ�ĩβ���� + * Ϊfalseʱ�����ԭ�������ݣ���ͷ��ʼд + * @return д��ɹ�����true�����򷵻�false + * @throws IOException + */ + public static boolean writeFile(String filePath, InputStream stream, + boolean append) throws IOException { + if (TextUtils.isEmpty(filePath)) + throw new NullPointerException("filePath is Empty"); + if (stream == null) + throw new NullPointerException("InputStream is null"); + return writeFile(new File(filePath), stream, + append); + } + + /** + * ���ļ���д������ + * Ĭ�����ļ���ʼ������д������ + * @param file ָ���ļ� + * @param stream �ֽ������� + * @return д��ɹ�����true�����򷵻�false + * @throws IOException + */ + public static boolean writeFile(File file, InputStream stream) + throws IOException { + return writeFile(file, stream, false); + } + + /** + * ���ļ���д������ + * @param file ָ���ļ� + * @param stream �ֽ������� + * @param append Ϊtrueʱ�����ļ���ʼ������д�����ݣ� + * Ϊfalseʱ�����ԭ�������ݣ���ͷ��ʼд + * @return д��ɹ�����true�����򷵻�false + * @throws IOException + */ + public static boolean writeFile(File file, InputStream stream, + boolean append) throws IOException { + if (file == null) + throw new NullPointerException("file = null"); + OutputStream out = null; + try { + createFile(file.getAbsolutePath()); + out = new FileOutputStream(file, append); + byte data[] = new byte[1024]; + int length = -1; + while ((length = stream.read(data)) != -1) { + out.write(data, 0, length); + } + out.flush(); + return true; + } finally { + if (out != null) { + try { + out.close(); + stream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + /** + * �����ļ� + * @param sourceFilePath Դ�ļ�Ŀ¼��Ҫ���Ƶ��ļ�Ŀ¼�� + * @param destFilePath Ŀ���ļ�Ŀ¼�����ƺ���ļ�Ŀ¼�� + * @return �����ļ��ɹ�����true�����򷵻�false + * @throws IOException + */ + public static boolean copyFile(String sourceFilePath, String destFilePath) + throws IOException { + InputStream inputStream = null; + inputStream = new FileInputStream(sourceFilePath); + return writeFile(destFilePath, inputStream); + } + + + /** + * ��ȡij��Ŀ¼�µ��ļ��� + * @param dirPath Ŀ¼ + * @param fileFilter ������ + * @return ij��Ŀ¼�µ������ļ��� + */ + public static List getFileNameList(String dirPath, + FilenameFilter fileFilter) { + if (fileFilter == null) + return getFileNameList(dirPath); + if (TextUtils.isEmpty(dirPath)) + return Collections.emptyList(); + File dir = new File(dirPath); + + File[] files = dir.listFiles(fileFilter); + if (files == null) + return Collections.emptyList(); + + List conList = new ArrayList(); + for (File file : files) { + if (file.isFile()) + conList.add(file.getName()); + } + return conList; + } + + /** + * ��ȡij��Ŀ¼�µ��ļ��� + * @param dirPath Ŀ¼ + * @return ij��Ŀ¼�µ������ļ��� + */ + public static List getFileNameList(String dirPath) { + if (TextUtils.isEmpty(dirPath)) + return Collections.emptyList(); + File dir = new File(dirPath); + File[] files = dir.listFiles(); + if (files == null) + return Collections.emptyList(); + List conList = new ArrayList(); + for (File file : files) { + if (file.isFile()) + conList.add(file.getName()); + } + return conList; + } + + /** + * ��ȡij��Ŀ¼�µ�ָ����չ�����ļ����� + * @param dirPath Ŀ¼ + * @return ij��Ŀ¼�µ������ļ��� + */ + public static List getFileNameList(String dirPath, + final String extension) { + if (TextUtils.isEmpty(dirPath)) + return Collections.emptyList(); + File dir = new File(dirPath); + File[] files = dir.listFiles(new FilenameFilter() { + + @Override + public boolean accept(File dir, String filename) { + if (filename.indexOf("." + extension) > 0) + return true; + return false; + } + }); + if (files == null) + return Collections.emptyList(); + List conList = new ArrayList(); + for (File file : files) { + if (file.isFile()) + conList.add(file.getName()); + } + return conList; + } + + /** + * ����ļ�����չ�� + * @param filePath �ļ�·�� + * @return ���û����չ��������"" + */ + public static String getFileExtension(String filePath) { + if (TextUtils.isEmpty(filePath)) { + return filePath; + } + int extenPosi = filePath.lastIndexOf(FILE_EXTENSION_SEPARATOR); + int filePosi = filePath.lastIndexOf(File.separator); + if (extenPosi == -1) { + return ""; + } + return (filePosi >= extenPosi) ? "" : filePath.substring(extenPosi + 1); + } + + /** + * �����ļ� + * @param path �ļ��ľ���·�� + * @return + */ + public static boolean createFile(String path) { + if (TextUtils.isEmpty(path)) + return false; + return createFile(new File(path)); + } + + /** + * �����ļ� + * @param file + * @return �����ɹ�����true + */ + public static boolean createFile(File file) { + if (file == null || !makeDirs(getFolderName(file.getAbsolutePath()))) + return false; + if (!file.exists()) + try { + return file.createNewFile(); + } catch (IOException e) { + e.printStackTrace(); + return false; + } + return false; + } + + /** + * ����Ŀ¼�������Ƕ���� + * @param filePath Ŀ¼·�� + * @return ���·��Ϊ��ʱ������false�����Ŀ¼�����ɹ����򷵻�true�����򷵻�false + */ + public static boolean makeDirs(String filePath) { + if (TextUtils.isEmpty(filePath)) { + return false; + } + File folder = new File(filePath); + return (folder.exists() && folder.isDirectory()) ? true : folder + .mkdirs(); + } + + /** + * ����Ŀ¼�������Ƕ���� + * @param dir Ŀ¼ + * @return ���Ŀ¼�����ɹ����򷵻�true�����򷵻�false + */ + public static boolean makeDirs(File dir) { + if (dir == null) + return false; + return (dir.exists() && dir.isDirectory()) ? true : dir.mkdirs(); + } + + /** + * �ж��ļ��Ƿ���� + * @param filePath �ļ�·�� + * @return ���·��Ϊ�ջ���Ϊ�հ��ַ������ͷ���false������ļ����ڣ������ļ��� + * �ͷ���true����������ļ����߲����ڣ��򷵻�false + */ + public static boolean isFileExist(String filePath) { + if (TextUtils.isEmpty(filePath)) { + return false; + } + File file = new File(filePath); + return (file.exists() && file.isFile()); + } + + /** + * ��ò�����չ�����ļ����� + * @param filePath �ļ�·�� + * @return + */ + public static String getFileNameWithoutExtension(String filePath) { + if (TextUtils.isEmpty(filePath)) { + return filePath; + } + int extenPosi = filePath.lastIndexOf(FILE_EXTENSION_SEPARATOR); + int filePosi = filePath.lastIndexOf(File.separator); + if (filePosi == -1) { + return (extenPosi == -1 ? filePath : filePath.substring(0, + extenPosi)); + } + if (extenPosi == -1) { + return filePath.substring(filePosi + 1); + } + return (filePosi < extenPosi ? filePath.substring(filePosi + 1, + extenPosi) : filePath.substring(filePosi + 1)); + } + + /** + * ����ļ��� + * @param filePath �ļ�·�� + * @return ���·��Ϊ�ջ�մ�������·��������Ϊ��ʱ�������ļ��� + */ + public static String getFileName(String filePath) { + if (TextUtils.isEmpty(filePath)) { + return filePath; + } + int filePosi = filePath.lastIndexOf(File.separator); + return (filePosi == -1) ? filePath : filePath.substring(filePosi + 1); + } + + /** + * �������Ŀ¼���� + * @param filePath �ļ��ľ���·�� + * @return ���·��Ϊ�ջ�մ�������·��������Ϊ��ʱ�����Ϊ��Ŀ¼������""; + * ������Ǹ�Ŀ¼����������Ŀ¼���ƣ���ʽ�磺C:/Windows/Boot + */ + public static String getFolderName(String filePath) { + if (TextUtils.isEmpty(filePath)) { + return filePath; + } + int filePosi = filePath.lastIndexOf(File.separator); + return (filePosi == -1) ? "" : filePath.substring(0, filePosi); + } + + /** + * �ж�Ŀ¼�Ƿ���� + * @param ¼·�� + * @return ���·��Ϊ�ջ�հ��ַ���������false�����Ŀ¼�����ң�ȷʵ��Ŀ¼�ļ��У� + * ����true����������ļ��л��߲����ڣ��򷵻�false + */ + public static boolean isFolderExist(String directoryPath) { + if (TextUtils.isEmpty(directoryPath)) { + return false; + } + File dire = new File(directoryPath); + return (dire.exists() && dire.isDirectory()); + } + + /** + * ɾ��ָ���ļ���ָ��Ŀ¼�ڵ������ļ� + * @param path �ļ���Ŀ¼�ľ���·�� + * @return ·��Ϊ�ջ�հ��ַ���������true���ļ������ڣ�����true���ļ�ɾ������true�� + * �ļ�ɾ���쳣����false + */ + public static boolean deleteFile(String path) { + if (TextUtils.isEmpty(path)) { + return true; + } + return deleteFile(new File(path)); + } + + /** + * ɾ��ָ���ļ���ָ��Ŀ¼�ڵ������ļ� + * @param file + * @return ·��Ϊ�ջ�հ��ַ���������true���ļ������ڣ�����true���ļ�ɾ������true�� + * �ļ�ɾ���쳣����false + */ + public static boolean deleteFile(File file) { + if (file == null) + throw new NullPointerException("file is null"); + if (!file.exists()) { + return true; + } + if (file.isFile()) { + return file.delete(); + } + if (!file.isDirectory()) { + return false; + } + + File[] files = file.listFiles(); + if (files == null) + return true; + for (File f : files) { + if (f.isFile()) { + f.delete(); + } else if (f.isDirectory()) { + deleteFile(f.getAbsolutePath()); + } + } + return file.delete(); + } + + /** + * ɾ��ָ��Ŀ¼���ض����ļ� + * @param dir + * @param filter + */ + public static void delete(String dir, FilenameFilter filter) { + if (TextUtils.isEmpty(dir)) + return; + File file = new File(dir); + if (!file.exists()) + return; + if (file.isFile()) + file.delete(); + if (!file.isDirectory()) + return; + + File[] lists = null; + if (filter != null) + lists = file.listFiles(filter); + else + lists = file.listFiles(); + + if (lists == null) + return; + for (File f : lists) { + if (f.isFile()) { + f.delete(); + } + } + } + + /** + * ����ļ����ļ��еĴ�С + * @param path �ļ���Ŀ¼�ľ���·�� + * @return ���ص�ǰĿ¼�Ĵ�С ��ע�����ļ������ڣ�Ϊ�գ�����Ϊ�հ��ַ��������� -1 + */ + public static long getFileSize(String path) { + if (TextUtils.isEmpty(path)) { + return -1; + } + File file = new File(path); + return (file.exists() && file.isFile() ? file.length() : -1); + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/bpa/scalage/helper/HttpUtils.java b/app/src/main/java/com/bpa/scalage/helper/HttpUtils.java index c4e117c..16bce09 100644 --- a/app/src/main/java/com/bpa/scalage/helper/HttpUtils.java +++ b/app/src/main/java/com/bpa/scalage/helper/HttpUtils.java @@ -18,11 +18,28 @@ import android.util.Log; import com.bpa.scalage.config.ConfigName; import com.bpa.scalage.config.MessageName; import com.bpa.scalage.message.MessageManager; +import com.lzy.okgo.OkGo; +import com.lzy.okgo.callback.StringCallback; +import com.lzy.okgo.model.Response; public class HttpUtils { public static int httpGet(final String name,final String urlPath) { +// OkGo.get(urlPath) +// .execute(new StringCallback() { +// @Override +// public void onSuccess(Response response) { +// // 请求成功回调 +// MessageManager.getInstance().sendMessage(name,response.body()); +// } +// +// @Override +// public void onError(Response response) { +// // 请求失败回调 +// } +// }); + String Url=ConfigName.getInstance().SaasAddress+urlPath; new Thread() { @Override @@ -31,7 +48,7 @@ public class HttpUtils { String content = ""; // ---------------------请求数据----------------------- try { - URL url = new URL(urlPath.trim()); + URL url = new URL(Url.trim()); Log.i("logB", "send url=" + url.toString()); //打开连接 HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); @@ -49,9 +66,11 @@ public class HttpUtils { } else { } } catch (MalformedURLException e) { + Log.e("错误", e.getMessage()); //e.printStackTrace(); } catch (IOException e) { //e.printStackTrace(); + Log.e("错误", e.getMessage()); } MessageManager.getInstance().sendMessage(name,content); } @@ -61,6 +80,8 @@ public class HttpUtils { public static void httpPost(final String name,final String urlPath,final String content) { + String Url=ConfigName.getInstance().SaasAddress+urlPath; + new Thread() { @Override @@ -69,7 +90,7 @@ public class HttpUtils { Looper.prepare(); URL url; try { - url = new URL(urlPath); + url = new URL(Url); Log.i("logB","content="+content); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(10000);//5 @@ -82,7 +103,6 @@ public class HttpUtils { conn.setRequestProperty("TenantId", ConfigName.getInstance().Shop_Id);//设置header - OutputStream os = conn.getOutputStream(); os.write(content.getBytes()); os.close(); diff --git a/app/src/main/java/com/bpa/scalage/helper/T.java b/app/src/main/java/com/bpa/scalage/helper/T.java index 943b784..3df92a2 100644 --- a/app/src/main/java/com/bpa/scalage/helper/T.java +++ b/app/src/main/java/com/bpa/scalage/helper/T.java @@ -1,14 +1,20 @@ package com.bpa.scalage.helper; import android.content.Context; import android.util.Log; +import android.widget.TextView; import android.widget.Toast; +import com.bpa.scalage.R; + /** * 自定义打印吐司函数 */ public class T { public static void show(Context context, String str){ - Toast.makeText(context, str, (int)0).show(); + Toast t= Toast.makeText(context, str, (int)0); + TextView tv = (TextView) t.getView().findViewById(android.R.id.message); + tv.setTextSize(50); + t.show(); Log.i(context.getPackageName(),str); } } diff --git a/app/src/main/java/com/bpa/scalage/pagefragment/ParameterSetFragment.java b/app/src/main/java/com/bpa/scalage/pagefragment/ParameterSetFragment.java index 8c88346..74f400a 100644 --- a/app/src/main/java/com/bpa/scalage/pagefragment/ParameterSetFragment.java +++ b/app/src/main/java/com/bpa/scalage/pagefragment/ParameterSetFragment.java @@ -4,6 +4,7 @@ import android.os.ParcelUuid; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.Spinner; import android.widget.SpinnerAdapter; @@ -16,6 +17,10 @@ import com.bpa.scalage.app.Main; import com.bpa.scalage.config.ConfigName; import com.bpa.scalage.helper.T; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.Map; + /** * 其他页面 */ @@ -31,15 +36,17 @@ public class ParameterSetFragment extends Fragment { //region 界面变量 //店铺信息 - private EditText Shop_Name,AutKey,Shop_DeviceId,SaasAddress; + private EditText Shop_Name,AutKey,Shop_DeviceId; //菜品放置区 - private Spinner Dishes_Com_Name,Dishes_Com_Port; + private Spinner Dishes_Com_Name,Dishes_Com_Port,environment; //菜品放置区 private Spinner Plate_Com_Name,Plate_Com_Port,Plate_Com_Format; //当前界面 private View MainView; //保存按钮 private TextView Save; + + Map material_map = new LinkedHashMap<>(); //endregion //region 界面函数 @@ -48,16 +55,24 @@ public class ParameterSetFragment extends Fragment { */ public void Init() { + material_map.put("开发环境", 0); + material_map.put("测试环境", 1); + material_map.put("正式环境", 2); + Shop_Name=MainView.findViewById(R.id.tv_dp_name); AutKey=MainView.findViewById(R.id.tv_dp_id); Shop_DeviceId=MainView.findViewById(R.id.tv_dp_devid); - SaasAddress=MainView.findViewById(R.id.tv_cp_url); + environment=MainView.findViewById(R.id.environment); Dishes_Com_Name=MainView.findViewById(R.id.tv_cp_com); Dishes_Com_Port=MainView.findViewById(R.id.tv_cp_port); Plate_Com_Name=MainView.findViewById(R.id.tv_cpgy_com); Plate_Com_Port=MainView.findViewById(R.id.tv_cpgy_port); Plate_Com_Format=MainView.findViewById(R.id.tv_cpgy_jy); Save=MainView.findViewById(R.id.parameter_save); + + + + SetShowText(); Save.setOnClickListener(new View.OnClickListener() { @Override @@ -75,7 +90,13 @@ public class ParameterSetFragment extends Fragment { Shop_Name.setText(ConfigName.getInstance().Shop_Name); AutKey.setText(ConfigName.getInstance().AutKey); Shop_DeviceId.setText(ConfigName.getInstance().Shop_DeviceId); - SaasAddress.setText(ConfigName.getInstance().SaasAddress); + + ArrayAdapter adapter = new ArrayAdapter<>(getContext(), R.layout.spinner_text_item, new ArrayList<>(material_map.keySet())); + adapter.setDropDownViewResource(R.layout.spinner_dropdown_item); + environment.setAdapter(adapter); + + + SelectText(environment,ConfigName.getInstance().Environment); SelectText(Dishes_Com_Name,ConfigName.getInstance().Dishes_Com_Name); SelectText(Dishes_Com_Port, Integer.toString(ConfigName.getInstance().Dishes_Com_Port)); SelectText(Plate_Com_Name,ConfigName.getInstance().Plate_Com_Name); @@ -103,11 +124,7 @@ public class ParameterSetFragment extends Fragment { T.show(MainView.getContext(),"设备ID不能为空!"); return; } - if (SaasAddress.getText().toString().isEmpty()) - { - T.show(MainView.getContext(),"Sass地址不能为空!"); - return; - } + if (Dishes_Com_Name.getSelectedItem().toString().isEmpty()) { T.show(MainView.getContext(),"菜品放置区串口号不能为空!"); @@ -133,10 +150,10 @@ public class ParameterSetFragment extends Fragment { T.show(MainView.getContext(),"餐盘感应区域数据位、校验位、停止位不能为空!"); return; } + ConfigName.getInstance().Environment = environment.getSelectedItem().toString(); ConfigName.getInstance().Shop_Name=Shop_Name.getText().toString(); ConfigName.getInstance().AutKey=AutKey.getText().toString(); ConfigName.getInstance().Shop_DeviceId=Shop_DeviceId.getText().toString(); - ConfigName.getInstance().SaasAddress=SaasAddress.getText().toString(); ConfigName.getInstance().Dishes_Com_Name=Dishes_Com_Name.getSelectedItem().toString(); ConfigName.getInstance().Dishes_Com_Port=Integer.valueOf(Dishes_Com_Port.getSelectedItem().toString()).intValue(); ConfigName.getInstance().Plate_Com_Name=Plate_Com_Name.getSelectedItem().toString(); diff --git a/app/src/main/res/drawable/spinner_border.xml b/app/src/main/res/drawable/spinner_border.xml index c5d7754..eccc375 100644 --- a/app/src/main/res/drawable/spinner_border.xml +++ b/app/src/main/res/drawable/spinner_border.xml @@ -1,34 +1,28 @@ - - + + - + android:width="1dp" + android:color="#B0B0B0"> - - + - - - - - - - - + + + + + + - - - - - - - - - + diff --git a/app/src/main/res/layout/activity_menu_selection.xml b/app/src/main/res/layout/activity_menu_selection.xml index 9f89bda..5eacedb 100644 --- a/app/src/main/res/layout/activity_menu_selection.xml +++ b/app/src/main/res/layout/activity_menu_selection.xml @@ -49,7 +49,7 @@ android:layout_width="0dp" android:layout_height="match_parent" android:scrollbars="none" - android:layout_weight="0.5" + android:layout_weight="0.8" android:background="#f4f4f4"> + android:textSize="28dp"/> \ No newline at end of file diff --git a/app/src/main/res/layout/controlview/layout/spinner_dropdown_item.xml b/app/src/main/res/layout/controlview/layout/spinner_dropdown_item.xml new file mode 100644 index 0000000..9a99144 --- /dev/null +++ b/app/src/main/res/layout/controlview/layout/spinner_dropdown_item.xml @@ -0,0 +1,12 @@ + + diff --git a/app/src/main/res/layout/controlview/layout/spinner_text_item.xml b/app/src/main/res/layout/controlview/layout/spinner_text_item.xml new file mode 100644 index 0000000..ff1c909 --- /dev/null +++ b/app/src/main/res/layout/controlview/layout/spinner_text_item.xml @@ -0,0 +1,17 @@ + + + + + + diff --git a/app/src/main/res/layout/page/layout/parameter_set.xml b/app/src/main/res/layout/page/layout/parameter_set.xml index f51a09a..942a17b 100644 --- a/app/src/main/res/layout/page/layout/parameter_set.xml +++ b/app/src/main/res/layout/page/layout/parameter_set.xml @@ -113,19 +113,24 @@ - + + + + + + + - - diff --git a/app/src/main/res/mipmap-hdpi/gli.png b/app/src/main/res/mipmap-hdpi/gli.png new file mode 100644 index 0000000..676d8f7 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/gli.png differ diff --git a/app/src/main/res/mipmap-hdpi/gli1.png b/app/src/main/res/mipmap-hdpi/gli1.png new file mode 100644 index 0000000..1732380 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/gli1.png differ diff --git a/app/src/main/res/mipmap-hdpi/loading2.png b/app/src/main/res/mipmap-hdpi/loading2.png new file mode 100644 index 0000000..fe41fc8 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/loading2.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/spinner_down_2.png b/app/src/main/res/mipmap-xxhdpi/spinner_down_2.png new file mode 100644 index 0000000..2cff3ed Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/spinner_down_2.png differ diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index c0db69e..943c8e1 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -13,6 +13,19 @@ true + + diff --git a/build.gradle b/build.gradle index 82defb3..fff6509 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.5.2' + classpath 'com.android.tools.build:gradle:7.0.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ab259ac..676d7cc 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon Feb 13 15:26:21 CST 2023 +#Thu Sep 14 11:43:52 CST 2023 distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip +zipStoreBase=GRADLE_USER_HOME