diff options
| author | bt <bt@rctt.net> | 2026-06-08 21:10:06 +0200 |
|---|---|---|
| committer | bt <bt@rctt.net> | 2026-06-08 21:10:06 +0200 |
| commit | 1ab7e928a2a272418df199c8e621b735a708fcff (patch) | |
| tree | c905de96c5866c5b0515aa03130950abc67a0a59 | |
| parent | 1f216fc3cfd3e3b70bcfb94b157ca253515881ab (diff) | |
| download | netmon-1ab7e928a2a272418df199c8e621b735a708fcff.tar.gz netmon-1ab7e928a2a272418df199c8e621b735a708fcff.zip | |
Fix map view, remove log viewnew-ui
| -rw-r--r-- | app/src/main/java/net/rctt/netmon/Cell.kt | 9 | ||||
| -rw-r--r-- | app/src/main/java/net/rctt/netmon/LogFragment.kt | 59 | ||||
| -rw-r--r-- | app/src/main/java/net/rctt/netmon/MainActivity.kt | 22 | ||||
| -rw-r--r-- | app/src/main/java/net/rctt/netmon/MapFragment.kt | 4 | ||||
| -rw-r--r-- | app/src/main/res/layout/fragment_log.xml | 14 | ||||
| -rw-r--r-- | app/src/main/res/menu/nav_menu.xml | 6 |
6 files changed, 33 insertions, 81 deletions
diff --git a/app/src/main/java/net/rctt/netmon/Cell.kt b/app/src/main/java/net/rctt/netmon/Cell.kt index 90d6eda..951c79b 100644 --- a/app/src/main/java/net/rctt/netmon/Cell.kt +++ b/app/src/main/java/net/rctt/netmon/Cell.kt @@ -52,6 +52,10 @@ class CellLogItem { var id: String = "" val powerHistory: MutableList<Number> = mutableListOf() + var timestamp: String = "" + var userLat: Double = 0.0 + var userLon: Double = 0.0 + constructor(cell: CellInfo) { when (cell) { is CellInfoGsm -> { @@ -96,6 +100,8 @@ class CellLogItem { power = cell.cellSignalStrength.dbm powerHistory.removeAt(0) powerHistory.add(power) + + timestamp = System.currentTimeMillis().toString() } fun valid(): Boolean { @@ -104,6 +110,9 @@ class CellLogItem { fun serialize(): List<String> { return listOf( + timestamp, + userLat.toString(), + userLon.toString(), type, lac.toString(), cid.toString(), diff --git a/app/src/main/java/net/rctt/netmon/LogFragment.kt b/app/src/main/java/net/rctt/netmon/LogFragment.kt deleted file mode 100644 index 3755b0a..0000000 --- a/app/src/main/java/net/rctt/netmon/LogFragment.kt +++ /dev/null @@ -1,59 +0,0 @@ -package net.rctt.netmon - -import android.os.Bundle -import androidx.fragment.app.Fragment -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup - -// TODO: Rename parameter arguments, choose names that match -// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER -private const val ARG_PARAM1 = "param1" -private const val ARG_PARAM2 = "param2" - -/** - * A simple [Fragment] subclass. - * Use the [LogFragment.newInstance] factory method to - * create an instance of this fragment. - */ -class LogFragment : Fragment() { - // TODO: Rename and change types of parameters - private var param1: String? = null - private var param2: String? = null - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - arguments?.let { - param1 = it.getString(ARG_PARAM1) - param2 = it.getString(ARG_PARAM2) - } - } - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - // Inflate the layout for this fragment - return inflater.inflate(R.layout.fragment_log, container, false) - } - - companion object { - /** - * Use this factory method to create a new instance of - * this fragment using the provided parameters. - * - * @param param1 Parameter 1. - * @param param2 Parameter 2. - * @return A new instance of fragment LogFragment. - */ - // TODO: Rename and change types and number of parameters - @JvmStatic - fun newInstance(param1: String, param2: String) = - LogFragment().apply { - arguments = Bundle().apply { - putString(ARG_PARAM1, param1) - putString(ARG_PARAM2, param2) - } - } - } -}
\ No newline at end of file diff --git a/app/src/main/java/net/rctt/netmon/MainActivity.kt b/app/src/main/java/net/rctt/netmon/MainActivity.kt index a63b220..6cfd838 100644 --- a/app/src/main/java/net/rctt/netmon/MainActivity.kt +++ b/app/src/main/java/net/rctt/netmon/MainActivity.kt @@ -1,16 +1,21 @@ package net.rctt.netmon +import android.Manifest import android.content.ComponentName import android.content.Intent import android.content.ServiceConnection +import android.location.Location +import android.location.LocationManager import android.os.Bundle import android.os.IBinder import android.telephony.CellInfo +import androidx.annotation.RequiresPermission import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.Fragment import com.google.android.material.bottomnavigation.BottomNavigationView import org.osmdroid.config.Configuration + class MainActivity : AppCompatActivity() { val cellDb = CellDb() val cellLogger = CellLogger() @@ -36,7 +41,6 @@ class MainActivity : AppCompatActivity() { bottomNav.setOnItemSelectedListener { when (it.itemId) { R.id.main -> loadFragment(ScanFragment()) - R.id.log -> loadFragment(LogFragment()) R.id.map -> loadFragment(MapFragment()) } true @@ -80,6 +84,7 @@ class MainActivity : AppCompatActivity() { scannerService = binder.getService() scannerServiceBound = true binder.addListener(object : ScannerService.Callback { + @RequiresPermission(allOf = [Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION]) override fun onCalled(list: List<CellInfo?>) = handleUpdate(list) }) } @@ -89,7 +94,10 @@ class MainActivity : AppCompatActivity() { } } + @RequiresPermission(allOf = [Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION]) fun handleUpdate(cells: List<CellInfo?>) { + val location = getLocation() + for (cellInfo in cells) { if (cellInfo == null) { continue @@ -108,6 +116,11 @@ class MainActivity : AppCompatActivity() { cellLogItem.description = cellDbItem.Description cellLogItem.latitude = cellDbItem.Latitude cellLogItem.longitude = cellDbItem.Longitude + if (location != null) { + cellLogItem.userLat = location.latitude + cellLogItem.userLon = location.longitude + + } } currentCells[id] = cellLogItem @@ -130,4 +143,11 @@ class MainActivity : AppCompatActivity() { fun stopGetCellService() { scannerService.run = false } + + @RequiresPermission(allOf = [Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION]) + fun getLocation(): Location? { + val locationManager = + applicationContext.getSystemService(LOCATION_SERVICE) as LocationManager + return locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER) + } }
\ No newline at end of file diff --git a/app/src/main/java/net/rctt/netmon/MapFragment.kt b/app/src/main/java/net/rctt/netmon/MapFragment.kt index 0ba4a6b..d5f6cd0 100644 --- a/app/src/main/java/net/rctt/netmon/MapFragment.kt +++ b/app/src/main/java/net/rctt/netmon/MapFragment.kt @@ -31,8 +31,8 @@ class MapFragment : Fragment() { val locationOverlay = MyLocationNewOverlay(GpsMyLocationProvider(activity), map) locationOverlay.enableMyLocation() locationOverlay.enableFollowLocation() - this.map.overlays.add(locationOverlay) - + map.overlays.add(locationOverlay) + map.setZoomLevel(15.0) return view } diff --git a/app/src/main/res/layout/fragment_log.xml b/app/src/main/res/layout/fragment_log.xml deleted file mode 100644 index 8df01f3..0000000 --- a/app/src/main/res/layout/fragment_log.xml +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<FrameLayout 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" - tools:context=".LogFragment"> - - <!-- TODO: Update blank fragment layout --> - <TextView - android:layout_width="match_parent" - android:layout_height="match_parent" - android:text="LOG" /> - -</FrameLayout>
\ No newline at end of file diff --git a/app/src/main/res/menu/nav_menu.xml b/app/src/main/res/menu/nav_menu.xml index a4332ae..574205b 100644 --- a/app/src/main/res/menu/nav_menu.xml +++ b/app/src/main/res/menu/nav_menu.xml @@ -3,11 +3,7 @@ <item android:id="@+id/main" android:icon="@drawable/rounded_bar_chart_24" - android:title="Scan" /> - <item - android:id="@+id/log" - android:icon="@drawable/outline_database_24" - android:title="Logs" /> + android:title="Scan" /> <item android:id="@+id/map" android:icon="@drawable/baseline_map_24" |
