Skip to content
Snippets Groups Projects
Commit 274d3825 authored by DewanaGustavus's avatar DewanaGustavus
Browse files

feat: observing network change

parent c17c5ca2
Branches
Tags
2 merge requests!13Release,!12Network sensing
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"> xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application <application
android:allowBackup="true" android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules" android:dataExtractionRules="@xml/data_extraction_rules"
...@@ -12,6 +14,7 @@ ...@@ -12,6 +14,7 @@
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/Theme.BondoYap" android:theme="@style/Theme.BondoYap"
tools:targetApi="31"> tools:targetApi="31">
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:exported="true" android:exported="true"
......
...@@ -3,26 +3,40 @@ package com.example.bondoyap ...@@ -3,26 +3,40 @@ package com.example.bondoyap
import android.content.Context import android.content.Context
import android.content.SharedPreferences import android.content.SharedPreferences
import android.os.Bundle import android.os.Bundle
import com.google.android.material.bottomnavigation.BottomNavigationView import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.navigation.findNavController import androidx.navigation.findNavController
import androidx.navigation.ui.AppBarConfiguration import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.setupActionBarWithNavController import androidx.navigation.ui.setupActionBarWithNavController
import androidx.navigation.ui.setupWithNavController import androidx.navigation.ui.setupWithNavController
import com.example.bondoyap.databinding.ActivityMainBinding import com.example.bondoyap.databinding.ActivityMainBinding
import com.example.bondoyap.util.network.NetworkObserver
import com.google.android.material.bottomnavigation.BottomNavigationView
class MainActivity : AppCompatActivity() { class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding private lateinit var binding: ActivityMainBinding
private lateinit var sharedPreferences: SharedPreferences private lateinit var sharedPreferences: SharedPreferences
private lateinit var networkObserver: NetworkObserver
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
networkObserver = NetworkObserver(applicationContext)
networkObserver.isConnected.observe(this) { isConnected ->
if (isConnected) {
Toast.makeText(this, "Koneksi terhubung", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this, "Koneksi terputus", Toast.LENGTH_SHORT).show()
}
}
binding = ActivityMainBinding.inflate(layoutInflater) binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root) setContentView(binding.root)
val navView: BottomNavigationView = binding.navView val navView: BottomNavigationView = binding.navView
val navController = findNavController(R.id.nav_host_fragment_activity_main) val navController = findNavController(R.id.nav_host_fragment_activity_main)
...@@ -32,9 +46,13 @@ class MainActivity : AppCompatActivity() { ...@@ -32,9 +46,13 @@ class MainActivity : AppCompatActivity() {
if (!isLoggedIn()) { if (!isLoggedIn()) {
navController.navigate(R.id.navigation_login) navController.navigate(R.id.navigation_login)
} }
val appBarConfiguration = AppBarConfiguration(setOf(
val appBarConfiguration = AppBarConfiguration(
setOf(
R.id.navigation_settings, R.id.navigation_transactions, R.id.navigation_scanner, R.id.navigation_settings, R.id.navigation_transactions, R.id.navigation_scanner,
R.id.navigation_graph, R.id.navigation_login)) R.id.navigation_graph, R.id.navigation_login
)
)
setupActionBarWithNavController(navController, appBarConfiguration) setupActionBarWithNavController(navController, appBarConfiguration)
...@@ -48,6 +66,7 @@ class MainActivity : AppCompatActivity() { ...@@ -48,6 +66,7 @@ class MainActivity : AppCompatActivity() {
navView.visibility = BottomNavigationView.VISIBLE navView.visibility = BottomNavigationView.VISIBLE
} }
} }
} }
private fun isLoggedIn(): Boolean { private fun isLoggedIn(): Boolean {
......
package com.example.bondoyap.util.network
import android.content.Context
import android.net.ConnectivityManager
import android.net.Network
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
class NetworkObserver(context: Context) {
private val connectivityManager =
context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
private val _isConnected = MutableLiveData<Boolean>()
val isConnected: LiveData<Boolean> = _isConnected
init {
connectivityManager.registerDefaultNetworkCallback(object :
ConnectivityManager.NetworkCallback() {
override fun onAvailable(network: Network) {
_isConnected.postValue(true)
}
override fun onLost(network: Network) {
_isConnected.postValue(false)
}
})
}
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment