The RxJava approach
I am currently working on an app where the devs before me took this strange decision in regard to the refresh token mechanism – have a single entry point of the app which is called every time whenever you need to have a fresh token. What I mean is this:
Continue reading “Android Oauth2 token refresh mechanism – OkHttp vs RxJava layering”
Testing data classes in Kotlin
As we all know, data classes are final by default on Kotlin and if you try to use Mockito and mock such a class, you will get an exception. What you need to do is add this file:
Continue reading “Tricky parts when implementing unit tests for Android in Kotlin”
Running unit tests for ViewModels on Android where you have LiveData objects can be tricky. It is very possible that you get this exception:
java.lang.RuntimeException: Method getMainLooper in android.os.Looper not mocked.
Continue reading “Running unit tests for LiveData with Jupiter on Android”
I recently had a very strange bug when it comes to using a BehaviorSubject inside the object that I am testing.
Continue reading “Race conditions in unit tests with RxJava when using TestScheduler”
We have all seen the white square at the top type of a notification in the notification bar.
Continue reading “Android Notification White Square Icon”
I was really wondering how I can remove repetitive tasks from Android Studio by assigning shortcuts or tags and I found that IntelliJ has Live Templates which I bet that little programmers use. So as an example I wanted when I type the word “tag” within a class the following to be autocompleted:
Continue reading “Android Studio Live Templates”
Probably you have seen this type of error when using Genymotion as the Android emulator on which you test your device. This is how the error looks like:
adb server version (32) doesn’t match this client (35); killing…
error: could not install *smartsocket* listener: Address already in use
ADB server didn’t ACK
* failed to start daemon *
There is one simple thing that worked for me. I opened the Settings menu of Genymotion, then ADB tab and selected: Use custom android SDK tools and I set the path to the tools. By default Genymotion uses its built-in tools. After that killing all working emulators and starting them again makes everything work.
Hope I have helped!
Card.io is a card recognition SDK used by PayPal which allows you to easily scan your own credit/debit cards and get information about them in the code.
Using card.io from the source and not from Maven requires you to have the latest Android NDK with which the project will be built. But compiling it with the latest NDK introduces a bug which prevents the library from supporting several phones like Samsung S5, Honor 7 and others.
Continue reading “Card.io issue not supporting Samsung S5 and other devices”
There is a very simple solution in Android if you want to have space between components. You can always set margins but you can also use the Space class. You can use it like this:
You probably know the famous card detection library called card.io. It is developed by PayPal and used worldwide. There is a lot of OpenCV usage behind it, but I will leave this for another article.
The problem is that the library can only be used as a separate module. You can call the card.io Activity and it will return you the results from the detection. But what if you want to embed the detection view inside your app? Well, sadly, there is no fragment for that. But the library is open-source so you can change everything to fit your needs. So let’s start then!
Continue reading “Exporting Card.IO as a fragment”