이 문서는 EloView Home SDK 6.23.14에 적용됩니다. 개발자는 모든 새로운 개발 프로젝트와 향후 통합을 위해 EloView Home SDK 6.25.520를 사용할 것을 권장합니다.
EloView Home SDK 6.25.520에서 새로워진 내용을 확인하려면 여기 클릭하세요.
EloView Home SDK 6.25.520 참조 가이드를 보려면 여기 클릭하세요.
EloView Home SDK 6.23.14
지원 플랫폼: Backpack 4 (Standard/Value), I-Series 4 (Standard/Value), I-Series Standard, M50, M60 Pay, M100 및 7인치 Pay를 포함한 Android 12 및 Android 14 Elo 장치.
전체 참조 (지식베이스 + SDK 자바독)
API는 기능적 클래스(System, Network, Package 등)별로 정리되어 있어 발견을 간소화하고 구현속도를 높입니다.
글로벌 모범 사례 (KB에서)
-
API를 호출하기 전에 항상 서비스에 바인딩하세요.
onServiceConnected()가 수신될 때까지 메서드를 호출하지 마십시오. -
장치 정책이 로컬 설정을 무시할 수 있다고 가정하세요.
특히 시간, 시간대, USB, 키오스크 모드 및 응용 프로그램 설치에 해당합니다. -
운영 환경에서 시간 동기화를 위해 NTP를 사용하세요.
테스트를 제외하고는 수동 시간 구성을 피하십시오. -
재설정 동작을 이해하세요.
-
엔터프라이즈 재설정 는 Elo 구성 및 등록 상태를 지웁니다.
-
공장 초기화는 모든 사용자 데이터를 지우고 장치를 초기 상태로 복원합니다.
-
-
모든 API 호출의 결과를 로그에 기록하세요.
이는 문제 해결 및 에스컬레이션에 매우 중요합니다.
❗ 중요 사용 노트
일부 SDK API는 특정 Android 권한이 필요하며, 장치가 EloView 모드인지 Android 홈 모드인지에 따라 다르게 동작할 수 있습니다. 장치 정책 시행은 로컬에 적용된 설정을 무시할 수 있습니다. 개발자는 프로덕션 응용 프로그램에서 API를 호출하기 전에 장치 모드 및 권한 상태를 검증해야 합니다.
EloView Home SDK는 서비스 기반 Android SDK로 API 호출을 실행하기 전에 성공적인 서비스 바인딩이 필요합니다. 메서드는 다음과 같은 경우 null 또는 결과 없음으로 반환될 수 있습니다:
- 서비스가 아직 연결되지 않은 경우
- 장치가 호환되는 EloView 상태에 있지 않은 경우
- 정책 제한이 작업을 차단하는 경우
이 가이드는 지원되는 일반적으로 사용되는 패턴에 중점을 둡니다. 원시 SDK 자바독에 문서화된 모든 Android 권한, 생명 주기 엣지 케이스 또는 내부 반환 상태를 나열하지 않습니다. 표준 Android 서비스 생명 주기 처리 및 오류 검사는 프로덕션 애플리케이션에서 구현해야 합니다.
일반적인 실제 시나리오 (KB에서)
시나리오: 장치 등록 후 잘못된 시간대
system.setNtpEnabled(true);
system.setNtpServer("time.aws.com");
system.setTimeZone("US/Central");
system.syncTimeNow();
// 검증
String tz = system.getTimeZone();
Log.d(TAG, "Timezone=" + tz);
팁: 재부팅 후 시간대가 되돌려지는 경우, Android 자동 시간대가 활성화되어 있는지 및 장치 정책이 다른 지역을 재적용하지 않는지 확인하십시오.
시나리오: 단일 앱 키오스크 모드 안전하게 구성
pkg.setKioskApp("com.example.kiosk");
pkg.setKioskModeEnabled(true);
pkg.launchApp("com.example.kiosk");
경고: 프로덕션에서 키오스크 모드를 활성화하기 전에 항상 관리자가 탈출할 수 있는 경로를 확인하십시오.
서비스 바인딩 템플릿 (KB에서)
eloView.bindService(context, callback, accessToken);
// callback.onServiceConnected() 내에서 SDK API를 안전하게 호출할 수 있습니다.
eloView.unbindService(context);
중요 사항: bindService() 및 unbindService()는 값을 반환하지 않습니다. SDK API는 onServiceConnected()가 호출된 후에만 호출해야 합니다.
코어 / 서비스 바인딩 API
EloView
EloView 클래스는 다음과 같은 작업을 제공합니다:
- 장치가 오프라인 상태이거나 계정에 등록되지 않은 경우, EloView 제어 모드에서 재생할 콘텐츠를 설정하는 setOfflinePlayContent().
- EloView 제어 모드에서 현재 설정된 콘텐츠의 유형(APK 또는 WebView) 및 콘텐츠 이름을 검색하는 getPlayContent().
- EloView 제어 모드에서 구성된 콘텐츠의 현재 재생 상태를 가져오는 getPlayContentStatus().
- 장치가 현재 EloView 클라우드에 연결되어 있는지(온라인 또는 오프라인) 확인하는 getDeviceCloudStatus().
- Elo QuickSettings 및 Android 홈 모드에서 Wi-Fi 토글하는 toggleWifi().
- Elo QuickSettings 및 Android 홈 모드에서 Bluetooth를 토글하는 toggleBT().
bindService
public void bindService(android.content.Context context, ServiceConnectionCallback callback, java.lang.String accessToken)
이 메서드는 EloView 서비스를 애플리케이션에 바인딩합니다. 이 메서드는 아무 EloView API를 호출하기 전에 호출해야 합니다.
매개변수
- context - EloView API가 사용되는 컨텍스트.
try {
// TODO: 서비스가 바인딩되었는지 확인하기
Object result = sdk.bindService(context, callback, "accessToken");
Log.d(TAG, "OK: bindService result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: bindService", e);
}
unbindService
public void unbindService(android.content.Context context)
이 메서드는 애플리케이션에서 서비스를 분리하는 데 사용됩니다. 리소스를 정리할 때 이 메서드를 사용하여 서비스에서 분리하십시오.
매개변수
- context - 컨텍스트
예시
try {
// TODO: 서비스가 바인딩되었는지 확인하기
Object result = sdk.unbindService(context);
Log.d(TAG, "OK: unbindService result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: unbindService", e);
}
setOfflinePlayContent
public java.lang.String setOfflinePlayContent(java.lang.String packageName)
이 메서드는 장치가 오프라인 상태이거나 계정에 등록되지 않은 경우 EloView 제어 모드에서 콘텐츠를 설정하는 데 사용됩니다. 장치가 온라인 상태가 되면 콘텐츠가 EloView를 통해 설정되면 이 API를 통해 설정된 콘텐츠를 덮어씁니다.
매개변수
- packageName - 장치에서 기본 콘텐츠로 설정할 패키지.
예시
try {
// TODO: 서비스가 바인딩되었는지 확인하기
Object result = sdk.setOfflinePlayContent("packageName");
Log.d(TAG, "OK: setOfflinePlayContent result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: setOfflinePlayContent", e);
}
getPlayContent
public java.lang.String getPlayContent()
이 메서드는 장치에서 설정된 콘텐츠의 유형과 이름을 반환합니다. 이 메서드는 EloView 제어 모드에서만 작동합니다.
예시
try {
// TODO: 서비스가 바인딩되었는지 확인하기
Object result = sdk.getPlayContent();
Log.d(TAG, "OK: getPlayContent result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: getPlayContent", e);
}
getPlayContentStatus
public java.lang.String getPlayContentStatus()
이 메서드는 제어 모드에서 장치에서 재생 콘텐츠의 상태를 반환합니다. 상태는 다음 문자열 중 하나일 수 있습니다:
YET_TO_DOWNLOAD, DOWNLOADING, DOWNLOADED, INSTALLING, INSTALLED, DOWNLOAD_FAILED, INSTALL_FAILED, UNKNOWN_STATUS
예시
try {
// TODO: 서비스가 바인딩되었는지 확인하기
Object result = sdk.getPlayContentStatus();
Log.d(TAG, "OK: getPlayContentStatus result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: getPlayContentStatus", e);
}
getDeviceCloudStatus
public java.lang.String getDeviceCloudStatus()
이 메서드는 장치의 온라인 또는 오프라인 상태를 반환합니다. 상태는 다음 문자열 중 하나일 수 있습니다: "Online", "Offline", "Connecting", "Reconnecting", "Online (Not Provisioned)".
예시
try {
// TODO: 서비스가 바인딩되었는지 확인하기
Object result = sdk.getDeviceCloudStatus();
Log.d(TAG, "OK: getDeviceCloudStatus result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: getDeviceCloudStatus", e);
}
toggleWifi
void toggleWifi(boolean isEnableWifi)
장치에서 Wi-Fi를 활성화하거나 비활성화합니다. EloView 모드와 Android 홈 모드 모두에 적용됩니다.
매개변수
- isEnableWifi - QuickSettings에서 Wi-Fi를 활성화하거나 비활성화하는 Boolean.
예시
try {
// TODO: 서비스가 바인딩되었는지 확인하기
Object result = sdk.toggleWifi(true);
Log.d(TAG, "OK: toggleWifi result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: toggleWifi", e);
}
switchToAndroidHomeMode
void switchToAndroidHomeMode() void switchToAndroidHomeMode(boolean isRebootNeeded, boolean isAndroidHomeMode)
이 메서드는 EloView 모드에서 Android 홈 모드로 전환하는 데 사용됩니다. 이는 switchToAndroidHomeMode()와 동일하지만 두 개의 boolean 매개변수를 추가로 허용합니다. 공장 초기화 없이는 EloView 모드로 돌아갈 방법이 없으므로 주의해서 사용해야 합니다.
매개변수
- EloView 모드에서 Android 홈 모드로 장치를 전환합니다.
- isRebootNeeded가 true로 설정되면 장치는 모드 변경을 적용하기 위해 재부팅됩니다.
- 중요 노트: Android 홈 모드로 전환하면 EloView 관리 제한 및 정책이 비활성화될 수 있습니다.
예시
try {
// TODO: 서비스가 바인딩되었는지 확인하기
Object result = sdk.switchToAndroidHomeMode(true, true);
Log.d(TAG, "OK: switchToAndroidHomeMode result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: switchToAndroidHomeMode", e);
}
toggleBT
public int toggleBT(boolean isEnableBT)
이 메서드는 QuickSettings에서 Bluetooth를 토글하는 데 사용됩니다. Android 홈 모드에서도 Bluetooth를 토글하는 데 사용할 수 있습니다.
매개변수
- isEnableBT - QuickSettings에서 Bluetooth를 활성화하거나 비활성화하는 Boolean.
예시
try {
// TODO: 서비스가 바인딩되었는지 확인하기
Object result = sdk.toggleBT(true);
Log.d(TAG, "OK: toggleBT result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: toggleBT", e);
}
계정 API
AccountManager
AccountManager 클래스는 다음과 같은 작업을 제공합니다:
1. 사용자가 제공한 자격 증명(emailId/password 또는 clientId/secretKey)에 따라 EloServer에서 인증 토큰을 제공합니다.
2. 주어진 인증 토큰이 유효한지 또는 만료되었는지 확인합니다. 인증 토큰은 EloView 서버에서 받은 토큰이거나 Elo 지원 팀에서 제공한 오프라인 JWT 토큰일 수 있습니다. (오프라인 토큰은 응용 프로그램의 패키지 이름을 사용하여 생성되며, 생성된 패키지에서만 사용할 수 있습니다.)
3. 모든 API는 작동하기 위해 오프라인 토큰이 필요하며 온라인 토큰으로는 작동하지 않습니다. 유일한 예외는 OTA API입니다. OTA API는 EloView 서버에서 OTA를 적용할 때 온라인 토큰을 필요로 합니다. OTA를 사용자 정의 서버 URL로 적용하거나 장치의 로컬 파일에서 적용하려면 오프라인 토큰을 사용할 수 있습니다.
예를 들어 인증 토큰을 가져오려면:
1. emailId 및 비밀번호 사용하여 getEloAccessToken 호출합니다. 2. clientId 및 secretKey 사용하여 getEloOAuthToken 호출합니다. 성공적으로 인증되면 이 메서드는 토큰을 반환합니다. 3. 오프라인 JWT 토큰의 경우 Elo 지원 팀에 문의하십시오.
서버 또는 지원 팀에서 검색된 토큰은 verifyEloToken 메서드를 사용하여 검증됩니다.
이러한 AccountManager API에 사용되는 방송 수신기를 unregisterAccountManagerListener 메서드를 사용하여 onPause 및 onDestroy 메서드에서 등록 취소하여 누수를 방지해야 합니다.
getProperty
public static java.lang.String getProperty()
예시
try {
// TODO: 서비스가 바인딩되었는지 확인하기
Object result = sdk.getProperty();
Log.d(TAG, "OK: getProperty result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: getProperty", e);
}
setProperty
public void setProperty(java.lang.String property)
예시
try {
// TODO: 서비스가 바인딩되었는지 확인하기
Object result = sdk.setProperty("property");
Log.d(TAG, "OK: setProperty result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: setProperty", e);
}
getClientId
public static java.lang.String getClientId()
예시
try {
// TODO: 서비스가 바인딩되었는지 확인하기
Object result = sdk.getClientId();
Log.d(TAG, "OK: getClientId result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: getClientId", e);
}
getBaseUri
public static android.net.Uri getBaseUri()
예시
try {
// TODO: 서비스가 바인딩되었는지 확인하기
Object result = sdk.getBaseUri();
Log.d(TAG, "OK: getBaseUri result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: getBaseUri", e);
}
getEloAccessToken
public void getEloAccessToken(android.content.Context context, java.lang.String userEmail, java.lang.String password, android.os.Handler handler)
이 메서드는 Elo 서버에서 액세스 토큰을 얻는 데 사용됩니다.
매개변수
- context - 호출 클래스(Activity 또는 Service)의 컨텍스트 객체입니다.
예시
try {
// TODO: 서비스가 바인딩되었는지 확인하기
Object result = sdk.getEloAccessToken(context, "userEmail", "password", handler);
Log.d(TAG, "OK: getEloAccessToken result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: getEloAccessToken", e);
}
configureOAuthHostedUI
public void configureOAuthHostedUI(android.app.Activity activity, android.os.Handler handler)
이 메서드는 OAuth 호스팅 UI를 초기화하는 데 사용됩니다.
매개변수
- activity - 호출 클래스의 Activity 인스턴스입니다.
예시
try {
// TODO: 서비스가 바인딩되었는지 확인하기
Object result = sdk.configureOAuthHostedUI(activity, handler);
Log.d(TAG, "OK: configureOAuthHostedUI result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: configureOAuthHostedUI", e);
}
stopOAuth
public void stopOAuth()
onStop() 오버라이드 메서드에서 stopOAuth를 호출합니다.
예시
try {
// TODO: 서비스가 바인딩되었는지 확인하기
Object result = sdk.stopOAuth();
Log.d(TAG, "OK: stopOAuth result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: stopOAuth", e);
}
destroyOAuth
public void destroyOAuth()
onStop() 오버라이드 메서드에서 destroyOAuth를 호출합니다.
예시
try {
// TODO: 서비스가 바인딩되었는지 확인하기
Object result = sdk.destroyOAuth();
Log.d(TAG, "OK: destroyOAuth result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: destroyOAuth", e);
}
logoutOAuth
public void logoutOAuth()
logoutOAuth를 호출하여 현재 로그인 세션을 종료합니다.
예시
try {
// TODO: 서비스가 바인딩되었는지 확인하기
Object result = sdk.logoutOAuth();
Log.d(TAG, "OK: logoutOAuth result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: logoutOAuth", e);
}
verifyEloToken
public void verifyEloToken(android.content.Context context, java.lang.String accessToken, android.os.Handler handler)
이 기능은 Elo 서버에 주어진 토큰을 확인하도록 요청합니다. 인증이 성공하면 핸들러는 TOKEN_VERIFY_SUCCESS 유형의 메시지를 수신합니다. 실패할 경우 TOKEN_VERIFY_FAIL이 수신됩니다.
매개변수
- context – 호출 클래스(Activity 또는 Service)의 컨텍스트 객체입니다.
예시
try {
// TODO: 서비스가 바인딩되었는지 확인하기
Object result = sdk.verifyEloToken(context, "accessToken", handler);
Log.d(TAG, "OK: verifyEloToken result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: verifyEloToken", e);
}
getEloOAuthToken
public void getEloOAuthToken(android.content.Context context, java.lang.String clientID, java.lang.String secret, android.os.Handler handler)
이 메서드는 EloView 포털에 새 OAuth 토큰을 요청하는 데 사용됩니다. 인증이 성공하면 토큰이 장치로 전송됩니다. 이 토큰은 발급 후 24시간 동안 사용할 수 있습니다. 토큰이 만료되면, 토큰을 확인하고 API를 호출하려고 할 때 TOKEN_VERIFY_FAIL 응답을 받습니다. 토큰이 발급되지 않거나 수신되지 않은 경우에도 마찬가지입니다.
성공하면 핸들러는 JWT 토큰으로 응답하여 OAUTH_TOKEN_VALID 유형의 메시지를 수신합니다. 성공적인 응답의 예는 다음과 같습니다:
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlJQTSJ9.eyJ1ZW1haWwiOiJwcmF0YXBlbG8rUHJvZEBnbWFpbC5jb20iLCJvdGl0bGUiOiJwcmF0YXBlbG8rUHJvZEBnbWFpbC5jb20iLCJjYXAiOnsiY3JjIjoiSDIvb2RnIiwicGVybSI6ImZmZmZmZmYwMCJ9LCJpYXQiOjE1MjUxMTc4NDgsIm5iZiI6MTUyNTExNzg0OCwiZXhwIjoxNTI1MjA0MjQ4LCJpc3MiOiIxNTAyIiwic3ViIjoiZWVhNDRkY2JkMjU5YzQyOWY4NTA3YWZhNTQyY2Q3M2YiLCJqdGkiOiJ2ZE14N1ppUGVnWT0ifQ.b2e-F1mVh0ummkBJk3m8pT2qSCceRxuS_A9GAKtYBeo"
잘못된 clientID 또는 secretID로 인한 인증 실패의 경우, 핸들러는 OAUTH_TOKEN_INVALID 유형의 메시지를 수신합니다.
매개변수
- context – 호출 클래스(Activity 또는 Service)의 컨텍스트 객체입니다.
예시
try {
// TODO: 서비스가 바인딩되었는지 확인하기
Object result = sdk.getEloOAuthToken(context, "clientID", "secret", handler);
Log.d(TAG, "OK: getEloOAuthToken result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: getEloOAuthToken", e);
}
unregisterAccountManagerListener
public void unregisterAccountManagerListener(android.content.Context context)
이 메서드는 AccountManager API를 사용할 때 등록된 방송 수신기를 등록 해제하는 데 사용됩니다. 이 메서드는 AccountManager API를 사용한 활동의 onPause 및 onDestroy 메서드에서 호출해야 누수가 방지됩니다.
매개변수
- context - 시스템 API가 사용된 컨텍스트입니다.
예시
try {
// TODO: 서비스가 바인딩되었는지 확인하기
Object result = sdk.unregisterAccountManagerListener(context);
Log.d(TAG, "OK: unregisterAccountManagerListener result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: unregisterAccountManagerListener", e);
}
getProperty
public static java.lang.String getProperty()
예시
try {
// TODO: 서비스가 바인딩되었는지 확인하기
Object result = sdk.getProperty();
Log.d(TAG, "OK: getProperty result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: getProperty", e);
}
setProperty
public void setProperty(java.lang.String property)
예시
try {
// TODO: 서비스가 바인딩되었는지 확인하기
Object result = sdk.setProperty("property");
Log.d(TAG, "OK: setProperty result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: setProperty", e);
}
getClientId
public static java.lang.String getClientId()
예시
try {
// TODO: 서비스가 바인딩되었는지 확인하기
Object result = sdk.getClientId();
Log.d(TAG, "OK: getClientId result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: getClientId", e);
}
getBaseUri
public static android.net.Uri getBaseUri()
예시
try {
// TODO: 서비스가 바인딩되었는지 확인하기
Object result = sdk.getBaseUri();
Log.d(TAG, "OK: getBaseUri result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: getBaseUri", e);
}
getEloAccessToken
public void getEloAccessToken(android.content.Context context, java.lang.String userEmail, java.lang.String password, android.os.Handler handler)
이 메서드는 Elo 서버에서 액세스 토큰을 가져오는 데 사용됩니다.
매개변수
- context - 호출 클래스(Activity 또는 Service)의 컨텍스트 객체입니다.
예시
try {
// TODO: 서비스가 바인딩되었는지 확인하기
Object result = sdk.getEloAccessToken(context, "userEmail", "password", handler);
Log.d(TAG, "OK: getEloAccessToken result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: getEloAccessToken", e);
}
configureOAuthHostedUI
public void configureOAuthHostedUI(android.app.Activity activity, android.os.Handler handler)
이 메서드는 OAuth 호스팅 UI를 초기화하는 데 사용됩니다.
매개변수
- activity - 호출 클래스의 Activity 인스턴스입니다.
예시
try {
// TODO: 서비스가 바인딩되었는지 확인하기
Object result = sdk.configureOAuthHostedUI(activity, handler);
Log.d(TAG, "OK: configureOAuthHostedUI result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: configureOAuthHostedUI", e);
}
getClientId
public static java.lang.String getClientId()
예시
try {
// TODO: 서비스가 바인딩되었는지 확인하기
Object result = sdk.getClientId();
Log.d(TAG, "OK: getClientId result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: getClientId", e);
}
getBaseUri
public static android.net.Uri getBaseUri()
예시
try {
// TODO: 서비스가 바인딩되었는지 확인하기
Object result = sdk.getBaseUri();
Log.d(TAG, "OK: getBaseUri result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: getBaseUri", e);
}
Please report any broken links by emailing support@elotouch.com and include a link to the knowledge article