Associate Android Developer Certification === ###### tags: `Android` `Others` https://developers.google.com/certification/associate-android-developer ## Android Core Android is an operating system based on Linux and designed primarily for mobile devices. Android applications can be multitasking and are written in Java, Kotlin or C++. To prepare for the AAD certification exam, Android developers should: * Understand the architecture of the Android system * Be able to describe the basic building blocks of an Android app * Know how to build and run an Android app * Display simple messages in a popup using a Toast or a Snackbar * Be able to display a message outside your app's UI using Notifications * Understand how to localize an app * Be able to schedule a background task using JobScheduler - [ ] [Android Developers -> Toasts](https://developer.android.com/guide/topics/ui/notifiers/toasts) - [ ] [Android Developers -> Snackbar](https://developer.android.com/reference/android/support/design/widget/Snackbar) - [ ] [Android Developers -> Localize your app](https://developer.android.com/guide/topics/resources/localization) - [ ] [Android Developers -> Application fundamentals](https://developer.android.com/guide/components/fundamentals) - [ ] [Android Developers -> Create a notification](https://developer.android.com/training/notify-user/build-notification) - [ ] [Android Developers -> AndroidX overview](https://developer.android.com/jetpack/androidx) - [ ] [Android Developers -> Getting started with Jetpack](https://developer.android.com/jetpack/docs/getting-started) - [ ] [Android Developers -> Android KTX (Kotlin)](https://developer.android.com/kotlin/ktx) - [x] [Codelabs -> Notifications](https://codelabs.developers.google.com/codelabs/android-training-notifications/index.html#0) - [x] [Codelabs -> JobScheduler](https://codelabs.developers.google.com/codelabs/android-training-job-scheduler/index.html#0) - [x] [Codelabs -> WorkManager (Java)](https://codelabs.developers.google.com/codelabs/android-workmanager/index.html#0) - [ ] [Codelabs -> WorkManager (Kotlin)](https://codelabs.developers.google.com/codelabs/android-workmanager-kt/index.html#0) --- ## User Interface The Android framework enables developers to create useful apps with effective user interfaces. Developers need to understand Android’s activities, views and layouts to create attractive UIs that maximize usability and the overall user experience. To prepare for the AAD certification exam, Android developers should: * Understand the Android activity lifecycle * Be able to create an Activity that displays a Layout * Be able to construct a UI with ConstraintLayout * Understand how to create a custom View class and add it to a Layout * Know how to implement a custom app theme * Be able to add accessibility hooks to a custom View * Know how to apply content descriptions to views for accessibility * Understand how to display items in a RecyclerView * Be able to bind local data to a RecyclerView list using the Paging library * Know how to implement menu-based navigation * Understand how to implement drawer navigation - [ ] [Android Developers -> Build a responsive UI with ConstraintLayout](https://developer.android.com/training/constraint-layout/) - [ ] [Android Developers -> Create a list with RecyclerView](https://developer.android.com/guide/topics/ui/layout/recyclerview) - [ ] [Android Developers -> Create a navigation drawer](https://developer.android.com/training/implementing-navigation/nav-drawer) - [ ] [Android Developers -> Custom view components](https://developer.android.com/guide/topics/ui/custom-components) - [ ] [Android Developers -> Build more accessible custom views](https://developer.android.com/guide/topics/ui/accessibility/custom-views) - [ ] [Android Developers -> Styles and themes](https://developer.android.com/guide/topics/ui/look-and-feel/themes) - [ ] [Android Developers -> setContentDescription()](https://developer.android.com/reference/android/view/View#setContentDescription(java.lang.CharSequence)) - [ ] [Android Developers -> Adding accessibility features to apps for blind and visually-impaired users](https://www.youtube.com/watch?v=1by5J7c5Vz4) - [ ] [Android Tool Time - Building interfaces with ConstraintLayout in AS](https://www.youtube.com/watch?v=XamMbnzI5vE) - [x] [Codelabs -> Activities and intents](https://codelabs.developers.google.com/codelabs/android-training-create-an-activity/index.html#0) - [ ] [Codelabs -> Your first interactive UI](https://codelabs.developers.google.com/codelabs/android-training-layout-editor-part-a/index.html#0) - [x] [Codelabs -> Themes and final touches](https://codelabs.developers.google.com/codelabs/android-training-drawables-styles-and-themes/index.html#0) - [ ] [Codelabs -> RecyclerView](https://codelabs.developers.google.com/codelabs/android-training-create-recycler-view/index.html#0) - [ ] [Codelabs -> Menus and pickers](https://codelabs.developers.google.com/codelabs/android-training-menus-and-pickers/index.html#0) - [ ] [Codelabs -> User navigation](https://codelabs.developers.google.com/codelabs/android-training-provide-user-navigation/index.html#0) - [ ] [Codelabs -> Material Components (Java)](https://codelabs.developers.google.com/codelabs/mdc-101-java/index.html#0) - [ ] [Codelabs -> Material Components (Kotlin)](https://codelabs.developers.google.com/codelabs/mdc-101-kotlin/index.html#0) - [ ] [Codelabs -> Lifecycles](https://codelabs.developers.google.com/codelabs/kotlin-android-training-lifecycles-logging/index.html#0) - [ ] [Codelabs -> Add user interactivity](https://codelabs.developers.google.com/codelabs/kotlin-android-training-constraint-layout/index.html#0) - [ ] [Codelabs -> Constraint layout using the Layout Editor](https://codelabs.developers.google.com/codelabs/kotlin-android-training-interactivity/index.html#0) - [ ] [Codelabs -> RecyclerView fundamentals (Kotlin)](https://codelabs.developers.google.com/codelabs/kotlin-android-training-recyclerview-fundamentals/index.html#0) --- ## Data Management Many Android apps store and retrieve user information that persists beyond the life of the app. To prepare for the AAD certification exam, Android developers should: * Understand how to define data using Room entities * Be able to access Room database with data access object (DAO) * Know how to observe and respond to changing data using LiveData * Understand how to use a Repository to mediate data operations * Be able to read and parse raw resources or asset files * Be able to create persistent Preference data from user input * Understand how to change the behavior of the app based on user preferences - [ ] [Android Developers -> Shared preferences](https://developer.android.com/training/data-storage/shared-preferences) - [x] [Codelabs -> Room, LiveData and ViewModel](https://codelabs.developers.google.com/codelabs/android-training-livedata-viewmodel/index.html#0) - [x] [Codelabs -> Repository](https://codelabs.developers.google.com/codelabs/android-training-livedata-viewmodel/index.html#0) - [x] [Codelabs -> Drawables, styles, and themes](https://codelabs.developers.google.com/codelabs/android-training-drawables-styles-and-themes/index.html#0) - [ ] [Codelabs -> Shared preferences](https://codelabs.developers.google.com/codelabs/android-training-shared-preferences/index.html#0) - [ ] [Codelabs -> App settings](https://codelabs.developers.google.com/codelabs/android-training-adding-settings-to-app/index.html#0) - [ ] [Codelabs -> ViewModel and ViewModelFactory](https://codelabs.developers.google.com/codelabs/kotlin-android-training-view-model/index.html#0) - [x] [Codelabs -> Room with a View (Java)](https://codelabs.developers.google.com/codelabs/android-room-with-a-view/index.html#0) - [ ] [Codelabs -> Room with a View (Kotlin)](https://codelabs.developers.google.com/codelabs/android-room-with-a-view-kotlin/index.html#0) --- ## Debugging Debugging is the process of isolating and removing defects in software code. By understanding the debugging tools in Android Studio, Android developers can create reliable and robust applications. To prepare for the AAD certification exam, Android developers should: * Understand the basic debugging techniques available in Android Studio * Know how to debug and fix issues with an app's functional behavior and usability * Be able to use the System Log to output debug information * Understand how to use breakpoints in Android Studio * Know how to inspect variables using Android Studio - [ ] [Android Developers -> Debug your app](https://developer.android.com/studio/debug/) - [ ] [Android Dev Fundamentals -> Write and view logs with Logcat](https://developer.android.com/studio/debug/am-logcat) - [ ] [Codelabs -> Android Studio debugger](https://codelabs.developers.google.com/codelabs/android-training-using-debugger/index.html#0) - [ ] [Codelabs -> Add log statements to your app](https://codelabs.developers.google.com/codelabs/android-training-hello-world/index.html#7) --- ## Testing Software testing is the process of executing a program with the intent of finding errors and abnormal or unexpected behavior. Testing and test-driven development (TDD) is a critically important step of the software development process for all Android developers. It helps to reduce defect rates in commercial and enterprise software. To prepare for the AAD certification exam, Android developers should: * Thoroughly understand the fundamentals of testing * Be able to write useful local JUnit tests * Understand the Espresso UI test framework * Know how to write useful automated Android tests - [ ] [Android Developers -> Fundamentals of testing](https://developer.android.com/training/testing/fundamentals) - [ ] [Android Dev Fundamentals -> Automate UI tests](https://developer.android.com/training/testing/ui-testing/) - [ ] [Codelabs -> Unit tests](https://codelabs.developers.google.com/codelabs/android-training-unit-tests/index.html#0) - [ ] [Codelabs -> Android Testing -> Unit testing with JUnit and Mockito](https://codelabs.developers.google.com/codelabs/android-testing/index.html#0) - [ ] [Codelabs -> Android Testing -> Espresso for UI testing](https://codelabs.developers.google.com/codelabs/android-training-espresso-for-ui-testing/index.html#0) # Codelabs for Android Developer Fundamentals ## Unit 1: Get started ### Lesson 1: Build your first app - [ ] [1.1: Android Studio and Hello World](https://codelabs.developers.google.com/codelabs/android-training-hello-world/index.html?index=..%2F..%2Fandroid-training#0) - [ ] [1.2 Part A: Your first interactive UI](https://codelabs.developers.google.com/codelabs/android-training-layout-editor-part-a/index.html?index=..%2F..%2Fandroid-training#0) - [ ] [1.2 Part B: The layout editor](https://codelabs.developers.google.com/codelabs/android-training-layout-editor-part-b/index.html?index=..%2F..%2Fandroid-training#0) - [ ] [1.3: Text and scrolling views](https://codelabs.developers.google.com/codelabs/android-training-text-and-scrolling-views/index.html?index=..%2F..%2Fandroid-training#0) - [ ] [1.4: Learn to help yourself](https://codelabs.developers.google.com/codelabs/android-training-available-resources/index.html?index=..%2F..%2Fandroid-training#0) ### Lesson 2: Activities and intents - [x] [2.1: Activities and intents](https://codelabs.developers.google.com/codelabs/android-training-create-an-activity/index.html?index=..%2F..%2Fandroid-training#0) - [x] [2.2: Activity lifecycle and state](https://codelabs.developers.google.com/codelabs/android-training-activity-lifecycle-and-state/index.html?index=..%2F..%2Fandroid-training#0) - [x] [2.3: Implicit intents](https://codelabs.developers.google.com/codelabs/android-training-activity-with-implicit-intent/index.html?index=..%2F..%2Fandroid-training#0) ### Lesson 3: Testing, debugging, and using support libraries - [ ] [3.1: The debugger](https://codelabs.developers.google.com/codelabs/android-training-using-debugger/index.html?index=..%2F..%2Fandroid-training#0) - [ ] [3.2: Unit tests](https://codelabs.developers.google.com/codelabs/android-training-unit-tests/index.html?index=..%2F..%2Fandroid-training#0) - [ ] [3.3: Support libraries](https://codelabs.developers.google.com/codelabs/android-training-support-libraries/index.html?index=..%2F..%2Fandroid-training#0) ## Unit 2: User experience ### Lesson 4: User interaction - [x] [4.1: Clickable images](https://codelabs.developers.google.com/codelabs/android-training-clickable-images/index.html?index=..%2F..%2Fandroid-training#0) - [x] [4.2: Input controls](https://codelabs.developers.google.com/codelabs/android-training-input-controls/index.html?index=..%2F..%2Fandroid-training#0) - [x] [4.3: Menus and pickers](https://codelabs.developers.google.com/codelabs/android-training-menus-and-pickers/index.html?index=..%2F..%2Fandroid-training#0) - [x] [4.4: User navigation](https://codelabs.developers.google.com/codelabs/android-training-provide-user-navigation/index.html?index=..%2F..%2Fandroid-training#0) - [x] [4.5: RecyclerView](https://codelabs.developers.google.com/codelabs/android-training-create-recycler-view/index.html?index=..%2F..%2Fandroid-training#0) ### Lesson 5: Delightful user experience - [x] [5.1: Drawables, styles, and themes](https://codelabs.developers.google.com/codelabs/android-training-drawables-styles-and-themes/index.html?index=..%2F..%2Fandroid-training#0) - [x] [5.2: Cards and colors](https://codelabs.developers.google.com/codelabs/android-training-cards-and-colors/index.html?index=..%2F..%2Fandroid-training#0) - [x] [5.3: Adaptive layouts](https://codelabs.developers.google.com/codelabs/android-training-adaptive-layouts/index.html?index=..%2F..%2Fandroid-training#0) ### Lesson 6:Testing your UI - [x] [6.1: Espresso for UI testing](https://codelabs.developers.google.com/codelabs/android-training-espresso-for-ui-testing/index.html?index=..%2F..%2Fandroid-training#0) ## Unit 3: Working in the background ### Lesson 7: Background tasks - [x] [7.1: AsyncTask](https://codelabs.developers.google.com/codelabs/android-training-create-asynctask/index.html?index=..%2F..%2Fandroid-training#0) - [x] [7.2: AsyncTask and AsyncTaskLoader](https://codelabs.developers.google.com/codelabs/android-training-asynctask-asynctaskloader/index.html?index=..%2F..%2Fandroid-training#0) - [x] [7.3: Broadcast receivers](https://codelabs.developers.google.com/codelabs/android-training-broadcast-receivers/index.html?index=..%2F..%2Fandroid-training#0) ### Lesson 8: Alarms and schedulers - [x] [8.1: Notifications](https://codelabs.developers.google.com/codelabs/android-training-notifications/index.html?index=..%2F..%2Fandroid-training#0) - [x] [8.2: The alarm manager](https://codelabs.developers.google.com/codelabs/android-training-alarm-manager/index.html?index=..%2F..%2Fandroid-training#0) - [x] [8.3: JobScheduler](https://codelabs.developers.google.com/codelabs/android-training-job-scheduler/index.html?index=..%2F..%2Fandroid-training#0) ## Unit 4: Saving user data ### Lesson 9: Preferences and settings - [ ] [9.1: Shared preferences](https://codelabs.developers.google.com/codelabs/android-training-shared-preferences/index.html?index=..%2F..%2Fandroid-training#0) - [ ] [9.2: App settings](https://codelabs.developers.google.com/codelabs/android-training-adding-settings-to-app/index.html?index=..%2F..%2Fandroid-training#0) ### Lesson 10: Storing data with Room - [x] [10.1 Part A: Room, LiveData, and ViewModel](https://codelabs.developers.google.com/codelabs/android-training-livedata-viewmodel/index.html?index=..%2F..%2Fandroid-training#0) - [ ] [10.1 Part B: Deleting data from a Room database](https://codelabs.developers.google.com/codelabs/android-training-room-delete-data/index.html?index=..%2F..%2Fandroid-training#0) # Codelabs for Advanced Android Development ## Unit 1: Expand the user experience ### Lesson 1: Fragments - [x] [1.1: Fragments](https://codelabs.developers.google.com/codelabs/advanced-android-training-fragments/index.html?index=..%2F..advanced-android-training#0) - [x] [1.2: Fragment communication](https://codelabs.developers.google.com/codelabs/advanced-android-training-fragment-communication/index.html?index=..%2F..advanced-android-training#0) ### Lesson 2: App widgets - [ ] [2.1: App widgets](https://codelabs.developers.google.com/codelabs/advanced-android-training-widgets/index.html?index=..%2F..advanced-android-training#0) ### Lesson 3: Sensors - [x] [3.1: Getting sensor data](https://codelabs.developers.google.com/codelabs/advanced-android-training-sensor-data/index.html?index=..%2F..advanced-android-training#0) - [x] [3.2: Sensor-based orientation](https://codelabs.developers.google.com/codelabs/advanced-android-training-sensor-orientation/index.html?index=..%2F..advanced-android-training#0) ## Unit 2: Make your apps fast and small ### Lesson 4: Performance - [ ] [4.1 Part A: Profile GPU Rendering tool](https://codelabs.developers.google.com/codelabs/advanced-android-training-profile-gpu/index.html?index=..%2F..advanced-android-training#0) - [ ] [4.1 Part B: Debug GPU Overdraw and Layout Inspector tools](https://codelabs.developers.google.com/codelabs/advanced-android-training-performance-tools/index.html?index=..%2F..advanced-android-training#0) - [ ] [4.2: Memory Profiler tool](https://codelabs.developers.google.com/codelabs/advanced-android-training-memory-profiler/index.html?index=..%2F..advanced-android-training#0) ## Unit 3: Make your apps accessible ### Lesson 5: Localization - [ ] [5.1: Add language support](https://codelabs.developers.google.com/codelabs/advanced-android-training-language-support/index.html?index=..%2F..advanced-android-training#0) - [ ] [5.2: Use locale to format data](https://codelabs.developers.google.com/codelabs/advanced-android-training-use-locale/index.html?index=..%2F..advanced-android-training#0) ### Lesson 6: Accessibility - [ ] [6.1: Explore accessibility in Android](https://codelabs.developers.google.com/codelabs/advanced-android-training-explore-accessibility/index.html?index=..%2F..advanced-android-training#0) - [ ] [6.2: Create accessible apps](https://codelabs.developers.google.com/codelabs/advanced-android-training-create-accessible-apps/index.html?index=..%2F..advanced-android-training#0) ## Unit 4: Add geo features to your apps ### Lesson 7: Location - [x] [7.1: Device location](https://codelabs.developers.google.com/codelabs/advanced-android-training-device-location/index.html?index=..%2F..advanced-android-training#0) ### Lesson 8: Places - [ ] [8.1: Places API](https://codelabs.developers.google.com/codelabs/advanced-android-training-places-api/index.html?index=..%2F..advanced-android-training#0) [新版Places API教學](https://developers.google.com/places/android-sdk/client-migration) ### Lesson 9: Mapping - [ ] [9.1: Google Maps](https://codelabs.developers.google.com/codelabs/advanced-android-training-google-maps/index.html?index=..%2F..advanced-android-training#0) ## Unit 5: Advanced graphics and views ### Lesson 10: Custom views - [x] [10.1 Part A: Customize View subclasses](https://codelabs.developers.google.com/codelabs/advanced-android-training-customize-view/index.html?index=..%2F..advanced-android-training#0) - [x] [10.1 Part B: Custom view from scratch](https://codelabs.developers.google.com/codelabs/advanced-android-training-custom-view-from-scratch/index.html?index=..%2F..advanced-android-training#0) ### Lesson 11: Canvas - [x] [11.1 Part A: Create Canvas objects](https://codelabs.developers.google.com/codelabs/advanced-android-training-create-canvas/index.html?index=..%2F..advanced-android-training#0) - [x] [11.1 Part B: Draw on Canvas objects](https://codelabs.developers.google.com/codelabs/advanced-android-training-draw-on-canvas/index.html?index=..%2F..advanced-android-training#0) - [x] [11.1 Part C: Apply clipping to Canvas objects](https://codelabs.developers.google.com/codelabs/advanced-android-training-apply-clipping-to-canvas/index.html?index=..%2F..advanced-android-training#0) - [x] [11.2: SurfaceView objects](https://codelabs.developers.google.com/codelabs/advanced-android-training-surfaceviews/index.html?index=..%2F..advanced-android-training#0) ### Lesson 12: Animations - [x] [12.1: Property animations](https://codelabs.developers.google.com/codelabs/advanced-android-training-animations/index.html?index=..%2F..advanced-android-training#0) ### Lesson 13: Playing video - [ ] [13.1: Play video in a VideoView](https://codelabs.developers.google.com/codelabs/advanced-android-training-video-view/index.html?index=..%2F..advanced-android-training#0)