summaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorbt <bt@rctt.net>2026-05-26 23:58:55 +0200
committerbt <bt@rctt.net>2026-05-26 23:58:55 +0200
commit094a09ebfe142334f7b89ad2f03f17ed4dc1180e (patch)
tree003d88a6c3e00e710aac5dbe3f3bce512ddab94a /app
parente787e83e781c999c0555e1db5e99ac5685a84536 (diff)
downloadnetmon-094a09ebfe142334f7b89ad2f03f17ed4dc1180e.tar.gz
netmon-094a09ebfe142334f7b89ad2f03f17ed4dc1180e.zip
Add map viewHEADmain
Diffstat (limited to 'app')
-rw-r--r--app/build.gradle.kts1
-rw-r--r--app/src/main/AndroidManifest.xml2
-rw-r--r--app/src/main/java/net/rctt/netmon/CellView.kt16
-rw-r--r--app/src/main/java/net/rctt/netmon/MainActivity.kt38
-rw-r--r--app/src/main/res/layout/activity_main.xml4
5 files changed, 49 insertions, 12 deletions
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index c04b900..ad8390f 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -52,4 +52,5 @@ dependencies {
androidTestImplementation(libs.androidx.espresso.core)
implementation("com.androidplot:androidplot-core:1.5.11")
implementation("com.jsoizo:kotlin-csv:2.0.0")
+ implementation("org.osmdroid:osmdroid-android:6.1.20")
} \ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 32d8332..b2c816e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,6 +8,8 @@
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
+ <uses-permission android:name="android.permission.INTERNET" />
+ <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:requestLegacyExternalStorage="true"
diff --git a/app/src/main/java/net/rctt/netmon/CellView.kt b/app/src/main/java/net/rctt/netmon/CellView.kt
index 051f05a..55668c3 100644
--- a/app/src/main/java/net/rctt/netmon/CellView.kt
+++ b/app/src/main/java/net/rctt/netmon/CellView.kt
@@ -7,13 +7,14 @@ import android.telephony.CellInfoLte
import android.telephony.CellInfoNr
import android.telephony.CellInfoTdscdma
import android.telephony.CellInfoWcdma
-import android.util.Log
import android.view.LayoutInflater
import android.widget.TextView
import androidx.constraintlayout.widget.ConstraintLayout
import com.androidplot.xy.LineAndPointFormatter
import com.androidplot.xy.SimpleXYSeries
import com.androidplot.xy.XYPlot
+import org.osmdroid.util.GeoPoint
+import org.osmdroid.views.overlay.Marker
class CellView : ConstraintLayout{
var cellId: Number
@@ -28,6 +29,8 @@ class CellView : ConstraintLayout{
var powerChartView: XYPlot
var powerChartSeries: SimpleXYSeries
+ lateinit var mapMarker: Marker
+
constructor(ctx: Context, id: Number) : super(ctx) {
cellId = id
power = 0
@@ -83,6 +86,17 @@ class CellView : ConstraintLayout{
descView.text = desc
}
+ fun setMarker(m: Marker){
+ mapMarker = m
+ }
+
+ fun setLocation(lat: Double, lon: Double) {
+ mapMarker.setPosition(GeoPoint(lat, lon))
+ mapMarker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_CENTER)
+ mapMarker.setDefaultIcon()
+ mapMarker.title = descView.text.toString()
+ }
+
fun refresh() {
powerChartView.removeSeries(powerChartSeries)
diff --git a/app/src/main/java/net/rctt/netmon/MainActivity.kt b/app/src/main/java/net/rctt/netmon/MainActivity.kt
index 66d77c6..3aac48d 100644
--- a/app/src/main/java/net/rctt/netmon/MainActivity.kt
+++ b/app/src/main/java/net/rctt/netmon/MainActivity.kt
@@ -14,29 +14,30 @@ import android.telephony.CellInfoTdscdma
import android.telephony.CellInfoWcdma
import android.telephony.TelephonyManager
import android.telephony.TelephonyManager.CellInfoCallback
-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 com.jsoizo.kotlincsv.CsvDialect
import com.jsoizo.kotlincsv.csvReader
import com.jsoizo.kotlincsv.reader.readFromFile
+import org.osmdroid.config.Configuration
+import org.osmdroid.tileprovider.tilesource.TileSourceFactory
+import org.osmdroid.util.GeoPoint
+import org.osmdroid.views.MapView
+import org.osmdroid.views.overlay.Marker
+import org.osmdroid.views.overlay.mylocation.GpsMyLocationProvider
+import org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay
import java.io.File
-import java.io.IOException
-import java.lang.reflect.Type
-import java.text.SimpleDateFormat
-import java.util.Date
class MainActivity : AppCompatActivity() {
lateinit var cellsListView: LinearLayout
lateinit var tel: TelephonyManager
lateinit var cellsList: HashMap<Number, CellView>
val cellDb = HashMap<Int, HashMap<Long, CellDbItem>>()
+ lateinit var map: MapView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -48,6 +49,19 @@ class MainActivity : AppCompatActivity() {
insets
}
+ Configuration.getInstance().userAgentValue =
+ "Netmon/0.1 (+https://rctt.net; contact: bt@rctt.net)"
+
+ map = findViewById(R.id.map)
+ map.setTileSource(TileSourceFactory.MAPNIK)
+ map.setMultiTouchControls(true)
+ map.controller.setZoom(15)
+ map.controller.setCenter(GeoPoint(51.10, 17.04));
+
+ val locationOverlay = MyLocationNewOverlay(GpsMyLocationProvider(this), map)
+ locationOverlay.enableMyLocation()
+ this.map.overlays.add(locationOverlay)
+
loadDb()
cellsList = HashMap()
@@ -103,7 +117,7 @@ class MainActivity : AppCompatActivity() {
}
}
- fun findInDb(lac: Int, cid: Long): CellDbItem? {
+ fun findInDb(lac: Int, cid: Long): CellDbItem? {
return cellDb[lac]?.get(cid)
}
@@ -131,15 +145,17 @@ class MainActivity : AppCompatActivity() {
}
val lac = getCellLac(cell)
- val findInDb = findInDb(lac.toInt(), id.toLong())
- val desc = findInDb?.Description ?: ""
+ val dbItem = findInDb(lac.toInt(), id.toLong())
+ val desc = dbItem?.Description ?: ""
var cellView = cellsList[id]
if (cellView == null) {
cellView = CellView(this, id)
cellsList[id] = cellView
+ cellView.setMarker(Marker(map))
} else {
cellsListView.removeView(cellView)
+ map.overlays.remove(cellView.mapMarker)
}
when (cell) {
@@ -152,7 +168,9 @@ class MainActivity : AppCompatActivity() {
cellView.refresh()
cellView.setDesc(desc)
+ cellView.setLocation(dbItem?.Latitude ?: 0.0, dbItem?.Longitude ?: 0.0)
cellsListView.addView(cellView)
+ map.overlays.add(cellView.mapMarker)
}
}
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 993e933..76aa1e4 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -34,7 +34,9 @@
android:layout_height="wrap_content"
android:orientation="vertical" />
</ScrollView>
-
+ <org.osmdroid.views.MapView android:id="@+id/map"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file