Skip to content

Commit 4907cfe

Browse files
committed
Updated to latest deps
1 parent eb5374d commit 4907cfe

6 files changed

Lines changed: 38 additions & 29 deletions

File tree

‎core/network/src/main/java/com/android/developers/androidify/vertexai/FirebaseAiDataSource.kt‎

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,10 @@ import com.android.developers.androidify.model.ValidatedDescription
2323
import com.android.developers.androidify.model.ValidatedImage
2424
import com.google.firebase.Firebase
2525
import com.google.firebase.ai.GenerativeModel
26-
import com.google.firebase.ai.ImagenModel
2726
import com.google.firebase.ai.ai
2827
import com.google.firebase.ai.type.GenerativeBackend
2928
import com.google.firebase.ai.type.HarmBlockThreshold
3029
import com.google.firebase.ai.type.HarmCategory
31-
import com.google.firebase.ai.type.ImagenPersonFilterLevel
32-
import com.google.firebase.ai.type.ImagenSafetyFilterLevel
33-
import com.google.firebase.ai.type.ImagenSafetySettings
3430
import com.google.firebase.ai.type.PublicPreviewAPI
3531
import com.google.firebase.ai.type.ResponseModality
3632
import com.google.firebase.ai.type.SafetySetting
@@ -81,15 +77,20 @@ class FirebaseAiDataSourceImpl @Inject constructor(
8177
)
8278
}
8379

