From 2f6441ceefecf3f562f491fa7d7f341f5d4db66c Mon Sep 17 00:00:00 2001 From: Chiara Chiappini Date: Mon, 10 Jun 2024 14:10:51 +0100 Subject: [PATCH] Adds Wear voice input --- .github/workflows/apply_spotless.yml | 3 + .github/workflows/build.yml | 2 + gradle/libs.versions.toml | 11 ++ settings.gradle.kts | 1 + wear/.gitignore | 1 + wear/build.gradle.kts | 78 +++++++++++ wear/lint.xml | 8 ++ wear/proguard-rules.pro | 21 +++ wear/src/main/AndroidManifest.xml | 39 ++++++ .../com/example/wear/snippets/MainActivity.kt | 43 ++++++ .../snippets/voiceinput/VoiceInputScreen.kt | 122 ++++++++++++++++++ .../res/drawable/ic_launcher_background.xml | 74 +++++++++++ .../res/drawable/ic_launcher_foreground.xml | 31 +++++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 4292 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 2762 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 6126 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 8874 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 12130 bytes wear/src/main/res/values/strings.xml | 5 + 21 files changed, 449 insertions(+) create mode 100644 wear/.gitignore create mode 100644 wear/build.gradle.kts create mode 100644 wear/lint.xml create mode 100644 wear/proguard-rules.pro create mode 100644 wear/src/main/AndroidManifest.xml create mode 100644 wear/src/main/java/com/example/wear/snippets/MainActivity.kt create mode 100644 wear/src/main/java/com/example/wear/snippets/voiceinput/VoiceInputScreen.kt create mode 100644 wear/src/main/res/drawable/ic_launcher_background.xml create mode 100644 wear/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 wear/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 wear/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 wear/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 wear/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 wear/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 wear/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 wear/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 wear/src/main/res/values/strings.xml diff --git a/.github/workflows/apply_spotless.yml b/.github/workflows/apply_spotless.yml index 79c68e23..0ab86301 100644 --- a/.github/workflows/apply_spotless.yml +++ b/.github/workflows/apply_spotless.yml @@ -47,3 +47,6 @@ jobs: uses: stefanzweifel/git-auto-commit-action@v5 with: commit_message: Apply Spotless + + - name: Run spotlessApply for Wear + run: ./gradlew :wear:spotlessApply --init-script gradle/init.gradle.kts --no-configuration-cache --stacktrace diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 51f9b6cb..8337b423 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -43,3 +43,5 @@ jobs: run: ./gradlew :compose:recomposehighlighter:build - name: Build kotlin snippets run: ./gradlew :kotlin:build + - name: Build Wear snippets + run: ./gradlew :wear:build diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 62a11563..82937258 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -43,6 +43,11 @@ recyclerview = "1.3.2" # @keep targetSdk = "34" version-catalog-update = "0.8.3" +playServicesWearable = "18.1.0" +wearComposeMaterial = "1.2.1" +wearComposeFoundation = "1.2.1" +coreSplashscreen = "1.0.1" +horologist = "0.5.24" [libraries] accompanist-adaptive = { module = "com.google.accompanist:accompanist-adaptive", version.ref = "accompanist" } @@ -110,6 +115,12 @@ junit = { module = "junit:junit", version.ref = "junit" } kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" } kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" } kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "coroutines" } +play-services-wearable = { group = "com.google.android.gms", name = "play-services-wearable", version.ref = "playServicesWearable" } +compose-material = { group = "androidx.wear.compose", name = "compose-material", version.ref = "wearComposeMaterial" } +compose-foundation = { group = "androidx.wear.compose", name = "compose-foundation", version.ref = "wearComposeFoundation" } +androidx-core-splashscreen = { group = "androidx.core", name = "core-splashscreen", version.ref = "coreSplashscreen" } +horologist-compose-layout = { module = "com.google.android.horologist:horologist-compose-layout", version.ref = "horologist" } +horologist-compose-material = { module = "com.google.android.horologist:horologist-compose-material", version.ref = "horologist" } [plugins] android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } diff --git a/settings.gradle.kts b/settings.gradle.kts index 1edd26a8..f9ba4f22 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -26,4 +26,5 @@ include( ":compose:recomposehighlighter", ":kotlin", ":compose:snippets", + ":wear", ) diff --git a/wear/.gitignore b/wear/.gitignore new file mode 100644 index 00000000..42afabfd --- /dev/null +++ b/wear/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/wear/build.gradle.kts b/wear/build.gradle.kts new file mode 100644 index 00000000..f31e8ba8 --- /dev/null +++ b/wear/build.gradle.kts @@ -0,0 +1,78 @@ +plugins { + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.android) +} + +android { + namespace = "com.example.wear" + compileSdk = 34 + + defaultConfig { + applicationId = "com.example.wear" + minSdk = 26 + targetSdk = 33 + versionCode = 1 + versionName = "1.0" + vectorDrawables { + useSupportLibrary = true + } + + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + kotlin { + jvmToolchain(17) + } + + buildFeatures { + compose = true + } + composeOptions { + kotlinCompilerExtensionVersion = libs.versions.compose.compiler.get() + } + packaging { + resources { + excludes += "/META-INF/{AL2.0,LGPL2.1}" + } + } +} + +dependencies { + val composeBom = platform(libs.androidx.compose.bom) + implementation(composeBom) + androidTestImplementation(composeBom) + + implementation(libs.play.services.wearable) + implementation(platform(libs.androidx.compose.bom)) + implementation(libs.androidx.compose.ui) + implementation(libs.androidx.compose.ui.tooling.preview) + implementation(libs.compose.material) + implementation(libs.compose.foundation) + implementation(libs.androidx.activity.compose) + implementation(libs.androidx.core.splashscreen) + implementation(libs.horologist.compose.layout) + implementation(libs.horologist.compose.material) + androidTestImplementation(libs.androidx.compose.ui.test.junit4) + debugImplementation(libs.androidx.compose.ui.tooling) + debugImplementation(libs.androidx.compose.ui.test.manifest) + testImplementation(libs.junit) + + androidTestImplementation(libs.junit) + androidTestImplementation(libs.androidx.test.core) + androidTestImplementation(libs.androidx.test.runner) + androidTestImplementation(libs.androidx.test.espresso.core) + androidTestImplementation(libs.androidx.compose.ui.test) + debugImplementation(libs.androidx.compose.ui.tooling) +} diff --git a/wear/lint.xml b/wear/lint.xml new file mode 100644 index 00000000..44fac75b --- /dev/null +++ b/wear/lint.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/wear/proguard-rules.pro b/wear/proguard-rules.pro new file mode 100644 index 00000000..481bb434 --- /dev/null +++ b/wear/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/wear/src/main/AndroidManifest.xml b/wear/src/main/AndroidManifest.xml new file mode 100644 index 00000000..f0d2328e --- /dev/null +++ b/wear/src/main/AndroidManifest.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wear/src/main/java/com/example/wear/snippets/MainActivity.kt b/wear/src/main/java/com/example/wear/snippets/MainActivity.kt new file mode 100644 index 00000000..0921cb04 --- /dev/null +++ b/wear/src/main/java/com/example/wear/snippets/MainActivity.kt @@ -0,0 +1,43 @@ +/* + * Copyright 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.wear.snippets + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.compose.runtime.Composable +import com.example.wear.snippets.voiceinput.VoiceInputScreen +import com.google.android.horologist.annotations.ExperimentalHorologistApi + +class MainActivity : ComponentActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + + super.onCreate(savedInstanceState) + + setTheme(android.R.style.Theme_DeviceDefault) + + setContent { + WearApp() + } + } +} + +@OptIn(ExperimentalHorologistApi::class) +@Composable +fun WearApp() { + VoiceInputScreen() +} diff --git a/wear/src/main/java/com/example/wear/snippets/voiceinput/VoiceInputScreen.kt b/wear/src/main/java/com/example/wear/snippets/voiceinput/VoiceInputScreen.kt new file mode 100644 index 00000000..36e3e19b --- /dev/null +++ b/wear/src/main/java/com/example/wear/snippets/voiceinput/VoiceInputScreen.kt @@ -0,0 +1,122 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.wear.snippets.voiceinput + +/* + * Copyright 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import android.content.Intent +import android.speech.RecognizerIntent +import androidx.activity.compose.rememberLauncherForActivityResult +import androidx.activity.result.contract.ActivityResultContracts +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import com.example.wear.R +import com.google.android.horologist.annotations.ExperimentalHorologistApi +import com.google.android.horologist.compose.layout.ScalingLazyColumnDefaults +import com.google.android.horologist.compose.layout.ScalingLazyColumnDefaults.ItemType +import com.google.android.horologist.compose.layout.ScreenScaffold +import com.google.android.horologist.compose.material.Chip +import com.google.android.horologist.compose.rotaryinput.rotaryWithScroll + +/** + * Shows voice input option + */ +@OptIn(ExperimentalHorologistApi::class) +@Composable +fun VoiceInputScreen() { + // [START android_wear_voice_input] + var textForVoiceInput by remember { mutableStateOf("") } + + val voiceLauncher = + rememberLauncherForActivityResult( + ActivityResultContracts.StartActivityForResult() + ) { activityResult -> + // This is where you process the intent and extract the speech text from the intent. + activityResult.data?.let { data -> + val results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS) + textForVoiceInput = results?.get(0) ?: "None" + } + } + + // [START_EXCLUDE android_wear_voice_input] + val scrollState = rememberScrollState() + + ScreenScaffold(scrollState = scrollState) { + val padding = ScalingLazyColumnDefaults.padding( + first = ItemType.Text, + last = ItemType.Chip + )() + Column( + modifier = Modifier + .fillMaxSize() + .verticalScroll(scrollState) + .rotaryWithScroll(scrollState) + .padding(padding), + verticalArrangement = Arrangement.Center + ) { + // [END_EXCLUDE android_wear_voice_input] + // Create an intent that can start the Speech Recognizer activity + val voiceIntent: Intent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH).apply { + putExtra( + RecognizerIntent.EXTRA_LANGUAGE_MODEL, + RecognizerIntent.LANGUAGE_MODEL_FREE_FORM + ) + + putExtra( + RecognizerIntent.EXTRA_PROMPT, + stringResource(R.string.voice_text_entry_label) + ) + } + // Invoke the process from a chip + Chip( + onClick = { + voiceLauncher.launch(voiceIntent) + }, + label = stringResource(R.string.voice_input_label), + secondaryLabel = textForVoiceInput + ) + // [START_EXCLUDE android_wear_voice_input] + } + } + // [END_EXCLUDE android_wear_voice_input] + // [END android_wear_voice_input] +} diff --git a/wear/src/main/res/drawable/ic_launcher_background.xml b/wear/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 00000000..ca3826a4 --- /dev/null +++ b/wear/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wear/src/main/res/drawable/ic_launcher_foreground.xml b/wear/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 00000000..da1dcd94 --- /dev/null +++ b/wear/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/wear/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/wear/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 00000000..bbd3e021 --- /dev/null +++ b/wear/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/wear/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/wear/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 00000000..bbd3e021 --- /dev/null +++ b/wear/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/wear/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/wear/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..a4383dac1d0ba729b308b25a2963f657e9af5846 GIT binary patch literal 4292 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 AZ2$lO literal 0 HcmV?d00001 diff --git a/wear/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/wear/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..59beb611809efca5e1b95822b143c4a78cfa82a4 GIT binary patch literal 8874 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 + Wear Snippets + Voice Input + Voice Text Entry + \ No newline at end of file