This Weeks Links
Fragmented Podcast 074: Ben Oberkfell talks Fingerprint API
It’s almost a given these days that most phones will have Fingerprint APIs. But how does the hardware actually work? How does the Software work? How does an Android developer make use of these APIs? Ben Oberkfell breaks it down for us in great detail. Listen on!
Write awesome unit tests
In this blogpost, Jeroen Mols provides three rules to help you dramatically amplify your unit testing skills, so you can write awesome tests. After each rule, Jeroen provides his tips for real world implementation.
Helping #AndroidDev to Mock Tests in Kotlin
In this post, Roger Silva will show you a way to go about mocking in Kotlin objects, without affecting immutability through various types of configuration.
Diving into Android Things
If you enjoy getting hands on with hardware like Evan Halley, you were excited when Google announced their IoT platform. In this post, Evan shares how his first project, CantParkRight, utilizes a HC-SR04 ultrasonic proximity sensor to assist with car parking.
Towards Godless Android Development: How and Why I Kill God Objects
A god object is a single “all-knowing” object, which holds a lot of the information about the rest of the code and it’s manipulation in it’s entirety. In this post, you will be shown why you should aim to make relying on the Context god a thing of the past.
How to Fix a Bug, Blindfolded.
It can be a dev’s worst nightmare: No stack traces of unhandled exceptions, no native crash dumps, a total lack of crash information. David Schreiber-Ranner shares a true story of one such scenario the PSPDFKit team encountered in their animation code and how they located the source of the issue to fix it.
Get Threading Right with DiffUtil
DiffUtil is a utility class used to calculate the difference between two lists. Jon F Hancock is here to show you how to move diff calculation to a background thread and apply the results on the main thread and what to watch out for.
Android Testing, Continuous Integration and Firebase
In this post, Nelson Sachse will show you how to implement continuous integration into your Android project, so you can apply tests in physical devices with one single commit and bridge the flow to the build process.
Wear 2.0: Match Timer – Part 1
In this new series, Mark Allison will explore some of the changes that will need to be made to his Match Timer app, a utility for timing soccer matches, to make it Android Wear 2.0 compliant.
Build flexible layouts with FlexboxLayout
In this article, you will be shown how to integrate the FlexboxLayout library, which brings CSS Flexible Box Layout Module functionalities to Android, in your android project.
JobsAndroid Engineer at The Nerdery (Minneapolis, Chicago, Kansas City)Are you an Android Nerd with a passion for developing solutions for challenging problems? At the Nerdery, you’ll collaborate with talented engineers developing best-in-class apps for a variety of clients. Check out one of our events or apply today! Android Mobile Engineer at Hidrate Inc. (Techstars startup) – Minneapolis, MNHidrate (www.hidratespark.com) is looking to expand our development team and we’re searching for talented Android Engineers with experience in BLE connected devices and Node.js to work with us full time. Android Engineer at 1991 (Oakland, CA)We are looking for an Android Engineer to play an integral role on our mobile team. As our Android community continues to expand rapidly, we need a proactive engineer to work on a wide range of VSCO and Artifact Uprising products. Software Developer, Scala/Android at Meritocracy (Berlin)Our partner, Wire, a European technology company is developing a secure and privacy-focused communication platform, is looking for a Scala developer with exposure to Android. Looking to hire an Android Dev? Look no further, post your job in the Android Dev Digest for one to four weeks. Reach over 15,000 Android professionals. Learn More |
Useful Android libraries from stfalcon.com
Stfalcon.com shares some of their useful libraries including: A library designed to simplify chat UI development, easier MVVM architecture implementation, a full-screen image viewer with advanced touch features, generating a dialogue screen with a single or multiple picker and more!
Your Unit tests might not be as reliable as you thought
This post shares a short reminder and example of why, in this world of fragmentation, a unit test pass does not ever mean your code is 100% reliable in all environments.
RxJava2 Demo2- Downloading songs/images using Android Download Manager.
A post and practical example of RxJava2 being used in a demo project which provides users with the ability to download various content in Android. Note: In a real project, download status and download percentages should be stored in a database.
Shared Element Transitions – Part 4: RecyclerView
In this series you will learn about Shared element transitions, which provide a focal point for users as they transition screens in your app. Part 4 explores implementation of Shared Element Transitions with RecyclerView.
Debug TensorFlow Models with tfdbg
This post introduces you to TensorFlow Debugger (tfdbg). Tfdbg is a tool that will assist you with the debugging of machine learning models (ML) in TensorFlow, providing you with visibility into the internal structure and states of your running TensorFlow graphs.
Using git to generate versionName and versionCode for Android app
Ever had the Play Store refuse an APK because someone forgot to bump up the versioncode? Pratul Kalia is going to show you how you can make that scenario a thing of the past using Automation.
Learn to create a Proximity Detector App on Android
Using device sensors can truly make an app feel like something from the future. In this tutorial, S.Saurel will show you how you can integrate a proximity sensor into your Android app, how you creatively use the sensor is up to you.
How to make generated Java test sources recognizable by IDE
Starting from Android Gradle plugin 2.2 annotation processors on your classpath will be automatically applied. In this post, Karol Wrótniak shares the problem and the solution.
A Moving Target: Location, Location, Location
Henrique Boregio shares some experiences and tips the Picnic team picked up while developing a live map view feature to their app, which allows a user to track their groceries being delivered.
Android Things – Electricity Monitoring App
Do you live somewhere with an unstable / unreliable electricity supply? Rebecca Franks is here to show you how she built an Online Presence System using Firebase Realtime Database and Android Things.
Videos
Caster.IO Lesson 169: Modifying Request URLs and Headers with OkHttp
In this lesson we’ll review how to modify your Retrofit 2 requests using OkHttp. Retrofit ships with the ability to add headers to individual requests. However, if you want to add headers to every request, then it’s recommended that you use an OkHttp Interceptor.
In this lesson you will learn:
- What a network interceptor is
- What an application interceptor is
- How to add an application interceptor to add a header value
- How to add an application interceptor to add a query string parameter
Caster.IO Lesson 170: Realm Migrations – Creating Objects and References
You will eventually need to add a new object to your Realm database. This can be a individual object reference or a list reference. This lesson will show you how to do both.
In this lesson you will learn:
- How to create a new Realm object with a Realm migration
- How to create a Realm object reference in a migration
- How to create an objet with PRIMARY_KEY and REQUIRED field attributes in a migration.
- How to create a List reference to a Realm object in a migration.
Open Source
GradleWorkersPleaseStopTakingFocus.gradle
Prevent Gradle Workers from taking focus! #DevelopersLikeComfort
copyReleaseApkToCustomDir.gradle
Copy release apk to custom directory
stf
Control and manage Android devices from your browser.
RxJava
One of the design goals of 2.x was that no errors can be lost. Sometimes, the sequence ends or gets cancelled before the source could emit an onError which has nowhere to go at that point and gets routed to the RxJavaPlugins.onError.