The Curious Engineer

All blogs / Java / JVM

Blundell

blog.blundellapps.co.uk

Android Developer tutorials sorted into categories of Beginner, Intermediate and Expert. Covering all aspects of AndroidDev.

Java / JVMMobile / iOS / AndroidAI / MLEngineering blogs

Posts
134 from 31 Jan 2012 to 6 Sep 2026
Posting
now and then (4 in the last year)
Kind
personal blog
Feed
https://blog.blundellapps.co.uk/feed/

2026 4

  1. Pair Programming With Your AI Agent
  2. Google I/O 2026: The Sessions Worth Your Time
  3. Android Skills: Expert Instructions for Your AI Agent
  4. Zero to AI: An Android Developer’s Vital Local Setup

2025 7

  1. Linting, Automated: AI-Powered Static Analysis with Gemini
  2. Google I/O 2025: AI Unleashed – What Android Devs Need to Know!
  3. Choosing Wisely: for vs. forEach in Kotlin (A Thinking Dev’s Perspective)
  4. Get started with Gemma 3 LLM on Android now!
  5. Room Debug DAOs in Android: Streamlining Your Workflow
  6. Android Bugsee SDK: Ignore the Docs, Do THIS Instead
  7. Android Dynamic Animated SVGs (with Lottie Dynamic Properties)

2024 1

  1. OCR with Gemini LLM on Android

2023 8

  1. Emoji error! Using the latest Compose with compileSDK < 34
  2. Setting JDK level in Android Gradle builds
  3. Dependency Injection in Legacy Code
  4. Set Activity Screen Brightness without Permission
  5. build.gradle.kts conversion for Android Studio Empty Activity
  6. Android Job Interview – Take-Home Test Cheat Sheet
  7. Proven Prepping for Easy Android Interviews in 2023
  8. Applying a 3rd Party Gradle Plugin as a Composite Plugin

2022 1

  1. Make a monorepo for your Android projects

2021 5

  1. Speed up your build: Non-transitive R files
  2. AppGallery Connect Remote Configuration: Spice up your app without the fuss
  3. To dip or not to dp, that is the compose question
  4. Using AdMob banner Ads in a Compose Layout
  5. Fix: Jetpack Compose observeAsState Type Error has no method

2020 4

  1. When is a Type not a Type? Kotlin in the IDE
  2. java.lang.SecurityException with SubscriptionManager – But I declared the permissions!..
  3. Hiding Text in Kotlin – How many ways?
  4. Tame Your Gradle Dependencies just BECAUSE!

2019 5

  1. I/O 2019 Android Track Picks & Insights
  2. Kotlin Anti-Patterns – Also this is Null
  3. [TUT] Speech to Text from a File with Google Cloud Speech API
  4. [TUT] Kotlin Extension Functions by Example
  5. [TUT] Creating a ByteString in Android

2018 1

  1. [TUT] How to use another power supply with your IoT device

2017 30

  1. [TUT] Android Things – Zx Gesture Sensor using UART
  2. [TUT] Android Things – Using the ADS1015 analog to digital converter driver library
  3. [TUT] Android Things – APA102 7 LED Array, SPI on the Rainbow Hat
  4. [TUT] Android Things – Alphanumeric Segment Display, I2C on the Rainbow Hat
  5. [TUT] Android Things – Temperature Sensor, I2C on the Rainbow Hat
  6. [TUT] Google Cloud IoT Core – MQTT on Android
  7. [TUT] Android Things – Piezzo Transducer, PWM on the Rainbow Hat
  8. [TUT] Android Things – Capacitive Touch Buttons, GPIO on the Rainbow Hat
  9. [TUT] Android Things – LEDs, GPIO on the Rainbow Hat
  10. [TUT] Your First Android Things Application
  11. Android Architecture Components meets AndroidThings
  12. Threading best practices : 3 ways on Android Things
  13. [TUT] Android Things – Writing a PIR Motion Sensor Driver
  14. Battling the 65k method limit
  15. You have permission to crash
  16. Inspecting databases with Stetho
  17. Q&A with Android Developer Paul Blundell
  18. The Making of an Android Auto Demo Unit
  19. Hexawhat Architecture?
  20. Taming your Github notification emails
  21. Developing like a pro — portrait only apps
  22. This one simple change for better class naming will blow your mind
  23. Five reasons why Android developers should start developing for the internet of things
  24. Top 3 Android Studio Shortcuts
  25. 5 tools for a remote Android developers toolchest
  26. Clean Code: Java Class Fields
  27. Swanseacon 2016 : An agile software craftsman’s view
  28. CleanCoders – Mobile App Case Study Review
  29. The only way to implement Model View Presenter
  30. How to use an extra GPIO pin on Raspberry Pi Rainbow Hat

