Build-Varianten können in Android Studio erstellt werden, indem man in Gradle einen bestimmten Satz von Regeln verwendet, um Einstellungen, Code und Ressourcen zu kombinieren, die in den Build-Typen und den Product Flavors konfiguriert sind. Jede Build-Variante steht für eine andere Version der App. Man kann z. B. eine kostenlose Version einer App mit einer begrenzten Anzahl von Funktionen erstellen und eine kostenpflichtige Version, die einen größeren Funktionsumfang besitzt. Es ist auch möglich, verschiedene Versionen einer App zu erstellen, die z.B. für unterschiedliche Kunden erstellt wird. Das ist besonders bei White Label Apps sehr interessant.White-Label-Produkte sind Produkte eines Herstellers, die nicht unter dessen eigener Marke, sondern als (scheinbares) Produkt eines anderen Herstellers bzw. Händlers unter anderer Marke verkauft werden. Die offizielle Doku kann…
Kommentare sind geschlossenjentsch.io Beiträge
Letztes Jahr im September habe ich einen Blog Post unter https://www.jentsch.io/action-required-your-app-is-not-compliant-with-google-play-policies/ geschrieben, in dem ich darüber berichtet habe dass meine App Smart Squares von Google mit dem Hinweis „Action Required: Your app is not compliant with Google Play Policies“ aus dem Google Play Store entfernt wurde. Grund dafür war die Verwendung des Textes „Shit happens. Try again“ in der App. Laut der Mail von Google haben diese 4 Worte dazu geführt hat, dass die App mit der Begründung „App content: Adult and Sexually Suggestive Content“ aus dem Google Play Store entfernt wurde. Auf der einen Seite ist es natürlich sehr gut, dass Google hier eine so strenge Regulierung und akribische Überwachung des Google Play Stores durchführt. Schließlich haben heute ja…
Kommentare sind geschlossenFür die Planung einer Fahrradtour gibt es schon endlos viele Webseiten, Apps und andere Projekte. Was mir hier noch fehlt ist ein Tool mit dem ich eine Route auf einer Karte zeichnen kann ohne dass ein Routenplanungsalgorithmus eingreift und mir vorgibt welchen Weg ich fahren soll. Also habe ich mich mal daran gemacht, ein Browser basiertes Tool zu erstellen, dass diese einfache Anforderung abdeckt. Folgende Funktionen waren mit dabei wichtig. Kartenmaterial mit Anzeige von Fahrradwegen Export und Import vom GPX Dateien Einfach zu benutzen Zoom Suche nach Adressen mit der Nominatim API Basierend auf OpenLayers habe ich also eine Webseite erstellt, auf der die OpenCycleMap von Thunderforest dargestellt wird. Für das Erstellen der Route habe ich ein JavaScript Programm erstellt,…
Kommentare sind geschlossenIn diesem Blog-Post geht es darum, eine App zu realisieren, die im den sogenannten Android Kiosk Modus unterstützt. Dadurch können z.B. Schulen, Restaurants, Hotels, Messen, oder Museen mobile Geräte an die Besucher austeilen und sicher sein, dass die Benutzer oder Mitarbeiter ausschließlich auf diese Kiosk-App zugreifen können und nicht in der Lager sind die Geräteeinstellungen zu öffnen oder andere Apps zu starten. Die hier verwendete Architektur funktioniert stabil ab Android 7 und verfolgt einen völlig anderen Ansatz als mein ursprünglicher Ansatz, den ich mal für Android 4 entwickelt habe und der darauf aufgebaut hat, dass man einen ForegroundService mit einem FullScreen Fenster verwendet das einfach überall (Sogar auf dem Lock-Screen und über der Actionbar) angezeigt wird. Leider hat sich seit…
Kommentare sind geschlossenIm Android-Developers Forum kam die Frage auf, ob es eine Möglichkeit gibt eine App auf die SD-Karte verschiebbar zu machen. Die Frage hat mich neugierig gemacht und ich habe mal nach Möglichkeiten gesucht. Da dies eine Information ist, die dem System nach außen zur Verfügung gestellt werden muss habe ich mal nach Tags oder Attributen im AndroidManifest gesucht und bin auch direkt auf auf das Attribut android:installLocation im manifest Tag aufmerksam geworden. Den Standard-Installationsort für eine App kann man seit API Level 8 (Andorid Froyo 2.2.x) über das AndroidManifest festlegen. Die folgenden3 gültigen Werte können hier angegeben werden: „internalOnly“ Die App darf nur auf dem internen Gerätespeicher installiert werden. Wenn dies eingestellt ist, wird die App niemals auf dem externen…
Kommentare sind geschlossenNominatim ist ein Werkzeug, um OpenStreetMap-Daten nach Name und Adresse zu durchsuchen und Adressen oder bekannte Orte in OpenStreetMap-Koordinaten zu ermitteln oder ein Reverse-Geocodierung (Georeferenzierung) Reverse Geocoding ist der Prozess der Umwandlung eines Standorts, wie er durch geografische Koordinaten (Breitengrad, Längengrad) beschrieben wird, in eine für Menschen lesbare Adresse oder einen Ortsnamen. Es ist das Gegenteil von Vorwärts-Geokodierung (oft als Adress-Geokodierung oder einfach „Geokodierung“ bezeichnet), daher der Begriff umgekehrt. Die umgekehrte Geokodierung ermöglicht die Identifizierung von nahegelegenen Straßenadressen, Orten und/oder Gebietsunterteilungen wie Stadtteilen, Landkreisen, Bundesstaaten oder Ländern. https://en.wikipedia.org/wiki/Reverse_geocoding Die Geocodierungsdaten können über die Nominatim API kostenlos abgerufen und verwendet werden. Die API unterliegt keinerlei Limits und es ist auch kein API-Key oder eine OAuth Authentifizierung nötig. Die wichtigsten JSON Endpunkte der Nominatim API sind die folgenden: /search Suche…
Kommentare sind geschlossenSchon mal gesehen? Wer den Jetson Nano 2GB besitzt und schon mal einige Experimente mit Tensorflow und so gemacht hat, der kennt die folgenden Log-Ausgaben betimmt. 2021-06-24 11:28:26.160087: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcublas.so.10 2021-06-24 11:28:28.986454: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudnn.so.8 2021-06-24 11:28:44.183867: W tensorflow/core/common_runtime/bfc_allocator.cc:248] Allocator (GPU_0_bfc) ran out of memory trying to allocate 17.49MiB with freed_by_count=0. The caller indicates that this is not a failure, but may mean that there could be performance gains if more memory were available. 2021-06-24 11:28:44.254723: W tensorflow/core/common_runtime/bfc_allocator.cc:248] Allocator (GPU_0_bfc) ran out of memory trying to allocate 33.00MiB with freed_by_count=0. The caller indicates that this is not a failure, but may mean that there could be performance gains if more memory…
Kommentare sind geschlossenAus Interesse habe ich mir mal bei https://de.aliexpress.com/item/1005002327125356.html eine Smartwatch mit einem riesigen 2,88 Zoll Display bestellt und habe sie seit ein paar Tagen im Test. Die S999 4G Smartwatch verfügt über einen MTK6761 Quad Core Prozessor, 4GB RAM 64GB Flash Speicher, Pulsmesser, GPS, Wifi Bluetooth, 2 Kameras und noch einiges mehr. Der verbaute Mediatek MT6761 Prozessor verfügt über 4 ARM Cortex-A53 Kerne. Im AnTuTu v7 CPU Benchmark erreicht er ca. 29990 Punkte was etwa einem Qualcomm Snapdragon 429 entspricht. Weitere Benchmarks und andere Details zum Mediatek Helio A22 MT6761 kann man unter https://www.notebookcheck.com/Mediatek-Helio-A22-MT6761-SoC-Benchmarks-und-Specs.420305.0.html nachlesen. Installiert ist ein Android 9 incl. Google Play Store und den entsprechenden Google Play Diensten (z.B. der Google Assistent ). Auch ein paar Basis-Apps wie z.B.…
Kommentare sind geschlossenIch habe ja schon so einige Pakete aus China bekommen, aber so einen Aufkleber habe ich bisher noch nie gesehen. Üblich sind die grünen kleinen Aufkleber vom Zoll mit dem netten Hinweis: „von zollamtlicher Behandlung befreit„. Der grüne Aufkleber mit dem Text „von zollamtlicher Behandlung befreit“ soll eigentlich nur eine Ifo darüber sein, dass der Zoll das Paket geprüft hat und festgestellt hat, dass keine Abgaben zu leisten sind. Aber was ist dieser neue Aufkleber mit dem Text „goods not fulfilling the conditions laid down in articles 28 and 29“? Nach ein wenig Recherche in den endlosen Weiten des WWW habe ich dann eine Antwort gefunden: Es handelt sich um eine Bescheinigung darüber, dass anfallende Import -Kosten im Ankunftsland innerhalb…
Kommentare sind geschlossenNachdem ich mir heute mal etwas Zeit genommen habe um Mozilla Deepspeech auf dem Jetson Nano zu installieren wollte ich mal die Ergebnisse von 3 unterschiedlichen Mikrofonen testen. Für den Test habe ich die SD Karte im Jetson Nano mal wieder neue initialisiert und dann DeepSpeech v0.9.3 installiert. Unter https://github.com/AASHISHAG/deepspeech-german#trained-models habe ich sogar ein deutsches Modell für Deepspeech gefunden. This model is trained on DeepSpeech v0.9.0 using pre-trained English model released by Mozilla English+Mozilla_v5+SWC+MAILABS+Tuda-De+Voxforge (1700+750+248+233+184+57h=3172h)Link: https://drive.google.com/drive/folders/1L7ILB-TMmzL8IDYi_GW8YixAoYWjDMn1?usp=sharing Vielen Dank an Karsten Ohme für die Bereitstellung des TFLite-Modells. Relevant sind die Dateien output_graph_from_koh-osug.tflite und kenlm.scorer. Im Github Repository https://github.com/mozilla/DeepSpeech-examples habe ich das kleine Python Script „mic_vad_streaming.py“ gefunden, dass für den einfachen Test gut geeignet ist, denn es enthält einen Voice Activity Detection (VAD) Filter, der sehr…
Kommentare sind geschlossen