앱 기본사항

Notability 및 Logitech과 함께하는 Googlebook의 첫 번째 물결

스피커

  • 에밀리 로버츠

    개발자 관계팀 엔지니어

  • 라이언 시어

    Android 책임자

  • 조 예저우 왕

    Logitech 엔지니어링 관리자

정보

강연 소개

Googlebook의 출시는 고품질 데스크톱급 환경의 새로운 지평을 열어줍니다. 이 세션에서는 이 플랫폼을 처음부터 구축한 두 선구적인 파트너의 비하인드 스토리를 살펴봅니다.

Notability가 Jetpack Compose를 사용하여 데스크톱급 Android 앱을 만드는 여정을 공유합니다. 데스크톱을 우선적으로 고려하여 다른 앱 플랫폼에서 이전한 여정을 알아보세요. 두 번째로 Logitech에서 하드웨어 측면을 자세히 살펴보고 Googlebook과 원활하게 통합되도록 주변기기를 빌드하고 맞춤설정하는 방법을 설명합니다. 이 세션에 참여하여 입력 최적화, 대형 화면 API 활용, 하드웨어와 소프트웨어 전반에서 프리미엄급의 일관된 사용자 환경 제공에 관한 실용적이고 실제적인 정보를 얻으세요.

요약

  • Jetpack Compose와 Navigation 3를 사용하면 기기 폼 팩터가 아닌 사용 가능한 창 크기에 따라 기기 전반에서 레이아웃을 쉽게 조정할 수 있습니다.
  • 데스크톱급 환경을 제공하려면 키보드, 트랙패드와 같은 다중 입력 모델을 지원해야 합니다. Android 17의 '다른 기기에서 계속'과 같은 기능을 사용하면 사용자가 기기 간에 작업을 전달할 수도 있습니다.
  • Jetpack Ink는 개발자에게 맞춤 렌더링 스레드나 복잡한 레이어 핸드오프를 관리할 필요 없이 지연 시간이 짧은 그리기 파이프라인을 제공합니다.
  • 허용 목록에 추가된 Peripheral Customization API를 사용하면 개발자가 공급업체 및 제품 ID를 사용하여 주변기기 하드웨어 트리거를 OS 작업에 매핑할 수 있습니다.

Gemini Notebook

주제

  • googlebook
  • jetpack-compose
  • jetpack-ink
  • navigation-3
  • large-screens
  • peripheral-customization
  • kotlin-multiplatform

스크립트

Googlebook용 빌드 소개

  • 안녕하세요. 저는 Developer Advocate인 에밀리 로버츠입니다. 약 9년 동안 노트북에서 Android 앱을 사용해 왔습니다.

  • Googlebook 출시가 이루어졌습니다.

  • 확인

  • 노트북 분야에 혁신을 가져오고 있다는 점이 정말 멋지다고 생각합니다.

  • Googlebook에서 앱을 멋지게 보이게 만드는 데 많은 투자를 한 두 개발자와 함께 이 자리에 서게 되어 정말 기쁩니다.

  • 안녕하세요.

  • Notability의 라이언입니다.

  • 저는 Android 관리자이며, 이 앱은 최근 Android에 출시된 디지털 노트북 앱입니다.

  • iOS, 데스크톱, Google 북스에서도 사용할 수 있습니다.

  • 안녕하세요.

  • 저는 Logitech의 조입니다. Logitech은 우수한 하드웨어와 주변기기로 잘 알려져 있습니다.

  • 그리고 이러한 게임을 새로운 플랫폼으로 가져온 방법에 대해 이야기하겠습니다.

대형 화면용 Android 앱 디자인

  • 밀어버릴 거야.

  • 그래서 Google 도서가 탄생했습니다.

  • 확인

  • 확인

  • 확인

  • 직접 사용해 보시거나 데모 부스에서 사용해 보셨기를 바랍니다.

  • 물론 앱이 어떻게 표시되는지 확인하는 것도 잊지 마세요.

  • Android 생태계가 성장하고 있다는 표준적인 이야기를 하겠습니다.

  • 9년 동안 이 말을 해왔는데, 지금도 여전히 사실입니다.

  • 앱은 모든 화면 크기와 기기에서 사용자의 요구사항을 충족할 수 있도록 발전해야 합니다.

  • 이제는 성능이 우수하고 제대로 작동하는 앱 레이아웃을 갖추는 것이 일반적인 관행입니다.

  • 이를 위한 가장 좋은 방법은 Jetpack Compose와 Navigation 3를 사용하는 것입니다.

  • 입력도 마찬가지입니다.

  • 정상적으로 작동할 것입니다.

  • 물론 앱의 아키텍처와 상태 관리도 모두 레이아웃과 입력의 일부입니다.

  • ADS에서는 최신 도구와 권장사항을 사용하여 이를 수행하는 방법에 관한 다양한 강연이 진행됩니다.

  • 하지만 오늘은 처음부터 Googlebook을 위해 개발해 온 개발자들을 위한 자리를 마련하고 그들의 이야기를 들어보는 좋은 기회가 될 것 같습니다.

  • Notability는 Googlebook을 위해 처음부터 새롭게 설계된 강력한 메모 앱입니다.

  • Logitech은 키보드, 마우스, 기타 주변기기가 Chromebook에서 작동하도록 하는 데 그치지 않고 사용자 맞춤설정을 비롯해 Chromebook에서 매우 잘 작동하도록 노력했습니다.

  • 조, 제가 먼저 말씀드려서 죄송하지만 자세히 살펴보겠습니다.

  • 그것만으로도 충분합니다.

  • 이번에는 랩이 없습니다. 죄송합니다.

  • 그리고 프리스타일은 절대 안 돼.

  • 어쨌든 Googlebooks에 Notability를 출시하게 되어 정말 기쁩니다. 이제 라이언에게 발표를 넘기겠습니다.

  • 감사합니다.

