diff --git a/app/src/main/java/com/example/defenseapplication/home/HomeActivity.kt b/app/src/main/java/com/example/defenseapplication/home/HomeActivity.kt
new file mode 100644
index 0000000..999f9b3
--- /dev/null
+++ b/app/src/main/java/com/example/defenseapplication/home/HomeActivity.kt
@@ -0,0 +1,21 @@
+package com.example.defenseapplication.home
+
+import android.os.Bundle
+import androidx.activity.enableEdgeToEdge
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowInsetsCompat
+import com.example.defenseapplication.R
+
+class HomeActivity : AppCompatActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ enableEdgeToEdge()
+ setContentView(R.layout.home_activity)
+ ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
+ val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
+ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
+ insets
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/defenseapplication/home/HomeMenuFragment.kt b/app/src/main/java/com/example/defenseapplication/home/HomeMenuFragment.kt
new file mode 100644
index 0000000..48df419
--- /dev/null
+++ b/app/src/main/java/com/example/defenseapplication/home/HomeMenuFragment.kt
@@ -0,0 +1,60 @@
+package com.example.defenseapplication.home
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import com.example.defenseapplication.R
+
+// TODO: Rename parameter arguments, choose names that match
+// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
+private const val ARG_PARAM1 = "param1"
+private const val ARG_PARAM2 = "param2"
+
+/**
+ * A simple [Fragment] subclass.
+ * Use the [HomeMenuFragment.newInstance] factory method to
+ * create an instance of this fragment.
+ */
+class HomeMenuFragment : Fragment() {
+ // TODO: Rename and change types of parameters
+ private var param1: String? = null
+ private var param2: String? = null
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ arguments?.let {
+ param1 = it.getString(ARG_PARAM1)
+ param2 = it.getString(ARG_PARAM2)
+ }
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ // Inflate the layout for this fragment
+ return inflater.inflate(R.layout.home_menu_fragment, container, false)
+ }
+
+ companion object {
+ /**
+ * Use this factory method to create a new instance of
+ * this fragment using the provided parameters.
+ *
+ * @param param1 Parameter 1.
+ * @param param2 Parameter 2.
+ * @return A new instance of fragment HomeMenuFragment.
+ */
+ // TODO: Rename and change types and number of parameters
+ @JvmStatic
+ fun newInstance(param1: String, param2: String) =
+ HomeMenuFragment().apply {
+ arguments = Bundle().apply {
+ putString(ARG_PARAM1, param1)
+ putString(ARG_PARAM2, param2)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/defenseapplication/home/PersonalFragment.kt b/app/src/main/java/com/example/defenseapplication/home/PersonalFragment.kt
new file mode 100644
index 0000000..ff2b8db
--- /dev/null
+++ b/app/src/main/java/com/example/defenseapplication/home/PersonalFragment.kt
@@ -0,0 +1,60 @@
+package com.example.defenseapplication.home
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import com.example.defenseapplication.R
+
+// TODO: Rename parameter arguments, choose names that match
+// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
+private const val ARG_PARAM1 = "param1"
+private const val ARG_PARAM2 = "param2"
+
+/**
+ * A simple [Fragment] subclass.
+ * Use the [PersonalFragment.newInstance] factory method to
+ * create an instance of this fragment.
+ */
+class PersonalFragment : Fragment() {
+ // TODO: Rename and change types of parameters
+ private var param1: String? = null
+ private var param2: String? = null
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ arguments?.let {
+ param1 = it.getString(ARG_PARAM1)
+ param2 = it.getString(ARG_PARAM2)
+ }
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ // Inflate the layout for this fragment
+ return inflater.inflate(R.layout.personal_fragment, container, false)
+ }
+
+ companion object {
+ /**
+ * Use this factory method to create a new instance of
+ * this fragment using the provided parameters.
+ *
+ * @param param1 Parameter 1.
+ * @param param2 Parameter 2.
+ * @return A new instance of fragment PersonalFragment.
+ */
+ // TODO: Rename and change types and number of parameters
+ @JvmStatic
+ fun newInstance(param1: String, param2: String) =
+ PersonalFragment().apply {
+ arguments = Bundle().apply {
+ putString(ARG_PARAM1, param1)
+ putString(ARG_PARAM2, param2)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/defenseapplication/login/FaceLoginActivity.kt b/app/src/main/java/com/example/defenseapplication/login/FaceLoginActivity.kt
new file mode 100644
index 0000000..a407e76
--- /dev/null
+++ b/app/src/main/java/com/example/defenseapplication/login/FaceLoginActivity.kt
@@ -0,0 +1,21 @@
+package com.example.defenseapplication.login
+
+import android.os.Bundle
+import androidx.activity.enableEdgeToEdge
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowInsetsCompat
+import com.example.defenseapplication.R
+
+class FaceLoginActivity : AppCompatActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ enableEdgeToEdge()
+ setContentView(R.layout.face_login_activity)
+ ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
+ val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
+ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
+ insets
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/defenseapplication/login/FaceVerificationActivity.kt b/app/src/main/java/com/example/defenseapplication/login/FaceVerificationActivity.kt
new file mode 100644
index 0000000..79bc325
--- /dev/null
+++ b/app/src/main/java/com/example/defenseapplication/login/FaceVerificationActivity.kt
@@ -0,0 +1,21 @@
+package com.example.defenseapplication.login
+
+import android.os.Bundle
+import androidx.activity.enableEdgeToEdge
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowInsetsCompat
+import com.example.defenseapplication.R
+
+class FaceVerificationActivity : AppCompatActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ enableEdgeToEdge()
+ setContentView(R.layout.face_verification_activity)
+ ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
+ val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
+ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
+ insets
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/defenseapplication/login/RegisterSuccessActivity.kt b/app/src/main/java/com/example/defenseapplication/login/RegisterSuccessActivity.kt
new file mode 100644
index 0000000..0b04e1d
--- /dev/null
+++ b/app/src/main/java/com/example/defenseapplication/login/RegisterSuccessActivity.kt
@@ -0,0 +1,21 @@
+package com.example.defenseapplication.login
+
+import android.os.Bundle
+import androidx.activity.enableEdgeToEdge
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowInsetsCompat
+import com.example.defenseapplication.R
+
+class RegisterSuccessActivity : AppCompatActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ enableEdgeToEdge()
+ setContentView(R.layout.register_success_activity)
+ ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
+ val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
+ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
+ insets
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/defenseapplication/view/FaceAnalyzer.kt b/app/src/main/java/com/example/defenseapplication/view/FaceAnalyzer.kt
new file mode 100644
index 0000000..167987b
--- /dev/null
+++ b/app/src/main/java/com/example/defenseapplication/view/FaceAnalyzer.kt
@@ -0,0 +1,4 @@
+package com.example.defenseapplication.view
+
+class FaceAnalyzer {
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/defenseapplication/view/FaceOverlayView.kt b/app/src/main/java/com/example/defenseapplication/view/FaceOverlayView.kt
new file mode 100644
index 0000000..8f7c0f9
--- /dev/null
+++ b/app/src/main/java/com/example/defenseapplication/view/FaceOverlayView.kt
@@ -0,0 +1,2 @@
+package com.example.defenseapplication.view
+
diff --git a/app/src/main/res/drawable/add.png b/app/src/main/res/drawable/add.png
new file mode 100644
index 0000000..e679c1f
Binary files /dev/null and b/app/src/main/res/drawable/add.png differ
diff --git a/app/src/main/res/drawable/common_icons_miniprogram1.png b/app/src/main/res/drawable/common_icons_miniprogram1.png
new file mode 100644
index 0000000..d74ea4d
Binary files /dev/null and b/app/src/main/res/drawable/common_icons_miniprogram1.png differ
diff --git a/app/src/main/res/drawable/common_icons_miniprogram2.png b/app/src/main/res/drawable/common_icons_miniprogram2.png
new file mode 100644
index 0000000..3086877
Binary files /dev/null and b/app/src/main/res/drawable/common_icons_miniprogram2.png differ
diff --git a/app/src/main/res/drawable/cropped_shot.png b/app/src/main/res/drawable/cropped_shot.png
new file mode 100644
index 0000000..5f1e871
Binary files /dev/null and b/app/src/main/res/drawable/cropped_shot.png differ
diff --git a/app/src/main/res/drawable/enter_icon.png b/app/src/main/res/drawable/enter_icon.png
new file mode 100644
index 0000000..2ea64c6
Binary files /dev/null and b/app/src/main/res/drawable/enter_icon.png differ
diff --git a/app/src/main/res/drawable/face_login_gray_bg.xml b/app/src/main/res/drawable/face_login_gray_bg.xml
new file mode 100644
index 0000000..6dbb0ba
--- /dev/null
+++ b/app/src/main/res/drawable/face_login_gray_bg.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/face_verification.png b/app/src/main/res/drawable/face_verification.png
new file mode 100644
index 0000000..c7c9130
Binary files /dev/null and b/app/src/main/res/drawable/face_verification.png differ
diff --git a/app/src/main/res/drawable/home.png b/app/src/main/res/drawable/home.png
new file mode 100644
index 0000000..b11c1b2
Binary files /dev/null and b/app/src/main/res/drawable/home.png differ
diff --git a/app/src/main/res/drawable/home_checked.png b/app/src/main/res/drawable/home_checked.png
new file mode 100644
index 0000000..c683560
Binary files /dev/null and b/app/src/main/res/drawable/home_checked.png differ
diff --git a/app/src/main/res/drawable/info_icon.png b/app/src/main/res/drawable/info_icon.png
new file mode 100644
index 0000000..f575621
Binary files /dev/null and b/app/src/main/res/drawable/info_icon.png differ
diff --git a/app/src/main/res/drawable/low_light.png b/app/src/main/res/drawable/low_light.png
new file mode 100644
index 0000000..7e8b05a
Binary files /dev/null and b/app/src/main/res/drawable/low_light.png differ
diff --git a/app/src/main/res/drawable/mask_group.png b/app/src/main/res/drawable/mask_group.png
new file mode 100644
index 0000000..316b063
Binary files /dev/null and b/app/src/main/res/drawable/mask_group.png differ
diff --git a/app/src/main/res/drawable/message.png b/app/src/main/res/drawable/message.png
new file mode 100644
index 0000000..f1f9244
Binary files /dev/null and b/app/src/main/res/drawable/message.png differ
diff --git a/app/src/main/res/drawable/profile.png b/app/src/main/res/drawable/profile.png
new file mode 100644
index 0000000..1d7b31e
Binary files /dev/null and b/app/src/main/res/drawable/profile.png differ
diff --git a/app/src/main/res/drawable/profile_checked.png b/app/src/main/res/drawable/profile_checked.png
new file mode 100644
index 0000000..f81cf49
Binary files /dev/null and b/app/src/main/res/drawable/profile_checked.png differ
diff --git a/app/src/main/res/drawable/safe.png b/app/src/main/res/drawable/safe.png
new file mode 100644
index 0000000..6798e46
Binary files /dev/null and b/app/src/main/res/drawable/safe.png differ
diff --git a/app/src/main/res/drawable/scan_icon.png b/app/src/main/res/drawable/scan_icon.png
new file mode 100644
index 0000000..90fcf7c
Binary files /dev/null and b/app/src/main/res/drawable/scan_icon.png differ
diff --git a/app/src/main/res/drawable/standard_capture.png b/app/src/main/res/drawable/standard_capture.png
new file mode 100644
index 0000000..0f43f3e
Binary files /dev/null and b/app/src/main/res/drawable/standard_capture.png differ
diff --git a/app/src/main/res/drawable/success.png b/app/src/main/res/drawable/success.png
new file mode 100644
index 0000000..3c5aadd
Binary files /dev/null and b/app/src/main/res/drawable/success.png differ
diff --git a/app/src/main/res/drawable/triangle.png b/app/src/main/res/drawable/triangle.png
new file mode 100644
index 0000000..a9e73c0
Binary files /dev/null and b/app/src/main/res/drawable/triangle.png differ
diff --git a/app/src/main/res/layout/face_login_activity.xml b/app/src/main/res/layout/face_login_activity.xml
new file mode 100644
index 0000000..7ab7322
--- /dev/null
+++ b/app/src/main/res/layout/face_login_activity.xml
@@ -0,0 +1,10 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/face_verification_activity.xml b/app/src/main/res/layout/face_verification_activity.xml
new file mode 100644
index 0000000..b07ec1a
--- /dev/null
+++ b/app/src/main/res/layout/face_verification_activity.xml
@@ -0,0 +1,10 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/home_activity.xml b/app/src/main/res/layout/home_activity.xml
new file mode 100644
index 0000000..d27c75c
--- /dev/null
+++ b/app/src/main/res/layout/home_activity.xml
@@ -0,0 +1,10 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/home_menu_fragment.xml b/app/src/main/res/layout/home_menu_fragment.xml
new file mode 100644
index 0000000..c494a26
--- /dev/null
+++ b/app/src/main/res/layout/home_menu_fragment.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/personal_fragment.xml b/app/src/main/res/layout/personal_fragment.xml
new file mode 100644
index 0000000..e6b85bd
--- /dev/null
+++ b/app/src/main/res/layout/personal_fragment.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/register_success_activity.xml b/app/src/main/res/layout/register_success_activity.xml
new file mode 100644
index 0000000..99e8bb8
--- /dev/null
+++ b/app/src/main/res/layout/register_success_activity.xml
@@ -0,0 +1,10 @@
+
+
+
+
\ No newline at end of file