Skip to content

Commit 4e99fc6

Browse files
committed
refactor: fix mlkit 24.0.0 breaking changes
1 parent 1f4fac6 commit 4e99fc6

File tree

2 files changed

+32
-73
lines changed

2 files changed

+32
-73
lines changed

mlkit/app/src/main/java/com/google/firebase/example/mlkit/CustomModelActivity.java

Lines changed: 20 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,20 @@
22

33
import android.graphics.Bitmap;
44
import android.graphics.Color;
5-
import android.os.Build;
65
import androidx.annotation.NonNull;
76
import androidx.appcompat.app.AppCompatActivity;
87
import android.util.Log;
98

109
import com.google.android.gms.tasks.OnFailureListener;
1110
import com.google.android.gms.tasks.OnSuccessListener;
1211
import com.google.firebase.ml.common.FirebaseMLException;
13-
import com.google.firebase.ml.common.modeldownload.FirebaseLocalModel;
14-
import com.google.firebase.ml.common.modeldownload.FirebaseModelDownloadConditions;
15-
import com.google.firebase.ml.common.modeldownload.FirebaseModelManager;
16-
import com.google.firebase.ml.common.modeldownload.FirebaseRemoteModel;
12+
import com.google.firebase.ml.custom.FirebaseCustomLocalModel;
13+
import com.google.firebase.ml.custom.FirebaseCustomRemoteModel;
1714
import com.google.firebase.ml.custom.FirebaseModelDataType;
1815
import com.google.firebase.ml.custom.FirebaseModelInputOutputOptions;
1916
import com.google.firebase.ml.custom.FirebaseModelInputs;
2017
import com.google.firebase.ml.custom.FirebaseModelInterpreter;
21-
import com.google.firebase.ml.custom.FirebaseModelOptions;
18+
import com.google.firebase.ml.custom.FirebaseModelInterpreterOptions;
2219
import com.google.firebase.ml.custom.FirebaseModelOutputs;
2320

2421
import java.io.BufferedReader;
@@ -29,48 +26,32 @@ public class CustomModelActivity extends AppCompatActivity {
2926

3027
private void configureHostedModelSource() {
3128
// [START mlkit_cloud_model_source]
32-
FirebaseModelDownloadConditions.Builder conditionsBuilder =
33-
new FirebaseModelDownloadConditions.Builder().requireWifi();
34-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
35-
// Enable advanced conditions on Android Nougat and newer.
36-
conditionsBuilder = conditionsBuilder
37-
.requireCharging()
38-
.requireDeviceIdle();
39-
}
40-
FirebaseModelDownloadConditions conditions = conditionsBuilder.build();
41-
42-
// Build a remote model source object by specifying the name you assigned the model
43-
// when you uploaded it in the Firebase console.
44-
FirebaseRemoteModel cloudSource = new FirebaseRemoteModel.Builder("my_cloud_model")
45-
.enableModelUpdates(true)
46-
.setInitialDownloadConditions(conditions)
47-
.setUpdatesDownloadConditions(conditions)
48-
.build();
49-
FirebaseModelManager.getInstance().registerRemoteModel(cloudSource);
29+
FirebaseCustomRemoteModel remoteModel =
30+
new FirebaseCustomRemoteModel.Builder("your_model").build();
5031
// [END mlkit_cloud_model_source]
5132
}
5233

5334
private void configureLocalModelSource() {
5435
// [START mlkit_local_model_source]
55-
FirebaseLocalModel localSource =
56-
new FirebaseLocalModel.Builder("my_local_model") // Assign a name to this model
57-
.setAssetFilePath("my_model.tflite")
58-
.build();
59-
FirebaseModelManager.getInstance().registerLocalModel(localSource);
36+
FirebaseCustomLocalModel localModel = new FirebaseCustomLocalModel.Builder()
37+
.setAssetFilePath("your_model.tflite")
38+
.build();
6039
// [END mlkit_local_model_source]
6140
}
6241