Android에 Notability 도입

  • 좋습니다.

  • 감사합니다, 엠.

  • Google Books에 참여하게 되어 정말 기쁩니다.

  • Notability는 현재 수백만 명의 학생이 학습하고 전문가가 메모하는 공간입니다.

  • 앞서 말씀드린 것처럼 이제 Android에서 사용할 수 있으며, Google에서 이를 어떻게 빌드했는지, Android용으로 올바르게 빌드하면 어떻게 Googlebook에 최적화된 상태로 바로 빌드할 수 있는지 간단히 설명해 드리겠습니다.

  • 우선, 약 2년 전에 이 프로젝트를 시작했을 때 iOS 앱을 그대로 이식하여 사용자에게 제공하는 것으로 충분하다고 생각하지 않았습니다.

  • 사용자의 기대에 부응하는 진정한 네이티브 환경을 제공하면서도 모든 기능을 동일하게 제공하고 싶었습니다.

  • 이를 위해 Material Design과 구성요소를 사용하여 모든 화면을 처음부터 맞춤설정했습니다.

  • 또한 Jetpack Compose를 기반으로 구축했습니다.

  • Jetpack Compose를 기반으로 하는 네이티브 Android 애플리케이션이므로 소형 휴대전화와 저사양 기기뿐만 아니라 대형 화면을 갖춘 고사양의 강력한 태블릿, 컴퓨터, XR, 자동차 등 다양한 하드웨어를 지원할 수 있습니다.

  • Jetpack Compose를 사용하면 UI 인터페이스에 많은 추가 기능을 빌드하지 않고도 이러한 기능을 기본적으로 쉽게 지원할 수 있습니다.

  • 이제 Notability로 넘어가겠습니다.

  • Notability의 모든 기능은 Jetpack Compose를 기반으로 빌드되었습니다.

  • UI는 플랫폼 전반에서 일관되며, 기본적으로 한 번만 빌드하면 휴대전화에 표시되는 내용과 태블릿, Googlebook과 같은 더 큰 기기에 최종적으로 표시되는 내용 간에 실질적인 차이가 없습니다.

  • 이를 위해 Navigation 3는 매우 중요한 역할을 합니다.

  • Notability에 내장된 Google의 Navigation 3는 화면 크기에 따라 레이아웃을 맞춤설정할 수 있으며, 이 기능이 어떻게 표시될지 걱정할 필요가 없습니다.

  • 이 데모에서는 측면 패널을 열 수 있는 공간이 있으면 측면 패널이 열리는 것을 볼 수 있습니다.

  • 그렇지 않은 경우 하단 시트로 표시됩니다.

  • 그렇다면 코드로 어떻게 표현할까요?

  • 여기 표시된 코드에서 측면의 실제 요약 패널에 대한 진입점이 하나 있고 이를 백 스택에 추가하는 것을 볼 수 있습니다.

  • 그런 다음 맞춤 장면 전략이 공간이 있는지 여부에 따라 측면 패널의 레이아웃을 선택합니다.

  • 따라서 태블릿이나 Googlebook 기기에서는 사용 가능한 공간을 찾아 공간을 확보하고 오른쪽에서 패널을 밀어 넣습니다.

  • 하지만 휴대전화나 폴더블과 같은 기기에서는 패널을 제대로 표시할 공간이 충분하지 않을 수 있으므로 대신 하단 시트로 표시됩니다.

  • Notability는 기기 유형(휴대전화, Googlebook, 태블릿, 폴더블 등)에 구애받지 않고 창 크기에 맞게 조정되므로 UI가 사용자의 필요에 맞게 자동으로 조정되기 쉽습니다.

  • 휴대전화에서는 모든 버튼과 도구가 엄지손가락으로 쉽게 닿을 수 있는 위치로 재배치됩니다.

  • 태블릿에서는 공간이 더 넓고 화면과 상호작용하기가 더 쉽기 때문에 모든 기본 콘텐츠 옆에 탐색 패널이 표시됩니다.

  • 폴더블에서는 폴드를 활용하여 학습 퀴즈와 같은 고유한 레이아웃과 UI를 제공합니다. 사용자는 하단에 답변을 입력하고 상단에서 실제 퀴즈 진행 상황을 확인할 수 있습니다.

  • 마지막으로 Google 도서에서는 창 크기가 부드럽게 조절됩니다.

  • 따라서 데스크톱의 다른 일반적인 창 모드 애플리케이션과 마찬가지로 Notability는 나란히 표시해야 하는 필요에 따라 창 크기를 조절하면 이에 맞게 조정됩니다.

  • 앞서 언급했듯이 Google 도서의 거의 모든 데스크톱 환경에서 작동하는 적응형 UI를 구축할 때

  • 정답에 매우 근접한 답변을 얻을 수 있습니다.

  • 하지만 데스크톱급 환경, 즉 정말 놀라운 환경을 원한다면 몇 가지 권장사항을 따르는 것이 좋습니다.

  • 첫째, 키보드 우선입니다.

  • 사용자는 일반 태블릿이나 휴대전화 기기에서만큼 터치에 민감하지 않으므로 키보드 단축키와 Android 단축키 목록에 쉽게 액세스할 수 있는 방법이 매우 중요합니다.

  • 다음으로, 기기 유형과 사용 가능한 입력 주변기기에 따라 레이아웃이 달라지도록 기능을 설계할 수 있습니다.

  • 키보드가 연결된 노트북이나 마우스 같은 것을 감지하면 홈 화면에 약간 다른 UI를 제공하여, 스타일러스와 자동 필기 메모가 기본 옵션인 태블릿보다 해당 유형의 사용자가 선호할 것으로 생각되는 도구로 사용자를 리디렉션합니다.

  • 또 다른 고려 사항은 여러 기기가 어떻게 상호작용하는지입니다.

  • '이어서 사용'은 Android 17의 새로운 기능으로, 한 기기에서 다른 기기로 앱을 원활하게 전달할 수 있습니다.

  • 이 예시에서는 휴대전화에서 더 큰 데스크톱 기기로 메모를 전달하고 있습니다.

  • 메모 ID를 빠르게 동기화하고 Google 측에서 진행 상황을 빠르게 확인하면 됩니다.

  • 따라서 Googlebook 기기에 간단한 앱 인텐트를 전송한 다음 중단한 지점부터 바로 이어서 작업할 수 있습니다.

  • 데스크톱급 기기에서 고려해야 할 또 다른 사항은 멀티 입력 지원 모델입니다.

  • 따라서 앞서 언급한 키보드 단축키뿐만 아니라 이전과는 다른 유형의 확대/축소 및 스크롤 동작을 지원하는 트랙패드도 사용할 수 있습니다.

  • 또한 이전에는 없었던 컨텍스트 메뉴를 사용자에게 제공해야 할 수도 있습니다.

  • 또한 많은 Googlebook 기기가 여전히 터치스크린 기기이므로 사용자가 기기와 상호작용할 때 스타일러스와 손가락뿐만 아니라 트랙패드 커서에 대해서도 다른 입력 인식을 제공해야 합니다. 이 세 가지는 모두 다르게 처리되어야 하기 때문입니다.

