
- Android Basics
- Android - Home
- Android - Overview
- Android - Environment Setup
- Android - Architecture
- Android - Application Components
- Android - Hello World Example
- Android - Resources
- Android - Activities
- Android - Services
- Android - Broadcast Receivers
- Android - Content Providers
- Android - Fragments
- Android - Intents/Filters
- Android - User Interface
- Android - UI Layouts
- Android - UI Controls
- Android - Event Handling
- Android - Styles and Themes
- Android - Custom Components
- Android Advanced Concepts
- Android - Drag and Drop
- Android - Notifications
- Location Based Services
- Android - Sending Email
- Android - Sending SMS
- Android - Phone Calls
- Publishing Android Application
- Android Useful Examples
- Android - Alert Dialoges
- Android - Animations
- Android - Audio Capture
- Android - AudioManager
- Android - Auto Complete
- Android - Best Practices
- Android - Bluetooth
- Android - Camera
- Android - Clipboard
- Android - Custom Fonts
- Android - Data Backup
- Android - Developer Tools
- Android - Emulator
- Android - Facebook Integration
- Android - Gestures
- Android - Google Maps
- Android - Image Effects
- Android - ImageSwitcher
- Android - Internal Storage
- Android - JetPlayer
- Android - JSON Parser
- Android - Linkedin Integration
- Android - Loading Spinner
- Android - Localization
- Android - Login Screen
- Android - MediaPlayer
- Android - Multitouch
- Android - Navigation
- Android - Network Connection
- Android - NFC Guide
- Android - PHP/MySQL
- Android - Progress Circle
- Android - ProgressBar
- Android - Push Notification
- Android - RenderScript
- Android - RSS Reader
- Android - Screen Cast
- Android - SDK Manager
- Android - Sensors
- Android - Session Management
- Android - Shared Preferences
- Android - SIP Protocol
- Android - Spelling Checker
- Android - SQLite Database
- Android - Support Library
- Android - Testing
- Android - Text to Speech
- Android - TextureView
- Android - Twitter Integration
- Android - UI Design
- Android - UI Patterns
- Android - UI Testing
- Android - WebView Layout
- Android - Wi-Fi
- Android - Widgets
- Android - XML Parsers
- Android Useful Resources
- Android - Questions and Answers
- Android - Useful Resources
- Android - Discussion
How do add dependency in Android studio
This example demonstrates about How to add dependency in Android studio
Step 1 − Create a new project in Android Studio, go to File ⇒ New Project and fill all required details to create a new project.
Step 2 − Add the following code to res/layout/activity_main.xml.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" android:orientation="vertical" tools:context=".MainActivity"> <Button android:id="@+id/btn_start_location_updates" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="40dp" android:onClick="startLocationButtonClick" android:text="@string/start_updates" /> <Button android:id="@+id/btn_stop_location_updates" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:enabled="false" android:onClick="stopLocationButtonClick" android:text="@string/stop_updates" /> <Button android:id="@+id/btn_get_last_location" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:onClick="showLastKnownLocation" android:text="@string/get_last_location" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="50dp" android:gravity="center_horizontal" android:text="Location updates will be received only when app is foreground" /> <TextView android:id="@+id/location_result" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:textColor="#333" android:textSize="18sp" /> <TextView android:id="@+id/updated_on" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="30dp" android:textSize="12sp" /> </LinearLayout>
Step 3 − Add the following code to src/MainActivity.java
package app.com.sample; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import android.Manifest; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Intent; import android.content.IntentSender; import android.content.pm.PackageManager; import android.location.Location; import android.net.Uri; import android.os.Bundle; import android.os.Looper; import android.provider.Settings; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import com.google.android.gms.common.api.ApiException; import com.google.android.gms.common.api.ResolvableApiException; import com.google.android.gms.location.FusedLocationProviderClient; import com.google.android.gms.location.LocationCallback; import com.google.android.gms.location.LocationRequest; import com.google.android.gms.location.LocationResult; import com.google.android.gms.location.LocationServices; import com.google.android.gms.location.LocationSettingsRequest; import com.google.android.gms.location.LocationSettingsResponse; import com.google.android.gms.location.LocationSettingsStatusCodes; import com.google.android.gms.location.SettingsClient; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.OnFailureListener; import com.google.android.gms.tasks.OnSuccessListener; import com.google.android.gms.tasks.Task; import com.karumi.dexter.Dexter; import com.karumi.dexter.PermissionToken; import com.karumi.dexter.listener.PermissionDeniedResponse; import com.karumi.dexter.listener.PermissionGrantedResponse; import com.karumi.dexter.listener.PermissionRequest; import com.karumi.dexter.listener.single.PermissionListener; import java.text.DateFormat; import java.util.Date; public class MainActivity extends AppCompatActivity { private static final String TAG = MainActivity.class.getSimpleName(); TextView txtLocationResult; TextView txtUpdatedOn; Button btnStartUpdates; Button btnStopUpdates; // location last updated time private String mLastUpdateTime; // location updates interval - 10sec private static final long UPDATE_INTERVAL_IN_MILLISECONDS = 10000; // fastest updates interval - 5 sec // location updates will be received if another app is requesting the locations // than your app can handle private static final long FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS = 5000; private static final int REQUEST_CHECK_SETTINGS = 100; // bunch of location related apis private FusedLocationProviderClient mFusedLocationClient; private SettingsClient mSettingsClient; private LocationRequest mLocationRequest; private LocationSettingsRequest mLocationSettingsRequest; private LocationCallback mLocationCallback; private Location mCurrentLocation; // boolean flag to toggle the ui private Boolean mRequestingLocationUpdates; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // initialize the necessary libraries init(); // restore the values from saved instance state restoreValuesFromBundle(savedInstanceState); } private void init() { txtLocationResult = findViewById(R.id.location_result); txtUpdatedOn = findViewById(R.id.updated_on); btnStartUpdates = findViewById(R.id.btn_start_location_updates); btnStopUpdates = findViewById(R.id.btn_stop_location_updates); mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this); mSettingsClient = LocationServices.getSettingsClient(this); mLocationCallback = new LocationCallback() { @Override public void onLocationResult(LocationResult locationResult) { super.onLocationResult(locationResult); // location is received mCurrentLocation = locationResult.getLastLocation(); mLastUpdateTime = DateFormat.getTimeInstance().format(new Date()); updateLocationUI(); } }; mRequestingLocationUpdates = false; mLocationRequest = new LocationRequest(); mLocationRequest.setInterval(UPDATE_INTERVAL_IN_MILLISECONDS); mLocationRequest.setFastestInterval(FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS); mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder(); builder.addLocationRequest(mLocationRequest); mLocationSettingsRequest = builder.build(); } /** * Restoring values from saved instance state */ private void restoreValuesFromBundle(Bundle savedInstanceState) { if (savedInstanceState != null) { if (savedInstanceState.containsKey("is_requesting_updates")) { mRequestingLocationUpdates = savedInstanceState.getBoolean("is_requesting_updates"); } if (savedInstanceState.containsKey("last_known_location")) { mCurrentLocation = savedInstanceState.getParcelable("last_known_location"); } if (savedInstanceState.containsKey("last_updated_on")) { mLastUpdateTime = savedInstanceState.getString("last_updated_on"); } } updateLocationUI(); } /** * Update the UI displaying the location data * and toggling the buttons */ private void updateLocationUI() { if (mCurrentLocation != null) { txtLocationResult.setText( "Lat: " + mCurrentLocation.getLatitude() + ", " + "Lng: " + mCurrentLocation.getLongitude() ); // giving a blink animation on TextView txtLocationResult.setAlpha(0); txtLocationResult.animate().alpha(1).setDuration(300); // location last updated time txtUpdatedOn.setText("Last updated on: " + mLastUpdateTime); } toggleButtons(); } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putBoolean("is_requesting_updates", mRequestingLocationUpdates); outState.putParcelable("last_known_location", mCurrentLocation); outState.putString("last_updated_on", mLastUpdateTime); } private void toggleButtons() { if (mRequestingLocationUpdates) { btnStartUpdates.setEnabled(false); btnStopUpdates.setEnabled(true); } else { btnStartUpdates.setEnabled(true); btnStopUpdates.setEnabled(false); } } /** * Starting location updates * Check whether location settings are satisfied and then * location updates will be requested */ private void startLocationUpdates() { mSettingsClient .checkLocationSettings(mLocationSettingsRequest) .addOnSuccessListener(this, new OnSuccessListener<LocationSettingsResponse>() { @SuppressLint("MissingPermission") @Override public void onSuccess(LocationSettingsResponse locationSettingsResponse) { Log.i(TAG, "All location settings are satisfied."); Toast.makeText(getApplicationContext(), "Started location updates!", Toast.LENGTH_SHORT).show(); //noinspection MissingPermission mFusedLocationClient.requestLocationUpdates(mLocationRequest, mLocationCallback, Looper.myLooper()); updateLocationUI(); } }) .addOnFailureListener(this, new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { int statusCode = ((ApiException) e).getStatusCode(); switch (statusCode) { case LocationSettingsStatusCodes.RESOLUTION_REQUIRED: Log.i(TAG, "Location settings are not satisfied. Attempting to upgrade " + "location settings "); try { // Show the dialog by calling startResolutionForResult(), and check the // result in onActivityResult(). ResolvableApiException rae = (ResolvableApiException) e; rae.startResolutionForResult(MainActivity.this, REQUEST_CHECK_SETTINGS); } catch (IntentSender.SendIntentException sie) { Log.i(TAG, "PendingIntent unable to execute request."); } break; case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE: String errorMessage = "Location settings are inadequate, and cannot be " + "fixed here. Fix in Settings."; Log.e(TAG, errorMessage); Toast.makeText(MainActivity.this, errorMessage, Toast.LENGTH_LONG).show(); } updateLocationUI(); } }); } public void startLocationButtonClick(View view) { // Requesting ACCESS_FINE_LOCATION using Dexter library Dexter.withActivity(this) .withPermission(Manifest.permission.ACCESS_FINE_LOCATION) .withListener(new PermissionListener() { @Override public void onPermissionGranted(PermissionGrantedResponse response) { mRequestingLocationUpdates = true; startLocationUpdates(); } @Override public void onPermissionDenied(PermissionDeniedResponse response) { if (response.isPermanentlyDenied()) { // open device settings when the permission is // denied permanently openSettings(); } } @Override public void onPermissionRationaleShouldBeShown(PermissionRequest permission, PermissionToken token) { token.continuePermissionRequest(); } }).check(); } public void stopLocationButtonClick(View view) { mRequestingLocationUpdates = false; stopLocationUpdates(); } public void stopLocationUpdates() { // Removing location updates mFusedLocationClient .removeLocationUpdates(mLocationCallback) .addOnCompleteListener(this, new OnCompleteListener() { @Override public void onComplete(@NonNull Task task) { Toast.makeText(getApplicationContext(), "Location updates stopped!", Toast.LENGTH_SHORT).show(); toggleButtons(); } }); } public void showLastKnownLocation(View view) { if (mCurrentLocation != null) { Toast.makeText(getApplicationContext(), "Lat: " + mCurrentLocation.getLatitude() + ", Lng: " + mCurrentLocation.getLongitude(), Toast.LENGTH_LONG).show(); } else { Toast.makeText(getApplicationContext(), "Last known location is not available!", Toast.LENGTH_SHORT).show(); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // Check for the integer request code originally supplied to startResolutionForResult(). if (requestCode == REQUEST_CHECK_SETTINGS) { switch (resultCode) { case Activity.RESULT_OK: Log.e(TAG, "User agreed to make required location settings changes."); // Nothing to do. startLocationupdates() gets called in onResume again. break; case Activity.RESULT_CANCELED: Log.e(TAG, "User chose not to make required location settings changes."); mRequestingLocationUpdates = false; break; } } } private void openSettings() { Intent intent = new Intent(); intent.setAction( Settings.ACTION_APPLICATION_DETAILS_SETTINGS); Uri uri = Uri.fromParts("package", BuildConfig.APPLICATION_ID, null); intent.setData(uri); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } @Override public void onResume() { super.onResume(); // Resuming location updates depending on button state and // allowed permissions if (mRequestingLocationUpdates && checkPermissions()) { startLocationUpdates(); } updateLocationUI(); } private boolean checkPermissions() { int permissionState = ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION); return permissionState == PackageManager.PERMISSION_GRANTED; } @Override protected void onPause() { super.onPause(); if (mRequestingLocationUpdates) { // pausing location updates stopLocationUpdates(); } }
Step 4 − Add the following code to build.gradle(app level)
// location play services implementation 'com.google.android.gms:play-services-location:17.0.0' // dexter runtime permissions implementation 'com.karumi:dexter:4.2.0'
Step 5 − Add the following code to androidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="app.com.sample"> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Let's try to run your application. I assume you have connected your actual Android Mobile device with your computer. To run the app from the android studio, open one of your project's activity files and click the Run icon from the toolbar. Select your mobile device as an option and then check your mobile device which will display your default screen −
- Related Articles
- How to add picasso library in android studio?
- How to add jar as library on Android Studio?
- How to use facebook SDK in Android studio?
- Android Studio Main Window
- Changing API version in Android Studio
- How do I add Vibrate and sound for Notification in Android?
- How to Speed up Gradle build process in Android Studio?
- How to Create/Start a new Project in Android Studio
- How do we handle circular dependency between Python classes?
- Fragment Tutorial with Example in Android Studio?
- Where and how to use to static variables in android studio?
- 6 Most Useful Android Studio Plugins
- Android Studio Setup for Flutter Development
- How to use add() in android PriorityBlockingQueue?
- How to add webview focus in android?
