sunnnl

main 수정, timer 구현

Showing 36 changed files with 329 additions and 28 deletions
...@@ -12,19 +12,19 @@ ...@@ -12,19 +12,19 @@
12 android:roundIcon="@mipmap/ic_launcher_round" 12 android:roundIcon="@mipmap/ic_launcher_round"
13 android:supportsRtl="true" 13 android:supportsRtl="true"
14 android:theme="@style/AppTheme"> 14 android:theme="@style/AppTheme">
15 - <activity android:name=".ui.SplashActivity" 15 + <activity android:name=".ui.VideoCheckActivity"></activity>
16 - android:screenOrientation="fullSensor" 16 + <activity android:name=".ui.DeviceManagerActivity" />
17 - android:noHistory="true"> 17 + <activity android:name=".ui.RemoteControlRecordActivity" />
18 - 18 + <activity
19 - </activity> 19 + android:name=".ui.SplashActivity"
20 - <activity android:name=".ui.MainActivity" > 20 + android:noHistory="true"
21 - 21 + android:screenOrientation="fullSensor" />
22 + <activity android:name=".ui.MainActivity">
22 <intent-filter> 23 <intent-filter>
23 <action android:name="android.intent.action.MAIN" /> 24 <action android:name="android.intent.action.MAIN" />
24 25
25 <category android:name="android.intent.category.LAUNCHER" /> 26 <category android:name="android.intent.category.LAUNCHER" />
26 </intent-filter> 27 </intent-filter>
27 -
28 </activity> 28 </activity>
29 </application> 29 </application>
30 30
......
1 +package com.sunnni.smartdoorlock.ui;
2 +
3 +import androidx.appcompat.app.AppCompatActivity;
4 +
5 +import android.os.Bundle;
6 +
7 +import com.sunnni.smartdoorlock.R;
8 +
9 +public class DeviceManagerActivity extends AppCompatActivity {
10 +
11 + @Override
12 + protected void onCreate(Bundle savedInstanceState) {
13 + super.onCreate(savedInstanceState);
14 + setContentView(R.layout.activity_device_manager);
15 + }
16 +}
...@@ -2,32 +2,163 @@ package com.sunnni.smartdoorlock.ui; ...@@ -2,32 +2,163 @@ package com.sunnni.smartdoorlock.ui;
2 2
3 import androidx.appcompat.app.AppCompatActivity; 3 import androidx.appcompat.app.AppCompatActivity;
4 import androidx.appcompat.widget.Toolbar; 4 import androidx.appcompat.widget.Toolbar;
5 +import androidx.constraintlayout.widget.ConstraintLayout;
5 6
7 +import android.annotation.SuppressLint;
8 +import android.content.Intent;
6 import android.os.Bundle; 9 import android.os.Bundle;
10 +import android.os.CountDownTimer;
11 +import android.view.View;
12 +import android.widget.Button;
13 +import android.widget.ImageView;
14 +import android.widget.TextView;
7 15
8 import com.sunnni.smartdoorlock.R; 16 import com.sunnni.smartdoorlock.R;
9 17
18 +import org.w3c.dom.Text;
19 +
10 import java.util.Objects; 20 import java.util.Objects;
21 +import java.util.Timer;
22 +import java.util.TimerTask;
23 +
24 +// TODO: 타이머 구현
25 +// TODO: drawer layout 구현
11 26
12 public class MainActivity extends AppCompatActivity { 27 public class MainActivity extends AppCompatActivity {
13 28
14 - private Toolbar mToolbar; 29 + private Button mBtnTagControl;
30 + private ImageView mBtnTagControlBackground;
31 + private TextView mTvTagButtonStatus, mTvTagButtonStatusDetail;
32 +
33 + TagTimer timer;
15 34
16 @Override 35 @Override
17 protected void onCreate(Bundle savedInstanceState) { 36 protected void onCreate(Bundle savedInstanceState) {
18 super.onCreate(savedInstanceState); 37 super.onCreate(savedInstanceState);
19 setContentView(R.layout.activity_main); 38 setContentView(R.layout.activity_main);
20 39
21 - setToolbar(); 40 + Toolbar mToolbar = findViewById(R.id.toolbar_main);
41 + setToolbar(mToolbar);
42 +
43 + init();
44 + timer = new TagTimer(5 * 1000, 1000, 5);
22 } 45 }
23 46
24 // 툴바 설정 47 // 툴바 설정
25 - private void setToolbar(){ 48 + private void setToolbar(Toolbar toolbar) {
26 - mToolbar = findViewById(R.id.toolbar_main); 49 + setSupportActionBar(toolbar);
27 - setSupportActionBar(mToolbar);
28 Objects.requireNonNull(getSupportActionBar()).setDisplayShowCustomEnabled(true); 50 Objects.requireNonNull(getSupportActionBar()).setDisplayShowCustomEnabled(true);
29 getSupportActionBar().setDisplayShowTitleEnabled(false); 51 getSupportActionBar().setDisplayShowTitleEnabled(false);
30 getSupportActionBar().setDisplayHomeAsUpEnabled(true); 52 getSupportActionBar().setDisplayHomeAsUpEnabled(true);
31 getSupportActionBar().setHomeAsUpIndicator(R.drawable.baseline_menu_white_24); 53 getSupportActionBar().setHomeAsUpIndicator(R.drawable.baseline_menu_white_24);
32 } 54 }
55 +
56 + private void init() {
57 + mBtnTagControl = findViewById(R.id.btn_tag_control);
58 + mBtnTagControlBackground = findViewById(R.id.btn_tag_control_back);
59 +
60 + mTvTagButtonStatus = findViewById(R.id.tv_tag_status);
61 + mTvTagButtonStatusDetail = findViewById(R.id.tv_tag_status_detail);
62 +
63 + mBtnTagControl.setOnClickListener(new View.OnClickListener() {
64 + @Override
65 + public void onClick(View v) {
66 + tagControlManage();
67 + }
68 + });
69 +
70 + ConstraintLayout mClRemoteControl = findViewById(R.id.container_remote_button);
71 + ConstraintLayout mClRemoteRecord = findViewById(R.id.container_record_button);
72 + ConstraintLayout mClDeviceManager = findViewById(R.id.container_device_button);
73 + ConstraintLayout mClVideoRecord = findViewById(R.id.container_video_button);
74 +
75 + mClRemoteControl.setOnClickListener(new View.OnClickListener() {
76 + @Override
77 + public void onClick(View v) {
78 + // 원격 잠금해제 팝업
79 + }
80 + });
81 +
82 + // 원격 잠금해제 기록 화면으로 이동
83 + mClRemoteRecord.setOnClickListener(new View.OnClickListener() {
84 + @Override
85 + public void onClick(View v) {
86 + Intent intent = new Intent(MainActivity.this, RemoteControlRecordActivity.class);
87 + startActivity(intent);
88 + }
89 + });
90 +
91 + // 기기 관리 화면으로 이동
92 + mClDeviceManager.setOnClickListener(new View.OnClickListener() {
93 + @Override
94 + public void onClick(View v) {
95 + Intent intent = new Intent(MainActivity.this, DeviceManagerActivity.class);
96 + startActivity(intent);
97 + }
98 + });
99 +
100 + // 비디오 확인 화면으로 이동
101 + mClVideoRecord.setOnClickListener(new View.OnClickListener() {
102 + @Override
103 + public void onClick(View v) {
104 + Intent intent = new Intent(MainActivity.this, VideoCheckActivity.class);
105 + startActivity(intent);
106 + }
107 + });
108 + }
109 +
110 + // 도어락 태그 버튼 상태에 따라 뷰 변경
111 + @SuppressLint("SetTextI18n")
112 + private void tagControlManage() {
113 + if (mBtnTagControl.isSelected()) {
114 + // 타이머 종료
115 + timer.cancel();
116 + timer.reset();
117 + mBtnTagControl.setText(R.string.button_on);
118 + mTvTagButtonStatus.setText(R.string.tag_status_off);
119 + mTvTagButtonStatusDetail.setText(R.string.tag_status_off_detail);
120 + } else {
121 + // 타이머 시작
122 + timer.start();
123 + mBtnTagControl.setText(R.string.button_off);
124 + mTvTagButtonStatus.setText(R.string.tag_status_on);
125 + mTvTagButtonStatusDetail.setText(R.string.tag_status_on_detail);
126 + }
127 + mBtnTagControl.setSelected(!mBtnTagControl.isSelected());
128 + mBtnTagControlBackground.setSelected(mBtnTagControl.isSelected());
129 + }
130 +
131 + class TagTimer extends CountDownTimer {
132 +
133 + int count;
134 +
135 + public TagTimer(long millisInFuture, long countDownInterval, int count) {
136 + super(millisInFuture, countDownInterval);
137 + this.count = count;
138 + }
139 +
140 + @SuppressLint("SetTextI18n")
141 + @Override
142 + public void onTick(long millisUntilFinished) {
143 + mTvTagButtonStatusDetail.setText(count + getString(R.string.tag_status_on_detail));
144 + count--;
145 + }
146 +
147 + @Override
148 + public void onFinish() {
149 + count = 5;
150 +
151 + mBtnTagControl.setText(getString(R.string.button_on));
152 +
153 + mTvTagButtonStatus.setText(getString(R.string.tag_status_off));
154 + mTvTagButtonStatusDetail.setText(getString(R.string.tag_status_off_detail));
155 +
156 + mBtnTagControl.setSelected(!mBtnTagControl.isSelected());
157 + mBtnTagControlBackground.setSelected(mBtnTagControl.isSelected());
158 + }
159 +
160 + public void reset() {
161 + count = 5;
162 + }
163 + }
33 } 164 }
...\ No newline at end of file ...\ No newline at end of file
......
1 +package com.sunnni.smartdoorlock.ui;
2 +
3 +import androidx.appcompat.app.AppCompatActivity;
4 +import androidx.appcompat.widget.Toolbar;
5 +
6 +import android.os.Bundle;
7 +import android.view.View;
8 +
9 +import com.sunnni.smartdoorlock.R;
10 +
11 +import java.util.Objects;
12 +
13 +public class RemoteControlRecordActivity extends AppCompatActivity {
14 +
15 + @Override
16 + protected void onCreate(Bundle savedInstanceState) {
17 + super.onCreate(savedInstanceState);
18 + setContentView(R.layout.activity_remote_control_record);
19 +
20 + Toolbar mToolbar = findViewById(R.id.toolbar_remote_control_record);
21 + setToolbar(mToolbar);
22 + }
23 +
24 + private void setToolbar(Toolbar toolbar){
25 + setSupportActionBar(toolbar);
26 + Objects.requireNonNull(getSupportActionBar()).setDisplayShowCustomEnabled(true);
27 + getSupportActionBar().setDisplayShowTitleEnabled(false);
28 + getSupportActionBar().setDisplayHomeAsUpEnabled(true);
29 + getSupportActionBar().setHomeAsUpIndicator(R.drawable.round_chevron_left_white_24);
30 +
31 + toolbar.setNavigationOnClickListener(new View.OnClickListener() {
32 + @Override
33 + public void onClick(View v) {
34 + finish();
35 + }
36 + });
37 + }
38 +}
1 +package com.sunnni.smartdoorlock.ui;
2 +
3 +import androidx.appcompat.app.AppCompatActivity;
4 +
5 +import android.os.Bundle;
6 +
7 +import com.sunnni.smartdoorlock.R;
8 +
9 +public class VideoCheckActivity extends AppCompatActivity {
10 +
11 + @Override
12 + protected void onCreate(Bundle savedInstanceState) {
13 + super.onCreate(savedInstanceState);
14 + setContentView(R.layout.activity_video_check);
15 + }
16 +}
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
2 <shape xmlns:android="http://schemas.android.com/apk/res/android" 2 <shape xmlns:android="http://schemas.android.com/apk/res/android"
3 android:shape="rectangle"> 3 android:shape="rectangle">
4 4
5 - <solid android:color="#F26612" /> 5 + <solid android:color="#F2661e" />
6 <corners android:radius="100dp" /> 6 <corners android:radius="100dp" />
7 7
8 </shape> 8 </shape>
...\ No newline at end of file ...\ No newline at end of file
......
1 +<vector xmlns:android="http://schemas.android.com/apk/res/android"
2 + android:width="24dp"
3 + android:height="24dp"
4 + android:viewportWidth="24"
5 + android:viewportHeight="24"
6 + android:tint="?attr/colorControlNormal">
7 + <path
8 + android:fillColor="@android:color/white"
9 + android:pathData="M14.71,6.71c-0.39,-0.39 -1.02,-0.39 -1.41,0L8.71,11.3c-0.39,0.39 -0.39,1.02 0,1.41l4.59,4.59c0.39,0.39 1.02,0.39 1.41,0 0.39,-0.39 0.39,-1.02 0,-1.41L10.83,12l3.88,-3.88c0.39,-0.39 0.38,-1.03 0,-1.41z"/>
10 +</vector>
1 +<vector xmlns:android="http://schemas.android.com/apk/res/android"
2 + android:width="24dp"
3 + android:height="24dp"
4 + android:viewportWidth="24"
5 + android:viewportHeight="24"
6 + android:tint="#F2661e"
7 + android:alpha="0.5">
8 + <path
9 + android:fillColor="@android:color/white"
10 + android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2z"/>
11 +</vector>
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<selector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
3 +
4 + <item android:state_selected="true" android:drawable="@drawable/bg_btn_off" />
5 + <item android:state_selected="false" android:drawable="@drawable/bg_btn_on" />
6 +
7 +</selector>
...\ No newline at end of file ...\ No newline at end of file
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<selector xmlns:android="http://schemas.android.com/apk/res/android">
3 +
4 + <item
5 + android:state_selected="false"
6 + android:drawable="@drawable/round_lens_24" />
7 +
8 + <item
9 + android:state_selected="true"
10 + android:drawable="@drawable/round_lens_active_24"/>
11 +
12 +</selector>
...\ No newline at end of file ...\ No newline at end of file
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 + xmlns:app="http://schemas.android.com/apk/res-auto"
4 + xmlns:tools="http://schemas.android.com/tools"
5 + android:layout_width="match_parent"
6 + android:layout_height="match_parent"
7 + tools:context=".ui.DeviceManagerActivity">
8 +
9 +</androidx.constraintlayout.widget.ConstraintLayout>
...\ No newline at end of file ...\ No newline at end of file
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
40 android:id="@+id/btn_tag_control_back" 40 android:id="@+id/btn_tag_control_back"
41 android:layout_width="0dp" 41 android:layout_width="0dp"
42 android:layout_height="0dp" 42 android:layout_height="0dp"
43 - android:src="@drawable/round_lens_24" 43 + android:src="@drawable/selector_btn_tag_back"
44 app:layout_constraintDimensionRatio="1:1" 44 app:layout_constraintDimensionRatio="1:1"
45 app:layout_constraintEnd_toEndOf="parent" 45 app:layout_constraintEnd_toEndOf="parent"
46 app:layout_constraintStart_toStartOf="parent" 46 app:layout_constraintStart_toStartOf="parent"
...@@ -66,8 +66,8 @@ ...@@ -66,8 +66,8 @@
66 style="?android:attr/borderlessButtonStyle" 66 style="?android:attr/borderlessButtonStyle"
67 android:layout_width="0dp" 67 android:layout_width="0dp"
68 android:layout_height="0dp" 68 android:layout_height="0dp"
69 - android:background="@drawable/bg_btn_on" 69 + android:background="@drawable/selector_btn_tag"
70 - android:text="ON" 70 + android:text="@string/button_on"
71 android:textColor="@color/colorMainText" 71 android:textColor="@color/colorMainText"
72 android:textSize="28sp" 72 android:textSize="28sp"
73 app:layout_constraintBottom_toBottomOf="@+id/btn_tag_control_back" 73 app:layout_constraintBottom_toBottomOf="@+id/btn_tag_control_back"
...@@ -79,12 +79,12 @@ ...@@ -79,12 +79,12 @@
79 app:layout_constraintWidth_percent="0.3" /> 79 app:layout_constraintWidth_percent="0.3" />
80 80
81 <TextView 81 <TextView
82 - android:id="@+id/tv_status" 82 + android:id="@+id/tv_tag_status"
83 android:layout_width="wrap_content" 83 android:layout_width="wrap_content"
84 android:layout_height="wrap_content" 84 android:layout_height="wrap_content"
85 android:layout_marginTop="7dp" 85 android:layout_marginTop="7dp"
86 android:fontFamily="@font/g_market_sans_ttf_medium" 86 android:fontFamily="@font/g_market_sans_ttf_medium"
87 - android:text="도어락 태그 꺼짐" 87 + android:text="@string/tag_status_off"
88 android:textColor="@color/colorMainText" 88 android:textColor="@color/colorMainText"
89 android:textSize="17sp" 89 android:textSize="17sp"
90 app:layout_constraintEnd_toEndOf="parent" 90 app:layout_constraintEnd_toEndOf="parent"
...@@ -92,17 +92,17 @@ ...@@ -92,17 +92,17 @@
92 app:layout_constraintTop_toBottomOf="@+id/btn_tag_control_back" /> 92 app:layout_constraintTop_toBottomOf="@+id/btn_tag_control_back" />
93 93
94 <TextView 94 <TextView
95 - android:id="@+id/tv_status_detail" 95 + android:id="@+id/tv_tag_status_detail"
96 android:layout_width="wrap_content" 96 android:layout_width="wrap_content"
97 android:layout_height="wrap_content" 97 android:layout_height="wrap_content"
98 android:layout_marginTop="7dp" 98 android:layout_marginTop="7dp"
99 android:fontFamily="@font/g_market_sans_ttf_light" 99 android:fontFamily="@font/g_market_sans_ttf_light"
100 - android:text="버튼을 누른 후 스캔해주세요" 100 + android:text="@string/tag_status_off_detail"
101 android:textColor="@color/colorMainText" 101 android:textColor="@color/colorMainText"
102 android:textSize="15sp" 102 android:textSize="15sp"
103 app:layout_constraintEnd_toEndOf="parent" 103 app:layout_constraintEnd_toEndOf="parent"
104 app:layout_constraintStart_toStartOf="parent" 104 app:layout_constraintStart_toStartOf="parent"
105 - app:layout_constraintTop_toBottomOf="@+id/tv_status" /> 105 + app:layout_constraintTop_toBottomOf="@+id/tv_tag_status" />
106 106
107 </androidx.constraintlayout.widget.ConstraintLayout> 107 </androidx.constraintlayout.widget.ConstraintLayout>
108 108
...@@ -173,7 +173,7 @@ ...@@ -173,7 +173,7 @@
173 android:layout_height="wrap_content" 173 android:layout_height="wrap_content"
174 android:layout_marginTop="10dp" 174 android:layout_marginTop="10dp"
175 android:fontFamily="@font/g_market_sans_ttf_medium" 175 android:fontFamily="@font/g_market_sans_ttf_medium"
176 - android:text="원격 잠금해제" 176 + android:text="@string/menu_remote_control"
177 android:textColor="@color/colorBackground" 177 android:textColor="@color/colorBackground"
178 android:textSize="15sp" 178 android:textSize="15sp"
179 app:layout_constraintEnd_toEndOf="parent" 179 app:layout_constraintEnd_toEndOf="parent"
...@@ -216,7 +216,7 @@ ...@@ -216,7 +216,7 @@
216 android:layout_height="wrap_content" 216 android:layout_height="wrap_content"
217 android:layout_marginTop="10dp" 217 android:layout_marginTop="10dp"
218 android:fontFamily="@font/g_market_sans_ttf_medium" 218 android:fontFamily="@font/g_market_sans_ttf_medium"
219 - android:text="원격 잠금해제 기록" 219 + android:text="@string/menu_remote_control_record"
220 android:textColor="@color/colorBackground" 220 android:textColor="@color/colorBackground"
221 android:textSize="15sp" 221 android:textSize="15sp"
222 app:layout_constraintEnd_toEndOf="parent" 222 app:layout_constraintEnd_toEndOf="parent"
...@@ -259,7 +259,7 @@ ...@@ -259,7 +259,7 @@
259 android:layout_height="wrap_content" 259 android:layout_height="wrap_content"
260 android:layout_marginTop="10dp" 260 android:layout_marginTop="10dp"
261 android:fontFamily="@font/g_market_sans_ttf_medium" 261 android:fontFamily="@font/g_market_sans_ttf_medium"
262 - android:text="기기 관리" 262 + android:text="@string/menu_device_manager"
263 android:textColor="@color/colorBackground" 263 android:textColor="@color/colorBackground"
264 android:textSize="15sp" 264 android:textSize="15sp"
265 app:layout_constraintEnd_toEndOf="parent" 265 app:layout_constraintEnd_toEndOf="parent"
...@@ -302,7 +302,7 @@ ...@@ -302,7 +302,7 @@
302 android:layout_height="wrap_content" 302 android:layout_height="wrap_content"
303 android:layout_marginTop="10dp" 303 android:layout_marginTop="10dp"
304 android:fontFamily="@font/g_market_sans_ttf_medium" 304 android:fontFamily="@font/g_market_sans_ttf_medium"
305 - android:text="비디오 확인" 305 + android:text="@string/menu_video_check"
306 android:textColor="@color/colorBackground" 306 android:textColor="@color/colorBackground"
307 android:textSize="15sp" 307 android:textSize="15sp"
308 app:layout_constraintEnd_toEndOf="parent" 308 app:layout_constraintEnd_toEndOf="parent"
......
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 + xmlns:app="http://schemas.android.com/apk/res-auto"
4 + xmlns:tools="http://schemas.android.com/tools"
5 + android:layout_width="match_parent"
6 + android:layout_height="match_parent"
7 + tools:context=".ui.RemoteControlRecordActivity">
8 +
9 + <androidx.appcompat.widget.Toolbar
10 + android:id="@+id/toolbar_remote_control_record"
11 + android:layout_width="0dp"
12 + android:layout_height="?attr/actionBarSize"
13 + android:background="@color/colorBackground"
14 + app:layout_constraintEnd_toEndOf="parent"
15 + app:layout_constraintStart_toStartOf="parent"
16 + android:elevation="7dp"
17 + app:layout_constraintTop_toTopOf="parent">
18 +
19 + <TextView
20 + android:layout_width="wrap_content"
21 + android:layout_height="wrap_content"
22 + android:fontFamily="@font/g_market_sans_ttf_medium"
23 + android:text="@string/menu_remote_control_record"
24 + android:textColor="@color/colorMainText"
25 + android:textSize="15sp" />
26 +
27 + </androidx.appcompat.widget.Toolbar>
28 +
29 +</androidx.constraintlayout.widget.ConstraintLayout>
...\ No newline at end of file ...\ No newline at end of file
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 + xmlns:app="http://schemas.android.com/apk/res-auto"
4 + xmlns:tools="http://schemas.android.com/tools"
5 + android:layout_width="match_parent"
6 + android:layout_height="match_parent"
7 + tools:context=".ui.VideoCheckActivity">
8 +
9 +</androidx.constraintlayout.widget.ConstraintLayout>
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8"?> 1 <?xml version="1.0" encoding="utf-8"?>
2 <resources> 2 <resources>
3 - <color name="colorPrimary">#6200EE</color> 3 + <color name="colorPrimary">#090938</color>
4 - <color name="colorPrimaryDark">#3700B3</color> 4 + <color name="colorPrimaryDark">#090938</color>
5 <color name="colorAccent">#ffffff</color> 5 <color name="colorAccent">#ffffff</color>
6 6
7 <color name="colorBackground">#090938</color> 7 <color name="colorBackground">#090938</color>
......
1 <resources> 1 <resources>
2 <string name="app_name">SmartDoorLock</string> 2 <string name="app_name">SmartDoorLock</string>
3 <string name="app_name_korean">게이트웨이</string> 3 <string name="app_name_korean">게이트웨이</string>
4 +
5 + <string name="menu_remote_control">원격 잠금해제</string>
6 + <string name="menu_remote_control_record">원격 잠금해제 기록</string>
7 + <string name="menu_device_manager">기기 관리</string>
8 + <string name="menu_video_check">비디오 확인</string>
9 +
10 + <string name="button_on">ON</string>
11 + <string name="button_off">OFF</string>
12 +
13 + <string name="tag_status_off">도어락 태그 꺼짐</string>
14 + <string name="tag_status_off_detail">버튼을 누른 후 스캔해주세요</string>
15 + <string name="tag_status_on">도어락 태그 켜짐</string>
16 + <string name="tag_status_on_detail">초 후 꺼짐</string>
4 </resources> 17 </resources>
......