Skip to content
Snippets Groups Projects
Commit dbb9ae06 authored by Cetta Reswara's avatar Cetta Reswara
Browse files

add: network sensing

parent ad183bbf
Branches
Tags
No related merge requests found
...@@ -65,6 +65,7 @@ dependencies { ...@@ -65,6 +65,7 @@ dependencies {
implementation("com.google.android.material:material:1.11.0") implementation("com.google.android.material:material:1.11.0")
implementation("androidx.mediarouter:mediarouter:1.7.0") implementation("androidx.mediarouter:mediarouter:1.7.0")
implementation("androidx.camera:camera-view:1.3.2") implementation("androidx.camera:camera-view:1.3.2")
//implementation("com.github.PhilJay:MPAndroidChart:v3.1.0")
testImplementation("junit:junit:4.13.2") testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.1.5") androidTestImplementation("androidx.test.ext:junit:1.1.5")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
......
...@@ -6,6 +6,8 @@ ...@@ -6,6 +6,8 @@
<uses-feature <uses-feature
android:name="android.hardware.camera" android:name="android.hardware.camera"
android:required="false" /> android:required="false" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.CAMERA"/>
<application <application
......
...@@ -2,18 +2,39 @@ package com.example.bondoman ...@@ -2,18 +2,39 @@ package com.example.bondoman
import SettingsFragment import SettingsFragment
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Context
import android.net.ConnectivityManager
import android.os.Bundle import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.widget.TextView import android.widget.TextView
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import com.google.android.material.bottomnavigation.BottomNavigationView import com.google.android.material.bottomnavigation.BottomNavigationView
class MainActivity : AppCompatActivity() { class MainActivity : AppCompatActivity() {
private val handler = Handler(Looper.getMainLooper())
private val checkNetworkRunnable = object : Runnable {
override fun run() {
// Check network connection status
if (!isNetworkConnected()) {
// Display pop-up dialog
showNoInternetDialog()
}
// Schedule the next check after 1 minutes
handler.postDelayed(this, 60 * 1000) // 3 minutes in milliseconds
}
}
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main) setContentView(R.layout.activity_main)
// Check network connection status
startNetworkCheck()
val bottomNavigationView = findViewById<BottomNavigationView>(R.id.bottomNavigationView) val bottomNavigationView = findViewById<BottomNavigationView>(R.id.bottomNavigationView)
var previousItem = 0 var previousItem = 0
...@@ -86,6 +107,39 @@ class MainActivity : AppCompatActivity() { ...@@ -86,6 +107,39 @@ class MainActivity : AppCompatActivity() {
frameHeaderText.text = title frameHeaderText.text = title
} }
private fun startNetworkCheck() {
// Immediately check network connection
checkNetworkRunnable.run()
}
private fun stopNetworkCheck() {
// Remove any pending callbacks to stop the periodic check
handler.removeCallbacks(checkNetworkRunnable)
}
private fun isNetworkConnected(): Boolean {
val connectivityManager =
getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val activeNetworkInfo = connectivityManager.activeNetworkInfo
return activeNetworkInfo != null && activeNetworkInfo.isConnected
}
private fun showNoInternetDialog() {
val builder = AlertDialog.Builder(this)
builder.setTitle("No Internet Connection")
.setMessage("Please check your internet connection and try again.")
.setPositiveButton("OK") { dialog, _ -> dialog.dismiss() }
.setCancelable(false)
val dialog = builder.create()
dialog.show()
}
override fun onDestroy() {
super.onDestroy()
// Stop the periodic network check when the activity is destroyed
stopNetworkCheck()
}
companion object { companion object {
const val EXTRA_FRAGMENT = "com.example.bondoman.EXTRA_FRAGMENT" const val EXTRA_FRAGMENT = "com.example.bondoman.EXTRA_FRAGMENT"
const val FRAGMENT_TRANSAKSI = "transaksi_fragment" const val FRAGMENT_TRANSAKSI = "transaksi_fragment"
......
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import com.example.bondoman.R
//import com.github.mikephil.charting.charts.PieChart
//import com.github.mikephil.charting.data.Entry
//import com.github.mikephil.charting.data.PieData
//import com.github.mikephil.charting.data.PieDataSet
class GraphFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_graph, container, false)
}
}
//override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
// super.onViewCreated(view, savedInstanceState)
//
// val pieChart = view.findViewById<PieChart>(R.id.pieChart)
//
// // Dummy data for demonstration
// val entries = listOf(
// Entry(0f, 200f),
// Entry(1f, 300f),
// Entry(2f, 400f),
// Entry(3f, 500f)
// )
//
// val dataSet = PieDataSet(entries, "Summary")
// val data = PieData(dataSet)
// pieChart.data = data
//
// // Customize the appearance of the chart
// pieChart.description.isEnabled = false
// pieChart.invalidate() }
...@@ -26,6 +26,7 @@ import androidx.fragment.app.Fragment ...@@ -26,6 +26,7 @@ import androidx.fragment.app.Fragment
import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.LifecycleOwner
import com.google.android.material.floatingactionbutton.FloatingActionButton import com.google.android.material.floatingactionbutton.FloatingActionButton
import java.io.File import java.io.File
import java.io.FileOutputStream
import java.util.concurrent.ExecutorService import java.util.concurrent.ExecutorService
import java.util.concurrent.Executors import java.util.concurrent.Executors
...@@ -115,12 +116,28 @@ class CameraFragment : Fragment() { ...@@ -115,12 +116,28 @@ class CameraFragment : Fragment() {
super.onActivityResult(requestCode, resultCode, data) super.onActivityResult(requestCode, resultCode, data)
if (requestCode == REQUEST_CODE_GALLERY && resultCode == Activity.RESULT_OK) { if (requestCode == REQUEST_CODE_GALLERY && resultCode == Activity.RESULT_OK) {
data?.data?.let { uri -> data?.data?.let { uri ->
capturedImageView.setImageURI(uri) saveGalleryImage(uri)
capturedImageView.visibility = View.VISIBLE
} }
} }
} }
private fun saveGalleryImage(uri: Uri) {
val inputStream = requireContext().contentResolver.openInputStream(uri)
val outputDir = File(requireContext().filesDir, "photos")
if (!outputDir.exists()) {
outputDir.mkdir()
}
val photoFile = File(outputDir, "${System.currentTimeMillis()}.jpg")
inputStream?.use { input ->
FileOutputStream(photoFile).use { output ->
input.copyTo(output)
}
}
currentPhotoPath = photoFile.absolutePath
showCapturedImage()
}
private fun allPermissionsGranted() = private fun allPermissionsGranted() =
REQUIRED_PERMISSIONS.all { REQUIRED_PERMISSIONS.all {
ContextCompat.checkSelfPermission( ContextCompat.checkSelfPermission(
...@@ -197,3 +214,5 @@ class CameraFragment : Fragment() { ...@@ -197,3 +214,5 @@ class CameraFragment : Fragment() {
private val REQUIRED_PERMISSIONS = arrayOf(Manifest.permission.CAMERA) private val REQUIRED_PERMISSIONS = arrayOf(Manifest.permission.CAMERA)
} }
} }
class fragment_graph {}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.github.mikephil.charting.charts.PieChart
android:id="@+id/pieChart"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:ignore="MissingClass" />
</RelativeLayout>
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