AndroidアプリにHMSのオフライン翻訳機能を導入する方法
AppGallery Connectの作業
- AppGallery Connectに入って、[My projects]を選びます。
- リストから対象アプリに切り替えます。
- [Project settings] -> [Manage APIs]に入って、ML Kitを有効にします。(デフォルトではすでに有効になっているはずです)
こちらもご参照ください。
HMS SDKの導入
- agconnect-services.jsonをプロジェクト内に配置します。
- プロジェクトのbuild.gradleにSDKを追加します。
- モジュールのbuild.gradleにSDKを追加します。
オフライン翻訳機能のライブラリはこちらです。
build.gradle
implementation 'com.huawei.hms:ml-computer-translate:3.0.0.300'
implementation 'com.huawei.hms:ml-computer-translate-model:3.0.0.300'
こちらもご参照ください。
AndroidManifest.xml
HMS ML Kitのオフライン翻訳機能の定義と辞書ダウンロードの設定をAndroidManifest.xmlに追加します。
AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="xxx">
...
<meta-data
android:name="com.huawei.hms.ml.DEPENDENCY"
android:value= "translate"/>
<application
...
android:usesCleartextTraffic="true"
>
...
</manifest>
オフライン翻訳の流れ
1. API Keyを設定します。
MLApplication.getInstance().apiKey = AGConnectServicesConfig.fromContext(applicationContext).getString("client/api_key")
2.MLLocalTranslatorを生成します。
日本:ja
英語:en
private var loaclTranslator: MLLocalTranslator? = null
MLTranslateLanguage.getLocalAllLanguages().addOnSuccessListener {
if (it.contains(sourceLanguageCode) && it.contains(targetLanguageCode)) {
loaclTranslator = MLTranslatorFactory.getInstance().getLocalTranslator(
MLLocalTranslateSetting.Factory()
.setSourceLangCode(sourceLanguageCode)
.setTargetLangCode(targetLanguageCode)
.create()
)
}
}.addOnFailureListener {
it.printStackTrace()
}
3.辞書をダウンロードします。
loaclTranslator?.preparedModel(
MLModelDownloadStrategy.Factory()
.needWifi()
.create(),
MLModelDownloadListener { alreadyDownLength, totalLength ->
}
)?.addOnSuccessListener {
}?.addOnFailureListener {
it.printStackTrace()
}
4.翻訳します。
loaclTranslator?.asyncTranslate({翻訳対象のString})?.addOnSuccessListener {
// it = 翻訳結果
}?.addOnFailureListener {
it.printStackTrace()
}
5.リソースを解放します。
loaclTranslator?.stop()
実装は以上になります。
GitHub
参考
- HMS:https://developer.huawei.com/consumer/jp/
- HMS ML Kitの紹介:https://developer.huawei.com/consumer/jp/hms/huawei-mlkit
- HMS ML Kitのドキュメント:https://developer.huawei.com/consumer/jp/doc/development/HMSCore-Guides/service-introduction-0000001050040017
- HMS ML Kitのオフライン翻訳機能の概要:https://developer.huawei.com/consumer/jp/doc/development/hiai-Guides/on-device-translation-0000001058271775
- Huawei Developers:https://forums.developer.huawei.com/forumPortal/en/home
- Facebook Huawei Developersグループ:https://www.facebook.com/Huaweidevs/