11package kr.hs.anu.nobet.presentation.screen.main
22
3+ import android.app.Activity
34import android.content.Intent
45import android.graphics.Color
56import android.graphics.PorterDuff
7+ import android.net.VpnService
68import android.os.Bundle
79import android.view.LayoutInflater
810import android.view.View
@@ -22,10 +24,12 @@ import kr.hs.anu.nobet.presentation.screen.allow.AllowActivity
2224import kr.hs.anu.nobet.presentation.screen.blockList.BlockListActivity
2325import kr.hs.anu.nobet.presentation.screen.login.LoginActivity
2426import kr.hs.anu.nobet.presentation.screen.report.ReportActivity
27+ import kr.hs.anu.nobet.utils.NoBetVpnService
2528import kr.hs.anu.nobet.utils.openPage
2629
2730class MainActivity : AppCompatActivity () {
2831
32+ private val REQ_PREPARE_VPN = 1001
2933 private val viewModel: MainViewModel by viewModels()
3034 private lateinit var binding: ActivityMainBinding
3135
@@ -42,6 +46,8 @@ class MainActivity : AppCompatActivity() {
4246
4347 // ๋ฒํผ ์ํ๊ฐ ์ฝ๊ณ ๊ฐ์ ๋ฐ๋ผ ์ํ ๋ฐ๊พธ๊ธฐ
4448 viewModel.btnState.observe(this ) { btnState ->
49+ if (btnState) startVpn() else stopVpn()
50+
4551 // ์ฐจ๋จ ์ ์ ๋ฒํผ ์ ๋ณ๊ฒฝ
4652 binding.layoutBlockBtn.setBackgroundResource(
4753 if (btnState) R .drawable.block_btn_on else R .drawable.block_btn_background
@@ -129,4 +135,37 @@ class MainActivity : AppCompatActivity() {
129135 popupWindow.dismiss()
130136 }
131137 }
138+
139+ private fun startVpn () {
140+ val intent = VpnService .prepare(this )
141+ if (intent != null ) {
142+ startActivityForResult(intent, REQ_PREPARE_VPN )
143+ } else {
144+ onActivityResult(REQ_PREPARE_VPN , Activity .RESULT_OK , null )
145+ }
146+ }
147+
148+ @Deprecated(" Deprecated in Java" )
149+ override fun onActivityResult (requestCode : Int , resultCode : Int , data : Intent ? ) {
150+ super .onActivityResult(requestCode, resultCode, data)
151+ if (requestCode == REQ_PREPARE_VPN && resultCode == Activity .RESULT_OK ) {
152+ ContextCompat .startForegroundService(
153+ this ,
154+ Intent (this , NoBetVpnService ::class .java)
155+ )
156+ }
157+ }
158+
159+ private fun stopVpn () {
160+ // ์๋น์ค๊ฐ ๋ ์์ ๋๋ง STOP ์ก์
์ ๋ฌ (foregroundService ๊ธ์ง!)
161+ if (NoBetVpnService .isRunning) {
162+ startService(
163+ Intent (this , NoBetVpnService ::class .java).apply {
164+ action = NoBetVpnService .ACTION_STOP
165+ }
166+ )
167+ }
168+ // ๋ณด์กฐ: ์คํ ์ค์ด๋ฉด ์ข
๋ฃ, ์๋๋ฉด ๊ทธ๋ฅ ๋ฌด์๋จ
169+ stopService(Intent (this , NoBetVpnService ::class .java))
170+ }
132171}
0 commit comments