Sebelum menggunakan salah satu Home API untuk Android, Anda harus melakukan inisialisasi rumah di
aplikasi Anda. Pada langkah ini, Anda akan membuat instance singleton
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 trait dan jenis perangkat yang ingin Anda gunakan dengan Device & Structure API dan Automation API. Jika Anda baru saja memulai dengan ekosistem Google Home dan tidak yakin ciri atau jenis perangkat apa yang harus didaftarkan, kami telah menyarankan beberapa yang paling umum di panduan ini.
Buat contoh Beranda
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 hidup aktivitas apa pun, dan akan tetap ada selama aplikasi Anda aktif. Anda bisa mendapatkannya dengan memanggilgetApplicationContext()dalamActivityatauService:val context = getApplicationContext()Buat instance
FactoryRegistrydengan semua ciri dan jenis perangkat yang ingin Anda gunakan di aplikasi Anda.Untuk panduan ini, kami telah menyarankan beberapa yang umum (jenis perangkat Lampu, Steker, Sensor, Sakelar, dan Termostat, keberadaan dan ciri Asisten untuk otomatisasi), kalau-kalau Anda tidak yakin 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 sifat dan jenis perangkat individual yang terdaftar di sini diperlukan (Android Studio akan meminta Anda untuk menambahkannya).
Buat instance
HomeConfigmenggunakan konteks coroutineDispatchers.IOdan instance registri 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 kesalahan dengan sesi yang tidak valid, penting bahwa hanya satu instance tunggal 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
Kelas FactoryRegistry membantu pengembang mengoptimalkan ukuran biner aplikasi mereka dengan memungkinkan mereka secara eksplisit menunjukkan ciri dan jenis perangkat mana yang digunakan oleh aplikasi mereka.
Perhatikan bahwa izin dan registri pabrik dipisahkan. Oleh karena itu, ciri dan tipe yang tidak terdaftar yang tersedia untuk aplikasi Anda menggunakan izin tetapi tidak disertakan dalam registri pabrik tidak dapat diakses menggunakan Automation API dan tidak dikembalikan dalam panggilan metode traits() atau types() massal.