84-
private fun createGenerativeImageModel(): ImagenModel {
85-
return Firebase.ai(backend = GenerativeBackend.vertexAI()).imagenModel(
86-
remoteConfigDataSource.imageModelName(),
87-
safetySettings =
88-
ImagenSafetySettings(
89-
safetyFilterLevel = ImagenSafetyFilterLevel.BLOCK_LOW_AND_ABOVE,
90-
// Uses `ALLOW_ADULT` filter since `ALLOW_ALL` requires a special approval
91-
// See https://cloud.google.com/vertex-ai/generative-ai/docs/image/responsible-ai-imagen#person-face-gen
92-
personFilterLevel = ImagenPersonFilterLevel.ALLOW_ADULT,
80+
private fun createGenerativeImageModel(): GenerativeModel {
81+
return Firebase.ai(backend = GenerativeBackend.vertexAI()).generativeModel(
82+
modelName = remoteConfigDataSource.imageModelName(),
83+
generationConfig = generationConfig {
84+
responseModalities = listOf(
85+
ResponseModality.IMAGE,
86+
)
87+
},
88+
safetySettings = listOf(
89+
SafetySetting(HarmCategory.HARASSMENT, HarmBlockThreshold.LOW_AND_ABOVE),
90+
SafetySetting(HarmCategory.HATE_SPEECH, HarmBlockThreshold.LOW_AND_ABOVE),
91+
SafetySetting(HarmCategory.SEXUALLY_EXPLICIT, HarmBlockThreshold.LOW_AND_ABOVE),
92+
SafetySetting(HarmCategory.DANGEROUS_CONTENT, HarmBlockThreshold.LOW_AND_ABOVE),
93+
SafetySetting(HarmCategory.CIVIC_INTEGRITY, HarmBlockThreshold.LOW_AND_ABOVE),
9394
),
9495
)
9596
}
@@ -227,11 +228,13 @@ class FirebaseAiDataSourceImpl @Inject constructor(
227228
}
228229

229230
private suspend fun executeImageGeneration(
230-
generativeModel: ImagenModel,
231+
generativeModel: GenerativeModel,
231232
prompt: String,
232233
): Bitmap {
233-
val response = generativeModel.generateImages(prompt)
234-
return response.images.first().asBitmap()
234+
val response = generativeModel.generateContent(prompt)
235+
val image = response.candidates.firstOrNull()
236+
?.content?.parts?.firstNotNullOfOrNull { it.asImageOrNull() }
237+
return image ?: throw IllegalStateException("Could not extract image from model response")
235238
}
236239

237240
override suspend fun generatePrompt(prompt: String): GeneratedPrompt {

‎feature/creation/src/main/java/com/android/developers/androidify/creation/CreationViewModel.kt‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ import kotlinx.coroutines.Job
4242
import kotlinx.coroutines.flow.MutableStateFlow
4343
import kotlinx.coroutines.flow.StateFlow
4444
import kotlinx.coroutines.flow.update
45+
import kotlinx.coroutines.isActive
4546
import kotlinx.coroutines.launch
4647
import timber.log.Timber
4748

@@ -77,6 +78,7 @@ class CreationViewModel @AssistedInject constructor(
7778
private var imageGenerationJob: Job? = null
7879

7980
init {
81+
Timber.d("CreationViewModel init. hashCode: ${hashCode()}")
8082
onImageSelected(originalImageUrl)
8183
}
8284

@@ -103,6 +105,7 @@ class CreationViewModel @AssistedInject constructor(
103105

104106
fun onPromptGenerationClicked() {
105107
promptGenerationJob?.cancel()
108+
Timber.d("CreationViewModel onPrompt. hashCode: ${hashCode()} ${viewModelScope.isActive}")
106109
promptGenerationJob = viewModelScope.launch {
107110
Timber.d("Generating prompt...")
108111
_uiState.update {
@@ -238,6 +241,11 @@ class CreationViewModel @AssistedInject constructor(
238241
it.copy(resultBitmapUri = null)
239242
}
240243
}
244+
245+
override fun onCleared() {
246+
super.onCleared()
247+
Timber.d("CreationViewModel onCleared. hashCode: ${hashCode()}")
248+
}
241249
}
242250

243251
data class CreationState(

‎feature/creation/src/main/java/com/android/developers/androidify/creation/xr/EditScreenSpatial.kt‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ import androidx.compose.ui.unit.dp
3333
import androidx.xr.compose.spatial.ContentEdge
3434
import androidx.xr.compose.spatial.Orbiter
3535
import androidx.xr.compose.subspace.SpatialColumn
36-
import androidx.xr.compose.subspace.SpatialSpacer
3736
import androidx.xr.compose.subspace.SpatialPanel
3837
import androidx.xr.compose.subspace.SpatialRow
38+
import androidx.xr.compose.subspace.SpatialSpacer
3939
import androidx.xr.compose.subspace.layout.SubspaceModifier
4040
import androidx.xr.compose.subspace.layout.fillMaxHeight
4141
import androidx.xr.compose.subspace.layout.fillMaxWidth

‎gradle/libs.versions.toml‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ crashlytics = "3.0.7"
3030
datastore = "1.2.1"
3131
espressoCore = "3.7.0"
3232
firebaseBom = "34.13.0"
33-
foundation = "1.12.0-alpha03"
3433
genaiPrompt = "1.0.0-beta2"
3534
googleServices = "4.4.4"
3635
googleOss = "17.5.1"
@@ -49,7 +48,7 @@ kotlinxSerializationJson = "1.11.0"
4948
kotlinxSerializationProtobuf = "1.11.0"
5049
ktlint = "1.5.0"
5150
lifecycleRuntimeKtx = "2.10.0"
52-
lifecycleViewmodelNavigation3 = "2.10.0"
51+
lifecycleViewmodelNavigation3 = "2.11.0-beta02"
5352
loggingInterceptor = "5.3.2"
5453
material3 = "1.5.0-alpha20"
5554
media3 = "1.10.1"

‎wear/src/main/java/com/android/developers/androidify/ui/CallToActionScreen.kt‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@ import androidx.compose.ui.res.painterResource
2424
import androidx.compose.ui.res.stringResource
2525
import androidx.compose.ui.text.style.TextAlign
2626
import androidx.compose.ui.unit.dp
27+
import androidx.wear.compose.foundation.lazy.TransformingLazyColumn
2728
import androidx.wear.compose.foundation.lazy.rememberTransformingLazyColumnState
2829
import androidx.wear.compose.material3.MaterialTheme
2930
import androidx.wear.compose.material3.ScreenScaffold
3031
import androidx.wear.compose.material3.Text
31-
import androidx.wear.compose.material3.lazy.ResponsiveTransformingLazyColumn
3232
import androidx.wear.compose.ui.tooling.preview.WearPreviewDevices
3333
import com.android.developers.androidify.R
3434
import com.android.developers.androidify.ui.theme.AndroidifyWearTheme
@@ -43,7 +43,7 @@ fun CallToActionScreen(
4343
ScreenScaffold(
4444
scrollState = listState,
4545
) { contentPadding ->
46-
ResponsiveTransformingLazyColumn(
46+
TransformingLazyColumn(
4747
state = listState,
4848
contentPadding = contentPadding,
4949
) {

‎wear/src/main/java/com/android/developers/androidify/ui/TransmissionScreen.kt‎

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,13 @@ import androidx.compose.ui.res.painterResource
3737
import androidx.compose.ui.res.stringResource
3838
import androidx.compose.ui.text.style.TextAlign
3939
import androidx.compose.ui.unit.dp
40+
import androidx.wear.compose.foundation.lazy.TransformingLazyColumn
4041
import androidx.wear.compose.foundation.lazy.rememberTransformingLazyColumnState
4142
import androidx.wear.compose.material3.CircularProgressIndicator
4243
import androidx.wear.compose.material3.MaterialTheme
4344
import androidx.wear.compose.material3.ProgressIndicatorDefaults
4445
import androidx.wear.compose.material3.ScreenScaffold
4546
import androidx.wear.compose.material3.Text
46-
import androidx.wear.compose.material3.lazy.ResponsiveItemType
47-
import androidx.wear.compose.material3.lazy.ResponsiveTransformingLazyColumn
4847
import androidx.wear.compose.ui.tooling.preview.WearPreviewDevices
4948
import com.android.developers.androidify.R
5049
import com.android.developers.androidify.ui.theme.AndroidifyWearTheme
@@ -61,27 +60,27 @@ fun TransmissionScreen(modifier: Modifier = Modifier) {
6160
modifier = modifier.keepScreenOn(),
6261
scrollState = listState,
6362
) { contentPadding ->
64-
ResponsiveTransformingLazyColumn(
63+
TransformingLazyColumn(
6564
state = listState,
6665
contentPadding = contentPadding,
6766
) {
68-
item(itemType = ResponsiveItemType.IconButton) {
67+
item {
6968
Image(
7069
modifier = Modifier.fillMaxWidth(0.3f),
7170
painter = painterResource(id = R.drawable.logo),
7271
contentDescription = stringResource(R.string.logo_description),
7372
)
7473
}
75-
item(itemType = ResponsiveItemType.Default) {
74+
item {
7675
Spacer(modifier = Modifier.height(4.dp))
7776
}
78-
item(itemType = ResponsiveItemType.IconButton) {
77+
item {
7978
FourColorProgressIndicator()
8079
}
81-
item(itemType = ResponsiveItemType.Default) {
80+
item {
8281
Spacer(modifier = Modifier.height(4.dp))
8382
}
84-
item(itemType = ResponsiveItemType.Text) {
83+
item {
8584
Text(
8685
modifier = Modifier.fillMaxWidth(),
8786
textAlign = TextAlign.Center,

0 commit comments

Comments
 (0)