Evi ilk kullanıma hazırlama

Home API'lerinden herhangi birini kullanmadan önce uygulamanızda evi başlatmanız gerekir. Bu adımda, yerel bağlam için Home sınıfının tekil bir örneğini oluşturursunuz.

Aynı anda yalnızca bir Home örneği etkin olmalıdır.

Bu, Home API'lerine giriş noktasıdır ve ayrıca Cihaz, Yapı ve Otomasyon API'leriyle hangi özellikleri ve cihaz türlerini kullanmayı amaçladığınızı belirtmeyi de içerir. Google Home ekosistemine yeni başlıyorsanız ve hangi özelliklerin veya cihaz türlerinin kaydedileceğinden emin değilseniz bu kılavuzda en yaygın olanlardan bazılarını önerdik.

Ev örneği oluşturma

Başlamak için aşağıdaki paketleri uygulamanıza aktarın:

import android.content.Context
import com.google.home.FactoryRegistry
import com.google.home.HomeConfig
import com.google.home.Home

Home API'lerini başlatmak için:

  1. Application bağlamına referans alın. Bu bağlam, herhangi bir etkinlik yaşam döngüsüne bağlı değildir ve uygulamanız mevcut olduğu sürece geçerli olur. Context.getApplicationContext() veya Activity.getApplication() numaralı telefondan bu numaraya ulaşabilirsiniz.

    val context = Context.getApplicationContext()
    
  2. Uygulamanızda kullanmak istediğiniz tüm özellikleri ve cihaz türlerini içeren bir FactoryRegistry örneği oluşturun.

    Bu kılavuzda, ihtiyacınız olandan emin olamıyorsanız bazı yaygın cihazları (Işık, Priz, Sensör, Anahtar ve Termostat cihaz türleri, otomasyonlar için varlık ve Asistan özellikleri) önerdik. Daha fazla bilgi edinmek için Özelliklerin ve cihaz türlerinin kaydı başlıklı makaleyi inceleyin.

    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))
    

    Burada kayıtlı her özellik ve cihaz türü için içe aktarma beyanları gereklidir (Android Studio, bunları eklemenizi ister).

  3. Dispatchers.IO bağlamını ve kayıt defteri örneğinizi kullanarak bir HomeConfig örneği oluşturun.

    val homeConfig = HomeConfig(
            coroutineContext = Dispatchers.IO,
            factoryRegistry = registry)
    
  4. Son olarak, bağlamı ve HomeConfig'i kullanarak API'lerin giriş noktası olan Home tekil örneğini oluşturun.

    val homeManager: HomeClient = Home.getClient(context, homeConfig)
    

Geçersiz oturumlarla ilgili hataları önlemek için Home sınıfını bir nesne beyanı içine sarmalayarak yalnızca tekil bir Home örneğinin oluşturulması önemlidir.

Örneğin, örnek uygulama bunu şu şekilde yapar:

internal object HomeClientModule {
  @Provides
  @Singleton
  fun provideHomeClient(@ApplicationContext context: Context): HomeClient {
    return Home.getClient(
      context,
      HomeConfig(
        coroutineContext = IODispatcherModule.provideIoDispatcher(),
        factoryRegistry = registry,
      ),
    )
  }
}

Özelliklerin ve cihaz türlerinin tescili

FactoryRegistry sınıfı, geliştiricilerin uygulamalarının hangi özelliklerini ve cihaz türlerini kullandığını açıkça belirtmelerine olanak tanıyarak uygulama ikili dosyalarının boyutunu optimize etmelerine yardımcı olur.

İzinlerin ve fabrika kayıt defterinin birbirinden ayrıldığını unutmayın. Bu nedenle, izinleri kullanarak uygulamanızın kullanabildiği ancak fabrika kayıt defterine dahil edilmeyen kayıtsız özellikler ve türler Automation API kullanılarak erişilemez ve toplu traits() veya types() yöntem çağrılarında döndürülmez.