Jetpack Ink를 사용한 지연 시간이 짧은 그리기

  • Notability와 같이 잉크와 메모 작성에 관심이 있다면 Jetpack Ink를 사용하는 것이 좋습니다.

  • 따라서 이 기능은 복잡하고 번거로운 스레드, 렌더링, 버퍼 리더, 기타 여러 가지(잠시 후에 보여드리겠습니다)를 관리할 필요 없이 잉크에 지연 시간이 짧은 빌드 시스템을 제공하는 데 사용됩니다.

  • 하지만 지금 작동한다면 Logitech 덕분에 Notability 앱의 실시간 데모를 보여드릴 수 있습니다.

  • 네, 좋습니다.

  • 자, 어서요.

  • 좋습니다.

  • 이전에 실행한 테스트가 있습니다.

  • 하지만 보시다시피 손가락을 사용하고 있으므로 손가락 입력이 여전히 인식됩니다. 아주 좋습니다.

  • 원하는 경우 마우스를 사용할 수도 있습니다.

  • 하지만 현재 Android 전용 맞춤 브러시를 빌드할 수 있었습니다.

  • 여기에서 무지개 및 반짝이 효과를 선택했으므로 입력 또는 잉크 효과가 Jetpack Ink 라이브러리의 영향을 받습니다.

  • 여기에서 메시지를 한 번 더 작성해 보겠습니다.

  • 안녕하세요.

  • 그런 다음 마지막 부분에 Android 녹색을 선택합니다.

  • 정확하게 터치하기가 어렵습니다.

  • Android 녹색이네요.

  • 그러면 여기에서 기본 모델로 사용하는 색상에 따라 실제 색상이 변경되는 것을 확인할 수 있습니다.

  • 좋습니다.

  • 과거에는 이러한 유형의 브러시를 만들 때 모든 맞춤 셰이더와 인터페이스, 기타 모든 요소를 올바르고 보기 좋게 만드는 데 몇 달이 걸리기도 했습니다.

  • 다행히도 Jetpack Ink 덕분에 AI와 맞춤 브러시 빌더를 사용하면 1주일 이내에 완료할 수 있습니다.

  • 그러니 어떤 종류의 문신이든 관심이 있다면 알려주세요.

  • 시간을 많이 절약해 주는 훌륭한 API입니다.

  • 좋습니다.

  • 앞서 말씀드린 것처럼, 이와 같은 모습입니다.

  • 그래서 '젖은 잉크 레이어'라는 것이 있습니다.

  • 이것은 진행 중인 잉크로, 아직 그려지고 있으며, 건조한 잉크 레이어와 비교하여 매우 반응성이 높아야 합니다.

  • 물리적인 관점에서 생각하면 이해가 됩니다.

  • 저장된 잉크는 이미 완료되었습니다.

  • 따라서 이전에는 인수인계가 전적으로 저희의 책임이었습니다.

  • 따라서 스레딩을 하고, 다시 그리고, 정리하고, 드라이 레이어에 전달하고, 동기화되고 깜박이지 않는지 확인해야 하는 등 모든 복잡한 과정을 거쳐야 했습니다.

  • 그리고 마지막에는 Notability의 고유성을 적용해야 했습니다.

  • 자체 곡선 피팅 모델이 있고, 필기체를 돋보이게 하는 방법도 있습니다.

  • 이것이 기존 모델이었습니다.

  • Jetpack Ink 덕분에 곡선 피팅을 맞춤 진행률 도형 뷰에 입력하기만 하면 Android에서 바로 마법처럼 작동합니다.

  • Jetpack Ink와 다른 Google 라이브러리를 논의할 때 고려하는 또 다른 사항은 KMP입니다.

  • 그래서 이미 빌드된 iOS 코드를 살펴보고 'Android와 iOS 간에 일부 로직을 공유하고 싶다.

  • 모델, 변경사항, 복잡한 수학이 있습니다.

  • 공유하는 것이 합리적입니다."

  • 그래서 'C++나 Apple의 Objective-C를 사용하자'고 생각했습니다.

  • Kotlin 멀티플랫폼은 iOS 엔지니어가 구현하기 더 쉬울 뿐만 아니라 실제로 더 빨랐습니다.

  • Kotlin을 사용해 성능을 개선하고 Android 코드를 많이 복사할 수 있었을 뿐만 아니라 장기적으로 iOS에도 더 쉬웠습니다.

  • 따라서 코드를 공유하고 싶다면 Kotlin 멀티플랫폼을 살펴보는 것이 좋습니다.

  • 현재 검토 중입니다.

  • 아직 100% 지원되는 것은 아닙니다. 아시다시피 다양한 AI 모델을 사용하면 여러 위치에 코드를 저장하는 것만으로도 더 쉽게 부정행위를 할 수 있지만, Google은 여전히 이 문제를 적극적으로 조사하고 있으며 매우 중요하게 생각하고 있습니다.

  • 이제 Notability만의 특별한 기능을 살펴보겠습니다.

  • Android에서 작동하는 텍스트 편집기를 빌드하려고 하면 현재로서는 대규모의 거대한 문서 텍스트 편집기를 빌드하는 좋은 방법이 없다는 것을 알 수 있습니다.

  • 기본 Android 입력란 수정은 작은 UI, 작은 EditText, 짧은 형식의 항목에 관한 것입니다.

  • 결국 저희는 기존 Android API를 기반으로 하면서도 훨씬 더 큰 문서, 즉 수천 페이지의 텍스트를 동시에 처리할 수 있는 매우 복잡한 시스템을 구축해야 했습니다. 이 시스템은 공동 편집이 가능하므로 다른 곳에 있는 사용자가 500페이지 떨어진 곳에서 편집할 수 있으며, 이로 인해 작업 중인 작업에 영향을 미치는 변화가 발생할 수 있습니다.

  • 이를 위해 Google은 키 입력을 두 가지 경로로 처리합니다.

  • 첫 번째 경로는 최선을 다해 이 키가 여기에 표시되도록 하는 것입니다.

  • 현재 내부 상황을 파악할 수 있는 모든 정보를 바탕으로 판단할 때 이 정도면 괜찮은 것 같습니다.

  • 그런 다음 간단한 동기화를 진행합니다.

  • 백엔드로 이동하여 공동 운영자를 확인하고 '모든 것이 정상인가요?'라고 묻습니다.

  • 적절한 답변인가요?

  • 괜찮은가요?"

  • 변경해야 할 사항이 있으면 그 시점에 다시 조정합니다.

  • 두 사용자가 같은 줄에서 키를 누르고 있다면 누가 무엇을 얻을지 약간 혼란스러울 수 있습니다.

  • 하지만 대부분의 경우 이 방법은 매우 효과적입니다.

  • 여기서 언급하는 이유는 이 작업에 엄청난 노력을 기울이고 있으며 오픈소스로 만드는 것을 고려하고 있기 때문입니다.

  • 따라서 이 컨퍼런스에 참석한 분이나 온라인에서 이 내용을 보시는 분 중 이 프로젝트에 협력하고 싶거나 좋은 아이디어가 있다고 생각하는 분은 알려주시기 바랍니다.

  • 여기에 투자할 가치가 있는지 고민하고 있지만, 저희에게는 큰 도전이었고 결과에 매우 만족하고 있습니다.

  • 좋습니다. 이제 잉크가 작동하는 방식입니다.

  • 협업 모델 측면에서 보면, Google 측에서 어떻게 작동하는지 조금 더 직접적으로 보여줍니다.

  • 여기에서 볼 수 있듯이 세 단계가 있습니다.

  • 터치다운이 있습니다. 연결된 기기(이 경우 iPad)에 '잉크 이벤트를 시작합니다'라고 알립니다.

  • 그런 다음 실제 그림이 있습니다. 사용자가 기기를 얼마나 오래 유지하는지, 즉 펜을 얼마나 오래 돌리는지에 따라 수백만 개가 있을 수 있습니다.

  • 너무 오래 걸리지 않기를 바랍니다.

  • 어느 시점에는 한계가 있다고 생각하지만, 일반적인 사용 사례에서는 괜찮습니다.

  • 그런 다음 들어 올리기 이벤트가 있습니다.

  • 따라서 이를 관리하기 위해 모델에 임시 객체를 유지합니다.

  • 즉, iPad에서는 '획이 들어오고 있지만 아직 여기에 없다'고 말합니다.

  • 상호작용할 수 없습니다.

  • 일시적인 것입니다."

  • 완료 이벤트가 실행된 후에야 비로소 '좋습니다.

  • 이제 iOS나 다른 클라이언트가 가져와서 상호작용할 수 있는 하나의 객체로 전체를 대체합니다."

  • 이것은 또한 우리가 오픈 소싱을 조금씩 시도하고 있는 것입니다.

  • 이것은 직접적인 잉크 입력이 아니라 일시적인 요소, 특히 텍스트 레이어에 있는 요소입니다.

  • 좋습니다.

  • 그리고, 네.

  • 사용을 권장하는 다른 기능도 있습니다.

  • 온디바이스 AI는 훌륭합니다.

  • 문서 스캔에 사용하므로 문서를 스캔하고 PDF 텍스트를 분석하고 필기 인식을 수행할 수 있습니다.

  • 또한 Gemini와 같은 개방형 Cloud AI 모델을 사용하여 스마트 노트를 생성합니다. 이 노트는 사용자의 노트를 분류하고 요약한 후 학습 모델에 더 적합하고 상호작용이 가능한 방식으로 사용자에게 다시 제공합니다.

  • 이 모든 것이 결합되어 Notability가 노트북 애플리케이션처럼 느껴지게 합니다.

  • 결국 이것이 목표입니다.

  • 다양한 흥미로운 모델, 다양한 기능, 텍스트, 입력이 있지만 중요한 것은 노트북 애플리케이션처럼 느껴지는지, 아니면 큰 화면에 휴대전화 앱을 띄워 놓고 장난치는 것처럼 느껴지는지입니다.

  • 키보드, 트랙패드, 스타일러스, 창 크기 조절 등은 모두 사용자에게 좋은 경험을 제공하기 위해 제대로 구현해야 하는 핵심 기능입니다.

  • 하지만 앞서 언급했듯이 Jetpack Compose, Navigation 3, Material Design 등 이 모든 것이 이를 지원합니다.

  • 따라서 제대로만 한다면 실제로 큰 부담이 되지 않습니다.

  • 여기까지 오는 건 꽤 쉬워요.

  • 그렇습니다.

  • 핵심 요점입니다.

  • Android의 미래를 생각할 때 더 이상 기기에 대해 생각하지 않습니다.

  • 휴대전화, 폴더블, XR 기기, 데스크톱, 노트북, 태블릿, 자동차, TV 등 기기 유형에 대해 생각하지 않을 것입니다.

  • 대신, 사용할 수 있는 화면 크기는 무엇이고 사용자에게 제공되는 입력 모달은 무엇인지가 중요합니다.

  • 앞으로도 최상의 환경을 제공할 수 있도록 노력하겠습니다.

  • 이전 슬라이드에서 언급했듯이 Compose와 Nav 3를 사용하면 이 모든 것을 쉽게 지원할 수 있습니다.

  • 그리고 Google은 매일 Jetpack Ink나 온디바이스 Gemini와 같이 강력한 새 API를 출시하고 있습니다. 이러한 API를 사용하면 핵심 환경을 쉽게 구축하고, 나만의 고유한 마법 같은 요소에 집중할 수 있습니다.

  • 좋습니다.

  • 그렇습니다.

  • 감사합니다.

  • 제 발표는 여기까지입니다.

  • 궁금한 점이 있으면 나중에 알려주세요. Notability에 문의하셔도 됩니다.

  • 이 앱은 두 달 전에 Android에 새로 출시되었습니다.

  • 드디어 베타 버전이 종료되었습니다.

  • 그러니 부담 없이 사용해 보세요.

  • 의견을 보내주세요.

  • 뒤에 있는 데모 프로세스의 Google 도서에서도 사용할 수 있습니다.

  • 이제 Logitech의 조에게 마이크를 넘기겠습니다.

  • 감사합니다.

