라이브 카드

API 수준 XE12에 추가되었습니다.
공개 수업

라이브 카드

이 클래스를 사용하면 활성 카드를 만들어 타임라인에 게시할 수 있습니다.

라이브 카드를 만드는 방법에 관한 자세한 내용은 라이브 카드 개발자 가이드를 참고하세요.

실시간 카드의 수명

라이브 카드는 게시되는 전체 시간 동안 소유하는 장기 실행 컨텍스트가 필요하므로 백그라운드 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(컨텍스트 컨텍스트, 문자열 태그)
공개 메서드
LiveCard
attach(서비스 서비스)
SurfaceHolder
boolean
void
void
LiveCard
LiveCard
setDirectRenderingEnabled(부울 사용 설정)
LiveCard
setRenderer(GlRenderer 렌더기)
LiveCard
LiveCard
setVoiceActionEnabled(부울 사용 설정)
void
상속된 메서드

상수

API 수준 XE21에 추가되었습니다.

공개 정적 최종 문자열 EXTRA_FROM_LIVECARD_VOICE

Intent가 실시간 카드의 음성으로 활성화되었음을 나타내는 부울 추가 항목

상수 값: 'android.intent.extra.EXTRA_FROM_LIVECARD'

공개 생성자

API 수준 XE16에 추가되었습니다.

public LiveCard (컨텍스트 컨텍스트, 문자열 태그)

지정된 태그로 라이브 카드를 만듭니다.

명시적으로 게시하기 전에는 카드가 표시되지 않습니다.

매개변수
context 애플리케이션의 컨텍스트
태그 카드의 null이 아닌 태그. 디버깅용입니다.

공개 메서드

API 수준 XE16에 추가되었습니다.

public LiveCard 연결 (서비스 서비스)

이 카드가 게시되면 특정 서비스가 포그라운드에서 실행되도록 설정되도록 백그라운드 Service를 연결합니다.

이 라이브 카드가 게시 취소되면 서비스가 포그라운드에서 자동으로 삭제됩니다.

매개변수
서비스 포그라운드에서 실행되도록 설정
반환 값
  • 호출 체이닝을 위한 이 객체
API 수준 XE12에 추가되었습니다.

public SurfaceHolder getSurfaceHolder ()

직접 렌더링이 사용 설정되어 있으면 그릴 수 있는 Surface에 대한 액세스 권한을 부여합니다.

반환된 SurfaceHolder는 단순히 관리되는 노출 영역에 액세스하기 위한 수단으로 사용되어야 합니다. 표면의 모양과 유형을 변경하는 메서드는 노옵스(no-ops)입니다.

또한 이 객체의 콜백은 UI 스레드에서 생성되지 않습니다.

API 수준 XE12에 추가되었습니다.

public 부울 isPublish ()

카드가 현재 게시되어 있는 경우 true를 반환합니다.

API 수준 XE16에 추가되었습니다.

공개 무효 탐색 ()

사용자를 타임라인에 있는 이 카드로 안내합니다.

생성 값
IllegalStateException 카드가 게시되지 않은 경우
API 수준 XE12에 추가되었습니다.

public void publish (LiveCard.PublishMode mode)

이 카드를 타임라인에 게시합니다.

작업이 있으며 직접 렌더링이 사용 설정되거나 원격 뷰가 설정된 경우에만 카드가 표시됩니다.

매개변수
모드 카드가 사용자에게 표시되는 방식을 결정합니다.
API 수준 XE12에 추가되었습니다.

public LiveCard setAction (PendingIntent 인텐트)

카드를 선택할 때 실행한 작업을 변경합니다.

매개변수
인텐트 카드가 선택되면 실행됩니다.
반환 값
  • 호출 체이닝을 위한 이 객체
API 수준 XE12에 추가되었습니다.

public LiveCard setDirectRenderingEnabled (불리언 사용 설정)

직접 렌더링을 사용 설정합니다.

이 모드에서는 카드 콘텐츠를 Surface에 직접 렌더링해야 합니다.

이 메서드는 카드가 게시되지 않은 경우에만 호출할 수 있으며, 그러지 않으면 예외가 발생합니다.

매개변수
사용 설정 직접 렌더링의 사용 설정 여부
반환 값
  • 호출 체이닝을 위한 이 객체
참고 항목
API 수준 XE16에 추가되었습니다.

public LiveCard setRenderer (GlRenderer 렌더기)

OpenGL 기반 렌더기를 추가합니다.

렌더기는 직접 렌더링을 위해 요청된 표면에 자동으로 그리는 데 사용됩니다.

반환 값
  • 호출 체이닝을 위한 이 객체
API 수준 XE12에 추가되었습니다.

public LiveCard setViews (RemoteViews 조회수)

이 카드의 UI를 표시하는 데 사용되는 RemoteViews를 변경합니다.

이 메서드는 게시된 카드의 원격 뷰를 직접 변경한 후에도 호출해야 합니다. 그러지 않으면 변경사항이 타임라인에 반영되지 않습니다.

직접 렌더링을 사용 설정하면 이 메서드는 영향을 미치지 않습니다.

매개변수
조회수 카드의 UI
반환 값
  • 호출 체이닝을 위한 이 객체
API 수준 XE21에 추가되었습니다.

public LiveCard setVoiceActionEnabled (불리언 사용 설정)

카드가 타임라인에 표시되면 음성 액션을 사용 설정합니다.

설정되면 카드는 타임라인에 표시될 때 '확인 유리'를 수신 대기하고 이 가드 문구를 말하면 setAction(PendingIntent) 메서드에 의해 설정된 인텐트를 실행합니다. 인텐트가 상황별 음성 메뉴를 구현하는 활동을 시작하면 첫 번째 메뉴 항목에서 활동이 자동으로 열립니다 (활동 자체 내에서 'ok glass'를 말한 것처럼). 이 기능을 사용하면 라이브 카드에 상황별 음성 메뉴를 구현할 수 있습니다.

매개변수
사용 설정 음성 액션 사용 설정 여부
반환 값
  • 호출 체이닝을 위한 이 객체
참고 항목
API 수준 XE12에 추가되었습니다.

공개 무효 게시 취소 ()

타임라인에서 이 카드를 게시 취소합니다.