Sebelum menggunakan salah satu Home API untuk Android, Anda harus melakukan inisialisasi rumah di
aplikasi Anda. Pada langkah ini, Anda akan membuat instance singleton dari
Home
untuk konteks lokal.
Hanya satu instance Home
yang boleh aktif dalam satu waktu.
Ini adalah titik entri ke Home API dan juga melibatkan deklarasi sifat dan jenis perangkat yang ingin Anda gunakan dengan Device & Structure API dan Automation API. Jika Anda baru mulai menggunakan ekosistem Google Home dan tidak yakin jenis perangkat atau karakteristik apa yang harus didaftarkan, kami telah menyarankan beberapa jenis perangkat yang paling umum di sini dalam panduan ini.
Membuat instance Rumah
Untuk memulai, impor paket ini ke aplikasi Anda:
import android.content.Context
import com.google.home.FactoryRegistry
import com.google.home.HomeConfig
import com.google.home.Home
Untuk menginisialisasi Home API:
Dapatkan referensi ke konteks
Application
. Konteks ini tidak bergantung pada siklus proses aktivitas apa pun, dan akan tetap ada selama aplikasi Anda aktif. Anda dapat memperolehnya dengan memanggilgetApplicationContext()
dalamActivity
atauService
:val context = getApplicationContext()
Buat instance
FactoryRegistry
dengan semua karakteristik dan jenis perangkat yang ingin Anda gunakan di aplikasi.Untuk panduan ini, kami telah menyarankan beberapa jenis perangkat umum (Light, Plug, Sensor, Switch, dan Thermostat, serta kehadiran dan sifat Asisten untuk otomatisasi), jika Anda tidak yakin dengan apa yang Anda butuhkan. Untuk mempelajari lebih lanjut, lihat Pendaftaran karakteristik dan jenis perangkat.
val registry = FactoryRegistry( traits = listOf( AirQuality, AreaAttendanceState, AreaPresenceState, AssistantBroadcast, AssistantFulfillment, BooleanState, ColorControl, ExtendedColorControl, FlowMeasurement, IlluminanceMeasurement, LevelControl, Notification, OccupancySensing, OnOff, RelativeHumidityMeasurement, Switch, TemperatureMeasurement, Thermostat), types = listOf( AirQualitySensorDevice, ColorDimmerSwitchDevice, ColorTemperatureLightDevice, ContactSensorDevice, DimmableLightDevice, DimmablePlugInUnitDevice, DimmerSwitchDevice, ExtendedColorLightDevice, FlowSensorDevice, GenericSwitchDevice, HumiditySensorDevice, LightSensorDevice, OccupancySensorDevice, OnOffLightDevice, OnOffLightSwitchDevice, OnOffPluginUnitDevice, OnOffSensorDevice, SpeakerDevice, TemperatureSensorDevice, ThermostatDevice))
Pernyataan impor untuk setiap jenis perangkat dan karakteristik individual yang terdaftar di sini diperlukan (Android Studio akan meminta Anda untuk menambahkannya).
Buat instance
HomeConfig
menggunakan konteks coroutineDispatchers.IO
dan instance registry Anda.val homeConfig = HomeConfig( coroutineContext = Dispatchers.IO, factoryRegistry = registry)
Terakhir, buat instance singleton dari
Home
, yang merupakan titik entri ke API, menggunakan konteks danHomeConfig
.val homeManager: HomeClient = Home.getClient(context, homeConfig)
Untuk menghindari error pada sesi yang tidak valid, Anda harus memastikan bahwa hanya instance singleton
dari Home
yang dibuat, dengan membungkusnya dalam deklarasi
objek.
Sebagai contoh, Sample App melakukannya dengan cara ini:
internal object HomeClientModule {
@Provides
@Singleton
fun provideHomeClient(@ApplicationContext context: Context): HomeClient {
return Home.getClient(
context,
HomeConfig(
coroutineContext = IODispatcherModule.provideIoDispatcher(),
factoryRegistry = registry,
),
)
}
}
Pendaftaran fitur dan jenis perangkat
Class FactoryRegistry
membantu developer mengoptimalkan ukuran biner aplikasi mereka dengan
memungkinkan mereka secara eksplisit menunjukkan sifat dan jenis perangkat yang digunakan oleh
aplikasi mereka.
Perhatikan bahwa izin dan registry pabrik tidak terkait. Oleh karena itu, jenis dan karakteristik yang tidak terdaftar yang tersedia untuk aplikasi Anda menggunakan izin, tetapi tidak disertakan dalam pendaftaran pabrik tidak dapat diakses menggunakan Automation API dan tidak ditampilkan dalam panggilan metode traits()
atau types()
massal.