2016 6

  1. [TUT] Testing Android Things – Unit & Vendor tests
  2. [TUT] Using Firebase with a Node JS Amazon Lambda
  3. [TUT] Programmatically create a RippleDrawable of any color
  4. [TUT] How to test time and control System.currentTimeMillis
  5. [TUT] Creating comments with timestamps like YouTube
  6. [TUT] Send app data to a web spreadsheet (Google Sheets)

2015 3

  1. [TUT] Mocking shared preferences to test in isolation
  2. Use the latest version of any library with Android Studio & Gradle
  3. Enchant your users, without boring them with repetition – Animations

2014 11

  1. [TUT] Front Camera Face Detection – with preview
  2. Arrow Logger – Log louder than everyone else
  3. [TUT] Front Camera Face Detection – explained
  4. A simple Activity to complete a form or continue
  5. [TUT] Locally release an Android Library for JCenter or Maven Central inclusion
  6. [TUT] How to run Robolectric JUnit tests in Android Studio
  7. [TUT] Migrating to AdMob in Google Play Services from AdMob SDK jar
  8. [TUT] Android Gradle App with Espresso Instrumentation tests
  9. Creating GIF images from your Android device
  10. [TUT] Android Gradle App with Robolectric JUnit tests
  11. [TUT] Android Gradle App with JVM JUnit tests

2013 5

  1. [TUT] Setting up Android Studio & Gradle [windows 7]
  2. [TUT] DayDreams are as easy as counting sheep
  3. [TUT] Email Feedback from Users (device information)
  4. [TUT] Easier / Quicker Generic Collection Creation
  5. [TUT] Validate EditText User Input with Shake Feedback

2012 43

  1. [TUT] Simple InApp Billing / Payment V3
  2. [TUT] Create your own CheckStyle check
  3. Creating 9 Patch Images – Android Asset Studio
  4. [TUT] Using the camera with a custom overlay
  5. [TUT] Get your app OAuth YouTube API access
  6. Register for YouTube API use
  7. [TUT] Networking off the UI thread – SOLID Architecture
  8. [TUT] ASyncTaskLoader using Support Library
  9. [TUT] Twitter Feed on an App Widget
  10. [TUT] Animate Removing From a Custom Adapter (ListView)
  11. Forget work for a minute
  12. [TUT] Keep Screen on/awake – 3 possible ways
  13. [TUT] Backup & Restore SharedPreferences to the cloud
  14. [TUT] Using Annotations for Android XML onClick visibility
  15. [TUT] HTML in an Email Intent
  16. [TUT] Generic One Option Dialog Fragment (with data)
  17. [TUT] Change alias passwords of your Android Keystore
  18. [TUT] Show YouTube Feed for a Users Videos in a ListView ( XML )
  19. [TUT] SplashScreen with Progress Bar
  20. Overview of Android In App Billing V2 (FlowChart)
  21. Testing Devices – Emulator Settings for each Android Density Bucket
  22. List of Android Devices with pixel density buckets
  23. [TUT] Switching Android build constants using Ant
  24. [TUT] Running an Ant script with Eclipse
  25. Tyre Pressure Readings in your App – Using Intent Filters
  26. [TUT] Click item in a ListView to show YouTube Video
  27. Google Analytics – Common Problems and Fixes
  28. [TUT] Add Your App to the Android ‘do something’ Menu (using Intent Filters)
  29. [TUT] Show YouTube Feed for a Users Videos in a ListView ( JSON )
  30. [TUT] Set a notification for a user chosen time
  31. OutOfMemory error – do you use runnables?
  32. [TUT] Basic Date Picker
  33. [TUT] Preloaded images set as phone wallpaper
  34. [TUT] Sliding Drawer Activity – Animate an Activity
  35. [TUT] Infinite Scrolling Gallery View
  36. [TUT] Simple InApp Billing / Payment (V2)
  37. Add source code links to Android APIs
  38. [TUT] Array List of countries for arrays.xml
  39. [TUT] Rounded Corners Map View
  40. [TUT] Sending a Tweet
  41. [TUT] Button to open web browser
  42. [TUT] ImageView with Loading Spinner
  43. [TUT] ListView with a Footer Item