WallpaperMachine
당신이 사랑하는 배경화면, 맥에서 새롭게 만나보세요
무료 안드로이드 앱, 강·운하·호수에서 카누·보트 경로 계획, 오프라인 지원, 댐·잠금구 개방시간, GPS 속도계, 블루투스로 배터리 확인
Free Android app: route planner for canoes and boats on rivers, canals and lakes, offline too. Portages around weirs, locks with opening hours, GPS speedometer, battery over Bluetooth.
라이프스타일KotlinGitHub @Glenn-Dandy온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
GPS speedometer and waterway navigation for any small boat, under motor or paddle. Routes around weirs with portage, saved and followed, locks and seamarks from OpenStreetMap, Bluetooth battery analytics, DWD rain radar. Android, Kotlin/Compose, MIT.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗GPS-Bootstacho und Navigation für kleine Boote. Mit Motor, mit Paddel, mit Riemen. Routen entlang der Wasserwege, im Kanu auch ums Wehr herum. Mit Bluetooth-BMS oder Coulometer am Akku kommen Live-Werte und Reichweite dazu.
Website: boatspeedy.wozise.de · Kanu-Routenplaner · Routenplaner für Wasserwege
🇬🇧 English · 🇩🇪 Deutsch
Ohne Akku fehlt nur die Batteriekachel, alles andere braucht nur das Handy. Das Fahrzeug
steht auf Motorboot oder Kanu, danach richten sich die Verbote: boat=no sperrt das
Motorboot, fürs Kanu ist es ein Hinweis. Auf der oberen Saale sind das 44 km am Stück.
Langer Druck auf die Karte setzt ein Ziel. Zur Wahl stehen Luftlinie oder Route entlang der Wasserwege, jeweils mit Entfernung und geschätztem Verbrauch in Amperestunden. Ein Kurspfeil zeigt, wie weit zu drehen ist.
Kartendaten. Die Wasserwege liegen als Kacheln auf dem Gerät, ein Grad breit und hoch. Ganz Europa sind 1376 Kacheln und 176 MB; ein Umkreis von 150 km rund 20 Kacheln und 3,4 MB. Daraus rechnet das Handy die Route selbst, bis 600 km Zielentfernung. Ohne Kacheln geht es über die Overpass-Schnittstelle, bis 60 km. Fehlende und veraltete Kacheln bietet die App vor einer Route an. Die Karte darunter kommt von OpenStreetMap und braucht Netz. Der Kartenserver lässt sich unter Navigation, Kartendaten wechseln.
Erzeugt werden die Kacheln aus OpenStreetMap über Geofabrik, siehe boatspeedy-mapdata.
Fahrzeug. Motorboot oder Kanu entscheidet, welche Verbote gelten. Die Zugangsmerkmale
werden gestuft gelesen, wie OSM sie meint: access gilt für alles, boat für Boote,
motorboat und canoe für die einzelne Art, und das Genauere schlägt das Allgemeinere.
boat=no plus canoe=yes heißt also "Boote nein, Kanu ja".
Fürs Kanu ist ein nacktes boat=no kein Ausschluss, sondern ein Hinweis: Auf der oberen
Saale tragen 44 km am Stück dieses Merkmal, gemeint gegen Motoren. Solche Abschnitte
kosten bei der Wegsuche das Dreifache, damit der freie Weg gewinnt, wo es einen gibt, und
werden rot gezeichnet, wo es keinen gibt.
Auf dem Weg. Schleusen, Wehre und Brücken mit Durchfahrtshöhe stehen ab Zoomstufe 11 auf der Karte, auch ohne Route. Eine Schleuse antippen zeigt Öffnungszeiten, Telefon, Funkkanal und Kammermaß, so wie OpenStreetMap sie führt; das Symbol sitzt in der Mitte der Kammer, bei Doppelschleusen je Kammer eines. Ein- und Ausstiege und Slipanlagen folgen ab Zoomstufe 13, Wasserkraftanlagen haben ein eigenes Symbol. Seezeichen sind antippbar, Geschwindigkeitsschilder zeigen ihren Wert. Winkel auf den Flüssen zeigen die Fließrichtung, unten links steht, wie viel der Route flussauf und flussab geht.
Wehre und Umtragen. Ein Wehr sperrt die Route nicht, es kostet: Jede Schleuse und jede Umtragung gewinnt dagegen, und wo es nichts gibt, führt die Strecke hindurch und sagt es. Im Kanu geht die Route ums Wehr herum, über die Umtragewege aus OpenStreetMap oder von Anleger zu Anleger, grün gestrichelt und mit Metern unten links. Durch Wasserkraftanlagen führt sie nie, und im Kanu zieht sie den Fluss dem Mühl- oder Kraftwerkskanal vor. Eingetragene Umtragewege gehen vor. Jedes Wehr zählt einmal, wenn die Strecke hindurch führt oder daran vorbeiträgt; nur daneben vorbeifahren zählt nicht.
Routen speichern und nachfahren. Eine gerechnete Route lässt sich mit Namen speichern, teilen und später nachfahren, ebenso eine aufgezeichnete Fahrt. Eine gestrichelte Linie führt vom Boot zum Start, danach geht es der Strecke nach.
Karte. Norden oben oder Fahrtrichtung oben, umschaltbar in der Titelzeile. Marker und Karte gleiten wie bei einem Navigationsgerät: Aus Fahrt und Kurs wird fortlaufend gerechnet, wo das Boot jetzt ist, statt von Messung zu Messung zu springen. Nur für die Anzeige, die aufgezeichnete Fahrt bleibt bei den rohen Messwerten.
xx, xx.x, xx.xxEntwickelt und geprüft an einer EcoWorthy LiFePO4 100 Ah mit JBD-BMS.
| Bereich | Stand |
|---|---|
| GPS-Tempo, Fahrt, Statistik | ✅ läuft |
| JBD, Redodo/LiTime/Power Queen | ✅ an Hardware geprüft |
| Coulometer mit Hall-Sensor | ✅ an Hardware geprüft |
| Routing, Kacheln, Schleusen | ✅ im Feld geprüft (Saale, Rhein, Main) |
| Umtragen, Wasserkraftanlagen | ✅ geprüft an der Saale |
| Daly-BMS | ⚠️ experimentell, UUIDs aus Doku, ungetestet |
| JK/Jikong-BMS | ⚠️ experimentell, v. a. JK02-Offsets, ungetestet |
| Reihe und Parallel mehrerer Akkus | ⚠️ ungetestet an echtem Aufbau |
Die Routenqualität hängt an OpenStreetMap. Tiefen stehen dort nicht, Durchfahrtshöhen nur an manchen Brücken; die Route ist ein Vorschlag, kein Fahrwasser.
Vollständig in TODO.md, Änderungen in CHANGELOG.md.
Am einfachsten über F-Droid, dort kommen auch die Aktualisierungen. F-Droid liefert dieselbe signierte APK wie GitHub, beide lassen sich übereinander installieren.
Oder direkt von GitHub:
BoatSpeedy-…-release.apk unter Assets laden.Aktualisieren: neuere APK über die alte installieren. Gleiche Signatur, Einstellungen bleiben.
Braucht JDK 17 und das Android SDK.
./gradlew assembleDebug # Debug-APK
./gradlew assembleRelease # signierte Release-APK, braucht keystore.properties
./gradlew test # 184 Unit-Tests
Ergebnis in app/build/outputs/apk/. Die Bauten sind reproduzierbar: kein vcsInfo,
keine dependenciesInfo.
| Sprache | Kotlin |
| Oberfläche | Jetpack Compose, Material 3 |
| minSdk / targetSdk | 33 (Android 13) / 35 (Android 15) |
| Tempo und Satelliten | AOSP LocationManager, GnssStatus.Callback, keine Google Play Services |
| Karte | osmdroid, OpenStreetMap |
| Routing | Dijkstra über eigene Kacheln, Overpass als Rückfallebene |
| Batterie | Bluetooth LE (BluetoothGatt), Verbindung je Gerät |
| Fahrt im Hintergrund | Vordergrunddienst (foregroundServiceType=location) |
| Einstellungen | Jetpack DataStore |
| Aufbau | MVVM mit ViewModel und StateFlow |
ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION | GPS für Tempo und Satelliten; seit Android 12 werden beide zusammen angefragt |
FOREGROUND_SERVICE, …_LOCATION | Messen während der Fahrt |
POST_NOTIFICATIONS | Fahrt, Anker, Wetter, Laden (ab Android 13) |
INTERNET, ACCESS_NETWORK_STATE | Kartenkacheln, Wetter, Kartendaten, Update-Prüfung |
BLUETOOTH_SCAN (neverForLocation), BLUETOOTH_CONNECT | Batterie |
Kein ACCESS_BACKGROUND_LOCATION, der Dienst startet aus dem Vordergrund.
Datenquellen: Karten und Wasserwege © OpenStreetMap-Mitwirkende (ODbL), Seezeichen OpenSeaMap (CC BY-SA), Regenradar, Blitze und Warnungen vom Deutschen Wetterdienst (CC BY 4.0, Warnungen über Bright Sky).
MIT, siehe LICENSE.
🇬🇧 English · 🇩🇪 Deutsch
GPS boat speedometer and navigation for small boats. Under motor, paddle or oars. Routes along the waterways, around the weir by canoe. A Bluetooth BMS or a coulometer on the pack adds live values and range.
Website: boatspeedy.wozise.de · Canoe route planner · Waterway route planner
Without a battery you only lose the battery tile, the rest needs nothing but the phone.
The craft is motorboat or canoe, and the bans follow from it: boat=no stops a
motorboat, for a canoe it is a hint. On the upper Saale that is 44 km in one stretch.
A long press on the map sets a destination, as a straight line or a route along the waterways, each with distance and estimated amp hours. A course arrow shows how far to turn.
Map data. The waterways sit on the device as tiles, one degree wide and tall. All of Europe is 1376 tiles and 176 MB; a 150 km radius about 20 tiles and 3.4 MB. The phone computes the route from them itself, up to 600 km. Without tiles it uses the Overpass API, up to 60 km. Missing and outdated tiles are offered before a route is computed. The map underneath comes from OpenStreetMap and needs a connection. The map server can be changed under Navigation, Map data.
The tiles are built from OpenStreetMap via Geofabrik, see boatspeedy-mapdata.
Craft. Motorboat or canoe decides which bans apply. Access tags are read as the
graded set they are: access covers everything, boat covers boats, motorboat and
canoe the single kind, and the more specific one wins. So boat=no plus canoe=yes
means "no boats, canoes yes".
For a canoe a bare boat=no is a hint rather than a stop: on the upper Saale 44 km carry
it in one stretch, aimed at engines. Such sections cost triple when routes are compared,
so a free way wins where one exists, and they are drawn in red where none does.
Along the way. Locks, weirs and bridges with a clearance height appear on the map from zoom 11, with no route set. Tapping a lock shows opening hours, phone number, VHF channel and chamber size as OpenStreetMap records them; the symbol sits in the middle of the chamber, one per chamber on double locks. Put-ins, egress points and slipways follow from zoom 13, hydro power plants have their own symbol. Seamarks are tappable, speed signs show their number. Chevrons on rivers show the flow, and the box at the bottom left says how much of the route runs upstream and downstream.
Weirs and portage. A weir does not block the route, it costs: every lock and every portage wins against it, and where there is nothing, the route goes through and says so. In a canoe the route goes around the weir, along the portage paths from OpenStreetMap or from landing to landing, green dashed and with the metres at the bottom left. It never runs through a hydro power plant, and in a canoe it prefers the river to a mill or power canal. Mapped portage paths come first. Each weir counts once if the route goes through it or portages around it; merely passing nearby does not count.
Save and follow routes. A planned route can be saved with a name, shared and followed later, and so can a recorded trip. A dashed line leads from the boat to the start, then you follow the course.
Map. North up or course up, switched from the title bar. Marker and map glide the way a navigation device does: speed and heading are used to compute where the boat is now instead of jumping from fix to fix. Display only, the recorded track keeps the raw measurements.
xx, xx.x, xx.xxDeveloped and verified against an EcoWorthy LiFePO4 100 Ah with a JBD BMS.
| Area | Status |
|---|---|
| GPS speed, trip, stats | ✅ working |
| JBD, Redodo/LiTime/Power Queen | ✅ verified on hardware |
| Coulometer with Hall sensor | ✅ verified on hardware |
| Routing, tiles, locks | ✅ field-tested (Saale, Rhine, Main) |
| Portage, hydro power plants | ✅ tested on the Saale |
| Daly BMS | ⚠️ experimental, UUIDs from docs, untested |
| JK/Jikong BMS | ⚠️ experimental, JK02 offsets above all, untested |
| Series and parallel packs | ⚠️ untested on a real setup |
Route quality depends on OpenStreetMap. Depths are not in it, clearances only at some bridges; a route is a suggestion, not a fairway.
Full list in TODO.md, changes in CHANGELOG.md.
Easiest through F-Droid, which also brings the updates. F-Droid ships the same signed APK as GitHub, so either can be installed over the other.
Or straight from GitHub:
BoatSpeedy-…-release.apk under Assets.To update, install a newer APK over the old one. Same signing key, settings are kept.
Needs JDK 17 and the Android SDK.
./gradlew assembleDebug # debug APK
./gradlew assembleRelease # signed release APK, needs keystore.properties
./gradlew test # 184 unit tests
Output in app/build/outputs/apk/. Builds are reproducible: no vcsInfo, no
dependenciesInfo.
MIT, see LICENSE.