diff --git a/app/src/main/java/com/ydd/sportfaceid/MainActivity.java b/app/src/main/java/com/ydd/sportfaceid/MainActivity.java index 8bca805..a42a705 100644 --- a/app/src/main/java/com/ydd/sportfaceid/MainActivity.java +++ b/app/src/main/java/com/ydd/sportfaceid/MainActivity.java @@ -1,160 +1,188 @@ package com.ydd.sportfaceid; import android.content.Intent; -import android.os.CountDownTimer; -import android.os.Handler; +import android.graphics.Bitmap; import android.os.Bundle; -import android.text.TextUtils; +import android.support.v4.widget.ContentLoadingProgressBar; +import android.text.Html; import android.util.DisplayMetrics; import android.util.Log; import android.view.View; import android.view.WindowManager; import android.webkit.WebView; -import android.widget.LinearLayout; +import android.webkit.WebViewClient; +import android.widget.ImageView; import android.widget.TextView; -import com.bumptech.glide.Glide; + 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.service.ClientService; import com.ydd.sportfaceid.setting.SDSettingActivity; import com.ydd.sportfaceid.utils.EggClickUtil; +import com.ydd.sportfaceid.utils.QRCodeUtil; +import com.ydd.sportfaceid.view.SDGustInfoView; import org.greenrobot.eventbus.EventBus; - -import butterknife.BindView; -import butterknife.OnClick; -import de.hdodenhof.circleimageview.CircleImageView; import org.greenrobot.eventbus.Subscribe; 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; + public class MainActivity extends SDBaseActivity { - private final String TAG = "MainActivity"; + private final String TAG = "MainActivity"; - @BindView(R.id.welcome_label) - TextView welcome_label; + @BindView(R.id.order_view) + WebView order_view; + @BindView(R.id.gust_info_view) + SDGustInfoView gustInfoView; + @BindView(R.id.tv_tip) + TextView tvTip; + @BindView(R.id.qr_code_iv_small) + ImageView qrCodeIvSmall; + @BindView(R.id.qr_code_iv_enter) + ImageView qrCodeIvEnter; + @BindView(R.id.qr_code_pb_cover) + ContentLoadingProgressBar qrCodePbCover; - @BindView(R.id.topInfoTextView) - TextView topInfoTextView; + private EggClickUtil eggClickUtil; + private SDErrorDialog errorDialog; - @BindView(R.id.order_view) - WebView order_view; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + ButterKnife.bind(this); + // 不做什么事情,只是计算屏幕的高宽 + initScreen(); + // 注册消息bus + EventBus.getDefault().register(this); + // 初始化设置视图 + configView(); + // 应该是原来的保持屏幕常亮的代码 + getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + order_view.setWebViewClient(new WebViewClient()); + order_view.loadUrl("http://www.baidu.com"); + // 启动Service + Intent socketService = new Intent(this, ClientService.class); + startService(socketService); + // 初始化二维码图片 + initQrIcon(); + } - @BindView(R.id.sb_string_label) - TextView sb_string_label; + @Override + protected void onResume() { + super.onResume(); + } - @BindView(R.id.count_down_label) - TextView count_down_label; + @Override + protected void onStop() { + super.onStop(); + } - public EggClickUtil eggClickUtil; + @Override + protected void onDestroy() { + super.onDestroy(); + if (EventBus.getDefault().isRegistered(this)) { + EventBus.getDefault().unregister(this); + } + } - public void setMaxCountDownTime(int maxCountDownTime) { - if (maxCountDownTime < 0) { - return; - } - this.maxCountDownTime = maxCountDownTime; - count_down_label.setVisibility(View.VISIBLE); - String downString = String.format("请注意门禁将于 %ds 后关闭", this.maxCountDownTime); - count_down_label.setText(downString); - } + /** + * 加载人脸识别信息 + */ + @Subscribe(threadMode = ThreadMode.MAIN) + public void getQRResult(QRCodeEvent qrCodeEvent) { + if (qrCodeEvent.getMsg().equals("不是会员")) { + // 这个是非会员进入现场 + this.showStrangerDialog(); + return; + } + CrashReport.postCatchedException(new Throwable("接受到命令 " + qrCodeEvent.getMsg())); + // 监听到头像 + int code = qrCodeEvent.getAction(); + try { + tvTip.setText(Html.fromHtml(qrCodeEvent.getMsg())); + } catch (Exception e) { + Log.e(TAG, "getQRResultError: ", e); + } + switch (code) { + case QR_EVENT_ACTION_LOADING: + qrCodePbCover.setVisibility(View.VISIBLE); + qrCodePbCover.show(); + break; + case QR_EVENT_ACTION_OPEN_DOOR: + case QR_EVENT_ACTION_FAILED: + qrCodePbCover.setVisibility(View.GONE); + qrCodePbCover.hide(); + break; + default: + break; + } + } - public static final int maxTime = 15; - public int maxCountDownTime = 15; + @OnClick({R.id.gust_info_view, R.id.btn_refresh, R.id.btn_last_day, R.id.btn_next_day}) + void onClick(View view) { + switch (view.getId()) { + case R.id.gust_info_view: + eggClickUtil.checkoutHideFunction(); + break; - private SDErrorDialog errorDialog; + case R.id.btn_refresh: + // TODO: wyb, 2020-07-29, 刷新逻辑. + break; + case R.id.btn_last_day: + // TODO: wyb, 2020-07-29, 上一天 需要重新加载新的url. + break; - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - //不做什么事情,只是计算屏幕的高宽 - initScreen(); - //注册消息bus - EventBus.getDefault().register(this); - //初始化设置视图 - configView(); - // 应该是原来的保持屏幕常亮的代码 - getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - order_view.loadUrl("https://www.baidu.com"); - //启动Service - Intent socketService = new Intent(this, ClientService.class); - startService(socketService); - } + case R.id.btn_next_day: + // TODO: wyb, 2020-07-29, 下一天 需要重新加载新的url. + break; - @Override - protected void onResume() { - super.onResume(); - } + default: + break; + } + } - private void initScreen() { - WindowManager manager = getWindowManager(); - DisplayMetrics outMetrics = new DisplayMetrics(); - manager.getDefaultDisplay().getMetrics(outMetrics); - int mScreenW = outMetrics.widthPixels; - int mScreenH = outMetrics.heightPixels; - Log.d("sander", mScreenW + "==== " + mScreenH); - } + private void initScreen() { + WindowManager manager = getWindowManager(); + DisplayMetrics outMetrics = new DisplayMetrics(); + manager.getDefaultDisplay().getMetrics(outMetrics); + int mScreenW = outMetrics.widthPixels; + int mScreenH = outMetrics.heightPixels; + Log.d("sander", mScreenW + "==== " + mScreenH); + } - public void setCurrentStatus(int current_status) { - // 控制样式 - if(1 == current_status){ - this.sb_string_label.setVisibility(View.VISIBLE); - } - } + private void initQrIcon() { + Integer venueId = SDAppConfig.getInstance().getVenueId(); - public void configView() { - this.setCurrentStatus(1); - eggClickUtil = new EggClickUtil(() -> { - Intent intent = new Intent(MainActivity.this, SDSettingActivity.class); - startActivity(intent); - }); - } + if (venueId != 0) { + Bitmap qrImage = QRCodeUtil.createQRImage(venueId + "", qrCodeIvEnter.getWidth(), qrCodeIvEnter.getHeight()); + qrCodeIvEnter.setImageBitmap(qrImage); + } - /** - * 加载人脸识别信息 - */ - @Subscribe(threadMode = ThreadMode.MAIN) - public void getQRResult(QRCodeEvent qrCodeEvent) { - if (qrCodeEvent.getMsg().equals("不是会员")){ - // 这个是非会员进入现场 - this.showStrangerDialog(); - return; - } - CrashReport.postCatchedException(new Throwable("接受到命令 " + qrCodeEvent.getMsg())); - // 监听到头像 - welcome_label.setText(String.format("欢迎%s进场", "张三")); - int code = qrCodeEvent.getAction(); - switch (code){ - case 1: - // TODO 通过处理结果调整页面显示 - } - } + } - @Override - protected void onStop() { - super.onStop(); - } + private void configView() { + eggClickUtil = new EggClickUtil(() -> { + Intent intent = new Intent(MainActivity.this, SDSettingActivity.class); + startActivity(intent); + }); + } - @Override - protected void onDestroy() { - super.onDestroy(); - if (EventBus.getDefault().isRegistered(this)) { - EventBus.getDefault().unregister(this); - } - } - - public void showStrangerDialog(){ - if (errorDialog == null){ - errorDialog = new SDErrorDialog(this); - } - errorDialog.showDialog(); - } - - @OnClick({R.id.gust_info_view}) void onClick(View view){ - if (view.getId() == R.id.gust_info_view){ - eggClickUtil.checkoutHideFunction(); - } - } + private void showStrangerDialog() { + if (errorDialog == null) { + errorDialog = new SDErrorDialog(this); + } + errorDialog.showDialog(); + } } diff --git a/app/src/main/java/com/ydd/sportfaceid/config/SDAppConfig.java b/app/src/main/java/com/ydd/sportfaceid/config/SDAppConfig.java index 1c81ae1..8464211 100644 --- a/app/src/main/java/com/ydd/sportfaceid/config/SDAppConfig.java +++ b/app/src/main/java/com/ydd/sportfaceid/config/SDAppConfig.java @@ -3,78 +3,77 @@ package com.ydd.sportfaceid.config; import android.content.Context; import android.content.SharedPreferences; import android.text.TextUtils; + import com.ydd.sportfaceid.netty.message.DeviceType; public class SDAppConfig { - public static SDAppConfig config = null; - private Context mContext; - private SharedPreferences sp; - private SharedPreferences.Editor sp_editor; + private static SDAppConfig config; - private String KEY_CACHE = "KEY_CACHE"; + private final String KEY_CACHE = "KEY_CACHE"; + private final String STORE_VENUE = "STORE_VENUE"; + private final String STORE_DEVICE_TYPE = "STORE_DEVICE_TYPE"; - private String STORE_VENUE = "STORE_VENUE"; - private String STORE_DEVICE_TYPE = "STORE_DEVICE_TYPE"; - /** - * 场馆ID - */ - private Integer venueId; - private DeviceType deviceType; + private SharedPreferences sp; + private SharedPreferences.Editor spEditor; + /** + * 场馆ID + */ + private Integer venueId; + private DeviceType deviceType; - public static SDAppConfig getInstance(){ - synchronized (SDAppConfig.class){ - if (config == null){ - config = new SDAppConfig(); - } - } - return config; - } + private SDAppConfig() { + } - public void init(Context context){ - this.mContext = context; - synchronized (SDAppConfig.class){ - if (sp == null){ - sp = this.mContext.getSharedPreferences(KEY_CACHE, Context.MODE_PRIVATE); - sp_editor = sp.edit(); - configData(); - } - } - } + public static SDAppConfig getInstance() { + synchronized (SDAppConfig.class) { + if (config == null) { + config = new SDAppConfig(); + } + } + return config; + } - public void configData(){ - Integer storeVenueId = sp.getInt(STORE_VENUE, 0); - if (storeVenueId != null){ - this.venueId = storeVenueId; - } - String storeType = sp.getString(STORE_DEVICE_TYPE, "ENTER"); - if (!TextUtils.isEmpty(storeType)){ - this.deviceType = DeviceType.valueOf(storeType); - } - configSet(venueId,deviceType); - } + public void init(Context context) { + synchronized (SDAppConfig.class) { + if (sp == null) { + sp = context.getSharedPreferences(KEY_CACHE, Context.MODE_PRIVATE); + spEditor = sp.edit(); + configData(); + } + } + } - public void configSet(Integer venueId,DeviceType deviceType){ - this.venueId = venueId; - this.deviceType = deviceType; - sp_editor.putInt(STORE_VENUE,venueId); - sp_editor.putString(STORE_DEVICE_TYPE,deviceType.name()); - sp_editor.commit(); - } + public void configData() { + this.venueId = sp.getInt(STORE_VENUE, 0); + String storeType = sp.getString(STORE_DEVICE_TYPE, "ENTER"); + if (!TextUtils.isEmpty(storeType)) { + this.deviceType = DeviceType.valueOf(storeType); + } + configSet(venueId, deviceType); + } - public Integer getVenueId() { - return venueId; - } + public void configSet(Integer venueId, DeviceType deviceType) { + this.venueId = venueId; + this.deviceType = deviceType; + spEditor.putInt(STORE_VENUE, venueId); + spEditor.putString(STORE_DEVICE_TYPE, deviceType.name()); + spEditor.commit(); + } - public void setVenueId(Integer venueId) { - this.venueId = venueId; - } + public Integer getVenueId() { + return venueId; + } - public DeviceType getDeviceType() { - return deviceType; - } + public void setVenueId(Integer venueId) { + this.venueId = venueId; + } - public void setDeviceType(DeviceType deviceType) { - this.deviceType = deviceType; - } + public DeviceType getDeviceType() { + return deviceType; + } + + public void setDeviceType(DeviceType deviceType) { + this.deviceType = deviceType; + } } diff --git a/app/src/main/java/com/ydd/sportfaceid/event/QRCodeEvent.java b/app/src/main/java/com/ydd/sportfaceid/event/QRCodeEvent.java index 509d895..e5b73cf 100644 --- a/app/src/main/java/com/ydd/sportfaceid/event/QRCodeEvent.java +++ b/app/src/main/java/com/ydd/sportfaceid/event/QRCodeEvent.java @@ -6,6 +6,10 @@ package com.ydd.sportfaceid.event; * @date 08/12/2017 11:16 PM */ public class QRCodeEvent { + public static final int QR_EVENT_ACTION_LOADING = 1; + public static final int QR_EVENT_ACTION_OPEN_DOOR = 2; + public static final int QR_EVENT_ACTION_FAILED = 3; + private int action; private String msg; diff --git a/app/src/main/java/com/ydd/sportfaceid/netty/message/MessageType.java b/app/src/main/java/com/ydd/sportfaceid/netty/message/MessageType.java index df5beda..304dcf7 100644 --- a/app/src/main/java/com/ydd/sportfaceid/netty/message/MessageType.java +++ b/app/src/main/java/com/ydd/sportfaceid/netty/message/MessageType.java @@ -2,10 +2,11 @@ package com.ydd.sportfaceid.netty.message; public enum MessageType { LOAD("加载"), - OPENDOOR("开门"), + OPEN_DOOR("开门"), FAILED("开门校验失败"); private String message; + MessageType(String message) { this.message = message; } diff --git a/app/src/main/java/com/ydd/sportfaceid/service/MessageService.java b/app/src/main/java/com/ydd/sportfaceid/service/MessageService.java index 564c4d7..2396e9c 100644 --- a/app/src/main/java/com/ydd/sportfaceid/service/MessageService.java +++ b/app/src/main/java/com/ydd/sportfaceid/service/MessageService.java @@ -2,14 +2,18 @@ package com.ydd.sportfaceid.service; import android.util.Base64; +import android.util.Log; import com.ydd.sportfaceid.BuildConfig; -import com.ydd.sportfaceid.event.MessageEvent; import com.ydd.sportfaceid.event.QRCodeEvent; import com.ydd.sportfaceid.netty.message.MessageDTO; import com.ydd.sportfaceid.utils.AppLogger; + +import org.greenrobot.eventbus.EventBus; + import java.io.IOException; import java.util.UUID; + import Net.PC15.Command.CommandDetial; import Net.PC15.Connector.ConnectorAllocator; import Net.PC15.Connector.E_ControllerType; @@ -24,7 +28,6 @@ import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; import okhttp3.ResponseBody; -import org.greenrobot.eventbus.EventBus; /** * 消息服务 @@ -35,105 +38,104 @@ import org.greenrobot.eventbus.EventBus; */ public class MessageService { - private final static String TAG = "MessageService"; + private final static String TAG = "MessageService"; + static private MessageService sInstance; - static private MessageService sInstance; + static public MessageService getInstance() { + if (sInstance == null) { + synchronized (MessageService.class) { + if (sInstance == null) { + sInstance = new MessageService(); + } + } + } + return sInstance; + } - static public MessageService getInstance() { - if (sInstance == null) { - synchronized (MessageService.class) { - if (sInstance == null) { - sInstance = new MessageService(); - } - } - } - return sInstance; - } + /** + * 解析并执行接受服务器消息 + * + * @param message + */ + public void execute(MessageDTO message) { + switch (message.getMessageType()) { + case LOAD: + // TODO 安卓获取通知加载页面 (进入加载页面,显示欢迎用户的消息) + Log.d(TAG, "LOADING" + message.getMessage()); + EventBus.getDefault().post(new QRCodeEvent(QRCodeEvent.QR_EVENT_ACTION_LOADING, message.getMessage())); + break; + case OPEN_DOOR: + // TODO 安卓获取通知开门的消息 无需校验,直接操作开门 + // 进入一个页面,然后显示倒计时,回到主页 + Log.d(TAG, "OPEN_DOOR" + message.getMessage()); + EventBus.getDefault().post(new QRCodeEvent(QRCodeEvent.QR_EVENT_ACTION_OPEN_DOOR, message.getMessage())); + break; + case FAILED: + // TODO 安卓获取通知开门失败消息 进入一个页面,然后显示倒计时,回到主页 + Log.d(TAG, "FAILED" + message.getMessage()); + EventBus.getDefault().post(new QRCodeEvent(QRCodeEvent.QR_EVENT_ACTION_FAILED, message.getMessage())); + break; + default: + Log.d(TAG, "default"); + } + } - /** - * 解析并执行接受服务器消息 - * - * @param message - */ - public void execute(MessageDTO message) { - switch (message.getMessageType()){ - case LOAD: - // TODO 安卓获取通知加载页面 (进入加载页面,显示欢迎用户的消息) - System.out.println("LOADING" + message.getMessage()); - EventBus.getDefault().post(new QRCodeEvent(1,message.getMessage())); - break; - case OPENDOOR: - // TODO 安卓获取通知开门的消息 无需校验,直接操作开门 - // 进入一个页面,然后显示倒计时,回到主页 - EventBus.getDefault().post(new QRCodeEvent(2,message.getMessage())); - System.out.println("OPENDOOR" + message.getMessage()); - break; - case FAILED: - // TODO 安卓获取通知开门失败消息 进入一个页面,然后显示倒计时,回到主页 - EventBus.getDefault().post(new QRCodeEvent(3,message.getMessage())); - System.out.println("FAILED" + message.getMessage()); - break; - default: - System.out.println("default"); - } - } + /** + * 门禁开门 + */ + public void openDoor(int ivalue) { + try { + AppLogger.getInstance().writeLog("----init open door tcp ----"); + ConnectorAllocator connector = ConnectorAllocator.GetAllocator(); + TCPClientDetial tcpClientDetial = new TCPClientDetial(BuildConfig.DOOR_SERVER_IP, Integer.valueOf(BuildConfig.DOOR_SERVER_PORT)); + connector.GetCommandCount(tcpClientDetial); + connector.OpenForciblyConnect(tcpClientDetial); + CommandDetial detial = new CommandDetial(); + detial.Connector = tcpClientDetial; + detial.Identity = new FC8800Identity(BuildConfig.DOOR_SN, BuildConfig.DOOR_PWD, E_ControllerType.FC8900); + OpenDoor_Parameter openDoorParameter = new OpenDoor_Parameter(detial); + openDoorParameter.Door.SetDoor(ivalue, 1); + OpenDoor openDoor = new OpenDoor(openDoorParameter); + boolean command = connector.AddCommand(openDoor); + if (openDoor.getIsTimeout()) { + AppLogger.getInstance().writeLog("----open door timeout ----"); + } + } catch (Exception e) { + AppLogger.getInstance().writeLog("----open door error ----", e.getMessage()); + } + } - /** - * 门禁开门 - */ - public void openDoor(int ivalue) { - try { - AppLogger.getInstance().writeLog("----init open door tcp ----"); - ConnectorAllocator connector = ConnectorAllocator.GetAllocator(); - TCPClientDetial tcpClientDetial = new TCPClientDetial(BuildConfig.DOOR_SERVER_IP, Integer.valueOf(BuildConfig.DOOR_SERVER_PORT)); - connector.GetCommandCount(tcpClientDetial); - connector.OpenForciblyConnect(tcpClientDetial); - CommandDetial detial = new CommandDetial(); - detial.Connector = tcpClientDetial; - detial.Identity = new FC8800Identity(BuildConfig.DOOR_SN, BuildConfig.DOOR_PWD, E_ControllerType.FC8900); - OpenDoor_Parameter openDoor_parameter = new OpenDoor_Parameter(detial); - openDoor_parameter.Door.SetDoor(ivalue, 1); - OpenDoor openDoor = new OpenDoor(openDoor_parameter); - boolean command = connector.AddCommand(openDoor); - if (openDoor.getIsTimeout()) { - AppLogger.getInstance().writeLog("----open door timeout ----"); - } - } catch (Exception e) { - AppLogger.getInstance().writeLog("----open door error ----", e.getMessage()); - } - } + /** + * 上传识别头像 + * + * @param faceImageBase64 + */ + public Integer uploadFace(String faceImageBase64) throws IOException { + String url = "http://192.168.1.111/subject/photo"; + byte[] buffer = Base64.decode(faceImageBase64, Base64.DEFAULT); + OkHttpClient client = new OkHttpClient(); + RequestBody requestBody = new MultipartBody.Builder() + .setType(MultipartBody.FORM) + .addFormDataPart("photo", System.currentTimeMillis() + "", RequestBody.create(MediaType.parse("multipart/form-data"), buffer)) + .build(); + Request request = new Request.Builder() + .header("Authorization", "Client-ID " + UUID.randomUUID()) + .url(url) + .post(requestBody) + .build(); - /** - * 上传识别头像 - * - * @param faceImageBase64 - */ - public Integer uploadFace(String faceImageBase64) throws IOException { - String url = "http://192.168.1.111/subject/photo"; - byte[] buffer = Base64.decode(faceImageBase64, Base64.DEFAULT); - OkHttpClient client = new OkHttpClient(); - RequestBody requestBody = new MultipartBody.Builder() - .setType(MultipartBody.FORM) - .addFormDataPart("photo", System.currentTimeMillis() + "", RequestBody.create(MediaType.parse("multipart/form-data"), buffer)) - .build(); - Request request = new Request.Builder() - .header("Authorization", "Client-ID " + UUID.randomUUID()) - .url(url) - .post(requestBody) - .build(); + Response response = client.newCall(request).execute(); + if (!response.isSuccessful()) { + throw new IOException("Unexpected code " + response); + } - Response response = client.newCall(request).execute(); - if (!response.isSuccessful()) { - throw new IOException("Unexpected code " + response); - } - - ResponseBody responseBody = response.body(); + ResponseBody responseBody = response.body(); // AddFaceResponse faceResponse = JsonMapper.fromJson(responseBody.string(), AddFaceResponse.class); // if (faceResponse.getCode() == 0) { // return faceResponse.getData().getId(); // } - return -1; - } + return -1; + } } 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 aa82530..30cf025 100644 --- a/app/src/main/java/com/ydd/sportfaceid/setting/SDSettingActivity.java +++ b/app/src/main/java/com/ydd/sportfaceid/setting/SDSettingActivity.java @@ -1,58 +1,124 @@ package com.ydd.sportfaceid.setting; import android.os.Bundle; +import android.text.TextUtils; +import android.util.Log; import android.view.View; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.RadioButton; +import android.widget.RadioGroup; +import android.widget.Spinner; -import android.widget.TextView; -import android.widget.Toast; import com.ydd.sportfaceid.R; import com.ydd.sportfaceid.config.SDAppConfig; import com.ydd.sportfaceid.main.SDBaseActivity; - -import butterknife.BindView; -import butterknife.OnClick; import com.ydd.sportfaceid.netty.message.DeviceType; +import butterknife.BindView; +import butterknife.ButterKnife; +import butterknife.OnClick; + public class SDSettingActivity extends SDBaseActivity { + public static final String TAG = "SDSettingActivity_TAG"; + @BindView(R.id.venue_cell) + Spinner venueCellView; - @BindView(R.id.venue_cell) - TextView venue_cell; + @BindView(R.id.venue_action) + RadioGroup venueActionView; - @BindView(R.id.device_type_cell) - TextView device_type_cell; + private String spinnerValue; - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_sdsetting); - } + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_sdsetting); + ButterKnife.bind(this); + initSpinner(); + } - private void setConfig(){ - Integer venueId = Integer.parseInt(venue_cell.getText().toString()); - DeviceType deviceType = DeviceType.valueOf(device_type_cell.getText().toString()); - SDAppConfig.getInstance().configSet(venueId,deviceType); - showToast("设置成功!"); - onGoToMainAction(); - } + @Override + public void onBackPressed() { + super.onBackPressed(); + this.onGoToMainAction(); + } - public void onGoToMainAction(){ - finish(); - } + @OnClick({R.id.iv_back, R.id.confirm_button}) + public void OnClick(View view) { + switch (view.getId()) { + case R.id.iv_back: + this.onGoToMainAction(); + break; + case R.id.confirm_button: + setConfig(); + break; + default: + break; + } + } - @OnClick({R.id.back_button,R.id.confirm_button}) void OnClick(View view){ - switch (view.getId()){ - case R.id.back_button: - this.onGoToMainAction(); - break; - case R.id.confirm_button: - setConfig(); - } - } + private void setConfig() { + try { + if (TextUtils.isEmpty(spinnerValue)) { + showToast("未选择场馆!"); + return; + } + + Integer venueId = Integer.parseInt(spinnerValue); + RadioButton radioButton = findCheckedRadioButton(); + + if (radioButton == null) { + showToast("设置失败!请稍后尝试!"); + return; + } + + String deviceTypeStr = (String) radioButton.getTag(); + DeviceType deviceType = DeviceType.valueOf(deviceTypeStr); + + SDAppConfig.getInstance().configSet(venueId, deviceType); + showToast("设置成功!"); + onGoToMainAction(); + } catch (Exception e) { + Log.e(TAG, "setConfigError: ", e); + showToast("设置失败!请稍后尝试!"); + } + } + + private RadioButton findCheckedRadioButton() { + for (int i = 0; i < venueActionView.getChildCount(); i++) { + RadioButton child = (RadioButton) venueActionView.getChildAt(i); + if (child.isChecked()) { + return child; + } + } + return null; + } + + private void onGoToMainAction() { + finish(); + } + + 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); + + venueCellView.setAdapter(adapter); + venueCellView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + @Override + public void onItemSelected(AdapterView parent, View view, int position, long id) { + spinnerValue = stringArray[position]; + } + + @Override + public void onNothingSelected(AdapterView parent) { + + } + }); + // TODO: wyb, 2020-07-29, 这里可以设置为当前场馆的index. + venueCellView.setSelection(0, false); + } - @Override - public void onBackPressed() { - super.onBackPressed(); - this.onGoToMainAction(); - } } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index ee5bb46..d682b04 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -13,78 +13,126 @@ android:layout_width="match_parent" android:layout_height="65dp"/> + + + + +