summaryrefslogtreecommitdiffstats
path: root/app/src/main/java/net
diff options
context:
space:
mode:
authorbt <bt@rctt.net>2026-05-03 03:27:18 +0200
committerbt <bt@rctt.net>2026-05-03 03:27:18 +0200
commit2937bc975848e7979287e7067f4fff10bbfe4988 (patch)
treef8ec8ea8f638977b75919879a5a76eb7333a264b /app/src/main/java/net
parentcde732059b237af7b147d58c43e4f5b03b9fbddd (diff)
downloadnetmon-2937bc975848e7979287e7067f4fff10bbfe4988.tar.gz
netmon-2937bc975848e7979287e7067f4fff10bbfe4988.zip
Basic current cell info view
Diffstat (limited to 'app/src/main/java/net')
-rw-r--r--app/src/main/java/net/rctt/netmon/MainActivity.kt104
1 files changed, 104 insertions, 0 deletions
diff --git a/app/src/main/java/net/rctt/netmon/MainActivity.kt b/app/src/main/java/net/rctt/netmon/MainActivity.kt
index 53c6f05..7111922 100644
--- a/app/src/main/java/net/rctt/netmon/MainActivity.kt
+++ b/app/src/main/java/net/rctt/netmon/MainActivity.kt
@@ -1,12 +1,34 @@
package net.rctt.netmon
+import android.Manifest
+import android.annotation.SuppressLint
import android.os.Bundle
+import android.os.Handler
+import android.os.Looper
+import android.telephony.CellInfoGsm
+import android.telephony.CellInfoLte
+import android.telephony.CellInfoNr
+import android.telephony.CellInfoTdscdma
+import android.telephony.CellInfoWcdma
+import android.telephony.TelephonyManager
+import android.util.Log
+import android.widget.LinearLayout
+import android.widget.TextView
import androidx.activity.enableEdgeToEdge
+import androidx.annotation.RequiresPermission
import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
+import java.text.SimpleDateFormat
+import java.util.Date
class MainActivity : AppCompatActivity() {
+ lateinit var statusView: LinearLayout
+ lateinit var cellView: LinearLayout
+
+ lateinit var tel: TelephonyManager
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
@@ -16,5 +38,87 @@ class MainActivity : AppCompatActivity() {
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
+
+ statusView = findViewById(R.id.statusView)
+ cellView = findViewById(R.id.cellView)
+
+ val pLoc = ContextCompat.checkSelfPermission(applicationContext, Manifest.permission.ACCESS_FINE_LOCATION)
+ if (pLoc == -1) {
+ log("Location permission required")
+ } else {
+ log("Ready")
+ tel = getSystemService(TELEPHONY_SERVICE) as TelephonyManager
+
+ val mainHandler = Handler(Looper.getMainLooper())
+
+ mainHandler.post(object : Runnable {
+ @RequiresPermission(Manifest.permission.ACCESS_FINE_LOCATION)
+ override fun run() {
+ refresh()
+ mainHandler.postDelayed(this, 1000)
+ }
+ })
+ }
+ }
+
+ @RequiresPermission(Manifest.permission.ACCESS_FINE_LOCATION)
+ fun refresh() {
+ log("refreshing")
+
+ val cellList = tel.allCellInfo
+ cellView.removeAllViews()
+ for (cell in cellList) {
+ when (cell) {
+ is CellInfoGsm -> {
+ logDetected("GSM")
+ }
+ is CellInfoLte -> {
+ val id = cell.cellIdentity
+ if (id.ci == 2147483647) {
+ continue
+ }
+
+ logDetected("LTE")
+ logCell("CID: ${id.ci}")
+ logCell("PCI: ${id.pci}")
+ logCell("TAC: ${id.tac}")
+ logCell("EARFCN ${id.earfcn}")
+ logCell("BANDWIDTH: ${id.bandwidth}")
+ logCell("RSRP: ${cell.cellSignalStrength.rsrp}")
+ logCell("DBM: ${cell.cellSignalStrength.dbm}")
+ logCell("STATUS: ${cell.cellConnectionStatus}")
+ logCell("")
+ }
+ is CellInfoNr -> {
+ logDetected("NR")
+ }
+ is CellInfoTdscdma -> {
+ logDetected("TDSCDMA")
+ }
+ is CellInfoWcdma -> {
+ logDetected("WCDMA")
+ }
+ }
+ }
+ }
+
+ @SuppressLint("SimpleDateFormat", "SetTextI18n")
+ fun log(text: String) {
+ val sdf = SimpleDateFormat("hh:mm:ss")
+ val date = sdf.format(Date())
+ val msg = TextView(this)
+ msg.text = "$date $text"
+ statusView.addView(msg)
+ }
+
+ fun logDetected(text: String) {
+ log("detected $text cell")
+ }
+
+ fun logCell(text: String) {
+ val msg = TextView(this)
+ msg.text = text
+ cellView.addView(msg)
+ Log.d("NETMON", text)
}
} \ No newline at end of file