몇 개월 전 Google은 개인화된 Android 봇을 생성하는 앱으로 Androidify를 다시 출시했습니다. Androidify는 Gemini 및 Imagen을 사용하여 셀피 사진을 재미있는 Android 봇으로 변환합니다.
하지만 Android는 최근에 추가된 XR을 비롯한 여러 폼 팩터를 지원하므로 Androidify의 재미를 Wear OS에 어떻게 가져올 수 있을지 고민했습니다.
Androidify 시계 모드
Androidify 봇은 맞춤설정 기능이 뛰어나므로 시계 화면에 표시하는 것이 가장 적합합니다. 프로필은 가장 자주 표시되는 화면일 뿐만 아니라 나를 표현할 수 있는 가장 개인적인 화면이기도 합니다.
셀피 이미지에서 생성된 맞춤 Androidify 워치 페이스
이제 Androidify는 휴대전화 앱 내에서 시계 화면을 동적으로 생성한 다음 시계로 전송할 수 있으며, 시계에서 자동으로 시계 화면으로 설정됩니다. 이 모든 과정은 몇 초 안에 이루어집니다.
대략적인 구성
시계 화면 생성 및 설치를 위한 엔드 투 엔드 흐름
엔드 투 엔드 환경을 구현하려면 이 개략적인 설계 다이어그램에 표시된 것처럼 여러 기술을 결합해야 합니다.
먼저 사용자의 아바타가 기존 워치 페이스 형식 템플릿과 결합된 후 APK로 패키징됩니다. 이는 설명할 이유로 인해 검증됩니다. - 시계로 전송됩니다.
시계에서 수신되면 Wear OS 6의 일부인 새로운 워치 페이스 푸시 API를 사용하여 워치 페이스를 설치하고 활성화합니다.
자세히 살펴보겠습니다.
시계 화면 템플릿 만들기
시계 화면은 시계 화면 디자이너에서 디자인된 템플릿으로 만들어집니다. Figma 내에서 직접 워치 페이스 형식 워치 페이스를 만들 수 있는 새로운 Figma 플러그인입니다.
워치 페이스 디자이너의 Androidify 워치 페이스 템플릿
이 플러그인을 사용하면 워치 페이스를 워치 페이스 형식 (WFF) 리소스 등 다양한 방법으로 내보낼 수 있습니다. 그런 다음 이러한 요소를 Androidify 앱 내의 애셋으로 손쉽게 통합하여 최종 시계 화면을 동적으로 빌드할 수 있습니다.
패키징 및 유효성 검사
템플릿과 아바타가 결합되면 휴대용 애셋 컴파일러 키트 (Pack)를 사용하여 APK를 어셈블합니다.
Androidify에서 Pack은 휴대전화의 네이티브 라이브러리로 사용됩니다. Androidify가 Pack 라이브러리와 상호작용하는 방법에 관한 자세한 내용은 GitHub 저장소를 참고하세요.
전송 전 마지막 단계로 APK는 워치 페이스 푸시 검사기에 의해 확인됩니다.
이 유효성 검사기는 APK가 설치에 적합한지 확인합니다. 여기에는 APK의 콘텐츠를 확인하여 유효한 워치 페이스인지 확인하는 작업과 일부 성능 확인이 포함됩니다. 유효한 경우 검사기에서 토큰을 생성합니다.
이 토큰은 워치에서 설치하는 데 필요합니다.
시계 화면 전송
Wear OS의 Androidify 앱은 WearableListenerService를 사용하여 웨어러블 데이터 영역의 이벤트를 수신 대기합니다.
휴대폰 앱은 MessageClient를 사용하여 프로세스를 설정한 다음 ChannelClient를 사용하여 APK를 스트리밍하는 방식으로 시계 화면을 전송합니다.
시계에 시계 화면 설치
Wear OS 기기에서 시계 화면을 수신하면 Androidify 앱은 새로운 워치 페이스 푸시 API를 사용하여 시계 화면을 설치합니다.
val wfpManager =
WatchFacePushManagerFactory.createWatchFacePushManager(context)
val response = wfpManager.listWatchFaces()
try {
if (response.remainingSlotCount > 0) {
wfpManager.addWatchFace(apkFd, token)
} else {
val slotId = response.installedWatchFaceDetails.first().slotId
wfpManager.updateWatchFace(slotId, apkFd, token)
}
} catch (a: WatchFacePushManager.AddWatchFaceException) {
return WatchFaceInstallError.WATCH_FACE_INSTALL_ERROR
} catch (u: WatchFacePushManager.UpdateWatchFaceException) {
return WatchFaceInstallError.WATCH_FACE_INSTALL_ERROR
}Androidify는 시나리오에 따라 addWatchFace 또는 updateWatchFace 메서드를 사용합니다. 시계 모드 푸시는 특정 앱이 언제든지 설치할 수 있는 시계 모드의 수인 '슬롯' 개념을 정의합니다. Wear OS 6의 경우 이 값은 실제로 1입니다.
Androidify의 접근 방식은 여유 슬롯이 있으면 시계 모드를 설치하고, 그렇지 않으면 기존 시계 모드를 새 시계 모드로 바꾸는 것입니다.
활성 워치 페이스 설정
프로그래매틱 방식으로 시계 화면을 설치하는 것은 좋은 단계이지만 Androidify는 시계 화면이 활성 시계 화면이기도 해야 합니다.
시계 모드 푸시는 앱이 이를 달성할 수 있도록 부여해야 하는 새로운 런타임 권한을 도입합니다.
com.google.wear.permission.SET_PUSHED_WATCH_FACE_AS_ACTIVE
이 권한을 획득하면 wfpManager.setWatchFaceAsActive() 메서드를 호출하여 설치된 워치 배경화면을 활성 워치 배경화면으로 설정할 수 있습니다.
하지만 Androidify에는 다음과 같은 여러 고려사항이 있습니다.
setWatchFaceAsActive는 한 번만 사용할 수 있습니다.SET_PUSHED_WATCH_FACE_AS_ACTIVE는 사용자가 거부한 후 다시 요청할 수 없습니다.- Androidify가 이미 활성 워치 페이스를 제어하고 있을 수 있습니다.
자세한 내용은 Androidify에서 활성 논리를 설정하는 방법을 참고하세요.
Wear OS용 워치 페이스 푸시 시작하기
워치 페이스 푸시는 다재다능한 API로, Androidify를 개선하는 데 적합할 뿐만 아니라 모든 기능을 갖춘 워치 페이스 마켓플레이스를 빌드하는 데도 적합합니다.
기존 휴대전화 앱이 있고 사용자의 참여를 유도하고 만족도를 높일 방법을 찾고 계신가요?
또는 마켓 앱을 출시하여 자체 커뮤니티와 갤러리를 만들려는 기존 시계 화면 개발자이신가요?
다음 리소스를 확인해 보세요.
- 워치 페이스 푸시
- 워치 페이스 형식 - 워치 페이스 게시와 관련된 예정된 정책 변경사항도 참고하세요.
- 워치 페이스 디자이너
- Androidify GitHub 저장소
- Androidify Play 스토어 등록정보
동영상을 시청하여 Androidify를 Wear OS로 가져온 방법을 자세히 알아보세요.
워치 페이스 푸시로 어떤 멋진 결과물을 만드실지 기대됩니다.
계속 읽기
-
제품 소식
Android XR에서 Unreal Engine과 Godot이 공식적으로 지원됩니다. 또한 생산성을 높이고 새로운 XR 기능을 지원하도록 설계된 새로운 도구인 Android XR 엔진 허브와 Android XR 상호작용 프레임워크도 출시합니다.
Luke Hopkins • 읽는 데 4분 소요
-
제품 소식
Android 17 출시와 함께 적응형 우선 개발 표준으로 전환합니다. 사용자는 더 이상 단일 폼 팩터에 의존하지 않습니다. 하루 종일 휴대전화, 폴더블, 태블릿, 노트북, 자동차 디스플레이, 몰입형 XR 환경 간에 전환합니다.
Fahd Imtiaz • 읽는 데 4분 소요
-
제품 소식
콘텐츠의 검색 가능성을 높이고 미래의 TV 환경에 앱을 대비할 수 있도록 설계된 Google TV 기능과 개발자 도구를 소개합니다.
Paul Lammertsma • 읽는 데 4분 소요
소식 받아보기
Android 개발 관련 최신 정보를 이메일로 받아 보세요.