Googlebook에 Logitech Options+ 제공

  • 좋습니다.

  • 라이언, 감사합니다.

  • 오늘, 죄송합니다.

  • 슬라이드를 가져오겠습니다.

  • 라이언, 감사합니다.

  • 오늘은 주변기기 맞춤설정 앱인 Options+를 Chromebook에 도입한 방법을 공유해 드리겠습니다.

  • 주변기기 경험을 구축한다는 것은 어떤 의미일까요?

  • 지금까지 구축한 것, 그 이면의 몇 가지 엔지니어링 스포트라이트, 로우라이트, 그리고 앞으로의 방향에 대해 다루겠습니다.

  • Logitech 기기는 이전에도 Android와 호환되었으며, 대부분의 사용자는 주변기기를 통해 접근성이 향상된다고 느꼈습니다. 특히 프리미엄 노트북과 외부 모니터에 도킹된 휴대전화에서 이러한 효과가 두드러졌습니다.

  • 이와 관련해 아까 아래층에 있는 Google 북스 데모 부스에서 Logitech 게이밍 순차 기어를 테이블에 연결하고 이를 사용해 태블릿의 화면을 전환하는 것을 보았습니다.

  • 여길 보시면

  • 그렇게 사용할 수도 있습니다.

  • 아, 그리고 페라리는 시퀀셜 기어박스에 5만 유로를 추가로 청구해야 했습니다. 어쨌든.

  • 네.

  • Googlebook은 라이언이 포괄적으로 언급했듯이 작업할 수 있는 공간이 훨씬 더 많습니다.

  • 보시다시피 화면 크기를 조절할 수 있고, 가로 모드, 세로 모드, 정사각형 모드 등 원하는 대로 설정할 수 있으며, 앱 간에 작업할 수 있는 공간이 훨씬 더 많습니다.

  • 작업 중인 항목, 다른 앱, 컨텍스트 전환 등 모든 작업을 계속할 수 있습니다.

  • 이로 인해 앱 디자인이 확실히 바뀌었고, 레이아웃은 전체 절차에서 유용하게 유지되어야 합니다.

  • Logitech은 주변기기 분야에서 많은 경험을 보유한 회사입니다.

  • Google은 이 작업에 매우 강력한 기반을 제공합니다.

  • 따라서 이러한 업무 환경에서는 마우스나 키보드가 사용자가 하루 종일 상호작용하는 방식입니다.

  • 워크플로에 매우 원활하게 진입할 수 있습니다.

  • Logitech이 수십 년간의 경험을 이 작업에 적용한다고 해도 과언이 아닙니다.

  • 이달 초에 45주년을 맞이한 것 같습니다.

  • 로지텍은 창립 2년 차부터 마우스를 제작해 왔습니다.

  • 이러한 경험을 바탕으로 이 분야에 진출하는 데 큰 자신감을 가지고 있습니다.

  • 더 좋은 점은 ChromeOS와 함께한 오랜 역사가 있다는 것입니다.

  • Google은 과거에 ChromeOS와의 최고 수준의 호환성을 보장했습니다.

  • 지금까지 말씀드린 바와 같이, Google은 하드웨어, 소프트웨어, 플랫폼, OS, Google북스 간의 경계를 허무는 실용적인 경험을 제공하고 있습니다.

  • 예를 들어 사용자가 버튼을 누르면 예측 가능한 결과가 표시되는 것처럼 간단할 수 있습니다.

  • 모든 사람이 당연하게 여기는 것과 같습니다.

  • 하지만 실제로는 원활한 구성요소 호환성이 필요합니다.

  • 또한 주변기기와의 호환성도 모두가 좋아하는 요소입니다.

  • 예를 들어 감도를 적절하게 조정하는 것입니다.

  • 65개입니다. 더도 말고 덜도 말고 정확히 65개입니다.

  • 따라서 이 세 가지 요소 간에 원활한 호환성 통합이 필요합니다.

  • 이제 Googlebooks가 출시됨에 따라 Googlebooks용 Options+를 제공합니다.

  • 현재 다양한 마우스와 키보드를 지원하고 있으며 앞으로 더 많은 기기를 지원할 예정입니다.

  • 또한 사용자가 기기를 구성할 수 있는 곳이기도 합니다.

  • 그리고 앞서 언급했듯이 감수성 같은 것도요.

  • 이제 상황이 흥미로워집니다.

  • 구성 가능성에 대해 이야기할 때는 실제로 두 가지 측면을 이야기합니다.

  • 한쪽은 하드웨어, 펌웨어 측면으로, 기능이 펌웨어에 구현됩니다.

  • 다른 한쪽은 이 데모와 프레젠테이션의 핵심인 OS 측면입니다.

  • 여기 계신 분들은 모두 아시겠지만, 과거에는 Android 기기와 대부분의 앱이 자체 샌드박스, 사용자 공간에 있었습니다.

  • 할 수 있는 일에는 특정 제한사항이 있으며, 할 수 없는 일과 원하는 일에도 제한사항이 있는 경우가 많습니다.

  • 이는 Google에 매우 중요한 문제입니다.

  • 이제 스크린샷을 보여드리겠습니다. 나중에 데모를 보여드리겠지만, 여기 스크린샷이 있습니다.

  • 여기 MX Master 4 마우스가 있고, 다양한 기능이 있습니다.

  • 주변기기 세계를 아는 사람이라면 특정 기능이 펌웨어 기능, 기기 기능으로 구현되어 있다는 것을 알 수 있습니다.

  • 그렇지 않은 것도 있습니다.

  • Google은 사용자가 양쪽을 모두 구성할 수 있도록 지원하기 위해 노력하고 있습니다.

  • 저희의 역할은 기본적으로 이러한 옵션을 이해하기 쉽게 만들고, 사용자에게 모든 기능을 제공하며, OS와 펌웨어에 맞게 올바르게 구성하는 것입니다.

  • 이제 간단한 데모를 살펴보겠습니다.

  • 정말 인상적인 데모였습니다.

  • 하지만 다음에는 마우스를 사용해, 라이언.

