tencent cloud

フィードバック

最終更新日:2022-12-19 16:42:43

    統合の準備

    1. SDKのダウンロードを実行し、解凍します。
    2. 以下のファイルを準備します。
      ファイルタイプ説明
      xmagic-xxx.aarSDK。入力必須
      ../assets/アルゴリズムモデル、素材リソースパック。入力必須
      ../jniLibssoライブラリ。入力必須

    リソースのインポート

    統合

    • 上記で準備したすべての.aarファイルをappプロジェクトのlibsディレクトリ下に追加します。
    • SDKパッケージのassets/ディレクトリにあるすべてのリソースを../src/main/assetsディレクトリにコピーします。SDKパッケージのMotionResフォルダにリソースがある場合は、このフォルダを../src/main/assetsディレクトリにコピーします。
    • jniLibsフォルダをプロジェクトの../src/main/jniLibsディレクトリ下にコピーします。

    インポート方法

    appモジュールのbuild.gradleを開き、依存参照を追加します。

    android{
      ...
      defaultConfig {
          applicationIdを「権限承認licにバインドしたパッケージ名に変更」します
          ....
      }
      packagingOptions {
          pickFirst '**/libc++_shared.so'
      }
    }
    dependencies{
      ...
      compile fileTree(dir: 'libs', include: ['*.jar','*.aar'])//追加*.aar
    }
    

    注意

    プロジェクトにGoogleのGsonライブラリを統合していない場合は、次の依存も追加する必要があります。

    dependencies{
       implementation 'com.google.code.gson:gson:2.8.2'
    }
    

    全体フロー

    手順1:認証

    1. 権限の承認を申請し、License URLとLicense KEYを取得します。

      注意:

      正常な状況では、Appのネットワーク接続が一度成功すれば認証フローは完了するため、Licenseファイルをプロジェクトのassetsディレクトリに保存する必要はありません。ただし、Appがネットワークに未接続の状態でSDKの関連機能を使用する必要がある場合は、Licenseファイルをダウンロードしてassetsディレクトリに保存し、最低保証プランとすることができます。この場合、Licenseファイル名は必ずv_cube.licenseとしなければなりません。

    2. 関連業務モジュールの初期化コードの中でURLとKEYを設定し、licenseのダウンロードをトリガーします。使用する直前になってダウンロードすることは避けてください。ApplicationのonCreateメソッドでダウンロードをトリガーすることもできますが、この時点でネットワークの権限がない可能性や、ネットワーク接続の失敗率が比較的高い可能性があるため、推奨しません。

      //ダウンロードのトリガーまたはlicenseの更新のみが目的であり、認証結果には関心がない場合は、4つ目のパラメータにはnullを渡します。
      TELicenseCheck.getInstance().setXMagicLicense(context, URL, KEY, null);
      
    3. その後、実際に美顔機能を使用する前に(例えばDemoのLaunchActivity.javaなど)認証を行います。

      // soライブラリがネットワークからダウンロードしたものの場合は、TELicenseCheck.getInstance().setTELicenseを呼び出す前にsoのパスを設定しておかなければ、認証に失敗する場合があります。
      // XmagicApi.setLibPathAndLoad(validLibsDirectory);
      // soがapkパッケージ内にある場合は、上記のメソッドを呼び出す必要はありません。
      TELicenseCheck.getInstance().setTELicense(context, URL, KEY, new TELicenseCheckListener() {
               @Override
              public void onLicenseCheckFinish(int errorCode, String msg) {
                  //注意:このコールバックは呼び出しスレッド内にあるとは限りません
                  if (errorCode == TELicenseCheck.ERROR_OK) {
                      //認証に成功しました
                  }else{
                      //認証に失敗しました
                  }
              }
          });
      

    認証errorCodeの説明:

    エラーコード 説明
    0 成功です。Success
    -1 入力パラメータが無効です(例:URLまたはKEYが空など)
    -3 ダウンロードの段階で失敗しました。ネットワークの設定を確認してください
    -4 ローカルから読み取ったTE権限承認情報が空です。IOの失敗による可能性があります
    -5 読み取ったVCUBE TEMP Licenseファイルの内容が空です。IOの失敗による可能性があります
    -6 v_cube.licenseファイルのJSONフィールドが正しくありません。Tencent Cloudチームに連絡して処理を依頼してください
    -7 署名の検証に失敗しました。Tencent Cloudチームに連絡して処理を依頼してください
    -8 復号に失敗しました。Tencent Cloudチームに連絡して処理を依頼してください
    -9 TELicenseフィールド内のJSONフィールドが正しくありません。Tencent Cloudチームに連絡して処理を依頼してください
    -10 ネットワークから解析したTE権限承認情報が空です。Tencent Cloudチームに連絡して処理を依頼してください
    -11 TE権限承認情報をローカルファイルに書き込む際に失敗しました。IOの失敗による可能性があります
    -12 ダウンロードに失敗しました。ローカルassetの解析も失敗しました
    -13 認証に失敗しました。soがパッケージ内にあるか、またはsoパスが正しく設定されているかを確認してください
    3004/3005 権限承認が無効です。Tencent Cloudチームに連絡して処理を依頼してください
    3015 Bundle Id / Package Name が一致しません。Appで使用しているBundle Id / Package Nameが申請時のものと同じか、正しい権限承認ファイルを使用しているかを確認してください
    3018 権限承認ファイルが期限切れです。Tencent Cloudに更新を申請する必要があります
    その他 Tencent Cloudチームに連絡して処理を依頼してください

    手順2:リソースのコピー

    1. リソースファイルがassetsディレクトリ内にある場合は、使用する前にappのプライベートディレクトリにコピーしておく必要があります。事前にコピーしておくか、または前の手順の認証成功のコールバックの中でコピー操作を行うこともできます。サンプルコードは、DemoのLaunchActivity.javaです。

      XmagicResParser.setResPath(new File(getFilesDir(), "xmagic").getAbsolutePath());
      //loading
      //リソースファイルのプライベートディレクトリへのコピーは1回のみ行います
      XmagicResParser.copyRes(getApplicationContext());
      
    2. リソースファイルがネットワークから動的ダウンロードしたものの場合は、ダウンロード成功後にリソースファイルパスを設定する必要があります。サンプルコードは、DemoのLaunchActivity.javaです。

      XmagicResParser.setResPath(ダウンロードしたリソースファイルのローカルパス);
      

    手順3:SDKの初期化および使用方法

    Tencent Effect SDK使用のライフサイクルはおおむね次のとおりです。

    1. 美顔UIデータを作成します。Demoプロジェクトのものを参照できます。 XmagicResParser.java,XmagicUIProperty.java,XmagicPanelDataManager.javaコード。

    2. プレビューレイアウトにGLSurfaceViewを追加します。

      <android.opengl.GLSurfaceView
      android:id="@+id/camera_gl_surface_view"
      android:layout_width="match_parent"
      android:layout_height="match_parent" />
      
    3. (オプション)カメラをクイック実装します。
      Demoプロジェクトのcom.tencent.demo.cameraディレクトリをプロジェクトにコピーします。PreviewMgrクラスを利用してカメラ機能をクイック実装します。実装の詳細についてはDemoプロジェクトのMainActivity.javaをご参照ください。

      //カメラ初期化
      mPreviewMgr = new PreviewMgr();
      //レイアウトしたGlSurfaceViewサンプルをカメラツールクラスに渡します
      mPreviewMgr.onCreate(mGlSurfaceView,false);
      //プレビューテクスチャデータのコールバック関数を登録します
      mPreviewMgr.setCustomTextureProcessor((textureId, textureWidth, textureHeight) -> {
      if (mXmagicApi == null) {
           return textureId;
      }
      //美顔sdkを呼び出してレンダリングします
      int outTexture = mXmagicApi.process(textureId, textureWidth, textureHeight);
      return outTexture;
      });
      //Activityの中のonResumeメソッドでカメラを有効にします
      mPreviewMgr.onResume(this, 1280, 720);
      
    4. 美顔SDKを初期化します。ActivityのonResume()メソッドに保存することをお勧めします。

      mXmagicApi = new XmagicApi(this, XmagicResParser.getResPath(),new XmagicApi.OnXmagicPropertyErrorListener()); 
      
    • パラメータ

      パラメータ意味
      Context contextコンテキスト
      String resDirリソースファイルディレクトリ。詳細については、手順2をご参照ください
      OnXmagicPropertyErrorListener errorListenerコールバック関数実装クラス
    • 戻り値
      エラーコードの意味についてはAPIドキュメントをご参照ください。

    1. 素材プロンプトのコールバック関数を追加します(メソッドのコールバックはサブスレッドで実行される場合があります)。一部の素材はユーザーに、うなずく、手を伸ばす、指ハートなどを促します。このコールバックは類似のプロンプトの表示に用いられます。

      mXmagicApi.setTipsListener(new XmagicTipsListener() {
      final XmagicToast mToast = new XmagicToast();
      @Override
      public void tipsNeedShow(String tips, String tipsIcon, int type, int duration) {
       mToast.show(MainActivity.this, tips, duration);
      }
       @Override
      public void tipsNeedHide(String tips, String tipsIcon, int type) {
       mToast.dismiss();
      }
      });
      
    2. 美顔SDKが各フレームのデータを処理し、対応する処理結果を返します。

      int outTexture = mXmagicApi.process(textureId, textureWidth, textureHeight);
      
    3. 指定するタイプの美顔エフェクトの数値を更新します。

      // 使用可能な入力パラメータのプロパティはXmagicResParser.parseRes()から取得できます
      mXmagicApi.updateProperty(XmagicProperty<?> p);
      
    4. 美顔SDKをPauseします。ActivityのonPause()ライフサイクルにバインドすることをお勧めします。

      //ActivityがonPauseの場合に呼び出します。OpenGLスレッドで呼び出す必要があります
      mXmagicApi.onPause();
      
    5. 美顔SDKをリリースします。ActivityのonDestroy() ライフサイクルにバインドすることをお勧めします。

      //このメソッドはGLスレッドで呼び出す必要があることにご注意ください
      mXmagicApi.onDestroy()
      
    お問い合わせ

    カスタマーサービスをご提供できるため、ぜひお気軽にお問い合わせくださいませ。

    テクニカルサポート

    さらにサポートが必要な場合は、サポートチケットを送信して弊社サポートチームにお問い合わせください。24時間365日のサポートをご提供します。

    電話サポート(24 時間365日対応)