Sebelum menggunakan Home API, Anda harus melakukan inisialisasi rumah di aplikasi. 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 karakteristik dan jenis perangkat yang ingin Anda gunakan dengan API Perangkat & Struktur dan Otomatisasi. Jika Anda baru memulai ekosistem Google Home dan tidak yakin jenis perangkat atau karakteristik apa yang harus didaftarkan, kami telah menyarankan beberapa 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 melakukan inisialisasi Home API:
Dapatkan referensi ke konteks
Application
. Konteks ini tidak bergantung pada siklus proses aktivitas apa pun, dan akan aktif selama aplikasi Anda aktif. Anda bisa mendapatkannya dengan memanggilContext.getApplicationContext()
atauActivity.getApplication()
.val context = Context.getApplicationContext()
Buat instance
FactoryRegistry
dengan semua karakteristik dan jenis perangkat yang ingin Anda gunakan di aplikasi.Untuk panduan ini, kami telah menyarankan beberapa perangkat umum (jenis perangkat Lampu, Steker, Sensor, Tombol, dan Termostat, kehadiran, dan karakteristik Asisten untuk otomatisasi), jika Anda tidak yakin dengan apa yang Anda butuhkan. Untuk mempelajari lebih lanjut, lihat Pendaftaran jenis perangkat dan karakteristik.
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 karakteristik dan jenis perangkat 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 dengan sesi yang tidak valid, hanya instance singleton
Home
yang harus dibuat, dengan menggabungkannya dalam deklarasi
objek.
Misalnya, aplikasi contoh 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 dengan
memungkinkan mereka secara eksplisit menunjukkan karakteristik dan jenis perangkat yang digunakan oleh
aplikasi mereka.
Perhatikan bahwa izin dan registry pabrik dipisahkan. Oleh karena itu,
sifat dan jenis yang tidak terdaftar yang tersedia untuk aplikasi Anda menggunakan izin
tetapi tidak disertakan dalam registry pabrik tidak dapat diakses menggunakan
Automation API atau ditampilkan dalam panggilan metode traits()
atau types()
secara massal.