
Master geofencing with the Places SDK for Android in Kotlin by building a practical app that uses fence events and places data, autocompletion, and place details.
Design Project File included.
Learn how to access and download a geo fence application from a GitHub repository, view its source code, and compare it with your own project for flexible use.
Connect your Android Studio project to Google Cloud Platform to enable Maps SDK and Places API, generate debug API keys, and use a Google Maps fragment with the API XML.
Implement the autocomplete widget in an Android app using the Places SDK for Android and the autocomplete support fragment, including enabling the Places API and setting up billing.
implement autocomplete as an activity in android using intents, triggered by a search icon, with overlay or full-screen modes and place ID/name results.
Learn to constrain autocomplete results in the geofencing and places SDK for Android with Kotlin, using location bias, location restriction, type filters, and country restrictions to improve performance.
Fetch place details by id with the Android Places SDK in Kotlin. Identify required fields like address, business status, and opening hours, and compare fetch place with find current place.
Fetch and display a place photo using the Places SDK for Android via fetch place or find current place, including photo metadata and width/height 1600 px, shown in image view.
Design the permissions fragment layout by replacing defaults with a navigation host, vector image, and text elements, and configure constraints, strings, colors, and a continue button.
Create a shared view model to share values across fragments, inject the datastore repository, and implement read and save first launch functions using view model scope on the io dispatcher.
Connect your Android project to Google Cloud Platform, enable Maps SDK for Android and Places API, generate API key, and integrate it to display maps after permission is granted.
Design the step one geofence fragment layout in Android, set up the UI structure, and implement a text input with a 20-character counter and outlined box style.
Continue developing the step one fragment with a step one view model, a live data boolean to enable the next button, and shared geo name and country code for binding.
Use a binding adapter to bind a progress bar in step one to a live data flag, showing during current location function and hiding when complete to enable next button.
Design the step2 fragment layout for the geofencing places app, reusing step1 views, and implement a custom autocomplete with a Places API and a recycler view for predictions.
Connect the step2 fragment to the autocomplete predictions recycler view, update a state flow with the selected place id, and display city and country with binding adapters from places api.
Implement an on click listener for autocomplete predictions, store the selected city in a shared view model, fetch place details via the Places API, and update UI and state accordingly.
Enable no-internet error handling in step two fragment using binding adapters to show a red error, toggle recycler view, and enable the next button when a city is selected.
Implement a top-down fade-in for recycler view items by creating alpha and translate animations, applying a layout animation, and scheduling it in the step2 fragment for seamless item appearance.
Add a 'powered by Google' attribution in the step 2 fragment to comply with Places SDK terms when using autocomplete, implemented with a text view and string resource.
Design the step three fragment for geofence setup in Android Studio, adding a material slider to select a radius from 500 meters to 10 kilometers and text above the slider.
Implement the step three fragment logic for geofencing, using view binding and a shared view model to update a radius slider and display in meters or kilometers.
Change the Google Maps style to silver by importing a JSON style file, adding it as a resource, and applying it in the maps fragment.
Implement zooming to the selected location in maps fragment, enable long-press to add a geofence, and display a temporary guidance message using a shared view model.
Inject the geofence repository into the shared view model. Expose addGeoFence and removeGeoFence functions that run on the viewModelScope with Dispatchers.IO.
Learn to draw a geofence circle and a marker on the map with a long press, after verifying background location permission in the maps fragment.
Implement zoom to geofence in maps fragment by long-pressing to create a circle, calculate southwest and northeast corners with spherical util, build lat-long bounds, and animate the camera.
Reset the shared view model after starting the geofence and disable the two floating action buttons with a progress bar during geofence creation, then re-enable after completion.
Design the geofences fragment layout with a toolbar, recycler view, and empty state indicator (hourglass image and centered text) for a clean view.
Create a geofences adapter for a recycler view using data binding and a view holder, binding geo fences entities and observing live data from a shared view model.
Display geofences by creating binding adapters that load bitmap snapshots and format latitude, longitude, and radius from the local database in Android with Kotlin.
Read geofences from the database and display them; implement back navigation to the maps fragment, and enable the delete image only after a left swipe via motion layout.
Learn to remove geofences in an Android Kotlin app by stopping geofences, deleting them from the database using geo IDs, and updating GeofencesAdapter with undo-enabled snack bar feedback.
Apply geofencing and places sdk to build location-aware apps with Gadreel API, exploring parenting apps that notify when a child enters or exits a geofence and reminders near a drugstore.
Update the Android geofencing project's dependencies and SDK to 231, update manifest export, add location permission, and refactor maps fragment for Google Maps SDK changes.
Hello there and welcome to my course, in this course I'm going to teach you everything you need to know to implement Geofence API in your project. And not just that, as a Bonus I'm going to teach you how to integrate Places SDK for Android as well.
Now this is not the course where you will learn just the theory, this is the course where you will combine theory with practice, and also create one Android application which will use both Geofence API and Places SDK. First I'm going to start this course by introducing you with Places SDK for android. You will learn how to connect your project with the Google Cloud platform, and generate an API key as well. After that you will learn more about Places Autocomplete widget, how we can use it to receive different kind of places as a response. Also how to get more details about the specific place, then how to get places information around your current location, and place photos as well. Plus You will learn more about place ID's, place types, data fields and session tokens.
Now after you get fully introduced with Places SDK for android, we are going to start building our Geofence app. And for those of you who are not familiar, Geofence API combines awareness of the user's current location with awareness of the user's proximity to locations that may be of interest. So basically in our application which we are going to create, we will have a good looking flow to get more information from a user regarding the creation of a Geofence. We will be able to create multiple geofences in our app and get notified whenever we ENTER/EXIT OR STAY within the Geofence for a specified amount of time.
Now I have already prepared design project which we are going to use in this course, so you don't have to worry about that. Also that design project will be available to you for FREE along with the source code of the project on which we are going to work on. The source code will be available on my Github profile.
So, our app will use the most popular Android Architecture components like: ROOM database, Dagger-Hilt dependency Injection library, Navigation Component, View Model, Live Data, Data Store Preference, View Binding, Data Binding, Kotlin Coroutines, Flow and many more...
We are going to follow the principle of a single activity and multiple fragments. Our application will have six different fragments. And we will also use nested navigation graph in our app.
Now, all my courses are well organized, very informative, and they will provide you with all the necessary knowledge you need to work with the latest android API levels. Plus at the end of the course we will have one special section where I'm going to occasionally upload some course updates, like bug fixes and code cleanups. And that way this course will always be up-to-date.
Now what I want here, I want to include you in this project of mine. I want to make you think, like a real developer. After we finish this course and building our app, I expect you to look into the code again and suggest what else could be improved in the app which we are going to create. You can also report some bugs if you find, and even suggest a solution by yourself if you have one.
Anyhow, there is a 9 hours of high quality content waiting for you.
So what are you waiting for, let's get started developers!