Skip to content

Commit 45384ee

Browse files
committed
fixed bugs in German commands
1 parent 6642be3 commit 45384ee

8 files changed

Lines changed: 116 additions & 46 deletions

File tree

app/src/main/java/com/nlinterface/activities/GroceryListActivity.kt

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -302,13 +302,15 @@ class GroceryListActivity : AppCompatActivity(), GroceryListCallback {
302302
* TODO: streamline processing and command structure
303303
*/
304304
private fun executeCommand(command: String) {
305+
306+
var exists = false
305307

306-
if (command.contains("go to")) {
308+
if (command.contains(resources.getString(R.string.go_to))) {
307309
executeNavigationCommand(command)
308310

309311
} else if (
310-
command.contains(resources.getString(R.string.add_an_item)) ||
311-
command.contains(resources.getString(R.string.remove_an_item)) ||
312+
command.contains(resources.getString(R.string.add_indicator)) ||
313+
command.contains(resources.getString(R.string.remove_indicator)) ||
312314
command == resources.getString(R.string.check_if_an_item_is_on_the_list)
313315
) {
314316

@@ -318,6 +320,10 @@ class GroceryListActivity : AppCompatActivity(), GroceryListCallback {
318320
}
319321

320322
} else if (command == resources.getString(R.string.list_all_grocery_items)) {
323+
324+
if (groceryItemList.isEmpty()) {
325+
viewModel.say(resources.getString(R.string.there_are_no_items_on_the_list))
326+
}
321327

322328
for ((itemName) in groceryItemList) {
323329
viewModel.say(itemName, TextToSpeech.QUEUE_ADD)
@@ -328,17 +334,31 @@ class GroceryListActivity : AppCompatActivity(), GroceryListCallback {
328334
for ((itemName, _, inCart) in groceryItemList) {
329335
if (inCart) {
330336
viewModel.say(itemName, TextToSpeech.QUEUE_ADD)
337+
exists = true
331338
}
332339
}
333340

341+
if (groceryItemList.isEmpty()) {
342+
viewModel.say(resources.getString(R.string.there_are_no_items_on_the_list))
343+
} else if (!exists) {
344+
viewModel.say(resources.getString(R.string.there_are_no_items_in_the_cart))
345+
}
346+
334347
} else if (command == resources.getString(R.string.list_all_items_not_in_cart)) {
335348

336349
for ((itemName, _, inCart) in groceryItemList) {
337350
if (!inCart) {
338351
viewModel.say(itemName, TextToSpeech.QUEUE_ADD)
352+
exists = true
339353
}
340354
}
341355

356+
if (groceryItemList.isEmpty()) {
357+
viewModel.say(resources.getString(R.string.there_are_no_items_on_the_list))
358+
} else if (!exists) {
359+
viewModel.say(resources.getString(R.string.all_items_are_in_the_cart))
360+
}
361+
342362
} else if ((command == resources.getString(R.string.tell_me_my_options))) {
343363

344364
viewModel.say(

app/src/main/java/com/nlinterface/activities/MainActivity.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,10 @@ class MainActivity : AppCompatActivity() {
147147
* TODO: streamline processing and command structure
148148
*/
149149
private fun executeCommand(command: String) {
150+
151+
Log.println(Log.DEBUG, "STT Results", command)
150152

151-
if (command.contains("go to")) {
153+
if (command.contains(resources.getString(R.string.go_to))) {
152154
executeNavigationCommand(command)
153155
} else if ((command == resources.getString(R.string.tell_me_my_options))) {
154156

app/src/main/java/com/nlinterface/activities/PlaceDetailsActivity.kt

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ class PlaceDetailsActivity : AppCompatActivity(), PlaceDetailsItemCallback {
169169
* Called once the STT system returns a command. It is then processed and, if valid,
170170
* finally executed by navigating to the next activity
171171
*
172-
* @param command: ArrayList<String>? containing the deconstructed command
172+
* @param cmd: ArrayList<String>? containing the deconstructed command
173173
*
174174
* TODO: streamline processing and command structure
175175
*/
@@ -185,8 +185,8 @@ class PlaceDetailsActivity : AppCompatActivity(), PlaceDetailsItemCallback {
185185
executeListCommand(command)
186186

187187
} else if (
188-
command.contains(resources.getString(R.string.remove_a_place)) ||
189-
command.contains(resources.getString(R.string.add_a_place)) ||
188+
command.contains(resources.getString(R.string.remove_indicator)) ||
189+
command.contains(resources.getString(R.string.add_indicator)) ||
190190
command == resources.getString(R.string.tell_me_the_opening_hours_of_a_place)
191191
) {
192192

@@ -239,6 +239,8 @@ class PlaceDetailsActivity : AppCompatActivity(), PlaceDetailsItemCallback {
239239
*/
240240
private fun executeItemCommand(command: String, response: String) {
241241

242+
Log.println(Log.DEBUG, "", command)
243+
242244
if (response != resources.getString(R.string.cancel)) {
243245

244246
when (command) {
@@ -300,17 +302,13 @@ class PlaceDetailsActivity : AppCompatActivity(), PlaceDetailsItemCallback {
300302
* @param storeName: String, the name of the item to be removed from favorites
301303
*/
302304
private fun removeFromFavorites(storeName: String) {
303-
304-
Log.println(Log.DEBUG, "rmFav", "1")
305+
305306
val placeDetailsItem = findPlaceByName(storeName)
306307

307308
if (placeDetailsItem != null) {
308-
Log.println(Log.DEBUG, "rmFav", "not null")
309309
if (!placeDetailsItem.favorite) {
310-
Log.println(Log.DEBUG, "rmFav", "not fav")
311-
viewModel.say(resources.getString(R.string.STORENAME_is_not_a_favorite))
310+
viewModel.say(resources.getString(R.string.STORENAME_is_not_a_favorite, storeName))
312311
} else {
313-
Log.println(Log.DEBUG, "rmFav", "fav")
314312
viewModel.changeFavorite(placeDetailsItem)
315313
adapter.notifyItemChanged(placeDetailsItemList.indexOf(placeDetailsItem))
316314
viewModel.say(
@@ -333,28 +331,50 @@ class PlaceDetailsActivity : AppCompatActivity(), PlaceDetailsItemCallback {
333331
private fun executeListCommand(command: String) {
334332

335333
Log.println(Log.DEBUG, "exec", command)
334+
var exists = false
336335

337336
when (command) {
338337

339338
resources.getString(R.string.list_all_saved_places) -> {
340-
for (place in placeDetailsItemList)
339+
for (place in placeDetailsItemList) {
341340
viewModel.say(place.storeName, TextToSpeech.QUEUE_ADD)
341+
}
342+
343+
if (placeDetailsItemList.isEmpty()) {
344+
viewModel.say(resources.getString(R.string.there_are_no_saved_places))
345+
}
342346
}
343347

344348
resources.getString(R.string.list_my_favorite_places) -> {
345349
for ((_, storeName, _, favorite) in placeDetailsItemList) {
346350
if (favorite) {
347351
viewModel.say(storeName, TextToSpeech.QUEUE_ADD)
352+
exists = true
348353
}
349354
}
355+
356+
if (placeDetailsItemList.isEmpty()) {
357+
viewModel.say(resources.getString(R.string.there_are_no_saved_places))
358+
} else if (!exists) {
359+
viewModel.say(resources.getString(R.string.there_are_no_favorites))
360+
}
361+
350362
}
351363

352364
resources.getString(R.string.list_all_open_places) -> {
353365
for ((_, storeName, openingHours, _) in placeDetailsItemList) {
354366
if (isOpen(openingHours)) {
355367
viewModel.say(storeName, TextToSpeech.QUEUE_ADD)
368+
exists = true
356369
}
357370
}
371+
372+
if (placeDetailsItemList.isEmpty()) {
373+
viewModel.say(resources.getString(R.string.there_are_no_saved_places))
374+
} else if (!exists) {
375+
viewModel.say(resources.getString(R.string.there_are_no_open_places))
376+
}
377+
358378
}
359379

360380
else -> viewModel.say(resources.getString(R.string.invalid_command))

app/src/main/java/com/nlinterface/activities/SettingsActivity.kt

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ import kotlinx.coroutines.launch
3737
* Possible Voice Commands:
3838
* - 'Read Screen Settings'
3939
* - 'Read Theme Settings'
40-
* - 'List Current Settings'
4140
* - 'Set Screen Settings' --> Always On or Dim? --> X
4241
* - 'Set Theme Settings' --> Default, Light or Dark? --> X
4342
*
@@ -265,7 +264,7 @@ class SettingsActivity : AppCompatActivity() {
265264
private fun handleSTTCommand(command: String) {
266265

267266
// any attempted navigation commands are handled are passed on
268-
if (command.contains("go to")) {
267+
if (command.contains(resources.getString(R.string.go_to))) {
269268
executeNavigationCommand(command)
270269

271270
} else if (command == resources.getString(R.string.change_theme)) {
@@ -274,27 +273,31 @@ class SettingsActivity : AppCompatActivity() {
274273
scope.launch {
275274
requestResponse(
276275
resources.getString(R.string.light_theme) + " " +
277-
resources.getString(R.string.dark_theme) +
278-
" or " + resources.getString(R.string.default_theme))
276+
resources.getString(R.string.dark_theme) + " " +
277+
resources.getString(R.string.or) + " " +
278+
resources.getString(R.string.default_theme)
279+
)
279280
}
280281

281282
} else if (command == resources.getString(R.string.change_screen_settings)) {
282283

283284
val scope = CoroutineScope(Job() + Dispatchers.Main)
284285
scope.launch {
285286
requestResponse(
286-
resources.getString(R.string.keep_screen_always_on) +
287-
" or " + resources.getString(R.string.dim_screen_after_a_while))
287+
resources.getString(R.string.keep_screen_always_on) + " " +
288+
resources.getString(R.string.or) + " " +
289+
resources.getString(R.string.dim_screen_after_a_while)
290+
)
288291
}
289292

290293
} else if (command == resources.getString(R.string.tell_me_my_options)) {
291294

292295
viewModel.say(
293296
"${resources.getString(R.string.your_options_are)} " +
294-
"${resources.getString(R.string.change_theme)}," +
295-
"${resources.getString(R.string.change_screen_settings)}," +
296-
"${resources.getString(R.string.navigate_to_grocery_list)}," +
297-
"${resources.getString(R.string.navigate_to_place_details)} and" +
297+
"${resources.getString(R.string.change_theme)}, " +
298+
"${resources.getString(R.string.change_screen_settings)}, " +
299+
"${resources.getString(R.string.navigate_to_grocery_list)}, " +
300+
"${resources.getString(R.string.navigate_to_place_details)} ${resources.getString(R.string.and)} " +
298301
"${resources.getString(R.string.navigate_to_settings)}."
299302
)
300303

@@ -339,21 +342,27 @@ class SettingsActivity : AppCompatActivity() {
339342
resources.getString(R.string.default_theme) -> {
340343
viewModel.setTheme(ThemeChoice.SYSTEM_DEFAULT)
341344
viewModel.say(
342-
resources.getString(R.string.new_theme_setting, " default")
345+
resources.getString(
346+
R.string.new_theme_setting, resources.getString(R.string.default_theme)
347+
)
343348
)
344349
}
345350

346351
resources.getString(R.string.light_theme) -> {
347352
viewModel.setTheme(ThemeChoice.LIGHT)
348353
viewModel.say(
349-
resources.getString(R.string.new_theme_setting, " light theme")
354+
resources.getString(
355+
R.string.new_theme_setting, resources.getString(R.string.light_theme)
356+
)
350357
)
351358
}
352359

353360
resources.getString(R.string.dark_theme) -> {
354361
viewModel.setTheme(ThemeChoice.DARK)
355362
viewModel.say(
356-
resources.getString(R.string.new_theme_setting, " dark theme")
363+
resources.getString(
364+
R.string.new_theme_setting, resources.getString(R.string.dark_theme)
365+
)
357366
)
358367
}
359368

@@ -376,15 +385,17 @@ class SettingsActivity : AppCompatActivity() {
376385
viewModel.setScreenSettings(KeepScreenOn.YES)
377386
viewModel.say(
378387
resources.getString(R.string.new_screen_setting,
379-
" keep screen always on")
388+
resources.getString(R.string.keep_screen_always_on)
389+
)
380390
)
381391
}
382392

383393
resources.getString(R.string.dim_screen_after_a_while) -> {
384394
viewModel.setScreenSettings(KeepScreenOn.NO)
385395
viewModel.say(
386396
resources.getString(R.string.new_screen_setting,
387-
" dim screen after a while")
397+
resources.getString(R.string.dim_screen_after_a_while)
398+
)
388399
)
389400
}
390401

app/src/main/java/com/nlinterface/utility/SpeechToTextUtility.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,18 @@ class SpeechToTextUtility {
4343
* Initializes the SpeechRecognizer and defines the callbacks.
4444
*
4545
* @param context: Context, the activity context
46-
* @param onResults: lambda, handles the processing of speech recognition results
47-
* @param onEndOfSpeech: lambda, handles the end of speech
48-
* @param onError: lambda, error handling
4946
*/
5047
fun createSpeechRecognizer(context: Context) {
5148
speechRecognizer = SpeechRecognizer.createSpeechRecognizer(context)
5249
}
5350

51+
/**
52+
* Defines the callbacks for the SpeechRecognitionListener.
53+
*
54+
* @param onResults: lambda, handles the processing of speech recognition results
55+
* @param onEndOfSpeech: lambda, handles the end of speech
56+
* @param onError: lambda, error handling
57+
*/
5458
fun setSpeechRecognitionListener(
5559
onResults: (results: Bundle) -> Unit,
5660
onEndOfSpeech: () -> Unit,

app/src/main/java/com/nlinterface/viewmodels/MainViewModel.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -140,9 +140,7 @@ class MainViewModel(
140140
* TODO: streamline processing and command structure
141141
*/
142142
private fun handleSpeechResult(s: String, responseType: STTInputType) {
143-
_command.value = s
144-
145-
Log.println(Log.DEBUG, "command", s)
143+
_command.value = s.lowercase()
146144
}
147145

148146
/**

app/src/main/res/values-de/strings.xml

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515
<string name="navigate_to_main_menu">gehe zu hauptmenü</string>
1616
<string name="tell_me_my_options">nenne mir meine optionen</string>
1717
<string name="cancel">abbrechen</string>
18+
<string name="add_indicator">füge</string>
19+
<string name="remove_indicator">entferne</string>
20+
1821

1922
<!-- VOICE COMMANDS: GROCERY LIST -->
2023
<string name="add_an_item">füge einen artikel hinzu</string>
@@ -30,20 +33,17 @@
3033
<string name="remove_a_place">entferne einen ort</string>
3134
<string name="tell_me_the_opening_hours_of_a_place">nenne mir die öffnungszeiten eines ortes</string>
3235
<string name="add_a_place">füge einen ort hinzu</string>
33-
<string name="list_all_saved_places">nenne alle gespeicherten orte</string>
34-
<string name="list_my_favorite_places">nenne meine favoriten</string>
35-
<string name="list_all_open_places">nenne alle geöffneten orte</string>
36+
<string name="list_all_saved_places">liste alle gespeicherten orte auf</string>
37+
<string name="list_my_favorite_places">liste meine favoriten auf</string>
38+
<string name="list_all_open_places">liste alle geöffneten orte auf</string>
3639
<string name="add_a_place_to_favorites">füge einen ort zu meinen favoriten hinzu</string>
3740
<string name="remove_a_place_from_favorites">entferne einen ort von meinen favoriten</string>
3841

3942
<!-- VOICE COMMANDS: SETTINGS -->
4043
<string name="change_theme">ändere den farbmodus</string>
4144
<string name="light_theme">heller farbmodus</string>
42-
<string name="dark_theme">dunkeler farbmodus</string>
45+
<string name="dark_theme">dunkler farbmodus</string>
4346
<string name="default_theme">standard farbmodus</string>
44-
<string name="list_all_settings">liste alle einstellungen auf</string>
45-
<string name="read_screen_setting">nenne die bildschirmeinstellung</string>
46-
<string name="read_theme_setting">nenne die moduseinstellung</string>
4747
<string name="change_screen_settings">ändere die bildschirmeinstellungen</string>
4848
<string name="keep_screen_always_on">bildschirm immer an lassen</string>
4949
<string name="dim_screen_after_a_while">bildschirm nach einiger zeit verdunkeln</string>
@@ -60,6 +60,8 @@
6060
<string name="your_options_are">deine optionen sind:</string>
6161
<string name="audio_permission_granted">Die App hat nun Zugriff auf das Mikrofon.</string>
6262
<string name="audio_permission_denied">Bitte erlauben Sie den Zugriff auf das Mikrofon, um Sprachbefehle verwenden zu können.</string>
63+
<string name="or">oder</string>
64+
<string name="and">und</string>
6365

6466
<!-- NARRATION: GROCERY LIST -->
6567
<string name="grocery_list">Einkaufsliste</string>
@@ -74,6 +76,9 @@
7476
<string name="placed_ITEMNAME_into_cart">%1$s wurde in den Einkaufswagen gelegt.</string>
7577
<string name="removed_ITEMNAME_from_cart">%1$s wurde aus dem Einkaufswagen genommen.</string>
7678
<string name="deleted_ITEMNAME_from_saved_places">%1$s wurde von der Liste gelöscht.</string>
79+
<string name="there_are_no_items_on_the_list">es sind keine artikel auf der einkaufsliste</string>
80+
<string name="there_are_no_items_in_the_cart">es sind keine artikel im einkaufswagen</string>
81+
<string name="all_items_are_in_the_cart">alle artikel sind im einkaufswagen</string>
7782

7883
<!-- NARRATION: PLACE DETAILS -->
7984
<string name="place_details">Ort Details</string>
@@ -83,6 +88,9 @@
8388
<string name="STORENAME_added_to_saved_places">%1$s wurde den gespeicherten Orten hinzugefügt.</string>
8489
<string name="added_STORENAME_to_favorites">%1$s wurde als Favorit markiert.</string>
8590
<string name="deleted_STORENAME_from_favorites">%1$s wurde von den Favoriten gelöscht.</string>
91+
<string name="there_are_no_favorites">es gibt keine favoriten</string>
92+
<string name="there_are_no_open_places">es gibt keine geöffneten orte</string>
93+
<string name="there_are_no_saved_places">es gibt keine gespeicherten orte</string>
8694

8795
<!-- NARRATION: SETTINGS -->
8896
<string name="settings">Einstellungen</string>

0 commit comments

Comments
 (0)