diff --git a/app/build.gradle b/app/build.gradle index 3de0069..9b1bee2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -46,21 +46,15 @@ android { /** * 服务器连接 */ - buildConfigField("String", "SERVER_IP", "\"120.27.209.4\"") - buildConfigField("String", "SERVER_PORT", "\"56791\"") -// buildConfigField("String", "SERVER_IP", "\"192.168.1.200\"") -// buildConfigField("String", "SERVER_PORT", "\"56794\"") - /** - * face++连接地址 - */ - buildConfigField("String", "FACEID_WS_URL", "\"ws://192.168.1.111:9000/video?url=\"") - +// buildConfigField("String", "SERVER_IP", "\"120.27.209.4\"") +// buildConfigField("String", "SERVER_PORT", "\"56792\"") + buildConfigField("String", "SERVER_IP", "\"127.0.0.1\"") + buildConfigField("String", "SERVER_PORT", "\"56792\"") /** * 门禁连接地址 */ buildConfigField("String", "DOOR_SERVER_IP", "\"192.168.1.150\"") buildConfigField("String", "DOOR_SERVER_PORT", "\"8000\"") - buildConfigField("String", "DOOR_SN", "\"MC-5824T28085603\"") buildConfigField("String", "DOOR_PWD", "\"FFFFFFFF\"") } diff --git a/app/src/main/java/com/ydd/sportfaceid/MainActivity.java b/app/src/main/java/com/ydd/sportfaceid/MainActivity.java index a42a705..987be17 100644 --- a/app/src/main/java/com/ydd/sportfaceid/MainActivity.java +++ b/app/src/main/java/com/ydd/sportfaceid/MainActivity.java @@ -2,6 +2,7 @@ package com.ydd.sportfaceid; import android.content.Intent; import android.graphics.Bitmap; +import android.os.Build; import android.os.Bundle; import android.support.v4.widget.ContentLoadingProgressBar; import android.text.Html; @@ -18,10 +19,14 @@ import com.tencent.bugly.crashreport.CrashReport; import com.ydd.sportfaceid.config.SDAppConfig; import com.ydd.sportfaceid.event.QRCodeEvent; import com.ydd.sportfaceid.main.SDBaseActivity; +import com.ydd.sportfaceid.netty.config.Constant; +import com.ydd.sportfaceid.netty.message.DeviceType; import com.ydd.sportfaceid.service.ClientService; import com.ydd.sportfaceid.setting.SDSettingActivity; +import com.ydd.sportfaceid.utils.DeviceIdUtil; import com.ydd.sportfaceid.utils.EggClickUtil; import com.ydd.sportfaceid.utils.QRCodeUtil; +import com.ydd.sportfaceid.utils.TimeUtil; import com.ydd.sportfaceid.view.SDGustInfoView; import org.greenrobot.eventbus.EventBus; @@ -31,7 +36,6 @@ import org.greenrobot.eventbus.ThreadMode; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; - import static com.ydd.sportfaceid.event.QRCodeEvent.QR_EVENT_ACTION_FAILED; import static com.ydd.sportfaceid.event.QRCodeEvent.QR_EVENT_ACTION_LOADING; import static com.ydd.sportfaceid.event.QRCodeEvent.QR_EVENT_ACTION_OPEN_DOOR; @@ -39,6 +43,8 @@ import static com.ydd.sportfaceid.event.QRCodeEvent.QR_EVENT_ACTION_OPEN_DOOR; public class MainActivity extends SDBaseActivity { private final String TAG = "MainActivity"; +// private final String URL_PARTEN = "https://api.hongyutiyu.top/getLessonOrder/"; + private final String URL_PARTEN = "https://lmqhznn.goho.co/getLessonOrder/"; @BindView(R.id.order_view) WebView order_view; @@ -53,6 +59,8 @@ public class MainActivity extends SDBaseActivity { @BindView(R.id.qr_code_pb_cover) ContentLoadingProgressBar qrCodePbCover; + private String current_date; + private EggClickUtil eggClickUtil; private SDErrorDialog errorDialog; @@ -70,7 +78,8 @@ public class MainActivity extends SDBaseActivity { // 应该是原来的保持屏幕常亮的代码 getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); order_view.setWebViewClient(new WebViewClient()); - order_view.loadUrl("http://www.baidu.com"); + current_date = TimeUtil.getCurrentDate(); + refreshWebView(); // 启动Service Intent socketService = new Intent(this, ClientService.class); startService(socketService); @@ -78,7 +87,16 @@ public class MainActivity extends SDBaseActivity { initQrIcon(); } - @Override + /** + * 获取预订信息的字符串 + * @return + */ + private void refreshWebView() { + String url = URL_PARTEN + SDAppConfig.getInstance().getVenueId() + "?date=" + current_date; + order_view.loadUrl(url); + } + + @Override protected void onResume() { super.onResume(); } @@ -137,15 +155,17 @@ public class MainActivity extends SDBaseActivity { break; case R.id.btn_refresh: - // TODO: wyb, 2020-07-29, 刷新逻辑. + configView(); break; case R.id.btn_last_day: - // TODO: wyb, 2020-07-29, 上一天 需要重新加载新的url. + current_date = TimeUtil.getSpecifiedDayAfter(current_date,1); + configView(); break; case R.id.btn_next_day: - // TODO: wyb, 2020-07-29, 下一天 需要重新加载新的url. + current_date = TimeUtil.getSpecifiedDayAfter(current_date,-1); + configView(); break; default: @@ -164,9 +184,11 @@ public class MainActivity extends SDBaseActivity { private void initQrIcon() { Integer venueId = SDAppConfig.getInstance().getVenueId(); - - if (venueId != 0) { - Bitmap qrImage = QRCodeUtil.createQRImage(venueId + "", qrCodeIvEnter.getWidth(), qrCodeIvEnter.getHeight()); + String deviceName = DeviceIdUtil.generateDeviceId(this); + DeviceType deviceType = SDAppConfig.getInstance().getDeviceType(); + String qrCert = deviceName + Constant.QRCODE_WORD + venueId + Constant.QRCODE_WORD + deviceType; + if (venueId != 0) { + Bitmap qrImage = QRCodeUtil.createQRImage(qrCert, qrCodeIvEnter.getWidth(), qrCodeIvEnter.getHeight()); qrCodeIvEnter.setImageBitmap(qrImage); } diff --git a/app/src/main/java/com/ydd/sportfaceid/event/MessageEvent.java b/app/src/main/java/com/ydd/sportfaceid/event/MessageEvent.java deleted file mode 100644 index e3717d5..0000000 --- a/app/src/main/java/com/ydd/sportfaceid/event/MessageEvent.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.ydd.sportfaceid.event; - -/** - * 消息事件 - * - * @author peakren - * @date 08/12/2017 11:16 PM - */ -public class MessageEvent { - - private String message; - - public MessageEvent(String message) { - this.message = message; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } -} diff --git a/app/src/main/java/com/ydd/sportfaceid/netty/ClientThread.java b/app/src/main/java/com/ydd/sportfaceid/netty/ClientThread.java index ee1b3e4..8933e65 100644 --- a/app/src/main/java/com/ydd/sportfaceid/netty/ClientThread.java +++ b/app/src/main/java/com/ydd/sportfaceid/netty/ClientThread.java @@ -4,7 +4,6 @@ import android.app.Activity; import android.util.Log; import com.ydd.sportfaceid.BuildConfig; -import com.ydd.sportfaceid.event.MessageEvent; import com.ydd.sportfaceid.utils.SharedPreferencesUtil; import org.greenrobot.eventbus.EventBus; @@ -84,10 +83,8 @@ public class ClientThread { future.addListener((ChannelFutureListener) f -> f.channel().eventLoop().schedule(() -> { if (!f.isSuccess()) { doConnect(); - EventBus.getDefault().post(new MessageEvent("等待连接")); Log.e(TAG, "连接失败!"); } else { - EventBus.getDefault().post(new MessageEvent("已连接")); Log.i(TAG, "连接成功!"); } }, 2, TimeUnit.SECONDS)); diff --git a/app/src/main/java/com/ydd/sportfaceid/netty/config/Constant.java b/app/src/main/java/com/ydd/sportfaceid/netty/config/Constant.java index 8090689..217a3ca 100644 --- a/app/src/main/java/com/ydd/sportfaceid/netty/config/Constant.java +++ b/app/src/main/java/com/ydd/sportfaceid/netty/config/Constant.java @@ -3,5 +3,6 @@ package com.ydd.sportfaceid.netty.config; public class Constant { public final static String DELIMITER_WORD = "$_$"; + public final static String QRCODE_WORD = "#"; } diff --git a/app/src/main/java/com/ydd/sportfaceid/setting/SDSettingActivity.java b/app/src/main/java/com/ydd/sportfaceid/setting/SDSettingActivity.java index 30cf025..c005898 100644 --- a/app/src/main/java/com/ydd/sportfaceid/setting/SDSettingActivity.java +++ b/app/src/main/java/com/ydd/sportfaceid/setting/SDSettingActivity.java @@ -1,7 +1,10 @@ package com.ydd.sportfaceid.setting; import android.os.Bundle; +import android.os.Handler; +import android.os.Message; import android.text.TextUtils; +import android.util.Base64; import android.util.Log; import android.view.View; import android.widget.AdapterView; @@ -10,6 +13,7 @@ import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.Spinner; +import com.google.gson.reflect.TypeToken; import com.ydd.sportfaceid.R; import com.ydd.sportfaceid.config.SDAppConfig; import com.ydd.sportfaceid.main.SDBaseActivity; @@ -18,6 +22,16 @@ import com.ydd.sportfaceid.netty.message.DeviceType; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; +import com.ydd.sportfaceid.utils.JsonMapper; +import com.ydd.sportfaceid.utils.TimeUntil; +import okhttp3.*; + +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.UUID; public class SDSettingActivity extends SDBaseActivity { public static final String TAG = "SDSettingActivity_TAG"; @@ -28,14 +42,62 @@ public class SDSettingActivity extends SDBaseActivity { @BindView(R.id.venue_action) RadioGroup venueActionView; - private String spinnerValue; + private Integer spinnerValue; + + List resultList = null; + + boolean init = false; + + Handler handler = new Handler(){ + + public void handleMessage(Message msg) { + switch (msg.what) { + case 1: + init = true; + } + } + + }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sdsetting); ButterKnife.bind(this); - initSpinner(); + new Thread(new Runnable() { + @Override + public void run() { + String url = "https://lmqhznn.goho.co/getVenueList"; + OkHttpClient client = new OkHttpClient(); + Request request = new Request.Builder() + .url(url) + .build(); + Response response = null; + try { + response = client.newCall(request).execute(); + } catch (IOException e) { + Log.e(TAG, "setConfigError: ", e); + showToast("网络异常,请稍候再试!"); + } + if (!response.isSuccessful()) { + } + String result = null; + try { + result = response.body().string(); + System.out.println("result ================" + result); + } catch (IOException e) { + e.printStackTrace(); + } + resultList = JsonMapper.fromJson(result,new TypeToken>(){}.getType()); + Message message = new Message(); + message.what = 1; + handler.sendMessage(message); + } + }).start(); + while (init){ + initSpinner(); + init = false; + } } @Override @@ -60,12 +122,12 @@ public class SDSettingActivity extends SDBaseActivity { private void setConfig() { try { - if (TextUtils.isEmpty(spinnerValue)) { + if (spinnerValue == null) { showToast("未选择场馆!"); return; } - Integer venueId = Integer.parseInt(spinnerValue); + Integer venueId = spinnerValue; RadioButton radioButton = findCheckedRadioButton(); if (radioButton == null) { @@ -100,16 +162,13 @@ public class SDSettingActivity extends SDBaseActivity { } private void initSpinner() { - // TESTCODE: wyb, 2020-07-29, 测试Spinner列表. - // TODO: wyb, 2020-07-29, 需要请求场馆列表. - String[] stringArray = getResources().getStringArray(R.array.setting_spinner_test_list); - ArrayAdapter adapter = new ArrayAdapter<>(this, R.layout.item_setting_spinner, stringArray); - + ArrayAdapter adapter = new ArrayAdapter<>(this, R.layout.item_setting_spinner, resultList); venueCellView.setAdapter(adapter); venueCellView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { - spinnerValue = stringArray[position]; + VenueItem venueItem = (VenueItem) venueCellView.getSelectedItem(); + spinnerValue = venueItem.getVenueId(); } @Override @@ -118,7 +177,14 @@ public class SDSettingActivity extends SDBaseActivity { } }); // TODO: wyb, 2020-07-29, 这里可以设置为当前场馆的index. - venueCellView.setSelection(0, false); + int position = 0; + for (VenueItem venueItem : resultList){ + if (spinnerValue.equals(venueItem.getVenueId())){ + break; + } + position ++ ; + } + venueCellView.setSelection(position, false); } } diff --git a/app/src/main/java/com/ydd/sportfaceid/setting/VenueItem.java b/app/src/main/java/com/ydd/sportfaceid/setting/VenueItem.java new file mode 100644 index 0000000..c05e73e --- /dev/null +++ b/app/src/main/java/com/ydd/sportfaceid/setting/VenueItem.java @@ -0,0 +1,29 @@ +package com.ydd.sportfaceid.setting; + +import java.io.Serializable; + +public class VenueItem implements Serializable { + private Integer venueId; + private String venueName; + + public VenueItem(Integer venueId, String venueName) { + this.venueId = venueId; + this.venueName = venueName; + } + + public Integer getVenueId() { + return venueId; + } + + public void setVenueId(Integer venueId) { + this.venueId = venueId; + } + + public String getVenueName() { + return venueName; + } + + public void setVenueName(String venueName) { + this.venueName = venueName; + } +} diff --git a/app/src/main/java/com/ydd/sportfaceid/utils/SharedPreferencesUtil.java b/app/src/main/java/com/ydd/sportfaceid/utils/SharedPreferencesUtil.java index 3e3b24a..60b993a 100644 --- a/app/src/main/java/com/ydd/sportfaceid/utils/SharedPreferencesUtil.java +++ b/app/src/main/java/com/ydd/sportfaceid/utils/SharedPreferencesUtil.java @@ -52,26 +52,6 @@ public class SharedPreferencesUtil { return serverShare.getInt("serverPort", Integer.parseInt(BuildConfig.SERVER_PORT)); } - /** - * 设置face++的连接地址和端口 - * - * @param url - * @return - */ - public static boolean setFaceidWsUrl(String url) { - initServerShare(); - if (getFaceidWsUrl().equals(url)) { - return false; - } - serverShare.edit().putString("faceidWsUrl", url).apply(); - return true; - } - - public static String getFaceidWsUrl() { - initServerShare(); - return serverShare.getString("faceidWsUrl", BuildConfig.FACEID_WS_URL); - } - /** * 设置门禁的连接地址和端口 * diff --git a/app/src/main/java/com/ydd/sportfaceid/utils/TimeUtil.java b/app/src/main/java/com/ydd/sportfaceid/utils/TimeUtil.java index cd92376..f00f251 100644 --- a/app/src/main/java/com/ydd/sportfaceid/utils/TimeUtil.java +++ b/app/src/main/java/com/ydd/sportfaceid/utils/TimeUtil.java @@ -1,6 +1,10 @@ package com.ydd.sportfaceid.utils; +import android.text.format.DateUtils; + +import java.text.ParseException; import java.text.SimpleDateFormat; +import java.util.Calendar; import java.util.Date; /** @@ -13,6 +17,8 @@ public class TimeUtil { static final private SimpleDateFormat sFormat = new SimpleDateFormat("yyMMddHHmmssSSS"); static final private SimpleDateFormat sLogFormat = new SimpleDateFormat("MM-dd HH:mm:ss.SSS"); + static final private SimpleDateFormat initOrderFormat = new SimpleDateFormat("YYYY-MM-dd"); + static public String getNowTimeStr() { return sFormat.format(new Date()); } @@ -20,4 +26,30 @@ public class TimeUtil { static public String getLogStr() { return sLogFormat.format(new Date()); } + + static public String getCurrentDate(){ + return initOrderFormat.format(new Date()); + } + + /** + * 获取与指定日期间隔给定天数的日期. + * @param specifiedDay + * @param num 间隔天数 + * @return String 间隔指定天数之后的日期 + */ + public static String getSpecifiedDayAfter(String specifiedDay, int num){ + Date specifiedDate = null; + try { + specifiedDate = initOrderFormat.parse(specifiedDay); + } catch (ParseException e) { + return getCurrentDate(); + } + Calendar c = Calendar.getInstance(); + c.setTime(specifiedDate); + int day = c.get(Calendar.DATE); + c.set(Calendar.DATE, day + num); + String dayAfter = initOrderFormat.format(c.getTime()); + return dayAfter; + } + } diff --git a/app/src/main/java/com/ydd/sportfaceid/view/SDGustInfoView.java b/app/src/main/java/com/ydd/sportfaceid/view/SDGustInfoView.java index dba6f20..dec2eb2 100644 --- a/app/src/main/java/com/ydd/sportfaceid/view/SDGustInfoView.java +++ b/app/src/main/java/com/ydd/sportfaceid/view/SDGustInfoView.java @@ -51,7 +51,6 @@ public class SDGustInfoView extends RelativeLayout { date_label.setText(date_string + " " + weak_string); break; } - super.handleMessage(msg); } }; diff --git a/app/src/main/res/layout/item_setting_spinner.xml b/app/src/main/res/layout/item_setting_spinner.xml index a38f333..bed565a 100644 --- a/app/src/main/res/layout/item_setting_spinner.xml +++ b/app/src/main/res/layout/item_setting_spinner.xml @@ -1,4 +1,10 @@ + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fc2fa08..966ecfb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -6,13 +6,4 @@ 请选择场馆,以及门禁类型 您好 \n 您尚未注册成为本智能运动场用户 \n请扫描门禁上张贴的场馆二维码进行注册后再试 如遇注册用户无法识别请联系场馆管理人员 - - - 00001 - 00002 - 00003 - 00004 - 00005 - 00006 -