Android Libraries For Smooth App Development
“ I believe the mobile OS market will play out very similarly to Windows & Macintosh, with Android playing the role of Windows. And so, if you want to be in front of a large number of users, you need to be on Android.”
–Fred Wilson
The above quote is good enough to understand the importance and popularity of the Android OS. In the last few years or so, Android OS has taken the whole world by storm. Nowadays, it is playing a pivotal role in the mobile application development field, without any pinch of a doubt.!
According to a study carried out by StatCounter, Android OS is having a market share of 76.03% in June 2019. This stat is good enough to know the dominance of Android in today’s market. That’s why it becomes essential for every app developer to have knowledge about that.
Now, one thing that you need to be aware of while dealing with Android app development is the libraries. It plays a pivotal role in the development process, and therefore, it becomes vital for all the developers to have in-depth knowledge about that. It will hold you in a good state, for sure.!
Taking this scenario into perspective, we have decided to write this blog. In this blog, we’re going to provide you with 5 must-have Android libraries which will help you in smooth app development. So, why wait for anything to happen? Let’s get straight into thick of things, now.!
Must-Have Android Libraries
1. Glide
Glide is one of the essential Android libraries. The aim of this library is to provide smooth scrolling. It also ensures the fast and smooth loading of any images. The library focuses on reusing resources like byte arrays and also automatically releases application resources.
For using Glide’s latest version, you will require a minimum SDK of API 14 (Android 4.0) and compile SDK of API 26 (Android 8.0) or later.
How To Use Glide?
Firstly, you need to make sure that you’ve Maven and Google repositories in build.gradle file.
repositories {
mavenCentral()
google()
}
After that, we need to add library dependency in the build.gradle file.
implementation ‘com.github.bumptech.glide:glide:4.4.0’
annotationProcessor ‘com.github.bumptech.glide:compiler:4.4.0’
Finally, you can load the image from a remote URL.
GlideApp
.with(this)
.load("https://res.cloudinary.com/demo/video/upload/dog.png")
.into(imageView);
2. Piccaso
Picasso is another excellent library for images. If you use the Picasso library, it will help you to simplify the process of showing the image from an external location. In addition to all these, the library supports complex image transformation, automatic disk caching, and recycling process.
How To Use Picasso?
Firstly, add the Picasso dependency in our app-module build.gradle file.
implementation 'com.squareup.picasso:picasso:2.5.2'
Now, sync the gradle file and load the image resource.
Picasso
.with(this)
.load("https://res.cloudinary.com/demo/video/upload/dog.png")
.into(imageView);
The APIs provided by Glide is very similar to the APIs provided by Piccaso.
3. ExoPlayer
ExoPlayer is a media player library developed by Google. It’s an excellent alternative to Android’s MediaPlayer API. It works for both audio and video.
In addition to that, ExoPlayer also comes with some added features such as SmoothStreaming adaptive playbacks and easy customization.
How To Use ExoPlayer?
Firstly, add the JCenter and Google repositories in the build.gradle configuration file.
repositories {
jcenter()
google()
}
After that, you should add Gradle compile dependency to the build.gradle file.
implementation 'com.google.android.exoplayer:exoplayer:2.6.0'
Now, in the layout file, we need to add SimpleExoPlayerView component.
<com.google.android.exoplayer2.ui.SimpleExoPlayerView
android:id="@+id/simple_exoplayer_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
In other Activity class, instantiate ExoPlayer’s classes.
SimpleExoPlayerView simpleExoPlayerView;
SimpleExoPlayer player;
Now, initialize simpleExoPlayerView in the onCreate method.
simpleExoPlayerView = findViewById(R.id.simple_exoplayer_view);
In the onStart method, call the setupPlayer method.
@Override
protected void onStart() {
super.onStart();
setupPlayer();
}
Now, the setupPlayer() method will look like this.
void setupPlayer(){
BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
TrackSelection.Factory videoTrackSelectionFactory =
new AdaptiveTrackSelection.Factory(bandwidthMeter);
TrackSelector trackSelector =
new DefaultTrackSelector(videoTrackSelectionFactory);
//initialize the player with default configurations
player = ExoPlayerFactory.newSimpleInstance(this, trackSelector);
//Assign simpleExoPlayerView
simpleExoPlayerView.setPlayer(player);
// Produces DataSource instances through which media data is loaded.
DataSource.Factory dataSourceFactory =
new DefaultDataSourceFactory(this, Util.getUserAgent(this, "CloudinaryExoplayer"));
// Produces Extractor instances for parsing the media data.
ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
// This is the MediaSource representing the media to be played.
MediaSource videoSource = new ExtractorMediaSource(videoUri,
dataSourceFactory, extractorsFactory, null, null);
// Prepare the player with the source.
player.prepare(videoSource);
}
For displaying a video from a remote URL, follow this code.
Uri videoUri = Uri.parse("any_remote_url");
4. Retrofit
Retrofit is an HTTP client for Android and Java. It’s the most utilized library in Android app development. With annotations, you can add a request body, manipulate endpoints, manipulate headers, and add query parameters. It also handles parsing to the POJO (Plain Old Java Object).
However, before going into the details of using this library for the Android app, you should have an idea of – How Much Does It Cost To Make An App? It will set you on the right path.
How To Use Retrofit?
For using Retrofit, add the dependency to the build.gradle file.
implementation 'com.squareup.retrofit2:retrofit:2.3.0'
You also need to add the dependency for the converters.
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
implementation 'com.squareup.retrofit2:converter-scalars:2.3.0'
The first converter converter-gson is for JSON mapping. The second converter is for primitive data. After importing the converters, we need to create an interface.
public interface ApiService {
@GET("/data")
Call<ResponseClass> fetchData(@Body JsonObject jsonObject);
}
After defining the endpoints, we need to create a Retrofit client.
public class RetrofitClient {
static ApiService getService(){
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
Retrofit.Builder builder = new Retrofit.Builder()
.baseUrl("https://127.0.0.1:5000/")
.addConverterFactory(GsonConverterFactory.create());
Retrofit retrofit = builder
.client(httpClient.build())
.build();
return retrofit.create(ApiService.class);
}
}
Now, we will be able to make a network request with the following code.
RetrofitClient.getService().fetchData(jsonObject).enqueue(new Callback<ResponseClass>() {
@Override
public void onResponse(Call<ResponseClass> call, Response<ResponseClass> response) {
}
@Override
public void onFailure(Call<ResponseClass> call, Throwable t) {
}
});
5. Dagger2
Dagger2 fully static and compile-time dependency Injection library, which is useful for both Java and Android. It comprises specific helpers such as auto-generation of sub-components. It’s a very deep library to understand, and you need to take the help of the industry expert to understand it.
How To Use Dagger2?
Firstly, we need to add all the dependencies to build.gradle file.
implementation 'com.google.dagger:dagger:2.14.1'
annotationProcessor 'com.google.dagger:dagger-compiler:2.14.1'
// we add this so we can use the android support libraries
implementation 'com.google.dagger:dagger-android-support:2.14.1'
annotationProcessor 'com.google.dagger:dagger-android-processor:2.14.1'
After that, you need to create an activity builder class for enabling Dagger to create sub-components.
@Module
public abstract class ActivityBindingModule {
@ContributesAndroidInjector()
abstract MainActivity mainActivity();
}
We can also create a module class with specific dependencies. Now, add the modules to the constructor, as shown in the coding snippet.
@ContributesAndroidInjector(modules = {MainActivityModule.class} )
abstract MainActivity mainActivity();
We can also create another module class to provide other dependencies. The sample module class provides a string for our app.
@Module
public abstract class AppModule {
@Provides
static String providesString(){
return "I love Auth0";
}
}
Now, we have defined a module. So, it’s time now to create an abstract class for an interface. This interface will look like, as shown below.
@Singleton
@Component(modules = {AndroidSupportInjectionModule.class, AppModule.class, ActivityBindingModule.class})
public interface AppComponent extends AndroidInjector<AppController> {
@Override
void inject(App instance);
@Component.Builder
interface Builder {
@BindsInstance
Builder application(Application application);
AppComponent build();
}
}
Conclusion
Nowadays, when there is a massive demand for Android app development services around the globe, it becomes vital for all the app developers to have every micro detail about this OS.
Putting these things into perspective, here we have tried to provide you with a list of libraries that will help the app developers in the smooth conduct of the development process.
We hope you had a great time reading this article. If you’ve any questions or suggestions related to this blog, then feel free to ask them in our comment section. Thank You.!