LoginSignup
0
0

More than 1 year has passed since last update.

HMS ML Kitのオフライン翻訳機能の実装入門

Last updated at Posted at 2021-10-01

AndroidアプリにHMSのオフライン翻訳機能を導入する方法

AppGallery Connectの作業

  1. AppGallery Connectに入って、[My projects]を選びます。
  2. リストから対象アプリに切り替えます。
  3. [Project settings] -> [Manage APIs]に入って、ML Kitを有効にします。(デフォルトではすでに有効になっているはずです)

こちらもご参照ください。

HMS SDKの導入

  1. agconnect-services.jsonをプロジェクト内に配置します。
  2. プロジェクトのbuild.gradleにSDKを追加します。
  3. モジュールの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

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0