diff options
| author | bt <bt@rctt.net> | 2026-05-26 23:58:55 +0200 |
|---|---|---|
| committer | bt <bt@rctt.net> | 2026-05-26 23:58:55 +0200 |
| commit | 094a09ebfe142334f7b89ad2f03f17ed4dc1180e (patch) | |
| tree | 003d88a6c3e00e710aac5dbe3f3bce512ddab94a /app/src/main | |
| parent | e787e83e781c999c0555e1db5e99ac5685a84536 (diff) | |
| download | netmon-094a09ebfe142334f7b89ad2f03f17ed4dc1180e.tar.gz netmon-094a09ebfe142334f7b89ad2f03f17ed4dc1180e.zip | |
Diffstat (limited to 'app/src/main')
| -rw-r--r-- | app/src/main/AndroidManifest.xml | 2 | ||||
| -rw-r--r-- | app/src/main/java/net/rctt/netmon/CellView.kt | 16 | ||||
| -rw-r--r-- | app/src/main/java/net/rctt/netmon/MainActivity.kt | 38 | ||||
| -rw-r--r-- | app/src/main/res/layout/activity_main.xml | 4 |
4 files changed, 48 insertions, 12 deletions
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 |
