Skip to content

Commit 934ee50

Browse files
Google Home API Sample App (1.7.0)
- Camera History & Events - Doorbell Settings - Electronic/Mechanic Chime - Camera & Doorbell State - Current Connectivity State - Camera & Doorbell Device Info - Device ID See https://developers.home.google.com/apis/android/release-notes for more details
1 parent 581a444 commit 934ee50

94 files changed

Lines changed: 10465 additions & 8280 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

app/build.gradle.kts

Lines changed: 87 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -1,101 +1,109 @@
11
import java.util.Properties
22

33
plugins {
4-
alias(libs.plugins.android.application)
5-
alias(libs.plugins.kotlin.android)
6-
alias(libs.plugins.kotlin.compose)
7-
id("com.google.devtools.ksp")
8-
id("com.google.dagger.hilt.android")
9-
alias(libs.plugins.errorprone)
4+
alias(libs.plugins.android.application)
5+
alias(libs.plugins.kotlin.android)
6+
alias(libs.plugins.kotlin.compose)
7+
id("com.google.devtools.ksp")
8+
id("com.google.dagger.hilt.android")
9+
alias(libs.plugins.errorprone)
1010
}
1111

1212
android {
1313
namespace = "com.example.googlehomeapisampleapp"
1414
compileSdk = 36
1515

1616
defaultConfig {
17-
applicationId = "com.example.googlehomeapisampleapp"
18-
minSdk = 29
19-
targetSdk = 34
20-
versionCode = 37
21-
versionName = "1.6.0"
17+
applicationId = "com.example.googlehomeapisampleapp"
18+
minSdk = 29
19+
targetSdk = 36
20+
versionCode = 38
21+
versionName = "1.7.0"
2222

23-
// Store your GCP project web client ID in local.properties and access it via project properties.
24-
// If local.properties doesn't exist in your app root folder, just create it
25-
// e.g. add this line to your local.properties
26-
// WEB_CLIENT_ID_DEV={ProjectNumber}....apps.googleusercontent.com
27-
val localProperties = Properties()
28-
val localPropertiesFile = rootProject.file("local.properties")
29-
if (localPropertiesFile.exists()) {
30-
localPropertiesFile.inputStream().use { localProperties.load(it) }
31-
}
32-
val webClientIdDevRaw = localProperties.getProperty("WEB_CLIENT_ID_DEV")
33-
?: project.findProperty("WEB_CLIENT_ID_DEV") as? String
34-
?: "YOUR_DEFAULT_WEB_CLIENT_ID"
35-
val webClientIdDev = webClientIdDevRaw.replace("\"", "")
36-
buildConfigField("String", "DEFAULT_WEB_CLIENT_ID", "\"$webClientIdDev\"")
37-
}
38-
lint {
39-
disable += "NullSafeMutableLiveData"
23+
// Store your GCP project web client ID in local.properties and access it via project properties.
24+
// If local.properties doesn't exist in your app root folder, just create it
25+
// e.g. add this line to your local.properties
26+
// WEB_CLIENT_ID_DEV={ProjectNumber}....apps.googleusercontent.com
27+
val localProperties = Properties()
28+
val localPropertiesFile = rootProject.file("local.properties")
29+
if (localPropertiesFile.exists()) {
30+
localPropertiesFile.inputStream().use { localProperties.load(it) }
4031
}
32+
val webClientIdDevRaw = localProperties.getProperty("WEB_CLIENT_ID_DEV")
33+
?: project.findProperty("WEB_CLIENT_ID_DEV") as? String
34+
?: "YOUR_DEFAULT_WEB_CLIENT_ID"
35+
val webClientIdDev = webClientIdDevRaw.replace("\"", "")
36+
buildConfigField("String", "DEFAULT_WEB_CLIENT_ID", "\"$webClientIdDev\"")
37+
}
38+
lint {
39+
disable += "NullSafeMutableLiveData"
40+
}
4141

4242

43-
buildTypes {
44-
release {
45-
isMinifyEnabled = false
46-
proguardFiles(
47-
getDefaultProguardFile("proguard-android-optimize.txt"),
48-
"proguard-rules.pro"
49-
)
50-
}
51-
}
52-
compileOptions {
53-
sourceCompatibility = JavaVersion.VERSION_1_8
54-
targetCompatibility = JavaVersion.VERSION_1_8
55-
}
56-
kotlinOptions {
57-
jvmTarget = "1.8"
43+
buildTypes {
44+
release {
45+
isMinifyEnabled = false
46+
proguardFiles(
47+
getDefaultProguardFile("proguard-android-optimize.txt"),
48+
"proguard-rules.pro"
49+
)
5850
}
59-
buildFeatures {
60-
compose = true
61-
buildConfig = true
62-
}
63-
composeOptions {
64-
kotlinCompilerExtensionVersion = "1.5.14"
51+
}
52+
compileOptions {
53+
sourceCompatibility = JavaVersion.VERSION_1_8
54+
targetCompatibility = JavaVersion.VERSION_1_8
55+
}
56+
kotlin {
57+
compilerOptions {
58+
jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8)
6559
}
60+
}
61+
buildFeatures {
62+
compose = true
63+
buildConfig = true
64+
}
6665
}
6766

6867
dependencies {
69-
// Library dependencies:
70-
implementation(libs.androidx.core.ktx)
71-
implementation(libs.androidx.lifecycle.runtime.ktx)
72-
implementation(libs.androidx.activity.compose)
73-
implementation(platform(libs.androidx.compose.bom))
74-
implementation(libs.androidx.ui)
75-
implementation(libs.androidx.ui.graphics)
76-
implementation(libs.androidx.ui.tooling.preview)
77-
implementation(libs.androidx.material3)
78-
implementation("androidx.compose.material:material-icons-extended:1.7.7")
79-
implementation(libs.androidx.navigation.compose)
80-
// Home API SDK dependency:
81-
implementation("com.google.android.gms:play-services-home:17.1.0")
82-
implementation("com.google.android.gms:play-services-home-types:17.1.0")
83-
// Matter Android Demo SDK
84-
implementation(libs.matter.android.demo.sdk)
68+
// Library dependencies:
69+
implementation(libs.androidx.core.ktx)
70+
implementation(libs.androidx.lifecycle.runtime.ktx)
71+
implementation(libs.androidx.activity.compose)
72+
implementation(platform(libs.androidx.compose.bom))
73+
implementation(libs.androidx.ui)
74+
implementation(libs.androidx.ui.graphics)
75+
implementation(libs.androidx.ui.tooling.preview)
76+
implementation(libs.androidx.material3)
77+
implementation(libs.androidx.compose.material.icons.extended)
78+
implementation(libs.androidx.navigation.compose)
79+
// Home API SDK dependency:
80+
implementation(libs.play.services.home)
81+
implementation(libs.play.services.home.types)
82+
// Matter Android Demo SDK
83+
implementation(libs.matter.android.demo.sdk)
84+
85+
// Camera
86+
implementation(libs.dagger.hilt.android)
87+
implementation(libs.googleid)
88+
ksp(libs.hilt.android.compiler)
89+
implementation(libs.androidx.hilt.navigation.compose)
90+
ksp(libs.androidx.hilt.compiler)
91+
implementation(libs.stream.webrtc.android)
92+
implementation(libs.errorprone.annotations)
93+
94+
// Camera Commissioning
95+
implementation(libs.androidx.camerax.core)
96+
implementation(libs.androidx.camerax.camera2)
97+
implementation(libs.androidx.camerax.lifecycle)
98+
implementation(libs.androidx.camerax.view)
99+
implementation(libs.mlkit.barcode.scanning)
85100

86-
// Camera
87-
implementation(libs.dagger.hilt.android)
88-
implementation(libs.googleid)
89-
ksp(libs.hilt.android.compiler)
90-
implementation(libs.androidx.hilt.navigation.compose)
91-
ksp(libs.androidx.hilt.compiler)
92-
implementation(libs.stream.webrtc.android)
93-
implementation(libs.errorprone.annotations)
101+
// Google Auth
102+
implementation(libs.androidx.credentials.play.services.auth)
94103

95-
// Camera Commissioning
96-
implementation(libs.androidx.camerax.core)
97-
implementation(libs.androidx.camerax.camera2)
98-
implementation(libs.androidx.camerax.lifecycle)
99-
implementation(libs.androidx.camerax.view)
100-
implementation(libs.mlkit.barcode.scanning)
104+
// History Eventing
105+
implementation(libs.androidx.paging.runtime.ktx)
106+
implementation(libs.androidx.paging.compose)
107+
implementation(libs.coil.compose)
108+
implementation(libs.coil.network.okhttp)
101109
}

app/src/main/AndroidManifest.xml

Lines changed: 60 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -2,53 +2,65 @@
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
33
xmlns:tools="http://schemas.android.com/tools">
44

5-
<application
6-
android:name=".HomeApplication"
7-
android:icon="@mipmap/ic_launcher"
8-
android:label="@string/app_name"
9-
android:roundIcon="@mipmap/ic_launcher_round"
10-
android:supportsRtl="true"
5+
<uses-sdk />
6+
7+
<uses-permission android:name="android.permission.INTERNET" />
8+
<uses-permission android:name="com.google.android.gms.permission.BIND_COMMISSIONING_SERVICE" />
9+
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
10+
<uses-permission android:name="android.permission.RECORD_AUDIO" />
11+
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
12+
13+
<!-- Required by webRTC library-->
14+
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
15+
16+
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
17+
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
18+
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
19+
<uses-permission android:name="android.permission.CAMERA" />
20+
21+
<uses-feature
22+
android:name="android.hardware.camera"
23+
android:required="false" />
24+
<application
25+
android:name=".HomeApplication"
26+
android:icon="@mipmap/ic_launcher"
27+
android:label="@string/app_name"
28+
android:roundIcon="@mipmap/ic_launcher_round"
29+
android:supportsRtl="true"
30+
android:theme="@style/Theme.GoogleHomeAPISampleApp"
31+
tools:targetApi="31">
32+
<meta-data
33+
android:name="androidx.lifecycle.ProcessLifecycleOwnerInitializer"
34+
android:value="androidx.startup" />
35+
36+
<activity
37+
android:name=".MainActivity"
38+
android:exported="true"
1139
android:theme="@style/Theme.GoogleHomeAPISampleApp"
12-
tools:targetApi="31">
13-
<meta-data
14-
android:name="androidx.lifecycle.ProcessLifecycleOwnerInitializer"
15-
android:value="androidx.startup" />
16-
<activity
17-
android:name=".MainActivity"
18-
android:exported="true"
19-
android:windowSoftInputMode="adjustResize"
20-
android:theme="@style/Theme.GoogleHomeAPISampleApp">
21-
<intent-filter>
22-
<action android:name="android.intent.action.MAIN" />
23-
<category android:name="android.intent.category.LAUNCHER" />
24-
</intent-filter>
25-
<intent-filter>
26-
<action android:name="com.google.android.gms.home.matter.ACTION_START_COMMISSIONING" />
27-
<category android:name="android.intent.category.DEFAULT" />
28-
</intent-filter>
29-
</activity>
30-
<activity
31-
android:name=".AccountSwitchProxyActivity"
32-
android:exported="false"
33-
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
34-
<service
35-
android:name=".commissioning.ThirdPartyCommissioningService"
36-
android:exported="true"
37-
android:enabled="true">
38-
<intent-filter>
39-
<action android:name="com.google.android.gms.home.matter.commissioning.COMMISSION_DEVICE_TO_3P_FABRIC" />
40-
</intent-filter>
41-
</service>
42-
</application>
43-
<uses-permission android:name="android.permission.INTERNET" />
44-
<uses-permission android:name="com.google.android.gms.permission.BIND_COMMISSIONING_SERVICE" />
45-
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
46-
<uses-permission android:name="android.permission.RECORD_AUDIO" />
47-
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
48-
49-
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
50-
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
51-
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
52-
<uses-permission android:name="android.permission.CAMERA" />
53-
<uses-feature android:name="android.hardware.camera" android:required="false"/>
40+
android:windowSoftInputMode="adjustResize">
41+
<intent-filter>
42+
<action android:name="android.intent.action.MAIN" />
43+
<category android:name="android.intent.category.LAUNCHER" />
44+
</intent-filter>
45+
<intent-filter>
46+
<action android:name="com.google.android.gms.home.matter.ACTION_START_COMMISSIONING" />
47+
<category android:name="android.intent.category.DEFAULT" />
48+
</intent-filter>
49+
</activity>
50+
<activity
51+
android:name=".AccountSwitchProxyActivity"
52+
android:exported="false"
53+
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
54+
55+
<service
56+
android:name=".commissioning.ThirdPartyCommissioningService"
57+
android:enabled="true"
58+
android:exported="true"
59+
android:permission="com.google.android.gms.permission.BIND_COMMISSIONING_SERVICE">
60+
<intent-filter>
61+
<action android:name="com.google.android.gms.home.matter.commissioning.COMMISSION_DEVICE_TO_3P_FABRIC" />
62+
</intent-filter>
63+
</service>
64+
</application>
65+
5466
</manifest>
51.7 KB
Loading

0 commit comments

Comments
 (0)