몇 달 전에 Androidify를 다시 출시하여 맞춤 Android 봇을 생성하는 앱으로 제공했습니다. 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 생태계는 빠르게 확장되고 있으며 삼성 갤럭시 XR은 이미 오늘 출시되었습니다.
Stevan Silva, Vinny DaSilva • 읽는 데 3분 소요
-
제품 소식
매년 Google I/O에서는 Android 개발을 비롯한 생태계와 제품 전반에 걸쳐 새로운 소식과 리소스를 발표합니다. 개발이 AI 및 에이전트 지원 도구로 전환됨에 따라 Google은 Android용 빌드 방식에 관계없이 개발자를 더 잘 지원하기 위해 제품을 확대했습니다.
Simona Milanovic • 2분 읽기
-
제품 소식
Google I/O ‘26에서 Android 생태계의 최신 발전이 개발 효율성을 극대화하면서 앱의 품질을 높이는 데 어떻게 도움이 되는지 소개했습니다.
Ataul Munim • 읽는 데 3분 소요
소식 받아보기
Android 개발 관련 최신 정보를 이메일로 받아 보세요.