tencent cloud

フィードバック

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

    統合の準備

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

    リソースのインポート

    手動統合
    Mavenの統合
    動的ダウンロードと統合

    統合

    上記で準備したすべての.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ライブラリを統合していない場合は、次の依存も追加する必要があります。
    ご注意:
    プロジェクトにGoogleのGsonライブラリを統合していない場合は、次の依存も追加する必要があります。
    dependencies{
    implementation 'com.google.code.gson:gson:2.8.2'
    }
    
    Tencent Effect SDKはMaven Central Repositoryに公開済みであり、gradleの設定によって自動でダウンロードおよび更新が可能です。
    1. dependenciesにTencent Effect SDKの依存を追加します。
    dependencies{
    //例:S1-04パッケージの場合
    implementation 'com.tencent.mediacloud:TencentEffect_S1-04:latest.release'
    }
    2. defaultConfigでAppが使用するCPUアーキテクチャを指定します。
    defaultConfig {
    ndk {
    abiFilters "armeabi-v7a", "arm64-v8a"
    }
    }
    説明:
    現在、Tencent Effect SDKはarmeabi-v7aおよびarm64-v8aをサポートしています。
    3. 
    img
    
    Sync Nowをクリックすると、SDKが自動的にダウンロードされプロジェクトに統合されます。
    4. パッケージに動的エフェクトおよびフィルター機能が含まれる場合は、SDKダウンロードページで対応するリソースをダウンロードし、動的エフェクトおよびフィルター素材をプロジェクトの以下のディレクトリに配置する必要があります。
    動的エフェクト:../assets/MotionRes
    フィルター:../assets/lut

    各パッケージに対応するMavenアドレス

    バージョン
    Mavenアドレス
    A1 - 01
    implementation 'com.tencent.mediacloud:TencentEffect_A1-01:latest.release'
    A1 - 02
    implementation 'com.tencent.mediacloud:TencentEffect_A1-02:latest.release'
    A1 - 03
    implementation 'com.tencent.mediacloud:TencentEffect_A1-03:latest.release'
    A1 - 04
    implementation 'com.tencent.mediacloud:TencentEffect_A1-04:latest.release'
    A1 - 05
    implementation 'com.tencent.mediacloud:TencentEffect_A1-05:latest.release'
    A1 - 06
    implementation 'com.tencent.mediacloud:TencentEffect_A1-06:latest.release'
    S1 - 00
    implementation 'com.tencent.mediacloud:TencentEffect_S1-00:latest.release'
    S1 - 01
    implementation 'com.tencent.mediacloud:TencentEffect_S1-01:latest.release'
    S1 - 02
    implementation 'com.tencent.mediacloud:TencentEffect_S1-02:latest.release'
    S1 - 03
    implementation 'com.tencent.mediacloud:TencentEffect_S1-03:latest.release'
    S1 - 04
    implementation 'com.tencent.mediacloud:TencentEffect_S1-04:latest.release'
    

    assets、so、動的エフェクトリソースガイドの動的ダウンロード

    パッケージのサイズを小さくするため、SDKに必要なassetsリソース、soライブラリ、および動的エフェクトリソースMotionRes(一部のベーシック版SDKには動的エフェクトリソースはありません)をネットワークからのダウンロードに変更することができます。ダウンロード成功後、上記ファイルのパスをSDKに設定します。
    Demoのダウンロードロジックを再利用することをお勧めします。もちろん、既存のダウンロードサービスを使用することもできます。動的ダウンロードの詳細なガイドについては、SDKパッケージのスリム化(Android)をご参照ください。

    全体フロー

    手順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ドキュメントをご参照ください。
    5. 素材プロンプトのコールバック関数を追加します(メソッドのコールバックはサブスレッドで実行される場合があります)。一部の素材はユーザーに、うなずく、手を伸ばす、指ハートなどを促します。このコールバックは類似のプロンプトの表示に用いられます。
    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();
    }
    });
    6. 美顔SDKが各フレームのデータを処理し、対応する処理結果を返します。
    int outTexture = mXmagicApi.process(textureId, textureWidth, textureHeight);
    7. 指定するタイプの美顔エフェクトの数値を更新します。
    // 使用可能な入力パラメータのプロパティはXmagicResParser.parseRes()から取得できます
    mXmagicApi.updateProperty(XmagicProperty<?> p);
    8. 美顔SDKをPauseします。ActivityのonPause()ライフサイクルにバインドすることをお勧めします。
    //ActivityがonPauseの場合に呼び出します。OpenGLスレッドで呼び出す必要があります
    mXmagicApi.onPause();
    9. 美顔SDKをリリースします。ActivityのonDestroy() ライフサイクルにバインドすることをお勧めします。
    //このメソッドはGLスレッドで呼び出す必要があることにご注意ください
    mXmagicApi.onDestroy()
    
    お問い合わせ

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

    テクニカルサポート

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

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