From 9165e17eea9f28d945bfb84eb9d85ae4a329cf31 Mon Sep 17 00:00:00 2001 From: Yacine Rezgui Date: Fri, 9 Jan 2026 16:10:55 +0100 Subject: [PATCH 1/7] Update static assets URLs --- .../geminivideometadatacreation/util/VideoList.kt | 10 +++++----- .../ai/samples/geminivideosummary/util/VideoList.kt | 10 +++++----- .../java/com/android/ai/uicomponent/VideoPlayer.kt | 6 +++--- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/samples/gemini-video-metadata-creation/src/main/java/com/android/ai/samples/geminivideometadatacreation/util/VideoList.kt b/samples/gemini-video-metadata-creation/src/main/java/com/android/ai/samples/geminivideometadatacreation/util/VideoList.kt index e4775935..8cc37774 100644 --- a/samples/gemini-video-metadata-creation/src/main/java/com/android/ai/samples/geminivideometadatacreation/util/VideoList.kt +++ b/samples/gemini-video-metadata-creation/src/main/java/com/android/ai/samples/geminivideometadatacreation/util/VideoList.kt @@ -30,22 +30,22 @@ data class VideoItem( val sampleVideoList = listOf( VideoItem( R.string.video_title_android_spotlight_shorts, - "https://storage.googleapis.com/exoplayer-test-media-0/shorts_android_developers/shorts_10.mp4".toUri(), + "https://storage.googleapis.com/androiddevelopers/samples_assets/exoplayer-test-media-0/shorts_android_developers/shorts_10.mp4".toUri(), ), VideoItem( R.string.video_title_big_buck_bunny, - "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4".toUri(), + "https://storage.googleapis.com/androiddevelopers/samples_assets/gtv-videos-bucket/sample/BigBuckBunny.mp4".toUri(), ), VideoItem( R.string.video_title_tears_of_steel, - "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/TearsOfSteel.mp4".toUri(), + "https://storage.googleapis.com/androiddevelopers/samples_assets/gtv-videos-bucket/sample/TearsOfSteel.mp4".toUri(), ), VideoItem( R.string.video_title_for_bigger_blazes, - "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4".toUri(), + "https://storage.googleapis.com/androiddevelopers/samples_assets/gtv-videos-bucket/sample/ForBiggerBlazes.mp4".toUri(), ), VideoItem( R.string.video_title_for_bigger_escape, - "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerEscapes.mp4".toUri(), + "https://storage.googleapis.com/androiddevelopers/samples_assets/gtv-videos-bucket/sample/ForBiggerEscapes.mp4".toUri(), ), ) diff --git a/samples/gemini-video-summarization/src/main/java/com/android/ai/samples/geminivideosummary/util/VideoList.kt b/samples/gemini-video-summarization/src/main/java/com/android/ai/samples/geminivideosummary/util/VideoList.kt index 6cba302b..7fc2d42a 100644 --- a/samples/gemini-video-summarization/src/main/java/com/android/ai/samples/geminivideosummary/util/VideoList.kt +++ b/samples/gemini-video-summarization/src/main/java/com/android/ai/samples/geminivideosummary/util/VideoList.kt @@ -30,11 +30,11 @@ data class VideoItem( val sampleVideoList = listOf( VideoItem( R.string.video_title_big_buck_bunny, - "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4".toUri(), + "https://storage.googleapis.com/androiddevelopers/samples_assets/gtv-videos-bucket/sample/BigBuckBunny.mp4".toUri(), ), VideoItem( R.string.video_title_android_spotlight_shorts, - "https://storage.googleapis.com/exoplayer-test-media-0/shorts_android_developers/shorts_10.mp4".toUri(), + "https://storage.googleapis.com/androiddevelopers/samples_assets/exoplayer-test-media-0/shorts_android_developers/shorts_10.mp4".toUri(), ), VideoItem( R.string.video_title_youtube_google_tv, @@ -42,14 +42,14 @@ val sampleVideoList = listOf( ), VideoItem( R.string.video_title_tears_of_steel, - "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/TearsOfSteel.mp4".toUri(), + "https://storage.googleapis.com/androiddevelopers/samples_assets/gtv-videos-bucket/sample/TearsOfSteel.mp4".toUri(), ), VideoItem( R.string.video_title_for_bigger_blazes, - "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4".toUri(), + "https://storage.googleapis.com/androiddevelopers/samples_assets/gtv-videos-bucket/sample/ForBiggerBlazes.mp4".toUri(), ), VideoItem( R.string.video_title_for_bigger_escape, - "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerEscapes.mp4".toUri(), + "https://storage.googleapis.com/androiddevelopers/samples_assets/gtv-videos-bucket/sample/ForBiggerEscapes.mp4".toUri(), ), ) diff --git a/ui-component/src/main/java/com/android/ai/uicomponent/VideoPlayer.kt b/ui-component/src/main/java/com/android/ai/uicomponent/VideoPlayer.kt index 397da849..0ad80a9f 100644 --- a/ui-component/src/main/java/com/android/ai/uicomponent/VideoPlayer.kt +++ b/ui-component/src/main/java/com/android/ai/uicomponent/VideoPlayer.kt @@ -247,9 +247,9 @@ fun VideoPickerDropdown( // Sample data for the picker private val sampleVideosForPicker = listOf( - VideoPickerData("Big Buck Bunny", "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4".toUri()), - VideoPickerData("Tears of Steel", "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/TearsOfSteel.mp4".toUri()), - VideoPickerData("For Bigger Blazes", "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4".toUri()), + VideoPickerData("Big Buck Bunny", "https://storage.googleapis.com/androiddevelopers/samples_assets/gtv-videos-bucket/sample/BigBuckBunny.mp4".toUri()), + VideoPickerData("Tears of Steel", "https://storage.googleapis.com/androiddevelopers/samples_assets/gtv-videos-bucket/sample/TearsOfSteel.mp4".toUri()), + VideoPickerData("For Bigger Blazes", "https://storage.googleapis.com/androiddevelopers/samples_assets/gtv-videos-bucket/sample/ForBiggerBlazes.mp4".toUri()), ) @Preview From 44db46e732673d8534254845cbcb6677f6428afc Mon Sep 17 00:00:00 2001 From: Yacine Rezgui Date: Fri, 9 Jan 2026 17:05:34 +0100 Subject: [PATCH 2/7] Fix Spotless --- .../main/java/com/android/ai/uicomponent/VideoPlayer.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/ui-component/src/main/java/com/android/ai/uicomponent/VideoPlayer.kt b/ui-component/src/main/java/com/android/ai/uicomponent/VideoPlayer.kt index 0ad80a9f..b41b002a 100644 --- a/ui-component/src/main/java/com/android/ai/uicomponent/VideoPlayer.kt +++ b/ui-component/src/main/java/com/android/ai/uicomponent/VideoPlayer.kt @@ -245,11 +245,13 @@ fun VideoPickerDropdown( } } +const val VIDEO_BASE_URL = "https://storage.googleapis.com/androiddevelopers/samples_assets/gtv-videos-bucket/sample" + // Sample data for the picker private val sampleVideosForPicker = listOf( - VideoPickerData("Big Buck Bunny", "https://storage.googleapis.com/androiddevelopers/samples_assets/gtv-videos-bucket/sample/BigBuckBunny.mp4".toUri()), - VideoPickerData("Tears of Steel", "https://storage.googleapis.com/androiddevelopers/samples_assets/gtv-videos-bucket/sample/TearsOfSteel.mp4".toUri()), - VideoPickerData("For Bigger Blazes", "https://storage.googleapis.com/androiddevelopers/samples_assets/gtv-videos-bucket/sample/ForBiggerBlazes.mp4".toUri()), + VideoPickerData("Big Buck Bunny", "$VIDEO_BASE_URL/BigBuckBunny.mp4".toUri()), + VideoPickerData("Tears of Steel", "$VIDEO_BASE_URL/TearsOfSteel.mp4".toUri()), + VideoPickerData("For Bigger Blazes", "$VIDEO_BASE_URL/ForBiggerBlazes.mp4".toUri()), ) @Preview From 49e2fb831c932c138c33cd42aceb1b22fa875438 Mon Sep 17 00:00:00 2001 From: Yacine Rezgui Date: Fri, 9 Jan 2026 17:11:31 +0100 Subject: [PATCH 3/7] Spotless fix --- .../android/ai/samples/geminilivetodo/data/Todo.kt | 1 - .../ai/samples/geminilivetodo/data/TodoRepository.kt | 2 +- .../samples/geminilivetodo/ui/TodoScreenViewModel.kt | 5 +---- .../geminivideometadatacreation/util/VideoList.kt | 12 +++++++----- .../ai/samples/geminivideosummary/util/VideoList.kt | 12 +++++++----- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/samples/gemini-live-todo/src/main/java/com/android/ai/samples/geminilivetodo/data/Todo.kt b/samples/gemini-live-todo/src/main/java/com/android/ai/samples/geminilivetodo/data/Todo.kt index 953ec7fc..755d72d5 100644 --- a/samples/gemini-live-todo/src/main/java/com/android/ai/samples/geminilivetodo/data/Todo.kt +++ b/samples/gemini-live-todo/src/main/java/com/android/ai/samples/geminilivetodo/data/Todo.kt @@ -17,7 +17,6 @@ package com.android.ai.samples.geminilivetodo.data import kotlin.random.Random - data class Todo( val id: Int = Random.nextInt(), val task: String, diff --git a/samples/gemini-live-todo/src/main/java/com/android/ai/samples/geminilivetodo/data/TodoRepository.kt b/samples/gemini-live-todo/src/main/java/com/android/ai/samples/geminilivetodo/data/TodoRepository.kt index 8729e1b6..160e9441 100644 --- a/samples/gemini-live-todo/src/main/java/com/android/ai/samples/geminilivetodo/data/TodoRepository.kt +++ b/samples/gemini-live-todo/src/main/java/com/android/ai/samples/geminilivetodo/data/TodoRepository.kt @@ -41,7 +41,7 @@ class TodoRepository @Inject constructor() { fun getTodoList(): List = _todos.value - fun addTodo(taskDescription: String) : Int? { + fun addTodo(taskDescription: String): Int? { if (taskDescription.isNotBlank()) { val newTodo = Todo(task = taskDescription) _todos.update { currentList -> diff --git a/samples/gemini-live-todo/src/main/java/com/android/ai/samples/geminilivetodo/ui/TodoScreenViewModel.kt b/samples/gemini-live-todo/src/main/java/com/android/ai/samples/geminilivetodo/ui/TodoScreenViewModel.kt index 05dbd7ab..0fb1ddb1 100644 --- a/samples/gemini-live-todo/src/main/java/com/android/ai/samples/geminilivetodo/ui/TodoScreenViewModel.kt +++ b/samples/gemini-live-todo/src/main/java/com/android/ai/samples/geminilivetodo/ui/TodoScreenViewModel.kt @@ -52,7 +52,6 @@ import kotlinx.serialization.json.JsonObject import kotlinx.serialization.json.JsonPrimitive import kotlinx.serialization.json.int import kotlinx.serialization.json.jsonPrimitive -import kotlinx.serialization.json.long @OptIn(PublicPreviewAPI::class) @HiltViewModel @@ -198,7 +197,7 @@ class TodoScreenViewModel @Inject constructor(private val todoRepository: TodoRe val taskDescription = functionCall.args["taskDescription"]!!.jsonPrimitive.content val id = todoRepository.addTodo(taskDescription) - if (id!=null) { + if (id != null) { val response = JsonObject( mapOf( "success" to JsonPrimitive(true), @@ -215,7 +214,6 @@ class TodoScreenViewModel @Inject constructor(private val todoRepository: TodoRe ) FunctionResponsePart(functionCall.name, response, functionCall.id) } - } "removeTodo" -> { try { @@ -237,7 +235,6 @@ class TodoScreenViewModel @Inject constructor(private val todoRepository: TodoRe ) FunctionResponsePart(functionCall.name, response, functionCall.id) } - } "toggleTodoStatus" -> { val taskId = functionCall.args["todoId"]!!.jsonPrimitive.int diff --git a/samples/gemini-video-metadata-creation/src/main/java/com/android/ai/samples/geminivideometadatacreation/util/VideoList.kt b/samples/gemini-video-metadata-creation/src/main/java/com/android/ai/samples/geminivideometadatacreation/util/VideoList.kt index 8cc37774..dbba65be 100644 --- a/samples/gemini-video-metadata-creation/src/main/java/com/android/ai/samples/geminivideometadatacreation/util/VideoList.kt +++ b/samples/gemini-video-metadata-creation/src/main/java/com/android/ai/samples/geminivideometadatacreation/util/VideoList.kt @@ -27,25 +27,27 @@ data class VideoItem( val uri: Uri, ) +const val VIDEO_BASE_URL = "https://storage.googleapis.com/androiddevelopers/samples_assets" + val sampleVideoList = listOf( VideoItem( R.string.video_title_android_spotlight_shorts, - "https://storage.googleapis.com/androiddevelopers/samples_assets/exoplayer-test-media-0/shorts_android_developers/shorts_10.mp4".toUri(), + "$VIDEO_BASE_URL/exoplayer-test-media-0/shorts_android_developers/shorts_10.mp4".toUri(), ), VideoItem( R.string.video_title_big_buck_bunny, - "https://storage.googleapis.com/androiddevelopers/samples_assets/gtv-videos-bucket/sample/BigBuckBunny.mp4".toUri(), + "$VIDEO_BASE_URL/gtv-videos-bucket/sample/BigBuckBunny.mp4".toUri(), ), VideoItem( R.string.video_title_tears_of_steel, - "https://storage.googleapis.com/androiddevelopers/samples_assets/gtv-videos-bucket/sample/TearsOfSteel.mp4".toUri(), + "$VIDEO_BASE_URL/gtv-videos-bucket/sample/TearsOfSteel.mp4".toUri(), ), VideoItem( R.string.video_title_for_bigger_blazes, - "https://storage.googleapis.com/androiddevelopers/samples_assets/gtv-videos-bucket/sample/ForBiggerBlazes.mp4".toUri(), + "$VIDEO_BASE_URL/gtv-videos-bucket/sample/ForBiggerBlazes.mp4".toUri(), ), VideoItem( R.string.video_title_for_bigger_escape, - "https://storage.googleapis.com/androiddevelopers/samples_assets/gtv-videos-bucket/sample/ForBiggerEscapes.mp4".toUri(), + "$VIDEO_BASE_URL/gtv-videos-bucket/sample/ForBiggerEscapes.mp4".toUri(), ), ) diff --git a/samples/gemini-video-summarization/src/main/java/com/android/ai/samples/geminivideosummary/util/VideoList.kt b/samples/gemini-video-summarization/src/main/java/com/android/ai/samples/geminivideosummary/util/VideoList.kt index 7fc2d42a..87dee86b 100644 --- a/samples/gemini-video-summarization/src/main/java/com/android/ai/samples/geminivideosummary/util/VideoList.kt +++ b/samples/gemini-video-summarization/src/main/java/com/android/ai/samples/geminivideosummary/util/VideoList.kt @@ -27,14 +27,16 @@ data class VideoItem( val uri: Uri, ) +const val VIDEO_BASE_URL = "https://storage.googleapis.com/androiddevelopers/samples_assets" + val sampleVideoList = listOf( VideoItem( R.string.video_title_big_buck_bunny, - "https://storage.googleapis.com/androiddevelopers/samples_assets/gtv-videos-bucket/sample/BigBuckBunny.mp4".toUri(), + "$VIDEO_BASE_URL/gtv-videos-bucket/sample/BigBuckBunny.mp4".toUri(), ), VideoItem( R.string.video_title_android_spotlight_shorts, - "https://storage.googleapis.com/androiddevelopers/samples_assets/exoplayer-test-media-0/shorts_android_developers/shorts_10.mp4".toUri(), + "$VIDEO_BASE_URL/exoplayer-test-media-0/shorts_android_developers/shorts_10.mp4".toUri(), ), VideoItem( R.string.video_title_youtube_google_tv, @@ -42,14 +44,14 @@ val sampleVideoList = listOf( ), VideoItem( R.string.video_title_tears_of_steel, - "https://storage.googleapis.com/androiddevelopers/samples_assets/gtv-videos-bucket/sample/TearsOfSteel.mp4".toUri(), + "$VIDEO_BASE_URL/gtv-videos-bucket/sample/TearsOfSteel.mp4".toUri(), ), VideoItem( R.string.video_title_for_bigger_blazes, - "https://storage.googleapis.com/androiddevelopers/samples_assets/gtv-videos-bucket/sample/ForBiggerBlazes.mp4".toUri(), + "$VIDEO_BASE_URL/gtv-videos-bucket/sample/ForBiggerBlazes.mp4".toUri(), ), VideoItem( R.string.video_title_for_bigger_escape, - "https://storage.googleapis.com/androiddevelopers/samples_assets/gtv-videos-bucket/sample/ForBiggerEscapes.mp4".toUri(), + "$VIDEO_BASE_URL/gtv-videos-bucket/sample/ForBiggerEscapes.mp4".toUri(), ), ) From 93d87658e87da9087a5bcfe229d72b6d1651639a Mon Sep 17 00:00:00 2001 From: Yacine Rezgui Date: Sun, 11 Jan 2026 11:02:17 +0100 Subject: [PATCH 4/7] Revert unrelated changes to #147 --- .../main/java/com/android/ai/samples/geminilivetodo/data/Todo.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/samples/gemini-live-todo/src/main/java/com/android/ai/samples/geminilivetodo/data/Todo.kt b/samples/gemini-live-todo/src/main/java/com/android/ai/samples/geminilivetodo/data/Todo.kt index 755d72d5..953ec7fc 100644 --- a/samples/gemini-live-todo/src/main/java/com/android/ai/samples/geminilivetodo/data/Todo.kt +++ b/samples/gemini-live-todo/src/main/java/com/android/ai/samples/geminilivetodo/data/Todo.kt @@ -17,6 +17,7 @@ package com.android.ai.samples.geminilivetodo.data import kotlin.random.Random + data class Todo( val id: Int = Random.nextInt(), val task: String, From c22db905e4ac516a9eeace6297d32bba4c6caa7e Mon Sep 17 00:00:00 2001 From: Yacine Rezgui Date: Sun, 11 Jan 2026 11:03:21 +0100 Subject: [PATCH 5/7] Revert changes unrelated to #147 --- .../android/ai/samples/geminilivetodo/data/TodoRepository.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/gemini-live-todo/src/main/java/com/android/ai/samples/geminilivetodo/data/TodoRepository.kt b/samples/gemini-live-todo/src/main/java/com/android/ai/samples/geminilivetodo/data/TodoRepository.kt index 160e9441..8729e1b6 100644 --- a/samples/gemini-live-todo/src/main/java/com/android/ai/samples/geminilivetodo/data/TodoRepository.kt +++ b/samples/gemini-live-todo/src/main/java/com/android/ai/samples/geminilivetodo/data/TodoRepository.kt @@ -41,7 +41,7 @@ class TodoRepository @Inject constructor() { fun getTodoList(): List = _todos.value - fun addTodo(taskDescription: String): Int? { + fun addTodo(taskDescription: String) : Int? { if (taskDescription.isNotBlank()) { val newTodo = Todo(task = taskDescription) _todos.update { currentList -> From ca3d6368ae607c29c7aae108845bc031cf890931 Mon Sep 17 00:00:00 2001 From: Yacine Rezgui Date: Sun, 11 Jan 2026 11:04:11 +0100 Subject: [PATCH 6/7] Revert changes unrelated to #147 From 6ad47a83e4115f4c09b9bcb343e6e8e7701bfcce Mon Sep 17 00:00:00 2001 From: Yacine Rezgui Date: Sun, 11 Jan 2026 11:05:16 +0100 Subject: [PATCH 7/7] Revert changes unrelated to #147 --- .../ai/samples/geminilivetodo/ui/TodoScreenViewModel.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/samples/gemini-live-todo/src/main/java/com/android/ai/samples/geminilivetodo/ui/TodoScreenViewModel.kt b/samples/gemini-live-todo/src/main/java/com/android/ai/samples/geminilivetodo/ui/TodoScreenViewModel.kt index 0fb1ddb1..05dbd7ab 100644 --- a/samples/gemini-live-todo/src/main/java/com/android/ai/samples/geminilivetodo/ui/TodoScreenViewModel.kt +++ b/samples/gemini-live-todo/src/main/java/com/android/ai/samples/geminilivetodo/ui/TodoScreenViewModel.kt @@ -52,6 +52,7 @@ import kotlinx.serialization.json.JsonObject import kotlinx.serialization.json.JsonPrimitive import kotlinx.serialization.json.int import kotlinx.serialization.json.jsonPrimitive +import kotlinx.serialization.json.long @OptIn(PublicPreviewAPI::class) @HiltViewModel @@ -197,7 +198,7 @@ class TodoScreenViewModel @Inject constructor(private val todoRepository: TodoRe val taskDescription = functionCall.args["taskDescription"]!!.jsonPrimitive.content val id = todoRepository.addTodo(taskDescription) - if (id != null) { + if (id!=null) { val response = JsonObject( mapOf( "success" to JsonPrimitive(true), @@ -214,6 +215,7 @@ class TodoScreenViewModel @Inject constructor(private val todoRepository: TodoRe ) FunctionResponsePart(functionCall.name, response, functionCall.id) } + } "removeTodo" -> { try { @@ -235,6 +237,7 @@ class TodoScreenViewModel @Inject constructor(private val todoRepository: TodoRe ) FunctionResponsePart(functionCall.name, response, functionCall.id) } + } "toggleTodoStatus" -> { val taskId = functionCall.args["todoId"]!!.jsonPrimitive.int