Course Content
-
Использование LiveData в Android
- Описание проекта
- Получение API-токена для работы с Movie Database API
- Введение в lifecycle-aware components
- Введение в LiveData
- Реализация поиска фильмов c использованием LiveData и ViewModel
- Добавление Progress Bar для отображения статуса загрузки
- Transformations
- MediatorLiveData
- Выводы. RxJava vs LiveData
Получение API-токена для работы с Movie Database API
Получение API token для запросов к The Movie DB
Для получения списка фильмов мы будем использовать бесплатный сервис The Movie DB. Этот сервис имеет огромное количество данных о фильмах и идеально подходит для создания клиентского приложения для поиска фильмов. Вы можете использовать данное API не только для текущего мини-курса, но и для будущих проектов.
Для создания запросов к API нам потребуется так называемый ключ или токен.
Чтобы его получить – необходимо зарегистрироваться в сервисе по адресу: https://www.themoviedb.org/?language=ru.
После регистрации выберите свой профиль и раздел API. В данном разделе будет информация о токене, который вы можете использовать в запросах.
Например, если ваш токен abcd12345678910 – то для получения списка фильмов ваш запрос должен выглядеть так https://api.themoviedb.org/3/movie/550?api_key=abcd12345678910, где параметр api_key – как раз имеет значение вашего токена.
Ура, мы получили токен и теперь можем сделать запрос для получения фильмов. Откройте стартовый проект, создайте файл keystore.properties и добавьте в него ваш ключ:
Добавление API-ключа в отдельный файл, позволит вам добавить файл keystore.properties в .gitignore и не светить им например в публичном репозитории на GitHub. Если вы заглянете в build.gradle (:app) то увидите, что через определение дополнительного свойства buildConfigField ‘String’, ‘THE_MOVIE_DATABASE_API’, keystoreProperties[‘THE_MOVIE_DATABASE_API’] мы можем добавить его в BuildConfig и прочитать из любого места в проекте.
// Здесь читается API-ключ из файла def keystorePropertiesFile = rootProject.file("keystore.properties") def keystoreProperties = new Properties() keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) android { compileSdkVersion 29 buildToolsVersion "29.0.2" defaultConfig { applicationId "ru.mikhailskiy.livedata" minSdkVersion 21 targetSdkVersion 29 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" // Здесь добавляется API-ключ в BuildConfig buildConfigField 'String', 'THE_MOVIE_DATABASE_API', keystoreProperties['THE_MOVIE_DATABASE_API'] } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } .....
Теперь, чтобы использовать ключ в проекте, пропишите в MainActivity.kt:
companion object { private val TAG = MainActivity::class.java.simpleName private val API_KEY = BuildConfig.THE_MOVIE_DATABASE_API }
В первый раз BuildConfig.THE_MOVIE_DATABASE_API будет подсвечиваться, это нормально, запустите проект, проверьте, что всё работает. Если вы сделали всё правильно – то теперь получите список фильмов. BuildConfig генерируется после запуска и сборки проекта.