Add Firebase Google Analytics to the Android Project Using the Firebase Assistant

Google Analytics for Firebase is an analytics solution that helps the developers understand user behavior in their applications.
In this article, we will take a look at creating a Firebase project and adding Analytics to the android project with the help of Firebase Assistant available in the Android Studio IDE.
1. Open an existing Android project or create a new project in the Android Studio.
2. Tap on the Tools tab and select the Firebase option.

3. This opens the Firebase Assistant window on the right side of the Android Studio. Expand Analytics and tap on Log an analytics event.

4. Now, we can see the instructions to integrate Analytics. Click on the Connect to Firebasebutton.

[If we are not logged in to the google account, a Sign in with Google page is opened in the browser. Once logged in, it is redirected to another webpage where we need to select Login to Firebase option.]
This opens a dialog with the options to select the project name from an existing Firebase or Google proje…

Capture Images with CameraX

Google at its 2019 I/O introduced CameraX, a camera library as part of the Jetpack support library. With CameraX, the developers can spend less time writing the logic to set up the preview to analyze the preview or capture an image and more on time business logic.

CameraX is built to simplify three use cases when building a camera application. These are showing a preview, taking a picture and analyzing the image.

In addition to that, CameraX provides what is called CameraX Extensions, which enables the developers to take advantage of the device-specific and vendor-specific effects like bokeh, HDR, Night, Beauty mode. With this, the features of the native camera application on the device can be easily extended to our application.

A temporary disadvantage is that the CameraX is available for the devices running API 21 (Lollipop or Android 5.0) and higher. This is because of its heavy use of Camera2 API's.

In this article, we will take a look at how to show camera preview and take a…

Listen to Phone Restarts on Android

When a phone is restarted the system broadcasts ACTION_BOOT_COMPLETED to all the apps that have the RECEIVE_BOOT_COMPLETED permission. In this article, we will learn how to make our app listen to phone restarts.
1) Add permission to the AndroidManifest.xml file.
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
2) Create a broadcast receiver and add ACTION_BOOT_COMPLETED intent filter to receive the broadcasts.
<receiver android:name=".BootCompletedReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver>
public class BootCompletedReceiver extends BroadcastReceiver { private static final String TAG = BootCompletedReceiver.class.getSimpleName(); @Override public void onReceive(Context context, Intent intent) { if (intent != null && intent.getAction() != null && intent.getAction().…

Add Spacing to Recycler View Linear Layout Manager Using Item Decoration

In this article we will learn about, item decoration in Android and how we can use it to add even spacing between the child items.
A RecyclerView without spacing will look like the image below but in most cases, we want to add spacing between the items. [You can see there are no margins between the views and only elevation]

A more traditional option is adding margins in the list item xml file. If we take this route, we will soon end up with uneven spacing issues with vertical margins. [There are even left, right, top, bottom margins for all the rows except the last item in the first image and in the subsequent image, the top margin for the first item is half of the other items]

The best way is to add the ItemDecoration to the RecyclerView as it affects the individual items and you can have more control over them.
/** * Add vertical, horizontal spacing to the recycler view */ class DefaultItemDecorator(private val horizontalSpacing: Int, private val …

Translucent and Transparent Background for Activity

We are already familiar that an Activity in Android is a single screen on the device but in this article, we will learn how to make it transparent and translucent.

1. Open styles.xml and add the background theme.
<!-- Background Theme for Activity --> <style name="AppTheme.NoActionBar.TranslucentBackground" parent="AppTheme.NoActionBar"> <item name="android:windowBackground">@color/colorBackgroundPromotions</item> <item name="android:windowIsTranslucent">true</item> <item name="colorPrimaryDark">@color/colorBackgroundPromotions</item> <item name="android:windowTranslucentStatus">true</item> </style>
Set windowIsTranslucent and windowTranslucentStatus tags to true. As the name implies, windowBackground is the background color for an activity and is set to a custom color. Overriding the colorPrimaryDark will make the status bar translucent or tran…

How to Set an Android App as a Default Dialer

A default dialer is an application that handles the Phone calls on the device. Google made the provision for third-party applications to be a default phone handler from SDK 23 (6.0, Marshmallow version). In the article, we will learn about how to set our Android application as a default dialer.
1) Add the below intent filters under the activity tag in the AndroidManifest.xml.

<intent-filter> <action android:name="android.intent.action.DIAL"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> <intent-filter> <action android:name="android.intent.action.DIAL"/> <category android:name="android.intent.category.DEFAULT"/> <data android:scheme="tel"/> </intent-filter>
2) Check if our application is already a default dialer app using TelecomManager.

val telecomManager = getSystemService(Context.TELECOM_SERVICE) as TelecomManager Log.d(TAG, "…

How to Enable Multidex for Android App

The number of methods an Android app can have is limited to 65,536 (64 * 1024). Once the limit is crossed, the app builds fail with an error that says Cannot fit requested classes in a single dex file.
AGPBI: {"kind":"error","text":"Cannot fit requested classes in a single dex file (# methods: 76137 \u003e 65536)","sources":[{}],"tool":"D8"} > Task :app:transformDexArchiveWithDexMergerForDebug FAILED java.lang.RuntimeException: java.lang.RuntimeException: Error while merging dex archives: The number of method references in a .dex file cannot exceed 64K.
To continue adding methods beyond the infamous 64k method limit, we need to enable multidex in our application. Let's get started.

1) Add the dependency to module level build.gradle file.

implementation ''
2) In the same module level build.gradle file and inside the…