63-
private FirebaseModelInterpreter createInterpreter() throws FirebaseMLException {
42+
private FirebaseModelInterpreter createInterpreter(FirebaseCustomLocalModel localModel) throws FirebaseMLException {
6443
// [START mlkit_create_interpreter]
65-
FirebaseModelOptions options = new FirebaseModelOptions.Builder()
66-
.setRemoteModelName("my_cloud_model")
67-
.setLocalModelName("my_local_model")
68-
.build();
69-
FirebaseModelInterpreter firebaseInterpreter =
70-
FirebaseModelInterpreter.getInstance(options);
44+
FirebaseModelInterpreter interpreter = null;
45+
try {
46+
FirebaseModelInterpreterOptions options =
47+
new FirebaseModelInterpreterOptions.Builder(localModel).build();
48+
interpreter = FirebaseModelInterpreter.getInstance(options);
49+
} catch (FirebaseMLException e) {
50+
// ...
51+
}
7152
// [END mlkit_create_interpreter]
7253

73-
return firebaseInterpreter;
54+
return interpreter;
7455
}
7556

7657
private FirebaseModelInputOutputOptions createInputOutputOptions() throws FirebaseMLException {
@@ -109,7 +90,8 @@ private float[][][][] bitmapToInputArray() {
10990
}
11091

11192
private void runInference() throws FirebaseMLException {
112-
FirebaseModelInterpreter firebaseInterpreter = createInterpreter();
93+
FirebaseCustomLocalModel localModel = new FirebaseCustomLocalModel.Builder().build();
94+
FirebaseModelInterpreter firebaseInterpreter = createInterpreter(localModel);
11395
float[][][][] input = bitmapToInputArray();
11496
FirebaseModelInputOutputOptions inputOutputOptions = createInputOutputOptions();
11597

mlkit/app/src/main/java/com/google/firebase/example/mlkit/kotlin/CustomModelActivity.kt

Lines changed: 12 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,17 @@ package com.google.firebase.example.mlkit.kotlin
44

55
import android.graphics.Bitmap
66
import android.graphics.Color
7-
import android.os.Build
87
import androidx.appcompat.app.AppCompatActivity
98
import android.util.Log
109
import com.google.android.gms.tasks.OnFailureListener
1110
import com.google.firebase.ml.common.FirebaseMLException
12-
import com.google.firebase.ml.common.modeldownload.FirebaseLocalModel
13-
import com.google.firebase.ml.common.modeldownload.FirebaseModelDownloadConditions
14-
import com.google.firebase.ml.common.modeldownload.FirebaseModelManager
15-
import com.google.firebase.ml.common.modeldownload.FirebaseRemoteModel
16-
import com.google.firebase.ml.custom.FirebaseModelDataType
11+
import com.google.firebase.ml.custom.FirebaseCustomLocalModel
12+
import com.google.firebase.ml.custom.FirebaseCustomRemoteModel
13+
import com.google.firebase.ml.custom.FirebaseModelInterpreterOptions
14+
import com.google.firebase.ml.custom.FirebaseModelInterpreter
1715
import com.google.firebase.ml.custom.FirebaseModelInputOutputOptions
1816
import com.google.firebase.ml.custom.FirebaseModelInputs
19-
import com.google.firebase.ml.custom.FirebaseModelInterpreter
20-
import com.google.firebase.ml.custom.FirebaseModelOptions
17+
import com.google.firebase.ml.custom.FirebaseModelDataType
2118

2219
import java.io.BufferedReader
2320
import java.io.IOException
@@ -32,43 +29,22 @@ class CustomModelActivity : AppCompatActivity() {
3229

3330
private fun configureHostedModelSource() {
3431
// [START mlkit_cloud_model_source]
35-
var conditionsBuilder: FirebaseModelDownloadConditions.Builder =
36-
FirebaseModelDownloadConditions.Builder().requireWifi()
37-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
38-
// Enable advanced conditions on Android Nougat and newer.
39-
conditionsBuilder = conditionsBuilder
40-
.requireCharging()
41-
.requireDeviceIdle()
42-
}
43-
val conditions = conditionsBuilder.build()
44-
45-
// Build a remote model object by specifying the name you assigned the model
46-
// when you uploaded it in the Firebase console.
47-
val cloudSource = FirebaseRemoteModel.Builder("my_cloud_model")
48-
.enableModelUpdates(true)
49-
.setInitialDownloadConditions(conditions)
50-
.setUpdatesDownloadConditions(conditions)
51-
.build()
52-
FirebaseModelManager.getInstance().registerRemoteModel(cloudSource)
32+
val remoteModel = FirebaseCustomRemoteModel.Builder("your_model").build()
5333
// [END mlkit_cloud_model_source]
5434
}
5535

5636
private fun configureLocalModelSource() {
5737
// [START mlkit_local_model_source]
58-
val localSource = FirebaseLocalModel.Builder("my_local_model") // Assign a name to this model
59-
.setAssetFilePath("my_model.tflite")
38+
val localModel = FirebaseCustomLocalModel.Builder()
39+
.setAssetFilePath("your_model.tflite")
6040
.build()
61-
FirebaseModelManager.getInstance().registerLocalModel(localSource)
6241
// [END mlkit_local_model_source]
6342
}
6443

6544
@Throws(FirebaseMLException::class)
66-
private fun createInterpreter(): FirebaseModelInterpreter? {
45+
private fun createInterpreter(localModel: FirebaseCustomLocalModel): FirebaseModelInterpreter? {
6746
// [START mlkit_create_interpreter]
68-
val options = FirebaseModelOptions.Builder()
69-
.setRemoteModelName("my_cloud_model")
70-
.setLocalModelName("my_local_model")
71-
.build()
47+
val options = FirebaseModelInterpreterOptions.Builder(localModel).build()
7248
val interpreter = FirebaseModelInterpreter.getInstance(options)
7349
// [END mlkit_create_interpreter]
7450

@@ -109,7 +85,8 @@ class CustomModelActivity : AppCompatActivity() {
10985

11086
@Throws(FirebaseMLException::class)
11187
private fun runInference() {
112-
val firebaseInterpreter = createInterpreter()!!
88+
val localModel = FirebaseCustomLocalModel.Builder().build()
89+
val firebaseInterpreter = createInterpreter(localModel)!!
11390
val input = bitmapToInputArray()
11491
val inputOutputOptions = createInputOutputOptions()
11592

0 commit comments

Comments
 (0)