Options+ 라이브 데모

  • 자, 이제 시작합니다.

  • 내 기기 화면입니다.

  • MX Master 4 마우스가 온보딩되어 있는 것을 볼 수 있습니다.

  • 그럼 시작해 보겠습니다.

  • 앞서 살펴본 것처럼 구성 화면으로 바로 이동합니다. 여기가 바로 마법이 일어나는 곳입니다.

  • 이제 먼저 서클 투 서치를 엄지 버튼에 할당해 보겠습니다.

  • 그런 다음 매직 포인터를 기능 버튼에 추가합니다.

  • 이제 시작해 보겠습니다.

  • 브라우저를 열어 보겠습니다.

  • 여기에서 확인하세요.

  • 여기에서 방금 서클 투 서치를 할당한 엄지 버튼을 누릅니다.

  • 보시다시피 키보드에 원을 그립니다.

  • 완료되었습니다.

  • Google은 이 키보드에 관한 정보를 표시할 뿐입니다.

  • 매우 편리하고 부드럽습니다.

  • 이제 다른 방법을 시도해 보겠습니다.

  • 아, 죄송합니다.

  • 뒤로 가보겠습니다.

  • 매직 포인터를 사용해 보겠습니다.

  • 여기에서 전환해 보겠습니다.

  • 기능 버튼을 누르고 태그를 지정한 다음 '이 기기는 무엇인가요?'를 누르면

  • 이제 완료되었습니다.

  • Google에서 검색을 시작하고 결과를 표시합니다.

  • 이 기능의 장점은 전체 워크플로를 한 손으로 조작할 수 있다는 점입니다.

  • 기능을 할당하고, 누르고, 원을 그리고, 클릭하면 끝입니다.

  • 이러한 작업은 사용자의 접근성과 작업 방식을 크게 개선할 것으로 기대됩니다.

  • 이제 슬라이드로 돌아가겠습니다.

