Melakukan inisialisasi rumah

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:

  1. 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 memanggil Context.getApplicationContext() atau Activity.getApplication().

    val context = Context.getApplicationContext()
    
  2. 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).

  3. Buat instance HomeConfig menggunakan konteks coroutine Dispatchers.IO dan instance registry Anda.

    val homeConfig = HomeConfig(
            coroutineContext = Dispatchers.IO,
            factoryRegistry = registry)
    
  4. Terakhir, buat instance singleton dari Home, yang merupakan titik entri ke API, menggunakan konteks dan HomeConfig.

    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.