We all know how devastating the Coronavirus has been to our lives — from having to isolate, wearing a mask all the time, stop seeing friends, not being able to be part of a lot of stuff that were making our life better, all the way to having dear people in the hospital suffering, even losing dear ones.

This is not about how bad the Coronavirus is, how we could or should handle it. This is about us as humans and our capacity to feel and be emphatic with the people around us.

Now, a very common restriction is to…

Have you ever wanted or needed to extract specific information from the user’s voice input without too much trouble? Well, there might be an easy way!

The goal of this article is to familiarize you with the development of processing voice input in Android. Therefore, this piece will allow you to understand how to transform the user’s input into text and most importantly how to parse and extract relevant information from it.

In order to achieve such an effect, we will use the native Speech API interface on Android and the 3rd party NLP tool (Natural language processing) named StanfordNLP.

Before moving into more details, let’s establish a couple of reasonable requirements.


  • Basic understanding of how NLP (Natural language processor) works.
  • Basic experience with Android and…

It’s really easy to notice how frequent the use of frameworks, libraries and tools has become. From data management and database friendly layers, bitmap pooling and caching, networking abstraction layers and all the way to reactive frameworks, these tools are everywhere, available to us. And to be honest, the credit is rightly theirs.

We no longer need to start everything from scratch. We no longer need to reinvent the dreaded “wheel”. We no longer need to to concern about those nitty-gritty details of how some pieces of software are really working. …

When adding new dependencies to projects it is essential to evaluate the actual benefit that is provided and also if complexity is heavily increased, ultimately weighing these two factors.

As you might know, Dependency Injection (DI) is a key concept that allows your code base to be highly testable.

Following this idea, the easiest way to achieve DI in Android today is to integrate Dagger 2, a DI framework which uses code generation and is based on annotations so that developers no longer need to handle dependency injection manually — a task that becomes extremely laborious in extensive projects. …

In order to understand the contents of this article, one should possess a minimal understanding of Dagger 2.

Theoretically, Dagger modules cannot simultaneously contain abstract and non-abstract methods. But that doesn’t stop us from finding alternative solutions, right?

Now before diving in, let’s get a few things straight.

What is @Provides annotation?

In Dagger universe, @Providesis the most common construct for configuring a binding. Basically, the returned objects from annotated methods are available for dependency injection. Methods annotated with this annotation can also express dependencies via method parameters.

As Dagger FAQ states, @Providesserves three functions:

  • Declare which type (possibly qualified) is being provided —…

We use Espresso to write effective and reliable UI tests. This testing framework provides a very well maintained set of APIs that ensures a solid and flexible testing environment.

In order to maintain this flexibility, at some point we ought to integrate an implementation of the IdlingResources.

What is an Idling Resource? As Android Developers Documentation states:

An idling resource represents an asynchronous operation whose results affect subsequent operations in a UI test.

Why do you need it?

By registering idling resources with Espresso, you can validate these asynchronous operations more reliably when testing your app.

In plain English, Idling Resources synchronize Espresso tests with your app’s background tasks.

If you haven’t encountered…

Catalin Ghita

Android Engineer

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store