Android için Home API'lerinden herhangi birini kullanmadan önce uygulamanızda evi başlatmanız gerekir. Bu adımda, yerel bağlam için singleton örneğiHome
oluşturacaksınız.
Aynı anda yalnızca bir Home
örneği etkin olmalıdır.
Bu, Home API'lerinin giriş noktasıdır. Ayrıca, Cihaz ve Yapı ile Otomasyon API'lerinde hangi özellikleri ve cihaz türlerini kullanmayı planladığınızı da bildirmeniz gerekir. Google Home ekosistemini kullanmaya yeni başlıyorsanız ve hangi özellikleri veya cihaz türlerini kaydettireceğinizden emin değilseniz bu kılavuzda en yaygın olanlardan bazılarını önerdik.
Home örneği oluşturma
Başlamak için şu 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:
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 çalıştığı sürece geçerli olur.Context.getApplicationContext()
veyaActivity.getApplication()
numaralarını arayarak kodu alabilirsiniz.val context = Context.getApplicationContext()
Uygulamanızda kullanmayı planladığınız tüm özellikler ve cihaz türleriyle bir
FactoryRegistry
örneği oluşturun.Neye ihtiyacınız olduğundan emin değilseniz bu kılavuzda bazı yaygın olanları (ışık, fiş, 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 bir özellik ve cihaz türü için içe aktarma ifadeleri gereklidir (Android Studio bu ifadeleri eklemenizi ister).
HomeConfig
öğesiniDispatchers.IO
eş yordam bağlamını ve kayıt örneğinizi kullanarak oluşturun.val homeConfig = HomeConfig( coroutineContext = Dispatchers.IO, factoryRegistry = registry)
Son olarak, bağlamı ve
HomeConfig
kullanarak API'lerin giriş noktası olanHome
'nin tekil örneğini oluşturun.val homeManager: HomeClient = Home.getClient(context, homeConfig)
Geçersiz oturumlarla ilgili hataları önlemek için Home
'nin yalnızca tekil bir örneğinin oluşturulması ve bunun bir nesne bildirimi içine alınması önemlidir.
Örneğin, örnek uygulamada bu işlem şu şekilde yapılır:
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 kaydı
FactoryRegistry
sınıfı, geliştiricilerin uygulamaları tarafından kullanılan özellikleri ve cihaz türlerini açıkça belirtmelerine olanak tanıyarak uygulama ikili boyutlarını optimize etmelerine yardımcı olur.
İzinlerin ve fabrika kayıt defterinin birbirinden bağımsız olduğunu unutmayın. Bu nedenle, izinler kullanılarak uygulamanızda kullanılabilen ancak fabrika kayıt defterine dahil edilmeyen kayıtlı olmayan özelliklere ve türlere Automation API kullanılarak erişilemez ve bunlar toplu traits()
veya types()
yöntem çağrılarında döndürülmez.