주변기기 맞춤설정 API 개요

  • 그렇다면 무엇이 이런 결과를 가져왔을까요?

  • 과거에는 앱으로 할 수 없는 일이 많았기 때문입니다.

  • Googlebooks와 Android 기기에서 모두 사용할 수 있는 Peripheral Customization API입니다.

  • 하지만 Google의 메모는 다음과 같습니다.

  • 현재 이 API는 허용 목록에 포함되어 있습니다.

  • 하지만 이번 분기인 2026년 4분기에 Android 업데이트와 함께 출시될 예정입니다.

  • 출시되면 전 세계 개발자가 사용할 수 있을 것입니다.

  • 이제 기술적인 측면을 조금 살펴보겠습니다.

  • 이 전체에는 세 가지 주요 구성요소가 있습니다. 기기, 트리거(키 또는 버튼일 수 있음), 작업(앱 OS 측)입니다.

  • 이제 이 코드 스니펫을 간단히 살펴보겠습니다.

  • 맨 위에서는 공급업체 ID와 제품 ID를 사용하여 기기를 정의합니다.

    // Vendor and product Information
    const val VENDOR_ID = 1234
    val pid = 123
    
    // Use the mouse Middle Button as the trigger
    val trigger = ButtonCustomizationTrigger(MotionEvent.BUTTON_TERTIARY)
    
    // Set Voice Assistant as the action
    val actionBuilder = AppCustomizationAction.Builder(component, ACTION_MAIN)
    actionBuilder.setData(ActionId.ACTION_VOICE_ASSIST.actionId) // Action IDs are predefined
    val action = actionBuilder.build()
    
    val im = context.getSystemService(INPUT_SERVICE) as InputManager
    im.addPeripheralCustomization(VENDOR_ID, pid, trigger, action)
  • 일반적으로 vid 및 pid라고 합니다.

  • 아래로 이동하여 트리거를 정의하기 시작합니다.

  • 여기에서 볼 수 있듯이 가운데 버튼을 트리거로 사용하려고 합니다.

  • 여기에서 가운데 버튼을 OS 기능의 음성 어시스턴트 부분에 매핑하려고 합니다.

  • 그렇죠?

  • 여기 AppCustomizationAction에서 actionBuilder가 있고 여기에도 있습니다.

  • 그런 다음 아래로 이동하여 제품, 기기, 트리거, 작업 간의 매핑을 등록합니다.

  • 물론 실제 코드는 이보다 조금 더 복잡하지만 전체적인 개념은 이렇습니다.

  • 매우 간단하고 사용하기 쉽습니다.

  • 이제 또 다른 멋지고 흥미로운 기능을 살펴보겠습니다.

  • 모든 사용자가 쉽게 볼 수 있도록 여기에 GIF 파일을 넣었습니다.

  • 기본적으로 호환되고 지원되는 기기(이 경우 Logitech mobifold 마우스)가 연결되면 OS에서 표준 알림을 트리거하여 '해당 기기용 앱이 있습니다'라고 알려줍니다.

  • 사용자에게 알립니다.

  • 클릭하면 Play 스토어로 이동하여 바로 설치할 수 있습니다.

  • 이를 빠른 페어링 검색이라고 합니다.

  • 이제 마지막으로 UI 측면으로 넘어가겠습니다.

  • 라이언이 Googlebook의 UI 구현 방식에 관해 많은 것을 다루었으므로 여기서는 빠르게 진행하겠습니다.

  • 보시다시피 Options+는 Windows, Mac, 그리고 이제 Googlebook과 같은 다양한 플랫폼에서 실행됩니다.

  • 따라서 저희는 두 가지 목표를 가지고 있습니다. 하나는 플랫폼별로 특화된 느낌을 주는 것이고, 동시에 전반적으로 유사한 느낌을 주는 것입니다. 즉, 한 플랫폼에서 Options+에 익숙해지면 다른 플랫폼에서도 원활하게 사용할 수 있어야 합니다.

  • 즉, 특정 플랫폼을 활용하면서도 동일한 디자인 언어를 사용해야 합니다.

  • 보시다시피 전반적으로 일관된 디자인 언어가 적용되었습니다.

  • 앞서 설명했듯이 Googlebook 사용자는 Googlebook을 노트북/데스크톱 방식으로 사용하는 경향이 있습니다.

  • 따라서 Googlebook에서도 앱 자체가 데스크톱 앱처럼 보입니다.

  • 따라서 앱 자체가 데스크톱 앱처럼 작동할 수 있으며 창 크기, 다양한 터치에서 잘 작동하고 물론 마우스와 키보드를 사용하도록 제어할 수 있습니다.

