diff --git a/app/src/main/java/com/example/bondoman/ScanActivity.kt b/app/src/main/java/com/example/bondoman/ScanActivity.kt index f6ab871ce0172d6a47c2c7b5f940896c01b9099c..782af9b9348ecfbdd7afa737d15cc6f7207341c6 100644 --- a/app/src/main/java/com/example/bondoman/ScanActivity.kt +++ b/app/src/main/java/com/example/bondoman/ScanActivity.kt @@ -8,6 +8,7 @@ import android.net.Uri import android.os.Build import android.os.Bundle import android.provider.MediaStore +import android.widget.Button import android.widget.Toast import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.contract.ActivityResultContracts @@ -25,6 +26,7 @@ import com.example.bondoman.repository.ScanRepository import com.example.bondoman.room.TransactionDAO import com.example.bondoman.room.TransactionDatabase import com.example.bondoman.room.TransactionEntity +import com.example.bondoman.utils.NetworkUtils import com.google.android.filament.View import com.google.android.gms.maps.model.LatLng import com.google.android.libraries.places.api.model.Place @@ -50,31 +52,35 @@ class ScanActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - // Initialize the permission request launcher - requestPermissionLauncher = registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions -> - val allGranted = permissions.all { it.value } + if (checkInternetConnection()) { + // Initialize the permission request launcher + requestPermissionLauncher = registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions -> + val allGranted = permissions.all { it.value } - if (allGranted) { - launchCamera() - } else { - Toast.makeText(this, "Camera permission is required to use the camera", Toast.LENGTH_SHORT).show() - finish() + if (allGranted) { + launchCamera() + } else { + Toast.makeText(this, "Camera permission is required to use the camera", Toast.LENGTH_SHORT).show() + finish() + } } - } - // Initialize the take picture launcher - takePictureLauncher = registerForActivityResult(ActivityResultContracts.TakePicture()) { success -> - if (success) { - setupViewAfterPhotoTaken() - } else { - finish() + // Initialize the take picture launcher + takePictureLauncher = registerForActivityResult(ActivityResultContracts.TakePicture()) { success -> + if (success) { + setupViewAfterPhotoTaken() + } else { + finish() + } } - } - supportActionBar?.setDisplayHomeAsUpEnabled(true) - supportActionBar?.setBackgroundDrawable(AppCompatResources.getDrawable(this, R.color.gray_800)) + supportActionBar?.setDisplayHomeAsUpEnabled(true) + supportActionBar?.setBackgroundDrawable(AppCompatResources.getDrawable(this, R.color.gray_800)) - transactionDAO = TransactionDatabase.getDatabase(applicationContext).transactionDAO + transactionDAO = TransactionDatabase.getDatabase(applicationContext).transactionDAO + } else { + finish() + } } override fun onResume() { @@ -264,4 +270,14 @@ class ScanActivity : AppCompatActivity() { } return null } + + private fun checkInternetConnection(): Boolean { + val networkUtils = NetworkUtils(this) + return if (networkUtils.isOnline()) { + true + } else { + Toast.makeText(this, "No internet connection found.", Toast.LENGTH_SHORT).show() + false + } + } } diff --git a/app/src/main/java/com/example/bondoman/utils/NetworkUtils.kt b/app/src/main/java/com/example/bondoman/utils/NetworkUtils.kt index 628148c86509022096e506057aa2b9a79445cd18..72b817b972ef90090df28dc94a0ed4ea728d30ac 100644 --- a/app/src/main/java/com/example/bondoman/utils/NetworkUtils.kt +++ b/app/src/main/java/com/example/bondoman/utils/NetworkUtils.kt @@ -12,6 +12,8 @@ class NetworkUtils(private val context: Context) { private var connectivityManager: ConnectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager + private var networkCallback: ConnectivityManager.NetworkCallback? = null + fun isOnline(): Boolean { val network = connectivityManager.activeNetwork ?: return false val capabilities = connectivityManager.getNetworkCapabilities(network) ?: return false @@ -23,15 +25,22 @@ class NetworkUtils(private val context: Context) { .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .build() - connectivityManager.registerNetworkCallback(networkRequest, object : ConnectivityManager.NetworkCallback() { + networkCallback = object : ConnectivityManager.NetworkCallback() { override fun onLost(network: Network) { super.onLost(network) Toast.makeText(context, "Internet connection lost", Toast.LENGTH_SHORT).show() } - }) + } + + connectivityManager.registerNetworkCallback(networkRequest, + networkCallback as ConnectivityManager.NetworkCallback + ) } fun unregisterNetworkCallback() { - connectivityManager.unregisterNetworkCallback(ConnectivityManager.NetworkCallback()) + if (networkCallback != null) { + connectivityManager.unregisterNetworkCallback(networkCallback!!) + networkCallback = null + } } }