User Tools

Site Tools


android_development

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
android_development [2024/12/11 16:43] – kalaschnikowandroid_development [2026/08/15 10:44] (current) – [Tools] kalaschnikow
Line 1: Line 1:
 +====== Android development ======
  
 +===== Documentation and Tutorials =====
 +==== Official ====
 +  * [[https://developer.android.com/get-started/overview|Get started with Android]]
 +    * [[https://developer.android.com/courses|Training]] (Courses)
 +    * [[https://developer.android.com/get-started/codelabs|Tutorials]] (Codelabs)
 +
 +
 +  * [[https://developer.android.com/samples/index.html|Samples]]
 +  * [[https://github.com/googlesamples/android-architecture|Android Architecture Blueprints]] - official examples for different Android techniques
 +
 +=== Misc ===
 +
 +  * [[How To Become an Android Developer]] (video) by Daniel Atitienei
 +  * [[https://proandroiddev.com/top-9-android-developer-interview-questions-you-should-know-05e8fe2acd2c|Top Nine Android Developer Interview Questions You Should Know]]
 +  * [[https://developer.android.com/training/best-performance.html|App performance guide]]
 +  * [[https://developers.google.com/android/images|Factory Images for Nexus and Pixel Devices]] (for emulator?)
 +
 +
 +
 +==== API ====
 +[[https://blog.autsoft.hu/discovering-the-android-api-part-1/|Discovering the Android API - Part 1]] - 
 +Nice article about not widely known APIs like: Spell Checker, Text Recognizer, TimingLogger, Taking screenshots, PDF Creation.
 +
 +[[https://www.heise.de/newsticker/meldung/Android-Verteilung-Google-nennt-erstmals-seit-Mai-2019-wieder-Zahlen-4701535.html|Android Versionen Verteilung]], Stand April 2020: 80% - ab Android 6
 +
 +===== Tools =====
 +
 +  * [[https://developer.android.com/distribute/marketing-tools/device-art-generator|Device Art Generator]] - a handy tool to frame screenshots\\
 +  * [[https://icon.kitchen|IconKitchen]] - Launcher Icon Generator by Roman Nurik
 +  * [[http://a-student.github.io/SvgToVectorDrawableConverter.Web/|SVG to Vector Drawable converter]]\\ 
 +  * [[https://plugins.jetbrains.com/plugin/24723-imagevector-wizard|ImageVector Wizard]] - Android Studio plugin by Emre Mert Özdemir
 +    * Supports creating Compose ImageVector files from SVG & XML files, with an optional optimization feature. It converts SVG files to XML first, then converts them to ImageVector in the background. It uses the same ui as the Vector Asset Studio in Android Studio.
 +  * [[http://shapes.softartstudio.com|Android Shapes Generator]]
 +  * [[https://cloudconvert.com|CloudConvert]] - Bilder (u.a. Vektor) konvertieren
 +  * [[https://johncodeos.com/how-to-resize-icons-and-images-easily-in-android-studio/|Drawable Resizer Plugin]]
 +  * [[https://plugins.jetbrains.com/plugin/13121-http-client|HTTP client]] - good plugin from JetBrains to test APIs
 +    * see also: https://www.youtube.com/watch?v=rZszkFxZ8xA
 +
 +
 +  * [[https://medium.com/@naveentp/awesome-list-of-online-tools-for-android-developers-f40af8f46299|Awesome List Of Online Tools For Android Developers]]\\ 
 +
 +==== scrcpy ====
 +To start scrcpy with the device where it does not work:
 +
 +''scrcpy -m 1080'' 
 +
 +or 
 +
 +''scrcpy -m 1800'' 
 +
 +or some other resolution
 +
 +===== Google Play =====
 +
 +[[Google Play]]
 +
 +===== Design Patterns =====
 +
 +[[https://www.raywenderlich.com/109843/common-design-patterns-for-android|
 +Common Design Patterns for Android]] -> [[Common Design Patterns for Android Summary]]
 +
 +[[https://github.com/futurice/android-best-practices|Android Best Practices]] by Futurice
 +
 +
 +
 +===== GPS, Maps, and OBDII =====
 +
 +[[https://lembergsolutions.com/blog/developing-basic-features-your-fleet-management-application|Developing Basic Features for Your Fleet Management Application]]
 +
 +[[https://www.raywenderlich.com/7372-geofencing-api-tutorial-for-android|Geofencing API Tutorial for Android]] - Geofencing with Google Maps API. At the moment only round geofences supported (as of 28.10.2018).
 +
 +[[https://lembergsolutions.com/blog/how-guide-obdii-reader-app-development|How-to Guide for OBDII Reader App Development]]
 +
 +[[https://github.com/fr3ts0n/AndrOBD|AndrOBD]] - app and lib for OBDII 
 +
 +
 +===== KMP (Kotlin Multiplatform) =====
 +
 +[[Kotlin Multiplatform]]
 +
 +===== Jetpack =====
 +
 +  * [[Android Jetpack]]
 +  * [[Android Jetpack Compose]]
 +
 +===== AndroidX =====
 +  * [[https://android-developers.googleblog.com/2023/10/androidx-minsdkversion-19.html|AndroidX moving to minSdkVersion 19]] - article published on 16.10.2023
 +  * [[https://proandroiddev.com/pdfviewerfragment-androidx-b31cd5398ac4|PDFViewerFragment — AndroidX]]
 +
 +
 +===== AppBar =====
 +
 +https://developer.android.com/guide/fragments/appbar
 +
 +
 +===== Navigation Rail =====
 +[[https://joebirch.co/android/exploring-the-material-navigation-rail/|Exploring the Material Navigation Rail]] by Joe Birch
 +
 +===== Room =====
 +
 +  * [[https://proandroiddev.com/how-to-implement-synchronization-in-room-database-in-kotlin-a7960bccb51d|How to implement Synchronization in Room Database in Kotlin]]
 +===== UI =====
 +
 +  * [[https://developer.android.com/develop/ui|Develop UI for Android]]
 +    * Learn building UI with Android
 +    * ...
 +
 +==== ConstraintLayout ====
 +
 +[[https://constraintlayout.com]]
 +
 +[[https://medium.com/@loutry/guide-to-constraintlayout-407cd87bc013#.a8836laei|Guide to ContraintLayout]]
 +
 +[[https://android.jlelse.eu/build-awesome-animations-with-7-lines-of-code-using-constraintlayout-854e8fd3ad93|Build awesome animations with 7 lines of code using ConstraintLayout]]\\ 
 +
 +==== RecyclerView ====
 +
 +[[http://www.grokkingandroid.com/first-glance-androids-recyclerview/|A first glance at Android's RecyclerView]] - a detailed overview by Wolfram Rittmeyer 
 +
 +[[https://github.com/codepath/android_guides/wiki/Using-the-RecyclerView|Using the RecyclerView]] - a tutorial by Codepath
 +
 +[[https://developer.android.com/training/material/lists-cards.html|Creating Lists and Cards]] - by Google
 +
 +RecyclerView [[https://www.bignerdranch.com/blog/recyclerview-part-1-fundamentals-for-listview-experts/| Part 1: Fundamentals For ListView Experts]], [[https://www.bignerdranch.com/blog/recyclerview-part-2-choice-modes/|Part 2: Choice Modes]] - by BigNerdRanch
 +
 +[[https://guides.codepath.com/android/Endless-Scrolling-with-AdapterViews-and-RecyclerView|Endless scrolling with AdapterViews and RecyclerView]]
 +
 +[[http://msobhy.me/2015/09/05/infinite_scrolling_recyclerview/|Infinite Scrolling RecyclerView]]
 +
 +[[https://medium.com/@jonfhancock/your-viewholders-are-dumb-make-em-not-dumb-82e6f73f630c#.szqca7dbs|Your ViewHolders are Dumb. Make ’em Not Dumb.]] - an interesting article. Not 100% about RecyclerViews but about ViewHolders, which are extensively used with RecyclerView.
 +
 +[[https://krtkush.github.io/2016/07/08/android-recyclerview-grouping-data.html|Android RecyclerView - Grouping Data]]\\ 
 +[[https://medium.com/google-developers/recyclerview-prefetch-c2f269075710#.qyrqwcdkz|RecyclerView Prefetch]] by Chet Haase
 +
 +[[https://android.jlelse.eu/understanding-recyclerview-part-1-the-basics-a7bd07cfae93|Understanding RecyclerView Part 1: The Basics]] by Nilesh Singh
 +
 +[[https://medium.com/@trionkidnapper/recyclerview-more-animations-with-less-code-using-support-library-listadapter-62e65126acdb|RecyclerView — More Animations with Less Code using Support Library ListAdapter]]
 +
 +[[https://proandroiddev.com/androids-paging-library-stripped-6d951da4fa3f|Android’s Paging Library — Stripped]]
 +
 +
 +==== Loaders ====
 +
 +[[https://medium.com/google-developers/making-loading-data-on-android-lifecycle-aware-897e12760832#.uwnf97jpk|Making loading data lifecycle aware]] by Ian Lake
 +
 +==== UI Libraries and Elements ====
 +
 +  * Icons
 +    * https://fonts.google.com/icons - material icons  from Google Fonts
 +    * https://developer.android.com/jetpack/compose/graphics/images/material
 +    * https://developer.android.com/reference/kotlin/androidx/compose/material/icons/package-summary
 +    * https://composeicons.com/
 +      * Looking for app icons? Alex Styl has converted the Internet's most popular icon libraries to Jetpack Compose Image Vectors so you will never run out of icons to use in your Compose apps.
 +    * https://intellij-icons.jetbrains.design/
 +    * https://icon.kitchen/ - icons generator by Roman Nurik
 +
 +[[https://www.techyourchance.com/dialogs-in-android-practical-guide/|Dialogs in Android: Practical Guide]] by Vasiliy Zukanov\\ 
 +[[https://github.com/RiccardoMoro/RMSwitch|RMSwitch]] - 2 or 3 position switch with customizable positions\\ 
 +[[https://github.com/vijayrawatsan/android-json-form-wizard|Android JSON Form Wizard]]\\ 
 +[[https://github.com/TechFreak/WizardPager|WizardPager]]- library helping make wizards based on Roman Nurik's [[https://github.com/romannurik/android-wizardpager|Android WizardPager]]\\ 
 +[[https://github.com/Commit451/ModalBottomSheetDialogFragment|ModalBottomSheetDialogFragment]]\\ 
 +[[https://proandroiddev.com/creating-an-expandable-floating-action-button-in-android-6626b968559e|Creating an Extendable Floating Action Button in Android (Part 1)]] [[https://proandroiddev.com/creating-an-expandable-floating-action-button-in-android-part-2-5b17bbcd213d|(Part2)]]\\ 
 +[[https://vladsonkin.com/ultimate-guide-to-android-custom-view/|Ultimate Guide To Android Custom View]] by Vlad Sonkin\\ 
 +[[https://proandroiddev.com/android-extendedfloatingactionbutton-quick-tips-to-start-using-it-today-29cfd4c28f43|Quick Tips to Start Using ExtendedFloatingActionButton]]\\ 
 +[[https://github.com/quickbirdstudios/SurveyKit|SurveyKit]]\\ 
 +[[https://dev.to/mmbialas/25-best-android-libraries-projects-and-tools-you-won-t-want-to-miss-out-in-2021-3kik|25 Best Android Libraries, Projects, and Tools You Won’t Want to Miss Out in 2021]]\\ 
 +
 +
 +==== Animation ====
 +
 +[[https://android-developers.googleblog.com/2020/07/introducing-motion-editor.html|Introducing Motion Editor]]\\ 
 +[[https://www.youtube.com/watch?v=o8c1RO3WgBA|Videos about MotionLayout]]\\ 
 +
 +[[https://github.com/alexjlockwood/ShapeShifter|ShapeShifter]] - a very amazing tool to generate icon animations, more precise: to "morph" from one icon to another
 +
 +[[http://www.androiddesignpatterns.com/2016/11/introduction-to-icon-animation-techniques.html|An Introduction to Icon Animation Techniques]] by Alex Lockwood\\ 
 +[[https://android.jlelse.eu/build-awesome-animations-with-7-lines-of-code-using-constraintlayout-854e8fd3ad93|Build awesome animations with 7 lines of code using ConstraintLayout]]\\ 
 +[[https://uxdesign.cc/good-to-great-ui-animation-tips-7850805c12e5|Good to great UI animation tips]] by Pablo Stanley\\ 
 +[[https://github.com/daimajia/AndroidViewAnimations|Android View Animations]] - demo app auf Github
 +
 +==== Dark Mode ====
 +  * [[https://eevis.codes/blog/2024-03-07/why-your-app-should-have-both-dark-and-light-themes/|Why Your App Should Have Both Dark And Light Themes]]
 +    * contains interesting links, e.g. 
 +      * generate a theme with a web tool
 +      * how to check contrast of a theme
 +  
 +
 +[[https://proandroiddev.com/daynight-applying-dark-mode-without-recreating-your-app-c8a62d51092d|DayNight — Applying dark mode without recreating your app]]
 +==== Sharing ====
 +[[https://vladsonkin.com/android-sharesheet-old-dog-new-tricks/|Android Sharesheet: Old Dog, New Tricks]] by Vlad Sonkin\\ 
 +[[https://vladsonkin.com/4-easy-steps-to-master-android-sharing-shortcuts/|4 Easy Steps To Master Android Sharing Shortcuts]] by Vlad Sonkin
 +
 +==== Accessibility, User-Friednlyness etc ====
 +
 +  * [[https://proandroiddev.com/android-for-everyone-part-1-android-accessibility-a0dd9043db76|Android for Everyone]] - article series about Android and accessibility by Pamela Hill
 +  * [[https://www.youtube.com/watch?v=YY7fAbepxfg|My Top 10 UX Quick Tips to Instantly Improve the User-Friendliness of Your Mobile App]] by Philipp Lackner
 +
 +==== Crash logging etc ====
 +
 +  * [[https://proandroiddev.com/migrating-crashlytics-to-the-firebase-console-5e05b6ff8c12|Migrating Crashlytics to the Firebase Console]] (old?) 
 +
 +  * [[https://www.youtube.com/watch?v=bnhkYkr1_1k|Crashlytics for your Android apps with Kevin Morales]]
 +    * Kevin Morales talking about Crashlytics (service by Firebase) and how to implement in your Android apps with Kotlin.
 +  * [[https://github.com/measure-sh/measure|measure]]
 +    * Measure is an open source tool to monitor mobile apps.
 +      * Capture Crashes and ANRs automatically
 +      * Monitor app health metrics such as launch times, crash rates and app sizes
 +      * Get screenshots with exception reports
 +      * View full event timelines of error sessions with auto-tracked user clicks, navigation events, http calls, cpu usage, memory usage and more for deeper context
 +      * Track custom events with additional business specific attributes
 +      * Self hosted and private. Your data stays in your servers
 +
 +
 +
 +==== Misc ====
 +
 +  * [[https://proandroiddev.com/dealing-with-read-media-images-permissions-in-android-62d49abd5767|Dealing with READ_MEDIA_IMAGES Permissions in Android]] by Dobri Kostadinov
 +    * [ACTION REQUIRED] Ensure Your App Complies with Google Play’s Latest Policy by January 22 2025
 +    * Suggested solution:
 +      * By leveraging the system photo picker and ensuring the camera captures images directly to a file, you can remove the READ_MEDIA_IMAGES permission from your app and comply with Google Play's latest requirements. This not only keeps your app on the Play Store but also improves user privacy and security.
 + 
 +
 +[[https://proandroiddev.com/what-are-dynamic-app-shortcuts-d76ab680edf1|What Are Dynamic App Shortcuts?]]
 +
 +[[https://material.io/blog/5-steps-large-screen-apps|Start Here: 5 Exercises to Prepare Your App for Large Screens]] - What to prioritize when building a responsive experience
 +
 +[[https://medium.com/androiddevelopers/using-vector-assets-in-android-apps-4318fd662eb9|Using vector assets in Android apps]] by Nick Butcher (Using androidx / appcompat etc.)
 +
 +[[https://riggaroo.co.za/resources-getting-started-android-development/|Resources for Getting Started with Modern Android Development]] by Rebecca Franks\\ 
 +
 +
 +[[https://medium.com/uptech-team/how-to-create-beautiful-text-stickers-for-android-10eeea0cee09#.slwzr9fui|How to create beautiful text stickers for Android]]\\ 
 +[[https://www.novoda.com/blog/layout-preview-101/|Working with the Layout Preview]]\\ 
 +[[https://hackernoon.com/make-your-android-app-look-less-shitty-5dd63c4938f1#.qa4qo62px|Make your Android app look less shitty]]\\ 
 +[[https://commonsware.com/blog/2017/01/04/options-viewing-pdfs.html|Options for Viewing PDFs]]\\ 
 +[[https://medium.com/@calren24/android-parcelables-made-easy-acb742bcf96b|Android Parcelables Made Easy]]\\
 +[[http://handstandsam.com/2017/05/04/identifying-an-android-device/|Identifying an Android Device – Available Identifiers]]\\ 
 +[[https://youtu.be/--0Plt3vyt4?list=WL|Quick Tip: UITableViewController Performance Tips (Route 85) -> YouTube Video]]\\ 
 +[[Target API 26 on November 2018]]\\ 
 +[[https://joebirch.co/2019/05/07/exploring-in-app-updates-on-android/|Exploring in-app updates on Android]] by Joe Birch\\ 
 +
 +[[http://stackoverflow.com/questions/15472383/how-can-i-run-code-on-a-background-thread-on-android|How can I run code on a background thread on Android?]] - Stackoverflow question with some links in it
 +
 +[[https://developer.android.com/training/multiple-threads/index.html|Google's Training to multiple threads on Android]] - Sending Operations to Multiple Threads
 +
 +[[http://developer.android.com/training/improving-layouts/smooth-scrolling.html|Making ListView Scrolling Smooth]] - Google's Training
 +
 +[[http://benjii.me/2010/08/endless-scrolling-listview-in-android/|Endless Scrolling ListView in Android]] - Tip from Ben Cull
 +
 +[[https://www.raywenderlich.com/3988300-vector-graphics-on-android|Vector Graphics on Android]] by Kyle Jablonski
 +
 +[[https://joebirch.co/2020/01/24/enabling-dark-theme-in-android-webviews/|Enabling dark theme in Android WebViews]] by Joe Birch
 +
 +
 +
 +[[https://www.raywenderlich.com/14273655-mediaplayer-simplified-video-playback-on-android|MediaPlayer: Simplified Video Playback on Android]]
 +
 +[[https://android-developers.googleblog.com/2022/05/13-things-to-know-for-android-developers-at-google-io.html|
 +13 Things to know for Android developers at Google I/O!]] (2022)
 +
 +[[http://joebirch.co/android/exploring-dagger-hilt-application-level-code-generation/|Exploring Hilt: Application Level Code Generation]]
 +
 +[[https://www.youtube.com/watch?v=5KE4xlPvlBo| Splash Screen API - Android Studio]] by Daniel Atitienei (video)
 +
 +[[https://www.youtube.com/watch?v=zFfKqlmlfPE|How To Bring An Old Project To Live (Step-By-Step) | Jetpack Compose]] - a video by Jov Mit
 +
 +===== In-App Billing =====
 +
 +[[https://hackernoon.com/implementing-in-app-billing-in-android-4896232c7d6b#.ltc0my154|Implementing In-App Billing]] (with [[https://github.com/serso/android-checkout|Checkout library]])
 +
 +[[https://proandroiddev.com/solve-these-5-google-plays-billing-issues-to-improve-your-apps-69f0834b6ace|Solve These 5 Google Play’s Billing Issues to Improve Your Apps]] - with tips how to fix them, e.g. how to prevent usage of Lucky Patcher (a tool to patch apps to get paid products for free)
 +
 +[[https://developers.google.com/pay/api/android/guides/tutorial|Google Pay API Tutorial]]
 +
 +===== Android Auto and Android Automotive OS=====
 +
 +==== Android Automotive ====
 +  * [[https://source.android.com/docs/automotive/start/what_automotive|What is Android Automotive?]]
 +  * [[https://de.wikipedia.org/wiki/Android_Automotive|Android Automotive (in Wikipedia)]]
 +
 +  * [[https://developer.android.com/training/cars/testing#test-automotive-os|Test Android apps for cars]]
 +    * Android Automotive OS emulator etc. 
 +
 +==== Android for Cars ====
 +
 +  * [[https://developer.android.com/cars|Android for Cars]]
 +
 +  * [[https://android-developers.googleblog.com/2024/05/android-for-cars-bringing-more-apps-to-cars.html|Android for Cars: Bringing more apps to cars]]
 +
 +  * [[https://developer.android.com/training/cars/apps|Use the Android for Cars App Library]]
 +  * [[https://developer.android.com/reference/androidx/car/app/package-summary|androidx.car.app JavaDoc]]
 +  * [[https://developer.android.com/codelabs/car-app-library-fundamentals#0|Learn Car App Library fundamentals]] - codelab
 +
 +==== Articles etc ====
 +  * [[https://android-developers.googleblog.com/2023/04/expanding-options-for-building-apps-for-cars.html|Bring your IOT apps to cars]]
 +
 +  * [[https://developer.android.com/docs/quality-guidelines/car-app-quality?category=iot|Android app quality for cars]]
 +  * [[https://developer.android.com/static/training/cars/Android%20for%20Cars%20App%20Library%20design%20guidelines.pdf|Android for Cars App Library
 +design guidelines]]
 +
 +===== Android Wear etc. =====
 +
 +==== Android Wear 2.0 ====
 +
 +=== Documentation, Tutorials, Articles ===
 +
 +[[https://codelabs.developers.google.com/codelabs/watchface/index.html|Create a watchface for Wear OS]]
 +
 +
 +=== Девайсы, на которые будет апдейт на Android Wear 2.0 ===
 +  * Asus Zenwatch 2 und 3 (нет HR)
 +  * Casio Smart Outdoor Watch (WSD-F10) und Pro Trek Smart (WSD-F20) (нет HR)
 +  * Fossil Q Founder, Marshal und Wander (нет HR)
 +  * Huawei Watch (нет HR)
 +  * LG G Watch R, Watch Urbane und Watch Urbane 2nd Edition LTE 
 +  * LG Watch Sport – running out of the box
 +  * LG Watch Style – running out of the box
 +  * Michael Kors Access Bradshaw Smartwatch (нет HR)
 +  * Michael Kors Access Dylan Smartwatch (нет HR)
 +  * Moto 360 (2nd Gen), for Women und Sport (есть HR)
 +  * [[http://www.newbalance.de/de/runiq/|New Balance RunIQ]] (нет HR?)
 +  * Nixon Mission 
 +  * [[https://www.polar.com/de/produkte/sport/M600|Polar M600]] (есть HR)
 +  * Tag Heuer Connected
 +  * New Balance RunIQ
 +
 +=== Интересные девайсы ===
 +[[https://www.mobvoi.com/eu/pages/ticwatchpro|TicWatch Pro]] - часы с двумя дисплеями, держат 4 дня, 250€
 +
 +=== Libraries ===
 +
 +[[https://github.com/purposebakery/wearfaceutils|Wearfaceutils]] - Helps to calculate a point on a generic Android Wear Watchface by using nothing more than a margin from the outer boundary and an angle. Especially useful for round faces with a chin.
 +
 +==== Ant / Ant+ ====
 +
 +=== What do I need ===
 +  * Ant+ and(!) Bluetooth Smart
 +
 +=== Hardware ===
 +== Foot pod ==
 +[[https://www.thisisant.com/directory/foot-pod|Garmin foot pod]] - [[https://www.amazon.de/Garmin-Laufsensor-Forerunner-Adapter-schwarz/dp/B00264GKVQ/ref=cts_wa_1_vtp?pf_rd_m=A3JWKAKR8XB7XF&pf_rd_p=1212178327&pf_rd_r=JHSW08J52DSYVQJG9HXK&pd_rd_wg=uL09v&pf_rd_s=desktop-detail-softlines&pf_rd_t=40701&pd_rd_i=B00264GKVQ&pd_rd_w=o9wO7&pf_rd_i=desktop-detail-softlines&pd_rd_r=JHSW08J52DSYVQJG9HXK&_encoding=UTF8|58€ on Amazon]]
 +
 +[[https://www.amazon.de/Timex-Sportuhren-Plus-Sensor-T5K573/dp/B006ZS7DB0| Timex ANT+ Foot Pod Sensor]] 98€ (is possible to buy for 50 €)
 +
 +== Cadence/Speed Sensors ==
 +[[https://www.thisisant.com/directory/ant-ble-combo-sensor-1/|Suunto Bike sensor]] - ca. 60€
 +
 +
 +===== Preferences =====
 +[[http://stackoverflow.com/questions/5484424/multiple-dependency-in-checkboxpreference-android-or-listpreferences-dependency|Dependency on ListPreference]]
 +
 +===== Doze Mode =====
 +
 +Doze mode:
 +  * since Android 23+ (Android 6.0)
 +  * No network
 +  * system ignores wake locks
 +  * standard alarms are deferred
 +    * including sync adapters and job schedulers
 +
 +
 +[[Android Job-Scheduling]] - Job Scheduling and Doze Mode
 +
 +[[https://medium.com/@mohitgupta_87777/testing-your-app-on-doze-mode-4ee30ad6a3b0|Testing Your App on Doze Mode]]\\ 
 +[[https://www.bignerdranch.com/blog/diving-into-doze-mode-for-developers/|Diving Into Doze Mode for Developers]]\\ 
 +
 +[[https://issuetracker.google.com/issues/37070074|Doze Mode Bug in Android M]] 
 +
 +[[Building Battery-Conscious Apps]] - ein Online-Kurs auf LinkedIn\\ 
 +
 +===== Access location in the background =====
 +
 +Since Oreo it is not more allowed to access location in the background all the time, only when the app is in the front or if the service is a foreground service of type "location". Here are some articles and docs about it.
 +
 +  * https://developer.android.com/training/location/background
 +    * Github Repo: https://github.com/android/location-samples
 +  * https://developer.android.com/training/location/request-updates
 +  * [[https://codelabs.developers.google.com/codelabs/while-in-use-location/|Receive location updates in Android with Kotlin]] - a Google codelab
 +  * [[https://github.com/googlecodelabs/background-location-updates-android-o|Codelab for learning about changes to background location gathering in Android "O".]]
 +  * [[https://developer.android.com/about/versions/11/privacy/location|Location updates in Android 11]]
 +  * [[https://www.youtube.com/watch?v=xTVeFJZQ28c|How to find possible background location usage in your code]] - a video by Jeremy Walker with many very useful links in the description
 +  * [[https://developer.android.com/about/versions/11/behavior-changes-11|Behavior changes: Apps targeting Android 11]]
 +  * https://developer.android.com/guide/components/foreground-services
 +  * https://developer.android.com/training/location/permissions
 +  * https://developer.android.com/guide/background
 +  * https://developer.android.com/training/monitoring-device-state/doze-standby
 +  * https://www.bignerdranch.com/blog/diving-into-doze-mode-for-developers/
 +  * https://medium.com/@mohitgupta92/testing-your-app-on-doze-mode-4ee30ad6a3b0
 +  * https://www.protechtraining.com/blog/post/diving-into-android-m-doze-875
 +  * [[https://proandroiddev.com/android-foreground-service-restrictions-d3baa93b2f70|Android Foreground Service Restrictions]]
 +  * [[https://stackoverflow.com/questions/48945300/how-to-open-window-of-autostart-application-for-all-devices|How to open window of Autostart Application for all devices?]]
 +  * [[https://www.androidauthority.com/auto-start-app-review-61346/|Automatically Running Apps After Rebooting Android Phone]]
 +  * https://stackoverflow.com/questions/43048010/how-to-test-doze-mode-on-android
 +  * https://stackoverflow.com/questions/55683726/how-to-perform-background-service-while-battery-optimization-is-active
 +  * https://stackoverflow.com/questions/52168945/how-to-keep-gps-receiver-location-updates-when-the-app-is-in-background-google
 +  * https://stackoverflow.com/questions/600207/how-to-check-if-a-service-is-running-on-android?rq=1
 +
 +===== Asynchronous Loading and Sheduling Tasks =====
 +
 +[[https://blog.yipl.com.np/things-to-consider-before-running-background-tasks-e71f00d2ad3a#.gww30vdww|Things to consider before running background tasks]] - an overview about possibilities to run background tasks by Umesh Basnet. 
 +
 +[[https://medium.com/google-developers/making-loading-data-on-android-lifecycle-aware-897e12760832#.zeovr6657|Making loading data lifecycle aware]] by Ian Lake
 +
 +[[http://stackoverflow.com/questions/2471935/how-to-load-an-imageview-by-url-in-android|How to load an image by URL in Android]]
 +
 +[[https://medium.com/@jagsaund/android-handler-internals-b5d49eba6977#.1z3f6ayf2 | Android Handler Internals]] by Jag Saund -> very intereting article with multiple good tips for solving typical problems with Handlers (e.g. leaking Activity etc.).
 +
 +[[https://developer.android.com/reference/android/os/StrictMode.html|StrictMode]]
 +
 +[[https://blog.hypertrack.io/2016/12/01/scheduling-tasks-in-android-made-easy/|Sheduling tasks in Android made easy]] - overview about all possibilities and introducing a [[https://github.com/hypertrack/smart-scheduler-android|smart-scheduler-android]] library
 +
 +[[https://blog.klinkerapps.com/android-o-background-services/|Preparing for O: The Death of Background Services]] :\\ 
 +  * Don't use AlarmManager, use JobScheduler instead
 +  * Convert IntentServices to JobServices
 +  * Use firebase-jobdispatcher (from Support library) for devices with Android less than 5.0
 +  * Service.startForeground() should be used for foreground services
 +  * Start foreground service from background with NotificationManager.startServiceInForeground()
 +
 +[[https://android-developers.googleblog.com/2018/10/modern-background-execution-in-android.html|Modern background execution in Android]] (October 2018):
 +  * Guaranteed execution of deferrable work -> use WorkManager (in public preview at October 2018)
 +  * A task initiated in response to an external event -> FCM + WorkManager
 +  * Continue user-initiated work that needs to run immediately even if the user leaves the app -> Foreground service
 +  * Trigger actions that involve user interactions, like notifications at an exact time. -> AlarmManager
 +
 +==== WorkManager ====
 +
 +[[https://developer.android.com/topic/libraries/architecture/workmanager/|Schedule tasks with WorkManager]] (official)
 +
 +[[https://developer.android.com/topic/libraries/architecture/workmanager/basics|Getting started with WorkManager]] (official)
 +
 +[[https://medium.com/androiddevelopers/introducing-workmanager-2083bcfc4712|Introducing WorkManager]] by Pietro Maggi
 +
 +[[https://medium.com/androiddevelopers/workmanager-basics-beba51e94048|WorkManager Basics]] by Lyla Fujiwara 
 +
 +[[https://www.raywenderlich.com/20689637-scheduling-tasks-with-android-workmanager|Scheduling Tasks With Android WorkManager]]
 +
 +[[https://medium.com/@magdamiu/workout-your-tasks-with-workmanager-intro-db5aefe14d66|Workout your tasks with WorkManager — Intro]]
 +
 +[[https://android-developers.googleblog.com/2019/11/unifying-background-task-scheduling-on.html|
 +Unifying Background Task Scheduling on Android]] (using WorkManager)
 +
 +[[https://www.raywenderlich.com/6040-workmanager-tutorial-for-android-getting-started|WorkManager Tutorial for Android: Getting Started]]
 +
 +
 +===== Bluetooth =====
 +[[http://stackoverflow.com/questions/17870189/android-4-3-bluetooth-low-energy-unstable|BLE unstable]] - a good question (with a good answer) from Stackoveflow
 +
 +
 +==== BLE sensors ====
 +[[http://de-eu.wahoofitness.com|Wahoo]] - производитель BLE сенсоров для фитнеса (МНОГО всякой всячины)\\  
 +[[https://www.blueleza.com/hrm-blue/?lang=de|HRM Blue]] - сенсор пульса поддерживающий стандартный профиль BLE HRM\\ 
 +[[https://www.amazon.de/SportPlus-Bluetooth-Geschwindigkeits-Trittfrequenzsensor-flexible/dp/B00L9QZ5GI|SportPlus Bluetooth 4.0 Geschwindigkeits- und Trittfrequenzsensor]] (nur BLE!) - 39€ bei Amazon\\ 
 +[[https://www.lidl.de/de/crivit-pro-geschwindigkeits-und-trittfrequenzsensor-cbgt-4-a1/p218656|CRIVIT®PRO Geschwindigkeits- und Trittfrequenzsensor CBGT 4 A1]] - bei Lidl für 19,99€ (nur BLE!)\\ 
 +[[https://www.lidl.de/de/medisana-bluetooth-brustgurt/p240741|Medisana Bluetooth Gurt]] - bei Lidl für 19,99€ (wahrscheinlich auch Ant+ kompatibel)
 +
 +
 +==== Fitness trackers ====
 +[[http://www.idoosmart.com/ID107PlusHR/|ID107 HR Plus]]\\ 
 +
 +
 +[[http://fitness-trackers.specout.com/d/b/Android|Good list]]\\ 
 +
 +[[https://www.programmableweb.com/category/wearable/api|Wearable APIs]] - list on http://programmableweb.com \\ 
 +
 +===== Performance =====
 +  * [[https://github.com/amitshekhariitbhu/awesome-android-complete-reference#performance-and-optimization|Link collection]]
 +  * [[https://medium.com/androiddevelopers/testing-app-startup-performance-36169c27ee55|Testing App Startup Performance]] by Chet Haase
 +  * [[https://dev.to/pyricau/android-vitals-profiling-app-startup-32ek|Android Vitals - Profiling App Startup]]
 +  * [[https://www.youtube.com/watch?v=AEqUocWTVDA|Exploring Android App Performance with Rahul Ravikumar!]] (not yet checked)
 +    * Dive into the latest episode where the Coding Italians craft a system for instrumenting method calls to enhance Android app performance. Learn how to use ASM, the Byte Code Viewer plugin, and JVM bytecode specifications to generate insightful Perfetto traces.
 +  * [[https://proandroiddev.com/analyzing-app-startup-and-shutdown-in-android-15-new-update-7605369ae891|Analyzing App Startup and Shutdown details in Android 15]]
 +===== Android Keystore =====
 +[[https://medium.com/overmorrow/authentication-sucks-bad-security-too-345ed20463d4#.9zkvn7voe|Authentication sucks. Bad security too.]]
 +
 +===== Source Code Analyzing. Lint, Findbugs, PMD etc =====
 +[[https://hackernoon.com/configuring-android-project-static-code-analysis-tools-b6dd83282921#.y84iajvg6|Configuring Android Project — Static Code Analysis Tools]]
 +
 +===== Articles =====
 +
 +[[Memory leaks in Android — identify, treat and avoid]]\\ 
 +[[https://medium.com/google-developer-experts/weakreference-in-android-dd1e66b9be9d#.nq4l8hlab|You don’t have to use WeakReference to avoid memory leaks]] (an example of a possible solution for AsyncTask memory leak)\\
 +[[https://dev.to/pyricau/leak-detection-android-studio-vs-leakcanary-35j5|Leak detection: Android Studio vs LeakCanary]]
 +
 +
 +[[Activity Revival and the case of the Rotating Device]]\\ 
 +[[https://android.jlelse.eu/how-to-speed-up-your-slow-gradle-builds-5d9a9545f91a|How to speed up your slow Gradle builds]]\\ 
 +[[http://www.developerphil.com/renaming-your-gradle-build-files/|Renaming Your Gradle Build Files]]\\ 
 +[[https://www.raywenderlich.com/5532-gradle-tips-and-tricks-for-android|Gradle Tips and Tricks for Android]] - tricks for working with the Gradle build system, such as autocompletion, using build-time variables, and reducing build time\\ 
 +[[https://overflow.buffer.com/2018/12/20/getting-started-with-feature-modularization-in-android-apps/|Getting started with feature modularization in Android Apps]] by Joe Birch\\ 
 +
 +[[https://dev.to/redbassett/git-rm-cached-idea-4cec|git rm --cached ./idea?]] an article about what to include in .gitignore file for Android projects
 +
 +[[https://proandroiddev.com/memory-leaks-in-android-a-guide-for-android-developers-448fa86ced27|Memory Leaks in Android: A Guide for Android Developers]] by Rashik (Jun 9, 2025)
 +===== Backend =====
 +[[http://www.slatekit.com|SlateKit]] - open source alternative to Firebase, GCM etc.
 +
 +==== Firebase ====
 +  * [[http://chikemgbemena.com/2016/09/27/recap-lagos-launchpad-developers-conference-all-about-firebase/|Recap of Google Launchpad Build Lagos : All about Firebase]] - Nice overview about Firebase features by Chike Mgbemena
 +  * [[https://medium.com/@hitherejoe/exploring-firebase-on-android-ios-remote-config-3e1407b088f6#.g2ud1h8iv|Exploring Firebase on Android & iOS: Remote Config]] - A good overview about Firebase Remote Config by Joe Birch
 +  * [[https://github.com/Mobile-Telematics/TelematicsApp-Android|Android Open-Source Telematics App with Firebase© integration]]
 +  * [[https://proandroiddev.com/best-firebase-tools-for-your-mobile-application-b0d1857a07f3|Best Firebase Tools for Your Mobile Application]]
 +    * Jaewoong Eum shows how to utilize Firebase for your mobile and web applications, covering features such as authentication, push notifications, remote config, analytics, and more.
 +
 +  * [[https://www.youtube.com/watch?v=bMm4jEpH6T0|Getting started with sign in with Google on Android]] (video)
 +    * In this video, Marina‬ walks you through how to get started with Sign in with Google on Android using Firebase Authentication.
 +  * [[https://www.youtube.com/watch?v=LhjTAkifr6g|Troubleshoot your app faster with AI in Crashlytics]]
 +    * AI insights in Crashlytics and Device Streaming in Android Studio can help you quickly troubleshoot your app, and test it on a variety of physical Android devices!
 +
 +
 +
 +===== AI on Android =====
 +
 +  * [[https://www.youtube.com/watch?v=o1wY5vnNVCc|Building with AI on Android (Spotlight Week)]]
 +    * News about AI on Android (04.10.2024)
 +
 +
 +
 +===== Android Skills =====
 +
 +  * [[https://developer.android.com/tools/agents/android-skills|Overview of Android skills]]
 +
 +  * [[https://www.youtube.com/watch?v=qZLQVlLgTDU|What are Android skills and how to use them with AI tools?]] (video)
 +    * Android Developers explains what Android skills are and how to expose them to AI assistants and tools
 +
 +  * https://github.com/chrisbanes/skills
 +
 +
 +
 +===== Testing =====
 +[[https://developer.android.com/training/testing/unit-testing/instrumented-unit-tests.html|Building Instrumented Unit Tests]] - a training by Google\\ 
 +[[https://developer.android.com/training/testing/start/index.html#config-instrumented-tests|Getting started with testing]] - a training by Google\\ 
 +[[https://developer.android.com/training/testing/ui-testing/uiautomator-testing.html|Testing UI for Multiple Apps]]\\ 
 +[[https://developer.android.com/topic/libraries/testing-support-library/index.html#UIAutomator|Testing Support Library]]\\ 
 +[[https://medium.com/mercari-engineering/android-device-farm-at-mercari-3197237df0e1|Android Device Farm at Mercari]] - deployment on a device farm\\ 
 +===== Android Studio and Tools =====
 +
 +[[https://blog.mindorks.com/how-to-become-more-productive-in-android-with-android-studio-plugins-3beb3861fa7|How to become more productive in android with android studio plugins]]\\ 
 +
 +==== Android debugging ====
 +
 +[[https://developer.android.com/studio/run/device.html|Run apps on a hardware device]] - official docs
 +
 +  * If there are problems with connection during WiFi debugging:
 +    * Important for debugging through Wi-Fi:
 +<code bash>
 +adb connect <deviceip>:<port>
 +
 +# Where IP and port are displayed under Settings ->  Developer options-> Wireless Debugging 
 +# for example:
 +adb connect 192.168.178.82:41153
 +</code>
 +
 +Also can be helpful: 
 +  * https://stackoverflow.com/questions/30964854/android-studio-device-is-connected-but-offline
 +
 +=== Misc ===
 +
 +  * [[https://www.raywenderlich.com/621437-android-debug-bridge-adb-beyond-the-basics|Android Debug Bridge (ADB): Beyond the Basics]]
 +
 +  * [[https://proandroiddev.com/7-adb-commands-every-android-developer-should-know-fbfb419e8827|7 ADB Commands Every Android Developer Should Know]]
 +    * 1. ADB Screen Recording Command
 +    * 2. Install and Uninstall Apps Using ADB
 +    * 3. Capture and Save Screenshots Using ADB
 +    * 4. Debugging Wi-Fi Connectivity with ADB
 +    * 5. Grant or Remove Permissions via ADB
 +    * 6. Network Configuration & Testing with ADB
 +    * 7. Starting and Stopping Services with ADB
 +
 +===== Learning resources =====
 +==== Online courses ====
 +
 +  * [[Android Basics with Compose]]
 +
 +  * [[https://playacademy.exceedlms.com/student/catalog|Academy for App Success]] - Google Play online courses
 +
 +
 +==== Android Books ====
 +
 +[[https://www.agiledroid.com|Agile Android Development]]\\ 
 +[[https://commonsware.com/Android/|The The Busy Coder's Guide to Android Development]] by Mark Murphy\\ 
 +
 +===== RxJava =====
 +[[https://techbeacon.com/missing-rxjava-2-guide-supercharge-your-android-development|The missing RxJava 2 guide: Supercharge your Android development]]
 +
 +===== Gradle =====
 +  * [[https://proandroiddev.com/modular-architecture-for-faster-build-time-d58397cb7bfe|Modular Architecture for faster Build Time]] (also about profiling Gradle builds)
 +  * [[https://journals.apptivitylab.com/beginners-guide-to-gradle-for-android-developers-7972bfdf0668|Beginner’s Guide to Gradle for Android Developers]]
 +  * [[https://www.raywenderlich.com/249-gradle-tutorial-for-android-getting-started|Gradle Tutorial for Android: Getting Started]] - by Irina Galata
 +  * [[https://touchlab.co/gradle-properties|Gradle Properties]]
 +    * Understanding how Gradle properties work can save you a lot of time debugging. Tadeas Kriz explains how to set properties and what their priorities are.
 +
 +==== Misc articles about Gradle ====
 +
 +  * [[https://blog.kotlin-academy.com/java-and-kotlin-versions-in-android-when-to-upgrade-and-when-to-avoid-cf47edbbac5b|Java and Kotlin Versions in Android: When to Upgrade and When to Avoid]] 
 +    * In short: it depends on AGP version
 +    * for details read the article (see the table made by author)
 +
 +  * [[https://proandroiddev.com/best-practices-for-managing-and-resolving-dependency-conflicts-in-gradle-644ff4c70c29|Best Practices for Managing and Resolving Dependency Conflicts in Gradle]]
 +    * did not read it
 +      * it was for registered members of Medium only
 +      * it is possible to use Google account, but I didn't do it
 +
 +  * [[https://dev.to/cdsap/gradle-811-faster-configuration-cache-and-improved-configuration-time-ja1|Gradle 8.11: Faster Configuration Cache and Improved Configuration Time]]
 +===== Maven =====
 +
 +[[https://jeroenmols.com/blog/2020/10/28/library-gettingstarted/|Android library development - Getting started]] - a post series by Jeroen Mols\\ 
 +[[https://jeroenmols.com/blog/2020/11/04/library-modularization/|Android library development - Modularization]]\\ 
 +[[https://jeroenmols.com/blog/2020/11/11/library-dependencies/|Android library development - Dependencies]] - a post about libraries, dependencies, transitive and not.
 +==== Publishing ====
 +[[https://android.jlelse.eu/android-local-libraries-with-maven-b7456d4268cf|Android local libraries with Maven]] - good article about local publishing of Android libraries\\
 +[[https://medium.com/@kuassivi/tip-work-with-third-party-projects-locally-with-gradle-961d6c9efb02|Maven Repository and how to publish libraries locally on your computer]]\\  
 +[[https://docs.gradle.org/current/userguide/publishing_maven.html|The “maven-publish” Plugin]] - docs\\ 
 +
 +
 +
 +===== Misc =====
 +
 +[[Upcycling Android]]
 +
 +
 +[[64k methods]]\\ 
 +[[https://blog.aritraroy.in/20-awesome-open-source-android-apps-to-boost-your-development-skills-b62832cf0fa4|20+ Awesome Open-Source Android Apps To Boost Your Development Skills]]\\ 
 +[[https://developers.google.com/billions/|Building for billions]] - Google talks and articles about how to build successful apps\\ 
 +[[https://medium.com/rocknnull/effective-java-for-android-cheatsheet-bf4e3433889a#.m30h1e9kx|Effective Java for Android]]\\ 
 +[[https://medium.com/@charbgr/reproducible-history-on-android-3b4a93d92236|Reproducible history on Android]]\\
 +[[https://savvyapps.com/blog/how-to-build-restful-api-mobile-app|A Massive Guide to Building a RESTful API for Your Mobile App]]\\
 +[[https://github.com/MindorksOpenSource/android-interview-questions|Android Interview Questions]]\\ 
 +[[https://medium.com/google-developers/troubleshooting-proguard-issues-on-android-bce9de4f8a74|Troubleshooting ProGuard issues on Android]]\\ 
 +[[https://riggaroo.co.za/use-android-apk-analyzer-reduce-apk-size/|Use Android APK Analyzer to reduce APK size]] by Rebecca Franks\\ 
 +[[https://proandroiddev.com/review-of-android-12-for-developers-ea3ce9247e0|Android 12 review for developers]] by Kirill Rozov ([[Android 12 review for developers (my Konspekt)]])
 +[[https://9to5google.com/2021/11/22/android-2021-distribution-numbers/|Android 11 on nearly a quarter of all devices, but it’s not the most used version of Google’s OS]] - an article about Android distribution sharing numbers (e.g. Android 8 is installed on ca. 13,7% of all Android devices) 
 +
 +  * [[https://medium.com/snapp-mobile/android-keeping-release-and-debug-installed-all-the-time-43f5812d6637|Android — Keeping Release and Debug Installed All the Time]] by Juhani Lehtimäki
 +
 +  * [[https://android-developers.googleblog.com/2024/09/streamlining-android-authentication-credential-manager-replaces-legacy-apis.html|Streamlining Android authentication: Credential Manager replaces legacy APIs]]
 +  * [[https://medium.com/@aitorvs/android-fingerprint-authentication-44c047179d9a|Android Fingerprint Authentication]]\\ 
 +
 +  * [[https://crushingcode.nisrulz.com/blog/blazing-fast-app-uninstall-for-lazy-android-devs/|Blazing fast app uninstalls for lazy #AndroidDevs]]
 +==== Android developer jobs etc ====
 +
 +[[https://proandroiddev.com/android-interview-series-2024-part-1-android-basics-23a713f4a648|Android Interview Series 2024 — Part 1 (Android basics)]]
 +
 +
 +==== Scoped Storage ====
 +  * [[https://www.raywenderlich.com/10768834-scoped-storage-tutorial-for-android-11-deep-dive|Scoped Storage Tutorial for Android 11: Deep Dive]]
 +  * [[https://developer.android.com/about/versions/11/privacy/storage|Storage updates in Android 11]] - official Google information
 +
 +==== Android 14 ====
 +[[https://www.heise.de/news/Android-14-Preview-Weniger-Malware-mehr-Akkulauzeit-und-alle-Formfaktoren-7489981.html|Android 14 Preview: Weniger Malware, mehr Akkulaufzeit und alle Formfaktoren]]
 +
 +[[https://developer.android.com/about/versions/14/get|Get Android 14]] - System images to download etc.
 +
 +==== Build process ====
 +
 +[[https://medium.com/androiddevelopers/improving-build-speed-in-android-studio-3e1425274837|Improving build speed in Android Studio]]\\ 
 +[[https://developer.android.com/studio/build/build-analyzer|Troubleshoot build performance]]\\ 
 +[[https://medium.com/androiddevelopers/understanding-your-build-with-the-build-analyzer-5c15688ec72e|Understanding your build with the Build Analyzer]]\\ 
 +
 +==== Events, conferences etc ====
 +  * [[https://www.droidcon.com/content/?filter_postyear=2024&filter_post_event_tag=droidcon-new-york|Droidcon 2024]] - all videos