Dit artikel is van toepassing op de EloView Home SDK 6.23.14. Ontwikkelaars worden aangemoedigd om EloView Home SDK 6.25.520 te gebruiken voor alle nieuwe ontwikkelingsprojecten en toekomstige integraties.
Klik hier om te leren wat er nieuw is in EloView Home SDK 6.25.520.
Klik hier voor de referentiehandleiding van de EloView Home SDK 6.25.520.
EloView Home SDK 6.23.14
Ondersteunde platforms: Android 12 en Android 14 Elo-apparaten, waaronder Backpack 4 (Standard/Value), I-Series 4 (Standard/Value), I-Series Standard, M50, M60 Pay, M100 en 7-Inch Pay.
Volledige referentie (Kennisbank + SDK Javadoc)
API's zijn georganiseerd op functionele klasse (Systeem, Netwerk, Pakket, enz.) om ontdekking te vereenvoudigen en de implementatie te versnellen.
Globale best practices (uit KB)
-
Bind altijd aan de service voordat u een API aanroept.
Roep geen methoden aan totdatonServiceConnected()is ontvangen. -
Neem aan dat het apparaatsbeleid lokale instellingen kan overschrijven.
Dit geldt vooral voor tijd, tijdzone, USB, kioskmodus en applicatie-installatie. -
Gebruik NTP voor tijdsynchronisatie in productie.
Vermijd handmatige tijdconfiguratie, behalve voor testen. -
Begrijp het resetgedrag.
-
Enterprise Reset wist de Elo-configuratie en aanmeldstatus.
-
Fabrieksinstellingen wist alle gebruikersgegevens en retourneert het apparaat naar de oorspronkelijke staat.
-
-
Log het resultaat van elke API-aanroep.
Dit is cruciaal voor probleemoplossing en escalatie.
❗ Belangrijke gebruiksnotities
Sommige SDK API's vereisen specifieke Android-machtigingen en kunnen verschillend gedrag vertonen, afhankelijk van of het apparaat in EloView-modus of Android Home-modus is. De handhaving van apparaatsbeleid kan lokaal toegepaste instellingen overschrijven. Ontwikkelaars moeten de apparaatsmodus en machtigingsstatus valideren voordat ze API's aanroepen in productie-applicaties.
De EloView Home SDK is een service-gebaseerde Android SDK en vereist een succesvolle servicebinding voordat er API-aanroepen kunnen worden uitgevoerd. Methoden kunnen null of geen resultaat retourneren als:
- De service is nog niet verbonden
- Het apparaat bevindt zich niet in een compatibele EloView-status
- Beleidsbeperkingen blokkeren de handeling
Deze gids richt zich op ondersteunde en veelgebruikte patronen. Het geeft niet een opsomming van elke Android-machtiging, levenscyclusrandgeval of interne retourstatus die gedocumenteerd is in de ruwe SDK Javadoc. Standaard Android-behandeling van de levenscyclus van services en foutcontrole moet worden geïmplementeerd in productieapplicaties.
Gemeenschappelijke scenario's uit de echte wereld (uit KB)
Scenario: Tijdzone onjuist na aanmelding van het apparaat
system.setNtpEnabled(true);
system.setNtpServer("time.aws.com");
system.setTimeZone("US/Central");
system.syncTimeNow();
// Verifiëren
String tz = system.getTimeZone();
Log.d(TAG, "Tijdzone=" + tz);
Tip: Als de tijdzone na herstart terugschakelt, verifieer dan of de automatische tijdzone van Android is ingeschakeld en of het apparaatsbeleid geen andere regio opnieuw toepast.
Scenario: Veilig configureer een een-app kioskmodus
pkg.setKioskApp("com.example.kiosk");
pkg.setKioskModeEnabled(true);
pkg.launchApp("com.example.kiosk");
Waarschuwing: Valideer altijd een administratieve ontsnappingsroute voordat je kioskmodus in productie inschakelt.
Servicebinding-template (uit KB)
eloView.bindService(context, callback, accessToken);
// Veilig om SDK API's aan te roepen binnen callback.onServiceConnected()
eloView.unbindService(context);
Belangrijke opmerking: bindService() en unbindService() geven geen waarden terug. SDK-API's mogen alleen worden aangeroepen nadat onServiceConnected() is aangeroepen.
Hoofdingang / Servicebinding API's
EloView
De EloView klasse biedt de volgende bewerkingen:
- Stel de inhoud in die op het apparaat moet worden afgespeeld in de EloView-controller-modus wanneer het apparaat offline is of niet is geregistreerd bij een account met setOfflinePlayContent().
- Haal het type inhoud (APK of WebView) en de naam van de inhoud die momenteel is ingesteld in de EloView-controller-modus op met getPlayContent().
- Krijg de huidige afspeelstatus van de geconfigureerde inhoud in de EloView Control-modus met getPlayContentStatus().
- Controleer of het apparaat momenteel is verbonden met de EloView Cloud (online of offline) met getDeviceCloudStatus().
- Toggle Wi-Fi in Elo QuickSettings en Android Home-modus met gebruik van toggleWifi().
- Toggle Bluetooth in Elo QuickSettings en Android Home-modus met gebruik van toggleBT().
bindService
public void bindService(android.content.Context context, ServiceConnectionCallback callback, java.lang.String accessToken)
Deze methode bindt de EloView-service aan de applicatie. U moet dit aanroepen voordat u enige EloView API's aanroept.
Parameters
- context – Context waarin de EloView API's worden gebruikt.
try {
// TODO: Zorg ervoor dat de service is gebonden voordat SDK API's worden aangeroepen
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)
Deze methode wordt gebruikt om de service van de applicatie te ontbinden. Gebruik deze methode om de service te ontbinden van de applicatie wanneer resources worden gewist.
Parameters
- context – Context
Voorbeeld
try {
// TODO: Zorg ervoor dat de service is gebonden voordat SDK API's worden aangeroepen
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)
Deze methode wordt gebruikt om inhoud op het apparaat in de EloView-controller-modus in te stellen wanneer het apparaat offline is of niet is geregistreerd bij een account. Als het apparaat online komt en inhoud wordt ingesteld via EloView, zal dit de inhoud overschrijven die via deze API is ingesteld.
Parameters
- packageName – Pakket dat moet worden ingesteld als standaardinhoud op het apparaat.
Voorbeeld
try {
// TODO: Zorg ervoor dat de service is gebonden voordat SDK API's worden aangeroepen
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()
Deze methode retourneert het type inhoud en de naam van de inhoud die op het apparaat is ingesteld. Deze methode werkt alleen in EloView-controller-modus.
Voorbeeld
try {
// TODO: Zorg ervoor dat de service is gebonden voordat SDK API's worden aangeroepen
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()
Deze methode retourneert de status van de afspeelinhoud op het apparaat in de Control-modus. De status kan een van de volgende tekenreeksen zijn:
YET_TO_DOWNLOAD, DOWNLOADING, DOWNLOADED, INSTALLING, INSTALLED, DOWNLOAD_FAILED, INSTALL_FAILED, UNKNOWN_STATUS
Voorbeeld
try {
// TODO: Zorg ervoor dat de service is gebonden voordat SDK API's worden aangeroepen
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()
Deze methode retourneert de online of offline status van het apparaat. De status kan een van de volgende tekenreeksen zijn: "Online", "Offline", "Connecting", "Reconnecting", "Online (Not Provisioned)".
Voorbeeld
try {
// TODO: Zorg ervoor dat de service is gebonden voordat SDK API's worden aangeroepen
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)
Zet Wi-Fi in of uit op het apparaat. Dit geldt zowel in EloView-modus als in Android Home-modus.
Parameters
- isEnableWifi – Boolean voor het inschakelen of uitschakelen van WiFi in QuickSettings.
Voorbeeld
try {
// TODO: Zorg ervoor dat de service is gebonden voordat SDK API's worden aangeroepen
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)
Deze methode wordt gebruikt om over te schakelen naar de Android Home-modus vanuit de EloView-modus. Dit is hetzelfde als switchToAndroidHomeMode(), behalve dat het twee booleanparameters accepteert. Er is geen manier om terug te schakelen naar de EloView-modus zonder een fabrieksreset, dus gebruik dit met voorzichtigheid.
Parameters
- Schakelt het apparaat om van EloView-modus naar Android Home-modus.
- Als isRebootNeeded is ingesteld op true, wordt het apparaat opnieuw opgestart om de moduswijziging toe te passen.
- Belangrijke opmerking: overschakelen naar de Android Home-modus kan de door EloView beheerde beperkingen en beleidslijnen uitschakelen.
Voorbeeld
try {
// TODO: Zorg ervoor dat de service is gebonden voordat SDK API's worden aangeroepen
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)
Deze methode wordt gebruikt om Bluetooth in QuickSettings te schakelen (EloView-modus). Het kan ook worden gebruikt om Bluetooth in Android Home-modus in te schakelen of uit te schakelen.
Parameters
- isEnableBT – Boolean voor het inschakelen of uitschakelen van Bluetooth in QuickSettings.
Voorbeeld
try {
// TODO: Zorg ervoor dat de service is gebonden voordat SDK API's worden aangeroepen
Object result = sdk.toggleBT(true);
Log.d(TAG, "OK: toggleBT result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: toggleBT", e);
}
Account API's
AccountManager
De AccountManager-klasse biedt de volgende bewerkingen:
1. Lever een Authenticatietoken van een EloServer op basis van de door de gebruiker verstrekte referenties (emailId/wachtwoord of clientId/secretKey).
2. Controleer of een gegeven Authenticatietoken geldig is of is verlopen. De authenticatietoken kan ofwel de token zijn die van de EloView-server is verkregen of het kan een offline JWT-token zijn dat door het Elo Support-team is verstrekt. (Het offline token wordt gegenereerd met de pakketnaam van uw applicatie en kan alleen worden gebruikt met het pakket waarvoor het is gegenereerd.)
3. Alle API's vereisen een offline token om te functioneren en zullen niet werken met een online token. De enige uitzondering zijn OTA API's. OTA API's vereisen de online token bij het toepassen van de OTA vanaf een EloView server. Voor toepassing van OTA via een aangepaste server-URL of vanaf een lokaal bestand op het apparaat, kan de offline token worden gebruikt.
Bijvoorbeeld, om een Authenticatietoken te verkrijgen:
1. Maak gebruik van emailId en wachtwoord, roep getEloAccessToken aan. 2. Maak gebruik van clientId en secretKey, roep getEloOAuthToken aan. Bij succesvolle authenticatie, zullen deze methoden een token retourneren. 3. Voor de offline JWT-token, neem contact op met het Elo Support-team.
De token die van de server of ondersteuningsteam is verkregen, wordt geverifieerd met de methode verifyEloToken.
Schrijf de broadcast-ontvangers die door deze AccountManager API's worden gebruikt af met de methode unregisterAccountManagerListener in de onPause- en onDestroy-methoden van de activiteiten waarin u deze API's gebruikt om lekken te voorkomen.
getProperty
public static java.lang.String getProperty()
Voorbeeld
try {
// TODO: Zorg ervoor dat de service is gebonden voordat SDK API's worden aangeroepen
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)
Voorbeeld
try {
// TODO: Zorg ervoor dat de service is gebonden voordat SDK API's worden aangeroepen
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()
Voorbeeld
try {
// TODO: Zorg ervoor dat de service is gebonden voordat SDK API's worden aangeroepen
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()
Voorbeeld
try {
// TODO: Zorg ervoor dat de service is gebonden voordat SDK API's worden aangeroepen
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)
Deze methode wordt gebruikt om een toegangstoken van de Elo-server te verkrijgen.
Parameters
- context – Een Context-object van de aanroepende klasse (Activiteit of Service).
Voorbeeld
try {
// TODO: Zorg ervoor dat de service is gebonden voordat SDK API's worden aangeroepen
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)
Deze methode wordt gebruikt om de OAuth Hosted UI te initialiseren.
Parameters
- activity – Een Activity-instantie van de aanroepende klasse.
Voorbeeld
try {
// TODO: Zorg ervoor dat de service is gebonden voordat SDK API's worden aangeroepen
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()
Roep stopOAuth aan in de onStop() override-methode van de activiteit.
Voorbeeld
try {
// TODO: Zorg ervoor dat de service is gebonden voordat SDK API's worden aangeroepen
Object result = sdk.stopOAuth();
Log.d(TAG, "OK: stopOAuth result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: stopOAuth", e);
}
destroyOAuth
public void destroyOAuth()
Roep destroyOAuth aan in de onStop() override-methode van de activiteit.
Voorbeeld
try {
// TODO: Zorg ervoor dat de service is gebonden voordat SDK API's worden aangeroepen
Object result = sdk.destroyOAuth();
Log.d(TAG, "OK: destroyOAuth result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: destroyOAuth", e);
}
logoutOAuth
public void logoutOAuth()
Roep logoutOAuth aan om de huidige inlogsessie te beëindigen.
Voorbeeld
try {
// TODO: Zorg ervoor dat de service is gebonden voordat SDK API's worden aangeroepen
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)
Deze functie vraagt de Elo-server om de gegeven token te verifiëren. Bij succesvolle verificatie ontvangt de handler een bericht van het type TOKEN_VERIFY_SUCCESS. Bij falen ontvangt u TOKEN_VERIFY_FAIL.
Parameters
- context – Een Context-object van de aanroepen klasse (Activiteit of Service).
Voorbeeld
try {
// TODO: Zorg ervoor dat de service is gebonden voordat SDK API's worden aangeroepen
Object result = sdk.verifyEloToken(context, "accessToken", handler);
Log.d(TAG, "OK: verifyEloToken result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: verifyEloToken", e);
}
getDeviceOwnerStatus
public java.lang.String getDeviceOwnerStatus()
Deze functie retourneert de huidige apparaats-eigenaars pakketnaam wanneer de apparaats-eigenaar wordt ingesteld via de SDK.
Returns
Apparaat eigenaar pakketnaam
Voorbeeld
try {
// TODO: Zorg ervoor dat de service is gebonden voordat SDK API's worden aangeroepen
Object result = sdk.getDeviceOwnerStatus();
Log.d(TAG, "OK: getDeviceOwnerStatus result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: getDeviceOwnerStatus", e);
}
setDeviceOwner
public boolean setDeviceOwner(java.lang.String packageName, java.lang.String className) throws java.lang.NullPointerException
Deze functie stelt een component in als de apparaateigenaar. Deze functie is asynchroon. De handler wordt aangeroepen voor retourinformatie. Let op dat het gebruik van deze API de functionaliteit van EloView en de standaard apparaatsfunctionaliteit kan beïnvloeden.
Parameters
- packageName – Pakketnaam van de apparaat eigenaar.
Returns
true als de operatie succesvol is, false anders
Throws
java.lang.NullPointerException – Als de NonNull-parameters leeg of null zijn
Voorbeeld
try {
// TODO: Zorg ervoor dat de service is gebonden voordat SDK API's worden aangeroepen
Object result = sdk.setDeviceOwner("packageName", "className");
Log.d(TAG, "OK: setDeviceOwner result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: setDeviceOwner", e);
}
getDeviceOwnerStatus
public java.lang.String getDeviceOwnerStatus()
Deze functie retourneert de huidige apparaat eigenaar pakketnaam wanneer de apparaat eigenaar via de SDK is ingesteld.
Returns
Apparaat eigenaar pakketnaam
Voorbeeld
try {
// TODO: Zorg ervoor dat de service is gebonden voordat SDK API's worden aangeroepen
Object result = sdk.getDeviceOwnerStatus();
Log.d(TAG, "OK: getDeviceOwnerStatus result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: getDeviceOwnerStatus", e);
}
removeDeviceOwner
public boolean removeDeviceOwner(java.lang.String packageName) throws java.lang.SecurityException
Deze functie verwijdert de apparaats-eigenaar. Opmerking: Deze functie kan alleen worden aangeroepen door de huidige apparaats-eigenaar.
Parameters
- packageName – Pakketnaam van de apparaats-eigenaar.
Throws
java.lang.SecurityException – Als de aanroeper de huidige apparaats-eigenaar component niet bezit
Voorbeeld
try {
// TODO: Zorg ervoor dat de service is gebonden voordat SDK API's worden aangeroepen
Object result = sdk.removeDeviceOwner("packageName");
Log.d(TAG, "OK: removeDeviceOwner result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: removeDeviceOwner", e);
}
setDeviceOwner
public boolean setDeviceOwner(java.lang.String packageName, java.lang.String className) throws java.lang.NullPointerException
Deze functie stelt een component in als de apparaateigenaar. Deze functie is asynchroon. De handler zal worden aangeroepen voor retourinformatie. Let op dat het gebruik van deze API de functionaliteit van EloView en de standaard apparaatsfunctionaliteit kan beïnvloeden.
Parameters
- packageName – Pakketnaam van de apparaats-eigenaar.
Returns
true als de operatie succesvol is, false anders
Throws
java.lang.NullPointerException – Als de NonNull-parameters leeg of null zijn
Voorbeeld
try {
// TODO: Zorg ervoor dat de service is gebonden voordat SDK API's worden aangeroepen
Object result = sdk.setDeviceOwner("packageName", "className");
Log.d(TAG, "OK: setDeviceOwner result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: setDeviceOwner", e);
}
getProperty
public static java.lang.String getProperty()
Voorbeeld
try {
// TODO: Zorg ervoor dat de service is gebonden voordat SDK API's worden aangeroepen
Object result = sdk.getProperty();
Log.d(TAG, "OK: getProperty result=" + result);
} catch (Exception e) {
Log.e(TAG, "FAIL: getProperty", e);
}
Please report any broken links by emailing support@elotouch.com and include a link to the knowledge article