“全民創作“的時代,數字自媒體有較多的變現方式,讓越來越多的人參與到內容創作中,但是,哪里有原創,哪里就有抄襲!如何防止盜版,保護創作者的合法權益,就得到國家監管機構、創作平臺和創作者一致的關注,
華為和中國著作權中心合作推出了DCI著作權服務,利用區塊鏈和大資料技術,對數字作品著作權進行保護,提供DCI著作權服務用戶注冊、DCI登記服務、DCI授權服務、DCI維權服務能力,DCI登記成功的數字作品資訊(包括DCI碼)將保存在區塊鏈中,保證所有的著作權資訊可信、可回溯,隨時隨地的為每位創作者提供安心的著作權保護,
效果示例
創作者在提交數字作品DCI登記后,中國著作權保護中心按照一定程式將相應作品的著作權和與著作權有關的權利資訊記錄在案,并分配DCI碼,通過華為自研區塊鏈、大資料等技術加持,快速高效的服務方式幫助創作者擺脫繁瑣的著作權確權流程完成權利認證,最終實作作品著作權價值最大化,

開發準備
1. 配置集成的SDK包
在應用的build.gradle檔案中,dependencies內添加DCI著作權服務的SDK依賴
// DCI Kit SDK
iimplementation 'com.huawei.hms:dci:3.0.1.300'
2. 配置AndroidManifest.xml
打開main檔案夾中的AndroidManifest.xml檔案,可以根據場景和使用需要,配置讀取和寫入手機存盤以及相機權限,在前添加
<!-- 往sdcard中寫入資料的權限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!—網路權限 -->
<uses-permission
android:name="android.permission.INTERNET" />
開發步驟
1. 初始化DCI SDK·
在Application的onCreate()方法中,對DCI SDK進行初始化操作,
@Override
public void onCreate() {
super.onCreate();
// Init DCI Kit
HwDciPublicClient.initApplication(this);
}
2. 非DCI著作權服務用戶要先進行用戶注冊,
// 通過華為帳號服務獲取OpenId和AccessToken
AccountAuthParams authParams = new AccountAuthParamsHelper(AccountAuthParams.DEFAULT_AUTH_REQUEST_PARAM)
.setAccessToken()
.setProfile()
.createParams();
AccountAuthService service = AccountAuthManager.getService(activity, authParams);
Task<AuthAccount> mTask = service.silentSignIn();
mTask.addOnSuccessListener(new OnSuccessListener<AuthAccount() {
@Override
public void onSuccess(AuthAccount authAccount) {
// 獲取華為帳號 OpenId
String hmsOpenId = authAccount.getOpenId();
// 獲取華為帳號 AccessToken
String hmsAccessToken= authAccount.getAccessToken();
}
});
// 設定SDK方法入參
ParamsInfoEntity paramsInfoEntity = new ParamsInfoEntity();
// 傳入華為開發者聯盟AppGallery Connect申請的AppID
paramsInfoEntity.setHmsAppId(hmsAppId);
// 傳入華為帳號的OpenID
paramsInfoEntity.setHmsOpenId(hmsOpenId);
// hmsPushToken 為集成的華為push功能所提供的token,若不集成推送功能則不傳此值
paramsInfoEntity.setHmsPushToken(hmsPushToken);
// 傳入華為帳號的AccessToken
paramsInfoEntity.setHmsToken(hmsAccessToken);
// 自定義回傳code值,用于接收DCI著作權服務用戶注冊結果
int myRequestCode = 1;
// 啟動DCI著作權服務用戶注冊界面
HwDciPublicClient.registerDciAccount(activity,paramsInfoEntity ,myRequestCode);
// DCI著作權服務用戶注冊完成后在頁面的onActivityResult中獲取DCI著作權服務用戶注冊結果,
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode != myRequestCode || resultCode != RESULT_OK || data == null) {
return;
}
int code = data.getIntExtra(HwDciConstant.DCI_REGISTER_RESULT_CODE, 0);
if (code == 200) {
// DCI著作權服務用戶注冊成功 獲取回傳的DCI UID
AccountInfoEntity accountInfoEntity = data.getParcelableExtra(HwDciConstant.DCI_ACCOUNT_INFO_KEY);
String dciUid = accountInfoEntity.getUserId();
} else {
// DCI著作權服務用戶注冊失敗,根據code處理失敗的邏輯
}
}
3. 傳入作品進行DCI登記
呼叫HwDciPublicClient的applyDciCode介面,傳入作品相關資訊進行數字作品進行DCI登記,
// Initializing the Rebuild Engine
ParamsInfoEntity paramsInfoEntity = new ParamsInfoEntity();
paramsInfoEntity.setDciUid(dciUid);
paramsInfoEntity.setHmsAppId(hmsAppId);
paramsInfoEntity.setHmsOpenId(hmsOpenId);
paramsInfoEntity.setHmsToken(hmsToken);
// 獲取數字作品本地保存的路徑
String imageFilePath = imageFile.getAbsolutePath();
// 獲取當前定位所在的城市名
String local = "北京市";
// 獲取數字作品創作時間,Unix時間,這里以當前時間為例
long currentTime = System.currentTimeMillis();
// 呼叫介面方法
HwDciPublicClient.applyDciCode(paramsInfoEntity, imageFilePath,local,currentTime, new HwDciClientCallBack<String>() {
@Override
public void onSuccess(String workId) {
// 提交DCI登記成功,本地保存workId,用于查詢DCI登記結果入參,
}
@Override
public void onFail(int code, String msg) {
// 提交DCI登記失敗,
}
});
4. 查詢DCI登記結果,
呼叫HwDciPublicClient的queryWorkDciInfo介面,根據回傳的狀態碼判斷DCI登記結果,如果登記成功,獲取作品分配的DCI碼,
ParamsInfoEntity paramsInfoEntity = new ParamsInfoEntity();
paramsInfoEntity.setDciUid(dciUid);
paramsInfoEntity.setHmsAppId(hmsAppId);
paramsInfoEntity.setHmsOpenId(hmsOpenId);
paramsInfoEntity.setHmsToken(hmsToken);
paramsInfoEntity.setWorkId(workId);
HwDciPublicClient.queryWorkDciInfo(paramsInfoEntity, new HwDciClientCallBack<WorkDciInfoEntity>() {
@Override
public void onSuccess(WorkDciInfoEntity result) {
if (result == null) {
return;
}
// 根據回傳的狀態碼判斷DCI登記結果,0代表處理中,1代表成功,2代表失敗
if (result.getRegistrationStatus() == 1) {
// 查詢成功,DCI登記成功,獲取DCI碼,
mDciCode = result.getDciCode();
}else if (result.getRegistrationStatus() == 0) {
// 查詢成功,DCI登記正在處理中,
}else {
// 查詢成功,DCI登記失敗,獲取DCI登記失敗原因,
String message = result.getMessage()
}
}
@Override
public void onFail(int code, String msg) {
// 查詢失敗,
}});
5. 為數字作品添加DCI標,
呼叫HwDciPublicClient的addDciWatermark介面,為DCI登記成功的作品添加DCI標,作為數字作品著作權確權標識
// 傳入需要添加DCI標的數字作品的本地路徑
String imageFilePath = imageFile.getAbsolutePath();
HwDciPublicClient.addDciWatermark(imageFilePath, new HwDciClientCallBack<String>() {
@Override
public void onSuccess(String imageBase64String) {
// DCI標志添加成功,回傳圖片base64字串
}
@Override
public void onFail(int code, String msg) {
// 添加失敗
}
});
了解更多相關內容
訪問華為DCI著作權服務服務官網
獲取華為DCI著作權服務開發指導檔案
華為DCI著作權服務開源倉庫地址:GitHub、Gitee
華為HMS Core官方論壇
解決集成問題請到Stack Overflow
點擊右上角頭像右方的關注,第一時間了解HMS Core最新技術~
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/289375.html
標籤:區塊鏈
