【多服務場景化解決方案】AR虛擬技術助力智能家裝

?
1 、介紹總覽本應用采用了華為圖形引擎服務的AR虛擬技術,您可以在手機相機里擺放想要購置的家具家電,交互式體驗讓您可以輕松操控它們的3D圖例,以此來確定這些家具家電是否適合擺放在您的家里 。
特性
HMS Core Kits
統一登錄帳號:華為帳號
帳號服務
擺放3D物品,虛擬裝扮愛家 。
圖形引擎服務
您將建立什么在本次codelab中,您將建立一個集成華為帳號服務以及圖形引擎服務的裝修應用程序 。您的應用將包含:

  • 華為帳號登錄功能 。
  • 物品種類選擇功能 。
  • 在AR相機中放置和移動選擇的3D物品、放大、縮小等操作 。
您將會學到什么在本次codelab中,您將學習到:
  • 如何在AppGallery Connect中配置項目信息 。
  • 如果集成華為帳號服務以及圖形引擎服務 。
  • 【【多服務場景化解決方案】AR虛擬技術助力智能家裝】如何使用華為帳號服務進行登錄 。
  • 如何使用圖形引擎服務在虛擬房屋中展示3D物品 。
2、您需要什么已通過驗證的華為帳號 。
硬件需求提前準備如下硬件:
  • 一臺Windows 10臺式或筆記本電腦 。
  • 一部集成HMS Core (APK) 5.0.0.300或以上版本及EMUI 9.1或以上版本的華為手機 。
軟件需求提前準備如下軟件:
  • Android Studio 3.6.X
  • JDK 1.8或以上版本
  • 安卓SDK平臺(API 23或以上版本)
  • Gradle 5.4.1或以上版本
3、能力接入準備參考如下:
準備工作
集成帳戶服務
集成圖形引擎服務
4、開通服務點擊“項目設置”中“API管理”頁簽,開通如下服務的API:
  • 帳號服務
  • 認證服務

【多服務場景化解決方案】AR虛擬技術助力智能家裝

文章插圖
?
【多服務場景化解決方案】AR虛擬技術助力智能家裝

文章插圖
?
說明:以上API默認已開通 。如未開通 , 請手動開通 。
5、設計界面登錄界面支持華為帳號登錄,獲取用戶名和頭像圖片地址,并展示在頭像區域中 。
【多服務場景化解決方案】AR虛擬技術助力智能家裝

文章插圖
?
【多服務場景化解決方案】AR虛擬技術助力智能家裝

文章插圖
?
主頁按類別展示物品 。您可以按需選擇物品裝扮房屋 。
【多服務場景化解決方案】AR虛擬技術助力智能家裝

文章插圖
?
【多服務場景化解決方案】AR虛擬技術助力智能家裝

文章插圖
?
Product Details頁面展示產品詳情 。您可以添加物品到購物車或者獲取該物品的3D視圖 。
【多服務場景化解決方案】AR虛擬技術助力智能家裝

文章插圖
?
3D視圖打開支持ARView的相機 。相機檢測平面,以點狀圖片顯示該平面,您可以點擊平面擺放物品 。此外,還可以在3D視圖中放大、縮小、移動、旋轉物品 。
【多服務場景化解決方案】AR虛擬技術助力智能家裝

文章插圖
?
6、集成帳號服務華為賬號服務登錄后 , 應用可以訪問帳號信息 , 例如郵箱地址、用戶名、頭像等 。一旦使用可信賴的華為帳號服務登錄 , 無需再驗證用戶郵箱或電話號碼 。
應用集成帳號服務驗證用戶的華為帳號并登錄用戶 。
Java
使用認證服務登錄 。
AccountAuthParams authParams =new AccountAuthParamsHelper(AccountAuthParams.DEFAULT_AUTH_REQUEST_PARAM).setAccessToken().createParams();AccountAuthService accountAuthService =AccountAuthManager.getService(this, authParams);startActivityForResult(accountAuthService.getSignInIntent(), 1111);
【多服務場景化解決方案】AR虛擬技術助力智能家裝

文章插圖
@Overrideprotected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode == 1111) {Task<AuthAccount> authAccountTask = AccountAuthManager.parseAuthResultFromIntent(data);if (authAccountTask.isSuccessful()) {AuthAccount authAccount = authAccountTask.getResult();sharedPreferenceUtilClass = SharedPreferenceUtilClass.getInstance(LoginAuthenticationActivity.this);sharedPreferenceUtilClass.saveData(Constants.USER_EMAIL, authAccount.getEmail());sharedPreferenceUtilClass.saveData(Constants.USER_NAME, authAccount.getDisplayName());sharedPreferenceUtilClass.saveData(Constants.USER_PROFILE_IMAGE, authAccount.getAvatarUri().toString());Log.i("TAG", "accessToken:" + authAccount.getAccessToken());useTokenToAuthorize(authAccount.getAccessToken());}}}

推薦閱讀