The voice prompt sits on a darker backdrop and suggests what to say until you start talking

This commit is contained in:
Seb3thehacker committed 2026-11-06 12:04:28 -08:00
1 parent 542dd6751f
commit 5d0a924c6c
19 files changed
+96 -5

No files matched your search

@@ -39,6 +39,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.res.vectorResource
import app.seb3thehacker.gearslip.R
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
@@ -69,7 +70,8 @@ fun AssistantOverlay(modifier: Modifier = Modifier) {
modifier
.fillMaxWidth()
.drawBehind {
drawRect(Brush.verticalGradient(0f to Color.Transparent, 0.45f to Color.Black.copy(alpha = 0.6f), 1f to Color.Black.copy(alpha = 0.85f)))
// Dark enough by the text that nothing on the screen behind reads through it.
drawRect(Brush.verticalGradient(0f to Color.Transparent, 0.3f to Color.Black.copy(alpha = 0.8f), 1f to Color.Black.copy(alpha = 0.92f)))
// A wide, flat oval of light rising from the bottom edge.
scale(1f, 0.22f, Offset(size.width / 2, size.height)) {
drawCircle(
@@ -86,8 +88,12 @@ fun AssistantOverlay(modifier: Modifier = Modifier) {
Row(verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(16.dp)) {
PulsingMic(listening)
Column(Modifier.weight(1f), horizontalAlignment = Alignment.CenterHorizontally) {
val listeningText = stringResource(R.string.assist_listening)
val momentText = stringResource(R.string.assist_one_moment)
val waiting = state.heard.isBlank() &&
(state.phase == CarAssistant.Phase.LISTENING || state.phase == CarAssistant.Phase.THINKING)
val (small, big) = when (state.phase) {
CarAssistant.Phase.LISTENING -> "" to state.heard.ifBlank { if (state.ready) "Listening…" else "One moment…" }
CarAssistant.Phase.LISTENING -> "" to state.heard.ifBlank { if (state.ready) listeningText else momentText }
CarAssistant.Phase.THINKING -> "" to state.heard.ifBlank { "…" }
else -> state.heard to state.reply
}
@@ -96,22 +102,33 @@ fun AssistantOverlay(modifier: Modifier = Modifier) {
}
Text(
big,
color = if (big == "Listening…" || big == "One moment…" || big == "…") Color.White.copy(alpha = 0.7f) else Color.White,
color = if (waiting) Color.White.copy(alpha = 0.7f) else Color.White,
style = MaterialTheme.typography.headlineSmall,
fontWeight = FontWeight.SemiBold,
textAlign = TextAlign.Center,
maxLines = 2,
overflow = TextOverflow.Ellipsis,
)
// What to say, until the driver starts saying it.
if (state.phase == CarAssistant.Phase.LISTENING && state.ready && state.heard.isBlank()) {
Text(
stringResource(R.string.assist_examples),
color = Color.White.copy(alpha = 0.6f),
style = MaterialTheme.typography.bodyMedium,
textAlign = TextAlign.Center,
maxLines = 2,
modifier = Modifier.padding(top = 4.dp),
)
}
}
if (state.missingPermission) {
GsButton(tone = GsTone.Tonal, onClick = {
context.startActivity(
Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.fromParts("package", context.packageName, null)),
)
}) { Text("Grant") }
}) { Text(stringResource(R.string.assist_grant)) }
}
GsIconButton(Icons.Filled.Close, "Dismiss", CarAssistant::cancel)
GsIconButton(Icons.Filled.Close, stringResource(R.string.msg_dismiss), CarAssistant::cancel)
}
}
}
@@ -940,4 +940,8 @@
<string name="update_installed_title">حُدّث Gearslip إلى %1$s</string>
<string name="update_silent">تثبيت التحديثات تلقائيًا</string>
<string name="update_silent_sub">الإصدارات النهائية فقط، عبر Wi-Fi، عندما لا تكون أي سيارة متصلة</string>
<string name="assist_listening">جارٍ الاستماع…</string>
<string name="assist_one_moment">لحظة…</string>
<string name="assist_examples">جرّب “navigate home” أو “play” ثم اسم فنان. قل “help” للمزيد.</string>
<string name="assist_grant">منح الإذن</string>
</resources>
@@ -920,4 +920,8 @@
<string name="update_installed_title">Gearslip aktualizován na %1$s</string>
<string name="update_silent">Instalovat aktualizace samo</string>
<string name="update_silent_sub">Jen hotová vydání, přes Wi-Fi, když není připojené žádné auto</string>
<string name="assist_listening">Poslouchám…</string>
<string name="assist_one_moment">Okamžik…</string>
<string name="assist_examples">Zkuste „navigate home“ nebo „play“ a interpreta. Pro víc řekněte „help“.</string>
<string name="assist_grant">Povolit</string>
</resources>
@@ -782,4 +782,8 @@
<string name="update_installed_title">Gearslip auf %1$s aktualisiert</string>
<string name="update_silent">Updates selbst installieren</string>
<string name="update_silent_sub">Nur fertige Versionen, über WLAN, wenn kein Auto verbunden ist</string>
<string name="assist_listening">Ich höre zu…</string>
<string name="assist_one_moment">Einen Moment…</string>
<string name="assist_examples">Probier „navigate home“ oder „play“ und einen Künstler. Sag „help“ für mehr.</string>
<string name="assist_grant">Erlauben</string>
</resources>
@@ -784,4 +784,8 @@
<string name="update_installed_title">Gearslip actualizado a %1$s</string>
<string name="update_silent">Instalar actualizaciones solo</string>
<string name="update_silent_sub">Solo versiones finales, por Wi-Fi, cuando no hay ningún coche conectado</string>
<string name="assist_listening">Escuchando…</string>
<string name="assist_one_moment">Un momento…</string>
<string name="assist_examples">Prueba “navigate home” o “play” y un artista. Di “help” para ver más.</string>
<string name="assist_grant">Permitir</string>
</resources>
@@ -910,4 +910,8 @@
<string name="update_installed_title">Gearslip mis à jour en %1$s</string>
<string name="update_silent">Installer les mises à jour tout seul</string>
<string name="update_silent_sub">Versions finales uniquement, en Wi-Fi, quand aucune voiture n\'est connectée</string>
<string name="assist_listening">J\'écoute…</string>
<string name="assist_one_moment">Un instant…</string>
<string name="assist_examples">Essayez « navigate home » ou « play » suivi d\'un artiste. Dites « help » pour en savoir plus.</string>
<string name="assist_grant">Autoriser</string>
</resources>
@@ -910,4 +910,8 @@
<string name="update_installed_title">Gearslip aggiornato a %1$s</string>
<string name="update_silent">Installa gli aggiornamenti da solo</string>
<string name="update_silent_sub">Solo versioni definitive, via Wi-Fi, quando nessuna auto è collegata</string>
<string name="assist_listening">Ti ascolto…</string>
<string name="assist_one_moment">Un momento…</string>
<string name="assist_examples">Prova “navigate home” o “play” e un artista. Di’ “help” per altro.</string>
<string name="assist_grant">Consenti</string>
</resources>
@@ -890,4 +890,8 @@
<string name="update_installed_title">Gearslip を %1$s に更新しました</string>
<string name="update_silent">アップデートを自動でインストール</string>
<string name="update_silent_sub">正式版のみ、Wi-Fi 接続時、車が接続されていないときに</string>
<string name="assist_listening">聞いています…</string>
<string name="assist_one_moment">少々お待ちください…</string>
<string name="assist_examples">「navigate home」や「play」+アーティスト名を試してください。「help」で一覧を表示します。</string>
<string name="assist_grant">許可</string>
</resources>
@@ -890,4 +890,8 @@
<string name="update_installed_title">Gearslip이 %1$s(으)로 업데이트됨</string>
<string name="update_silent">업데이트 자동 설치</string>
<string name="update_silent_sub">정식 버전만, Wi-Fi에서, 차량이 연결되지 않았을 때</string>
<string name="assist_listening">듣는 중…</string>
<string name="assist_one_moment">잠시만요…</string>
<string name="assist_examples">“navigate home” 또는 “play”와 아티스트 이름을 말해 보세요. 더 보려면 “help”라고 말하세요.</string>
<string name="assist_grant">허용</string>
</resources>
@@ -900,4 +900,8 @@
<string name="update_installed_title">Gearslip bijgewerkt naar %1$s</string>
<string name="update_silent">Updates zelf installeren</string>
<string name="update_silent_sub">Alleen definitieve versies, via wifi, als er geen auto verbonden is</string>
<string name="assist_listening">Ik luister…</string>
<string name="assist_one_moment">Even geduld…</string>
<string name="assist_examples">Probeer “navigate home” of “play” en een artiest. Zeg “help” voor meer.</string>
<string name="assist_grant">Toestaan</string>
</resources>
@@ -920,4 +920,8 @@
<string name="update_installed_title">Gearslip zaktualizowany do %1$s</string>
<string name="update_silent">Instaluj aktualizacje samodzielnie</string>
<string name="update_silent_sub">Tylko wydania stabilne, przez Wi-Fi, gdy żaden samochód nie jest połączony</string>
<string name="assist_listening">Słucham…</string>
<string name="assist_one_moment">Chwileczkę…</string>
<string name="assist_examples">Spróbuj „navigate home” albo „play” i wykonawcę. Powiedz „help”, aby zobaczyć więcej.</string>
<string name="assist_grant">Zezwól</string>
</resources>
@@ -910,4 +910,8 @@
<string name="update_installed_title">Gearslip atualizado para %1$s</string>
<string name="update_silent">Instalar atualizações sozinho</string>
<string name="update_silent_sub">Só versões finais, pelo Wi-Fi, quando nenhum carro está conectado</string>
<string name="assist_listening">Ouvindo…</string>
<string name="assist_one_moment">Um momento…</string>
<string name="assist_examples">Tente “navigate home” ou “play” e um artista. Diga “help” para ver mais.</string>
<string name="assist_grant">Permitir</string>
</resources>
@@ -792,4 +792,8 @@
<string name="places_finding">Te caut…</string>
<string name="places_not_found">Gearslip nu a găsit unde ești. Verifică dacă locația e pornită.</string>
<string name="places_clear">Șterge</string>
<string name="assist_listening">Ascult…</string>
<string name="assist_one_moment">Un moment…</string>
<string name="assist_examples">Încearcă „navigate home” sau „play” și un artist. Spune „help” pentru mai multe.</string>
<string name="assist_grant">Permite</string>
</resources>
@@ -920,4 +920,8 @@
<string name="update_installed_title">Gearslip обновлён до %1$s</string>
<string name="update_silent">Устанавливать обновления самостоятельно</string>
<string name="update_silent_sub">Только готовые версии, по Wi-Fi, когда машина не подключена</string>
<string name="assist_listening">Слушаю…</string>
<string name="assist_one_moment">Секунду…</string>
<string name="assist_examples">Попробуйте «navigate home» или «play» и исполнителя. Скажите «help», чтобы узнать больше.</string>
<string name="assist_grant">Разрешить</string>
</resources>
@@ -900,4 +900,8 @@
<string name="update_installed_title">Gearslip uppdaterad till %1$s</string>
<string name="update_silent">Installera uppdateringar själv</string>
<string name="update_silent_sub">Bara färdiga versioner, via wifi, när ingen bil är ansluten</string>
<string name="assist_listening">Lyssnar…</string>
<string name="assist_one_moment">Ett ögonblick…</string>
<string name="assist_examples">Prova ”navigate home” eller ”play” och en artist. Säg ”help” för mer.</string>
<string name="assist_grant">Tillåt</string>
</resources>
@@ -900,4 +900,8 @@
<string name="update_installed_title">Gearslip %1$s sürümüne güncellendi</string>
<string name="update_silent">Güncellemeleri kendisi yüklesin</string>
<string name="update_silent_sub">Yalnızca tamamlanmış sürümler, Wi-Fi üzerinden, araba bağlı değilken</string>
<string name="assist_listening">Dinliyorum…</string>
<string name="assist_one_moment">Bir saniye…</string>
<string name="assist_examples">“navigate home” ya da “play” ve bir sanatçı adı dene. Daha fazlası için “help” de.</string>
<string name="assist_grant">İzin ver</string>
</resources>
@@ -920,4 +920,8 @@
<string name="update_installed_title">Gearslip оновлено до %1$s</string>
<string name="update_silent">Встановлювати оновлення самостійно</string>
<string name="update_silent_sub">Лише готові версії, через Wi-Fi, коли авто не підключено</string>
<string name="assist_listening">Слухаю…</string>
<string name="assist_one_moment">Хвилинку…</string>
<string name="assist_examples">Спробуйте «navigate home» або «play» і виконавця. Скажіть «help», щоб дізнатися більше.</string>
<string name="assist_grant">Дозволити</string>
</resources>
@@ -890,4 +890,8 @@
<string name="update_installed_title">Gearslip 已更新到 %1$s</string>
<string name="update_silent">自动安装更新</string>
<string name="update_silent_sub">仅正式版本,通过 Wi-Fi,在未连接汽车时安装</string>
<string name="assist_listening">正在聆听…</string>
<string name="assist_one_moment">请稍候…</string>
<string name="assist_examples">试试说“navigate home”,或“play”加歌手名。说“help”查看更多。</string>
<string name="assist_grant">授权</string>
</resources>
+6
View File
@@ -603,6 +603,12 @@
</plurals>
<string name="msg_reply_to">Reply to %1$s</string>
<string name="msg_listening">Listening</string>
<!-- The voice assistant, over the bottom of the car screen -->
<string name="assist_listening">Listening…</string>
<string name="assist_one_moment">One moment…</string>
<!-- The quoted phrases are commands the assistant understands only in English: keep them in English. -->
<string name="assist_examples">Try “navigate home” or “play” and an artist. Say “help” for more.</string>
<string name="assist_grant">Grant</string>
<string name="msg_sending_to">Sending to %1$s</string>
<string name="msg_sent_to">Sent to %1$s</string>
<string name="msg_reply_failed">Couldn\'t reply</string>