drew %!s(int64=6) %!d(string=hai) anos
pai
achega
9244a3bc16

BIN=BIN
app/sign.key


+ 5 - 0
app/src/main/java/com/ht/gate/LoginActivity.java

@@ -95,7 +95,12 @@ public class LoginActivity extends AppCompatActivity {
                                 .bindDevice(et.getText().toString()).enqueue(new Callback<Room>() {
                             @Override
                             public void onResponse(@NonNull Call<Room> call, @NonNull Response<Room> response) {
+
                                 if (response.code() == 200) {
+                                    if (response.body().getRoomNo() == null) {
+                                        Toasty.error(LoginActivity.this, "无设备信息").show();
+                                        return;
+                                    }
                                     getSharedPreferences(SettingsActivity.PREF_NAME_SETTINGS, MODE_PRIVATE)
                                             .edit()
                                             .putString(Constants.PREF_ROOM_INFO, response.body().toBase64())

+ 19 - 1
app/src/main/java/com/ht/gate/MainActivity.java

@@ -15,6 +15,7 @@ import android.os.IBinder;
 import android.os.Message;
 import android.util.Log;
 import android.util.TypedValue;
+import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.RelativeLayout;
@@ -143,7 +144,7 @@ public class MainActivity extends AppCompatActivity {
                     }
                     Message msg = new Message();
                     msg.what = HIDE_BAR;
-                    handler.sendMessageDelayed(msg, 1000);
+                    handler.sendMessageDelayed(msg, 500);
                 }
             });
             passwordDialog.show();
@@ -189,6 +190,7 @@ public class MainActivity extends AppCompatActivity {
             for (Meeting meeting : todayMeeting.getMeetings()) {
                 try {
                     Date start = Utils.parseDateTime(meeting.getBeginTimeStr());
+                    start.setTime(start.getTime() - 10 * 60 * 1000);
                     Date end = Utils.parseDateTime(meeting.getEndTimeStr());
                     Date date = new Date();
                     if ((date.equals(start) || date.after(start)) && (date.equals(end) || date.before(end))) {
@@ -252,6 +254,22 @@ public class MainActivity extends AppCompatActivity {
         updateStatus();
     }
 
+    @Override
+    public boolean dispatchTouchEvent(MotionEvent me) {
+        if (me.getAction() == MotionEvent.ACTION_DOWN) {
+            View decorView = getWindow().getDecorView();
+            int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
+                    | View.SYSTEM_UI_FLAG_FULLSCREEN
+                    | View.SYSTEM_UI_FLAG_IMMERSIVE;
+            decorView.setSystemUiVisibility(uiOptions);
+            if (MyApplication.roomInfo != null) {
+                tvRoomName.setText(MyApplication.roomInfo.getRoomName());
+                tvRoomNum.setText(MyApplication.roomInfo.getRoomBizNum());
+            }
+        }
+        return super.dispatchTouchEvent(me);
+    }
+
     @Override
     public void onStart() {
         super.onStart();

+ 8 - 2
app/src/main/java/com/ht/gate/MeetingAdapter.java

@@ -31,7 +31,10 @@ public class MeetingAdapter extends RecyclerView.Adapter<MeetingAdapter.MeetingH
     @SuppressLint("SetTextI18n")
     @Override
     public void onBindViewHolder(@NonNull MeetingHolder holder, int position) {
-        Meeting meeting = MyApplication.todayMeetings.get(position).getMeetings().get(0);
+        if (MyApplication.todayMeetings.isEmpty()) {
+            return;
+        }
+        Meeting meeting = MyApplication.todayMeetings.get(0).getMeetings().get(position);
         holder.tvContent.setText(Utils.formatDateStr(meeting.getBeginDate()) + " "
                 + Utils.getWeekDay(meeting.getBeginDate()) + " "
                 + Utils.getTimeStr(meeting.getBeginTimeStr()) + "-"
@@ -41,7 +44,10 @@ public class MeetingAdapter extends RecyclerView.Adapter<MeetingAdapter.MeetingH
 
     @Override
     public int getItemCount() {
-        return MyApplication.todayMeetings.size();
+        if (MyApplication.todayMeetings.isEmpty()) {
+            return 0;
+        }
+        return MyApplication.todayMeetings.get(0).getMeetings().size();
     }
 
     public class MeetingHolder extends RecyclerView.ViewHolder {

+ 29 - 0
app/src/main/java/com/ht/gate/PasswordDialog.java

@@ -3,6 +3,7 @@ package com.ht.gate;
 import android.content.Context;
 import android.os.Bundle;
 import android.os.Handler;
+import android.os.Message;
 import android.text.TextUtils;
 import android.util.TypedValue;
 import android.view.Gravity;
@@ -19,6 +20,7 @@ import butterknife.ButterKnife;
 public class PasswordDialog extends AppCompatDialog {
 
     private final int MSG_HIDE_PASSWORD = 1;
+    private final int MSG_DISMISS = 2;
 
     public interface DialogListener {
         void onCancel(PasswordDialog dialog);
@@ -48,6 +50,8 @@ public class PasswordDialog extends AppCompatDialog {
                 passwordStr = passwordStr.replaceAll(".", "●");
                 updatePasswordTv();
                 break;
+            case MSG_DISMISS:
+                dismiss();
         }
         return true;
     });
@@ -60,6 +64,25 @@ public class PasswordDialog extends AppCompatDialog {
         this.listener = listener;
     }
 
+    @Override
+    public void show() {
+        // Set the dialog to not focusable.
+        getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
+                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
+
+        // Show the dialog with NavBar hidden.
+        super.show();
+
+        // Set the dialog to focusable again.
+        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
+
+        mHandler.removeMessages(MSG_DISMISS);
+        Message msg = new Message();
+        msg.what = MSG_DISMISS;
+        mHandler.sendMessageDelayed(msg, 60 * 1000);
+    }
+
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -71,6 +94,7 @@ public class PasswordDialog extends AppCompatDialog {
         window.setAttributes(wlp);
         window.setWindowAnimations(R.style.DialogAnimation);
         window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);
+
         View decorView = getWindow().getDecorView();
         int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                 | View.SYSTEM_UI_FLAG_FULLSCREEN
@@ -125,6 +149,11 @@ public class PasswordDialog extends AppCompatDialog {
                                 listener.onConfirm(PasswordDialog.this, password);
                             }
                         }
+
+                        mHandler.removeMessages(MSG_DISMISS);
+                        Message msg = new Message();
+                        msg.what = MSG_DISMISS;
+                        mHandler.sendMessageDelayed(msg, 60 * 1000);
                         break;
                 }
             }

+ 1 - 1
app/src/main/java/com/ht/gate/Utils.java

@@ -27,7 +27,7 @@ public class Utils {
             Date date = dateFormat.parse(dateStr);
             Calendar cal = Calendar.getInstance();
             cal.setTime(date);
-            return weekDays[cal.get(Calendar.DAY_OF_WEEK)];
+            return weekDays[cal.get(Calendar.DAY_OF_WEEK) - 1];
         } catch (Exception e) {
             return "";
         }

+ 53 - 3
app/src/main/java/com/ht/gate/WelcomeActivity.java

@@ -12,10 +12,13 @@ import android.content.Intent;
 import android.content.ServiceConnection;
 import android.content.SharedPreferences;
 import android.os.Bundle;
+import android.os.Handler;
 import android.os.IBinder;
+import android.os.Message;
 import android.text.TextUtils;
 import android.util.Log;
 import android.util.TypedValue;
+import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ImageView;
@@ -49,6 +52,8 @@ import es.dmoral.toasty.Toasty;
 public class WelcomeActivity extends AppCompatActivity {
     private static final String TAG = "WelcomeActivity";
 
+    private static final int HIDE_BAR = 10000;
+
     public static void start(Context context, Meeting meeting, EmpInfo empInfo) {
         Intent intent = new Intent(context, WelcomeActivity.class);
         intent.putExtra("meeting", meeting);
@@ -105,6 +110,18 @@ public class WelcomeActivity extends AppCompatActivity {
         }
     };
 
+    private Handler handler = new Handler(msg -> {
+        switch (msg.what) {
+            case HIDE_BAR:
+                View decorView = getWindow().getDecorView();
+                int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
+                        | View.SYSTEM_UI_FLAG_FULLSCREEN
+                        | View.SYSTEM_UI_FLAG_IMMERSIVE;
+                decorView.setSystemUiVisibility(uiOptions);
+        }
+        return true;
+    });
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -133,6 +150,9 @@ public class WelcomeActivity extends AppCompatActivity {
                         Toasty.normal(WelcomeActivity.this, "密码错误", ContextCompat.getDrawable(WelcomeActivity.this, R.mipmap.toast_icon_warn_fill))
                                 .show();
                     }
+                    Message msg = new Message();
+                    msg.what = HIDE_BAR;
+                    handler.sendMessageDelayed(msg, 500);
                 }
             });
             passwordDialog.show();
@@ -144,8 +164,8 @@ public class WelcomeActivity extends AppCompatActivity {
         rvMeetings.setLayoutManager(new LinearLayoutManager(this));
         rvMeetings.setAdapter(adapter);
 
-        if (empInfo.getHeadShot() != null) {
-            Picasso.get().load(empInfo.getHeadShot()).placeholder(R.mipmap.portrait).into(ivPortrait);
+        if (empInfo.getHalfBodyPhoto() != null) {
+            Picasso.get().load(empInfo.getHalfBodyPhoto()).placeholder(R.mipmap.portrait).into(ivPortrait);
         }
         if (TextUtils.isEmpty(meeting.getWelcomeText())) {
             tvWelcome.setText("欢迎");
@@ -163,11 +183,16 @@ public class WelcomeActivity extends AppCompatActivity {
             }
         }
         tvAdviserName.setText(empInfo.getUserName());
+        if (empInfo.getDescription() == null) {
+            tvIntro.setVisibility(View.GONE);
+        } else {
+            tvIntro.setText(empInfo.getDescription());
+        }
         if (empInfo.getTgStarLevel() != null) {
             tvRate.setText(empInfo.getTgStarLevel().toString());
         } else {
             tvRate.setVisibility(View.GONE);
-            tvRateD.setVisibility(View.VISIBLE);
+            tvRateD.setVisibility(View.GONE);
         }
         if (empInfo.getCertifications() == null || empInfo.getCertifications().isEmpty()) {
             tvCertNo.setVisibility(View.GONE);
@@ -184,6 +209,7 @@ public class WelcomeActivity extends AppCompatActivity {
 
         try {
             Date endTime = Utils.parseDateTime(meeting.getEndTimeStr());
+            endTime.setTime(endTime.getTime() + 60 * 1000);
             Timer timer = new Timer();
             timer.schedule(new TimerTask() {
                 @Override
@@ -228,6 +254,14 @@ public class WelcomeActivity extends AppCompatActivity {
             rlMeetings.setVisibility(View.VISIBLE);
         }
         adapter.notifyDataSetChanged();
+
+        List<Meeting> meetings = new ArrayList<>();
+        for (RoomMeetings todayMeeting : MyApplication.todayMeetings) {
+            meetings.addAll(todayMeeting.getMeetings());
+        }
+        if (meetings.stream().noneMatch(meeting1 -> meeting1.getUuid().equals(meeting.getUuid()))) {
+            finish();
+        }
     }
 
     private void updateStatus() {
@@ -254,6 +288,22 @@ public class WelcomeActivity extends AppCompatActivity {
         updateStatus();
     }
 
+    @Override
+    public boolean dispatchTouchEvent(MotionEvent me) {
+        if (me.getAction() == MotionEvent.ACTION_DOWN) {
+            View decorView = getWindow().getDecorView();
+            int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
+                    | View.SYSTEM_UI_FLAG_FULLSCREEN
+                    | View.SYSTEM_UI_FLAG_IMMERSIVE;
+            decorView.setSystemUiVisibility(uiOptions);
+            if (MyApplication.roomInfo != null) {
+                tvRoomName.setText(MyApplication.roomInfo.getRoomName());
+                tvRoomNum.setText(MyApplication.roomInfo.getRoomBizNum());
+            }
+        }
+        return super.dispatchTouchEvent(me);
+    }
+
     @Override
     public void onStart() {
         super.onStart();

+ 1 - 1
app/src/test/java/com/ht/gate/ExampleUnitTest.java

@@ -24,7 +24,7 @@ public class ExampleUnitTest {
     @Test
     public void testCalendar() throws ParseException {
         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
-        Date date = dateFormat.parse("2020-01-07");
+        Date date = dateFormat.parse("2020-01-14");
         Calendar cal = Calendar.getInstance();
         cal.setTime(date);
         int day = cal.get(Calendar.DAY_OF_WEEK);