향후 로드맵 및 결론

  • 지금까지 Googlebook에서 Logitech 주변기기와 Options+를 사용하는 방법을 간략하게 알아봤습니다.

  • 효과도 뛰어납니다.

  • 하지만 이제 시작일 뿐입니다.

  • 몇 가지 단계가 있습니다. 우선 이 환경을 더 많은 기기, 더 많은 키보드, 마우스, 기타 주변기기에 제공하고 실제 사용자 의견을 사용하여 이 앱 자체를 개선하고자 합니다.

  • 그리고 물론 가장 중요한 것은 앞으로 Google과 더 협력하고 새로운 플랫폼에 더 깊이 통합하는 것입니다.

  • 따라서 Googlebook의 궁극적인 목표는 주변기기 맞춤설정을 Googlebook 사용 시 매우 자연스러운 경험으로 만들고 사용자가 원하는 방식으로 작업할 수 있도록 지원하는 것입니다.

  • 알겠습니다.

  • 아래층에 있는 부스를 방문하여 Options+와 멋진 Logitech 기기를 직접 사용해 보세요.

  • 파트너인 Google과 시간을 내어 주신 모든 분께 감사드립니다.

  • 감사합니다.

코드

코드 스니펫

'주변기기 맞춤설정 API 개요'의 26:16에 있는 Kotlin 스니펫
// Vendor and product Information
const val VENDOR_ID = 1234
val pid = 123

// Use the mouse Middle Button as the trigger
val trigger = ButtonCustomizationTrigger(MotionEvent.BUTTON_TERTIARY)

// Set Voice Assistant as the action
val actionBuilder = AppCustomizationAction.Builder(component, ACTION_MAIN)
actionBuilder.setData(ActionId.ACTION_VOICE_ASSIST.actionId) // Action IDs are predefined
val action = actionBuilder.build()

val im = context.getSystemService(INPUT_SERVICE) as InputManager
im.addPeripheralCustomization(VENDOR_ID, pid, trigger, action)