라이브 카드
이 클래스를 사용하면 활성 카드를 만들어 타임라인에 게시할 수 있습니다.
라이브 카드를 만드는 방법에 관한 자세한 내용은 라이브 카드 개발자 가이드를 참고하세요.
실시간 카드의 수명
라이브 카드는 게시되는 전체 시간 동안 소유하는 장기 실행 컨텍스트가 필요하므로 백그라운드 Service
에서 관리해야 합니다. 그러면 서비스가 시작되자마자 또는 서비스가 모니터링하는 다른 이벤트에 대한 응답으로 라이브 카드를 게시할 수 있습니다. 마찬가지로 카드가 더 이상 관련이 없거나 서비스가 소멸되면 카드를 게시 취소해야 합니다.
라이브 카드를 게시할 때 사용자에게 미치는 영향을 선택할 수 있습니다. 알림 없이 게시하면 해당 카드가 가시적인 효과 없이 타임라인에 삽입됩니다. 사용자가 카드를 보려면 카드를 스와이프해야 합니다. 라이브 카드가 게시된 직후에 자동으로 표시되도록 할 수도 있습니다. 이는 애플리케이션의 기본 사용자 인터페이스가 활동이 아닌 라이브 카드일 때 유용한 경우가 많습니다.
실시간 카드에 콘텐츠 표시
라이브 카드는 레이아웃 리소스의 콘텐츠를 표시하거나 코드를 그리기 표면에 직접 렌더링하도록 하여 표시할 수 있습니다. 카드의 콘텐츠를 업데이트해야 하는 빈도와 주로 위젯 또는 자유 형식 그래픽을 렌더링하는지 여부에 따라 애플리케이션에 가장 적합한 방법을 선택합니다.
원격 뷰를 사용하여 레이아웃 확장
애플리케이션에 표준 위젯과 간헐적인 업데이트만 필요한 경우 (새로고침 간격 약 몇 초 이상) RemoteViews
클래스를 사용하여 카드를 만듭니다.
RemoteViews
객체를 사용하면 자체 애플리케이션 코드와는 별도의 프로세스에서 실행되는 Glass 타임라인을 통해 개발자가 만든 레이아웃을 확장할 수 있습니다.
LiveCard liveCard; // initialized elsewhere RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.my_layout); liveCard.setViews(views);
RemoteViews
를 사용하는 카드를 게시하면 실시간 카드에서 다시 setViews
를 호출하여 업데이트를 강제로 적용하지 않는 한 set*
메서드를 호출하여 뷰에 적용한 변경사항이 타임라인에 표시되지 않습니다.
라이브 카드 표면에 직접 그리기
애플리케이션에 더 자주 업데이트 (초당 여러 번)가 필요하거나 표준 위젯에서 지원하는 것보다 더 정교한 그래픽을 렌더링해야 하는 경우 직접 렌더링을 사용 설정하고 카드 표면에 SurfaceHolder.Callback
를 추가하세요.
LiveCard liveCard; // initialized elsewhere liveCard.setDirectRenderingEnabled(true); liveCard.getSurfaceHolder().addCallback(callback);
그런 다음 백그라운드 스레드 내부의 표면에 직접 그리거나 외부 이벤트 (예: 센서 또는 위치 업데이트)에 대한 응답으로 그릴 수 있습니다. surfaceCreated
또는 surfaceDestroyed
메서드를 사용하여 카드를 표시하거나 숨길 때 렌더링 로직을 시작하고 중지합니다.
노출 영역 홀더의 콜백 메서드는 기본 UI 스레드에서 호출되지 않습니다.
실시간 카드 선택 처리
라이브 카드는 사용자가 카드를 선택하기 위해 탭할 때 실행되는 작업 (활동, 서비스 또는 브로드캐스트를 시작하는 PendingIntent
)을 제공해야 합니다.
일반적으로 이 작업은 옵션 메뉴를 표시하거나 사용자를 애플리케이션의 다른 부분으로 이동하게 하는 활동을 실행하는 데 사용합니다. 최소한 사용자가 타임라인에서 라이브 카드를 삭제할 수 있는 옵션을 제공해야 합니다.
LiveCard liveCard; // initialized elsewhere Intent intent = new Intent(context, MyActivity.class); liveCard.setAction(PendingIntent.getActivity(context, 0, intent, 0));
액션이 없는 라이브 카드는 표시되지 않습니다.
중첩된 클래스 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
enum | LiveCard.PublishMode | 게시 시 카드가 사용자에게 표시되는 방식을 결정합니다. |
상수 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
String | EXTRA_FROM_LIVECARD_VOICE | Intent 가 실시간 카드의 음성으로 활성화되었음을 나타내는 부울 추가 항목 |
공개 생성자 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
공개 메서드 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
LiveCard | |||||||||||
SurfaceHolder | |||||||||||
boolean |
is게시됨()
|
||||||||||
void | |||||||||||
void | |||||||||||
LiveCard |
setAction(PendingIntent 인텐트)
|
||||||||||
LiveCard |
setDirectRenderingEnabled(부울 사용 설정)
|
||||||||||
LiveCard |
setRenderer(GlRenderer 렌더기)
|
||||||||||
LiveCard | |||||||||||
LiveCard |
setVoiceActionEnabled(부울 사용 설정)
|
||||||||||
void |
게시 취소()
|
상속된 메서드 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
상수
공개 생성자
공개 메서드
public LiveCard 연결 (서비스 서비스)
이 카드가 게시되면 특정 서비스가 포그라운드에서 실행되도록 설정되도록 백그라운드 Service
를 연결합니다.
이 라이브 카드가 게시 취소되면 서비스가 포그라운드에서 자동으로 삭제됩니다.
매개변수
서비스 | 포그라운드에서 실행되도록 설정 |
---|
반환 값
- 호출 체이닝을 위한 이 객체
public SurfaceHolder getSurfaceHolder ()
직접 렌더링이 사용 설정되어 있으면 그릴 수 있는 Surface
에 대한 액세스 권한을 부여합니다.
반환된 SurfaceHolder
는 단순히 관리되는 노출 영역에 액세스하기 위한 수단으로 사용되어야 합니다. 표면의 모양과 유형을 변경하는 메서드는 노옵스(no-ops)입니다.
또한 이 객체의 콜백은 UI 스레드에서 생성되지 않습니다.
public 부울 isPublish ()
카드가 현재 게시되어 있는 경우 true
를 반환합니다.
공개 무효 탐색 ()
사용자를 타임라인에 있는 이 카드로 안내합니다.
생성 값
IllegalStateException | 카드가 게시되지 않은 경우 |
---|
public void publish (LiveCard.PublishMode mode)
이 카드를 타임라인에 게시합니다.
작업이 있으며 직접 렌더링이 사용 설정되거나 원격 뷰가 설정된 경우에만 카드가 표시됩니다.
매개변수
모드 | 카드가 사용자에게 표시되는 방식을 결정합니다. |
---|
public LiveCard setAction (PendingIntent 인텐트)
카드를 선택할 때 실행한 작업을 변경합니다.
매개변수
인텐트 | 카드가 선택되면 실행됩니다. |
---|
반환 값
- 호출 체이닝을 위한 이 객체
public LiveCard setDirectRenderingEnabled (불리언 사용 설정)
직접 렌더링을 사용 설정합니다.
이 모드에서는 카드 콘텐츠를 Surface
에 직접 렌더링해야 합니다.
이 메서드는 카드가 게시되지 않은 경우에만 호출할 수 있으며, 그러지 않으면 예외가 발생합니다.
매개변수
사용 설정 | 직접 렌더링의 사용 설정 여부 |
---|
반환 값
- 호출 체이닝을 위한 이 객체
참고 항목
public LiveCard setRenderer (GlRenderer 렌더기)
OpenGL 기반 렌더기를 추가합니다.
렌더기는 직접 렌더링을 위해 요청된 표면에 자동으로 그리는 데 사용됩니다.
반환 값
- 호출 체이닝을 위한 이 객체
public LiveCard setViews (RemoteViews 조회수)
이 카드의 UI를 표시하는 데 사용되는 RemoteViews
를 변경합니다.
이 메서드는 게시된 카드의 원격 뷰를 직접 변경한 후에도 호출해야 합니다. 그러지 않으면 변경사항이 타임라인에 반영되지 않습니다.
직접 렌더링을 사용 설정하면 이 메서드는 영향을 미치지 않습니다.
매개변수
조회수 | 카드의 UI |
---|
반환 값
- 호출 체이닝을 위한 이 객체
public LiveCard setVoiceActionEnabled (불리언 사용 설정)
카드가 타임라인에 표시되면 음성 액션을 사용 설정합니다.
설정되면 카드는 타임라인에 표시될 때 '확인 유리'를 수신 대기하고 이 가드 문구를 말하면 setAction(PendingIntent)
메서드에 의해 설정된 인텐트를 실행합니다. 인텐트가 상황별 음성 메뉴를 구현하는 활동을 시작하면 첫 번째 메뉴 항목에서 활동이 자동으로 열립니다 (활동 자체 내에서 'ok glass'를 말한 것처럼). 이 기능을 사용하면 라이브 카드에 상황별 음성 메뉴를 구현할 수 있습니다.
매개변수
사용 설정 | 음성 액션 사용 설정 여부 |
---|
반환 값
- 호출 체이닝을 위한 이 객체
참고 항목
공개 무효 게시 취소 ()
타임라인에서 이 카드를 게시 취소합니다.