Qeedji TAB10s User manual

Developer manual 001M
AOSP-9.10.10
TAB10s
8:30

2
Legal noces
AOSP-9.10.10 ( 001M_en)
© 2020 Qeedji
R ights and R esponsibilies
All rights reserved. No part of this manual may be reproduced in any form or by any means whatsoever without the wrien permission of the publisher. The products and services
menoned in this document may be trademarks and/or trademarks of their respecve owners. The publisher and the author do not pretend to these brands.
Although every precauon has been taken in the preparaon of this document, the publisher and the author assumes no responsibility for errors or omissions, or for damages
resulng from the use of the informaon contained in this document or the use of programs and source code who can accompany it. Under no circumstances can the publisher and
the author be held responsible for any loss of profits or any other commercial prejudice caused or that would have been caused directly or indirectly by this document.
Product informaon
The concepon and specificaons of the product may change without prior noce, and this applies to hardware, embedded so ware and this guide. Consumable items accessories
may slightly diff er than herein described as Qeedji is depending on the evoluons of its suppliers. This document contains confidenal informaon; it can’ t be disclosed to any third
pares without prior wrien authorizaon of Qeedji.
Safety instrucons
Please read carefully the following instrucons before switching the product on: - WARNING! Correct fi ng and installaon is of the utmost importance. Incorrect fi ng and/or
installaon may result in personal injury or loss. Qeedji disclaims all liability, of whatever kind, if the product is assembled, fied and/or installed in an incorrect manner. - Do not use
the product near a water supply. - Do not pour anything on the product, like fl ammable liquids or material. - Do not expose the product to direct sun, near a heang source or a dust
nor vibraons. - Do not obstruct holes, to be sure that air fl ows freely around the product. - Switch off the product during a storm. - Do not open the product in any circumstances.
G uarantee terms
Qeedji products are eligible for a warranty to cover genuine manufacturing defect for 3 years. Product failure occurring as the result of factors that do not constute genuine
manufacturing defect are not covered under the terms of the warranty and any repairs of this nature would be chargeable. For example: Inappropriate maintenance acon, a non-
authorized modificaon, a not specified environment ulizaon (see ‘ Safety instrucons’ ), or if the product has been damaged a er an impact, a fall, a bad manipulaon or a storm
consequence, an insufficient protecon against heat, moisture or frost. This warranty is not transferrable. In addion, any repairs carried out by non-authorized personnel will
invalidate the warranty.
W E E E Direcve
This symbol means that your end of life equipment must not be disposed of with household waste but must be deposited at a collecon point for waste electrical and electronic
equipment or to your reseller. This will benefit the environment. In this context, a system for collecng and recycling has been implemented by the European Union

4
1.1 Introducon
This documentaon is intended for ISVs ( Independent Software Vendors ), wishing to develop AOSP APKs on Qeedji TAB10s and who already have Android APK development
skills.
◬
It is recommended to read fi rst the TAB1 0 s user manual.
Demo Package Content
Items Descripon Q uanty
TAB10s Qeedji tablet embedding AOSP 1
Power supply USB Type-C 1
USB Type-C cable Cable - Assembly, Type-C Male to Type-A Male 1
USB hub USB Type-A (2.0), USB Type-C 1

5
1.2 APK Development
Prequisite
The so ware developer already knows how to develop Android APK and generate or debug APK with Android Studio.
AOSP Standard API
The standard API of AOSP 9.10.10 is based on the AOSP SDK 28.
The AOSP 9.10.10 for Qeedji embeds Chromium Web engine 83.
The getDeviceId method of the TelephonyManager class allows to get the device idenficaon UUID value.
The getSerial method of the Build class allows to get the raw PSN.
The BASE_OS stac string of the Build.VERSION class allows to get the so ware version.
Q eedji System Java API
The Qeedji github is hosng the tech-qeedji-system-lib-classes.jar Java library.
The tech-qeedji-system-lib-classes.jar Java library exposes an API for specific features.
public class SurroundLight {
public static final int OFF = 0;
public static final int RED = 1;
public static final int GREEN = 2;
public static final int ORANGE = 3;
public SurroundLight();
public void setColor(int color);
public int getColor();
}
public class Rfid125KHz {
public Rfid125KHz(Context c);
public void setEnabled(boolean value);
}
public class DipSwitch {
public DipSwitch(Context c);
public boolean camera();
public boolean microphone();
}
public class SharedPreferenceAPI {
public String getPreferenceAuthority();
public Object[][] initPreferences();
}
Q eedji System Javascript API
The Qeedji github is hosng the tech-qeedji-host-webview.aar Android library.
The tech-qeedji-host-webview.aar Android library exposes an Javascript API for specific funconalies in a WebView.
The tech-qeedji-host-webview.aar Android library embeds the tech-qeedji-system-lib-classes.jar library.
String Host.Bluetooth().getHardwareAddress();
String Host.Device().getModel();
String Host.Device().getManufacturer();
String Host.Device().getSerial();
String Host.Device().getPsn();
String Host.Device().getSoftwareVersion();
String Host.Device().getDeviceName();
String Host.Device().getUUID();
String Host.Device().getHostname();
String Host.Device().getMacId();
String Host.Device().getField1();
String Host.Device().getField2();
String Host.Device().getField3();
String Host.Device().getField4();
String Host.Device().getField5();
boolean Host.DipSwitch().getCamera();
boolean Host.DipSwitch().getMicrophone();
int Host.NetworkInterfaces().length();
NetworkInterface Host.NetworkInterfaces().get(int index);
String NetworkInterface.getName();
String NetworkInterface.getHardwareAddress();
boolean NetworkInterface.isUp();
void Host.NFC().start();
void Host.NFC().stop();
// parameter type is unused
callback : void onHostNFCReading(String type, String id);
void Host.PowerManager().goToSleep();
void Host.PowerManager().wakeUp();
void Host.PowerManager().reboot();
void Host.ProximitySensor().start();
void Host.ProximitySensor().stop();
callback : void onHostProximitySensorReading(float distance);
void Host.Rfid125KHz().start();
void Host.Rfid125KHz().stop();
int Host.SurroundLight().OFF();
int Host.SurroundLight().RED();
int Host.SurroundLight().GREEN();
int Host.SurroundLight().ORANGE();
void Host.SurroundLight().setColor(int color);
int Host.SurroundLight().getColor();
void Host.SystemButton().start();
void Host.SystemButton().stop();
callback : void onHostSystemButtonReading(int count);

6
APK shared preferences handling with configuraon script
An APK can be designed to share some preferences which can be then read or wrien by the Qeedji System service:
either through the configuraon script,
or through the device configuraon Web interface¹.
¹ Should be available Q2 /2 0 2 1 .
The APK must link the tech-qeedji-system-lib-classes.jar Java library.
The APK must also implement a child class of the SharedPreferenceAPI class supported in the tech-qeedji-system-lib-classes.jar Java library.
package tech.qeedji.test1;
import tech.qeedji.system.lib.SharedPreferenceAPI;
public class MySharedPreferenceAPI extends SharedPreferenceAPI {
@Override
public String getPreferenceAuthority() {
return BuildConfig.APPLICATION_ID;
}
@Override
public Object[][] initPreferences() {
Object[][] preferences = {
// filename, key, access, type, default_value
{"test1", "test1Integer", "rw", int.class, 1},
{"test1", "test1Long", "rw", long.class, 10000000L},
{"test1", "test1Float", "rw", float.class, 0.897546F},
{"test1", "test1Boolean", "rw", boolean.class, true},
{"test1", "test1String", "rw", String.class, "test1StringValue"},
{"test1", "test1StringSet", "rw", String[].class, new String[]{"http://Val0", "http://Val1", "http://Val2"}},
};
return preferences;
}
}
The APK must declare a provider in its manifest.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="tech.qeedji.test1">
<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<provider android:name="tech.qeedji.test1.MySharedPreferenceAPI"
android:authorities="tech.qeedji.test1"
android:multiprocess="false"
android:exported="true"
android:singleUser="false"
android:initOrder="100"
android:visibleToInstantApps="true"/>
</application>
</manifest>
Extract example from a configuraon script:
Android.Preferences("SharedPreferences", "tech.qeedji.test1", "test1").setInt("test1Integer", 8);
Android.Preferences("SharedPreferences", "tech.qeedji.test1", "test1").setLong("test1Long", 99999999);
Android.Preferences("SharedPreferences", "tech.qeedji.test1", "test1").setFloat("test1Float", 0.123456);
Android.Preferences("SharedPreferences", "tech.qeedji.test1", "test1").setBoolean("test1Boolean", false);
Android.Preferences("SharedPreferences", "tech.qeedji.test1", "test1").setString("test1String", "Newtest1StringValue");
Android.Preferences("SharedPreferences", "tech.qeedji.test1", "test1").setStringArray("test1StringSet", ["http://NewVal0", "http://NewVal1", "http://NewVal2"]);

7
E xamples
The Qeedji github for TAB10s is hosng APK examples using the AOSP SDK for TAB10s:
proximity_sensor APK: displays a message Hello Qeedji when a person is detected, or displays a message Nobody detected when no one is detected.
This APK uses the SensorManager API with a default sensor of type Sensor.TYPE_PROX IMITY.
rfid_tag_reader APK: detects NFC tags or RFID 125KHz tags and print their values (type and ID).
This APK uses the NfcAdapter API for NFC tags and the KeyEvent.Callback for RFID 125KHz tags.
The NFC permission and the android.hardware.nfc feature API are required.
surround_light APK: allows to set the surround light color and state with steady/green, steady/orange, steady/red, off .
This APK uses the SurroundLight class described in the specific API.
device_info APK: displays device informaons.
This APK uses the android.os.Build APIs, NetworkInterface and the DipSwitch class described in the specific API.
These permissions are required: READ_PHONE_STATE, READ_PRIVILEGED_PHONE_STATE, INTERNET, ACCESS_NETWORK_STATE, BLUETOOTH, BLUETOOTH_ADMIN,
BLUETOOTH_PERM and LOCAL_MAC_ADDRESS_PERM.
This APK has system privileges.
autorestart APK: is launched automacally a er a device reboot. It is relaunched also automacally a er it crashes.
This APK uses the BroadcastReceiver and Thread.UncaughtExceponHandler APIs.
The RECEIVE_BOOT_COMPLETED permission is required.

8
Device Power Standby: allows to go into (or exit from) Android sleep mode (display off , touch screen off ).
This APK uses the PowerManager API.
The DEVICE_POWER and WAKE_LOCK permissions are required.
This APK has system privileges.
System Buon: print a noficaon message when a short press on the system buon, lower than two seconds, is detected.
This APK uses the BroadcastReceiver API.
URL Launcher: load an URL.
This APK uses the WebView API and the tech-qeedji-host-webview.aar Android library for Qeedji.
The RECEIVE_BOOT_COMPLETED and INTERNET permissions are required.
This APK has system privileges.
A specific 000000000000.js configuraon script allows to configure the URL launcher APK (set URL, set login credenals, ...).
Several websites examples are available on Qeedji github for TAB10s.
◬
Designing an APK having system privileges may require for ISV to sign its APK with a Java Keystore having a certificate signed by Qeedji . For further informaon,
refer to the chapter § System APK signing.

9
APK debug
AOSP for TAB10s is compable with Android Studio and Android Debug Bridge (ADB)² so ware development suite.
²ADB is included in the Android SDK Pla orm- Tools package.
You can debug with ADB using USB or WLAN . In case you have an USB hub with an Ethernet to USB bridge, you can also debug with ADB using LAN .
USB debug
Connect a cable between the TAB10s USB-C connector and the USB 2.0 connector of your computer.
Then wait for the TAB10s is boong up.
Unlike an Android Mobile tablet, the TAB1 0 s has no baery and is completely powered by the USB- C connector. Before supply the TAB1 0 s with the USB connector of your
computer, check with your computer' s manufacturer that its USB connectors are protected against over- intensity to warranty that its USB output will be never damaged.
Check also that the USB output is able to deliver a suffi cient power else the TAB1 0 s may not stop reboong.
W LAN debug
Connect the cable of the USB-C wall plug to the TAB10s USB-C connector.
Then wait for the TAB10s is boong up.
Go in the Settings applicaon and configure the WLAN.
LAN debug
Prerequisite: have a suitable Ethernet to USB (USB-C or POGO type connector) bridge which is connected to the LAN network.
Connect the Ethernet to USB bridge to on the TAB10s (USB-C or POGO type connector).
Debug mode se ng
Launch the Settings applicaon:
press on the About tablet (TAB10s) menu,
press 5 mes on the buon Build number (9.yy.zz release keys) . The message Y ou are now a developer should appear showing that the debug mode is acvated,
go in the Advanced menu. The Developer options menu is now available,
acvate Network debugging or USB debugging according to your needs.
☛It is possible to acvate or inacvate the debug mode on the TAB1 0 s by using the confi guraon script. In the confi guraon- by- script, uncomment the line
disableA llo w D ebug g ing ( ) ; .
Network access permissions
To access the network, an APK needs to declare INTERNET and ACCESS_NETWORK_STATE permissions in its manifest:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

10
1.3 System APK signing
☛ When the ISV wants to design, on the TAB10s, some APK not requiring system rights to be executed, in this case no APK signing is required.
To design an APK having system privileges like the surround light driving, reboot control or URL launcher, the ISV needs to sign its APK with a Java Keystore having a
certificate signed by Qeedji .
☛ The ISV may use his Java Keystore for all its system applicaons and the same cerficate for all the ISV TAB10s devices. When APK signing is required, each ISV must
apply this procedure once.
Procedure to create a system Java Keystore
☛ In the example, it is considered that the company name is Contoso. ISD means IT Service Department. In the procedure, it is required to use the generic email of the
Chief Informaon Security Officer (CISO) of the company, for example [email protected] .
◬
In the following procedure, the following example values have been used.
Label type Label value examples
C US
ST California
L San-Francisco
O Contoso
OU Contoso_ISD
CN CISO
Passphrase 1234
Java_keystore basename file contoso_qeedji_java_keystore
Java_keystore password 567890
Friendly_name / name / key_alias qeedji_aosp_key
1 . GENERATE YOUR PRIVATE KEY
◬
Y ou are responsible for your private key storing which has to be never communicated to a third party.
Generate your private key with a length of 2048 bits with the R SA 2 0 4 8 Bits key type.
For example:
openssl genrsa -f4 2048 > contoso_private_key_for_android.key
2 . GENERATE YOUR OWN CSR (CERTIFICATE SIGNING REQUEST)
Generate your own .csr cerficate signing request thanks to your private key and some applicant idenficaon used to digitally sign the request. Thanks to match the
filename paern by replacing contoso by your own organizaon name.
For example:
openssl req -new -key contoso_private_key_for_android.key -subj '/C=US/ST=California/L=San-
Francisco/O=Contoso/OU=Contoso_ISD/CN=CISO/[email protected]' > contoso-for_qeedji_aosp.csr
3 . SEND YOUR CSR TO QEEDJI
Once generated, send a email to the csr@ qeedji.tech with your CSR ( contoso-for_qeedji_aosp.csr file for example) in aachment.
4 . WAIT FOR THE QEEDJI ANSWER
Qeedji should then return an answer within 7 days.
◬
Qeedji will send its answer to the email defi ned into the CSR fi le ( ciso@ contoso.com for example) , which may be not the same email used to send the CSR to Qeedji.
Qeedji sends 2 files: the signed cerficate (extension .crt) and the CA file (extension .pem).
For example:
contoso-qeedji_aosp-certificate-001A.crt ,
contoso-qeedji_aosp-certificate_authority-001A.pem
5 . GENERATE YOUR PUBLIC CERTIFICATE KEY
You have first to generate your public cerficate key. For example:
openssl pkcs12 -export -in contoso-qeedji_aosp-cerficate-001A.crt -inkey contoso_private_key_for_android.key -out
contoso_cerficate_and_key_for_qeedji_aosp.pk12 -password pass:1234 -name qeedji_aosp_key -chain -CAfile contoso-qeedji_aosp-cerficate_authority-001A.pem
6 . GENERATE THE JAVA KEYSTORE
Generate then a Java Keystore from your public cerficate key with the keytool ¹ toolbox.
The Java Keystore system is now usable in Android Studio .
For example:
keytool -importkeystore -deststorepass 567890 -destkeystore contoso_qeedji_java_keystore.jks -srckeystore contoso_cerficate_and_key_for_qeedji_aosp.pk12 -
srcstoretype PKCS12 -srcstorepass 1234
¹ Keytool is a toolbox to handle cerfi cates for J ava products. It is provided by default in the J DK since version 1 .1 .

11
Make your system APK
1 . MODIFY THE MANIFEST
You modify the APK manifest by adding this line: android:sharedUserId="android.uid.system"
Sample manifest (AndroidManifest.xml file):
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="tech.qeedji.reboot"
android:sharedUserId="android.uid.system">
<uses-permission android:name="android.permission.REBOOT" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
2 . SIGN THE APPLICATION WITH YOUR SYSTEM JAVA KEYSTORE
When creang the APK, sign the APK with your System Java Keystore .
With the previous example, you would have to use the following parameters values:
Key store password = 567890
Key password = 1234
Cerficate revocaon
◬
In case the security or commercial condions are not fully fi lled, Qeedji keeps the rights to revocate a ISV cerfi cate.

12
1.4 Q eedji System service
The TAB10s embeds Qeedji System service. The Qeedji System service is defined as a privileged applicaon of the TAB10s.
This service allows to:
install one or more APK:
by WebDAV server,
by USB storage device inseron,
update the AOSP firmware:
by WebDAV server,
by USB storage device inseron,
configure the product with a Javascript file:
by WebDAV server,
by USB storage device inseron,
by DHCP (code 66),
send data by WebDAV server.
This service allows also to configure the AOSP device mode as soon as the device has started.

14
1.4.2 Installaon by W ebDAV
The available WebDAV directories are:
.apps ,
.software ,
.configuration ,
.data .
Refer to the TAB10s user manual to install through the WebDAV:
a new APK ( .apk ),
a new AOSP firmware ( .zip or .fqs ),
a new configuraon script ( .js ),
Data
To put user data with a WebDAV client, drop them in the /.data/ directory of the WebDAV server.
☛ On the file system of the TAB10s, the data directory is /storage/emulated/0/Android/data/tech.qeedji.system/files/.data . This directory is available by apps with
READ_EX TERNAL_STORAGE and WRITE_EX TERNAL_STORAGE permissions.

15
1.4.3 AOSP device mode
The Qeedji System service allows to configure the AOSP device mode as soon as the device has started. It is handled thanks to the persist.sys.device_mode system property,
used by the SystemUI and Launcher3 AOSP services.
Two values are possible for the persist.sys.device_mode system property:
native (default value): thanks to AOSP menu, the user can, whenever he wants, stops the APK, returns to the AOSP home screen, launches another APK, access to AOSP
funcons like, for example, the Back buon or the Sengs applicaon.
kiosk : all the AOSP user interfaces are unavailable. However the AOSP virtual keyboard remains available.
☛ Note for developers: if the persist.sys.device_mode system property value is invalid or if it does not exist, the default AOSP device mode is native . If the
persist.sys.device_mode system property value is kiosk , the SystemUI service inhibits the system bars and the Launcher3 service hides the AllApps view and the
OponsPopupView dialog box.
The persist.sys.device_mode system property can be changed by using the configuraon script:
native :
setDeviceModeNative(); /* default mode * /
//setDeviceModeKiosk();
kiosk :
//setDeviceModeNative(); /* default mode * /
setDeviceModeKiosk();
For further informaon, refer to the TAB10s user manual.
¹ To be launched automacally in kiosk mode, the applicaon requires a subscripon to the event ACTION_BOOT_COMPLETED. In this case, it is recommended to have only one APK
with this subscripon. For further informaon, refer to hps://developer.android.com/reference/android/content/Intent#ACTION_BOOT_COMPLETED. In case no APK is subscribed
to the event ACTION_BOOT_COMPLETED, the Qeedji wallpaper ² is displayed.
² A next release will allow to load a custom wallpaper.

16
1.5 Q eedji preferences
AOSP system properes added by Q eedji
Name Type R /W Default value V alues Descripon
persist.sys.delivery-software-version String RO 9.10.10_beta7 <x>.<y>.<z>
<software-
extraversion>
Save the version of the last AOSP
firmware upgrade.
persist.sys.device_mode String RW native native ,
kiosk Handle the AOSP device mode.
persist.sys.rfid125khz.enable Boolean RW true true , false Handle the RFID 125KHz.
persist.sys.rfid125khz.keyboard_wedge.key_interval String RW 0 0 to 1000 Define the key interval of RFID
125KHz keyboard edge.
persist.sys.rfid125khz.keyboard_wedge.key_press_duration String RW 0 0 to 1000 Define the key press duraon of
RFID 125KHz keyboard edge.
persist.sys.proximity_sensor.type String RW radar radar , ir Define the proximity sensor.
persist.sys.hostname String RW TAB10s For example
TAB10s-00001
Define the hostname. If the
hostname is empty, the network
hostname corresponds to the
canonized device name. Else, the
network hostname corresponds
to the canonized hostname.
persist.sys.webserver.http.port Integer RW 80 1 to 65535 Define the port of the hp server.
persist.sys.webserver.webdav.credential String RW default Define the credenal ID for the
webdav profil.
persist.sys.webserver.webuiappli.credential String RW default Define the credenal ID for the
webuiappli profil.
persist.sys.webserver.webuiadmin.credential String RW default Define the credenal ID for the
webuiadmin profil.
persist.sys.webserver.webservice.credential String RW default Define the credenal ID for the
webservice profil.
persist.sys.webserver.credential.default.type String RW native native Define the default credenal
type.
persist.sys.webserver.credential.default.username String RW admin admin Define the default credenal
username.
persist.sys.webserver.credential.default.password String RW admin admin Define the default credenal
password.
persist.sys.webserver.credential.<credential_ID>.type String RW native Define the credenal type.
persist.sys.webserver.credential.
<credential_ID>.username String RW Define the credenal username
for the nave type.
persist.sys.webserver.credential.
<credential_ID>.password String RW Define the credenal password
for the nave type.
persist.sys.device_info.field1 String RW Custom device field1 variable.
persist.sys.device_info.field2 String RW Custom device field2 variable.
persist.sys.device_info.field3 String RW Custom device field3 variable.
persist.sys.device_info.field4 String RW Custom device field4 variable.
persist.sys.device_info.field5 String RW Custom device field5 variable.

17
Se ngs preferences added by Q eedji
Name Namespace Type R /W Default
value V alues Descripon
developer_options_allowed secure Integer RW 0 0 , 1 When the preference value is 1 , the debug mode is
allowed.
adb_tcp_enabled global Integer RW 0 0 , 1 When the preference value is 1 , adb over network is
acvated.
adb_tcp_port global Integer RW 5555 0 to
64738 Allows to define the TCP port for adb.
Shared preferences for Q eedji System service
Name Type R /W Default
value V alues Descripon
externalstorage.copy.apk.enabled Boolean RW true true ,
false
When the preference value is true ,
the APK installaon from the root of the USB storage is
authorized.
Shared preferences for the UR L Launcher APK
The shared preferences for URL Launcher APK is stored in the tech.qeedji.url_launcher.prefs.xml file. In case login credenals are required to connect to the URL, an addional
shared preferences tech.qeedji.url_launcher.credential.<credential_label>.prefs.xml file is required.
◬
The shared preferences files for URL launcher APK must be created and updated with the specific 000000000000.js configuraon script.
tech.qeedji.url_launcher.prefs.xml Type R /W Default
value V alues Descripon
start_after_boot_completed Boolean RW true true , false
When the preference value is true ,
The URL launcher APK is automacally started a er
the AOSP has started.
autorefresh_url_enabled Boolean RW false true , false
When the preference value is true ,
The URL launcher APK relaunches periodically the
URL.
autorefresh_url_interval Long RW 60 1 to 86400 Defines the reload period in seconds for the URL
launcher APK.
url String RW for example:
https://www.yoururl.en/ Defines the URL to launch.
credential String RW
for example:
If <credential_label>
worths native ,
the value is native
Defines the subpart of the expected filename
for the addional file required
when login credenals are needed
to connect to the URL.
☛ The <credential_label> subpart of the fi lename is defi ned in the tech.qeedji.url_launcher.prefs.xml fi le above.
tech.qeedji.url_launcher.credential.<credential_label>.prefs Type R /W Default value V alues Descripon
type String RW native native ¹ Define the credenal type.
username String RW Define the URL credenal username.
password String WO Define the URL credenal password.
¹ In this version, only the native value is possible.

18
1.6 FAQ
Do you have special adapters ?
Several PoE adapters can be ordered to Qeedji.
Commercial reference Device model Informaon
EX C.ETH.POGO NAPOE109kt Ethernet PoE Krone to TAB10s built-in adapter
EX C.ETH.USBC NAPOE109ku Ethernet PoE Krone to USB-C built-in adapter
Is it possible to change the brightness of the surround light?
No, the surround light can only be:
Green,
Red,
Orange,
Off
H ow to launch an app in k io sk device mode?
Explain in the paragraph AOSP device mode. Qeedji implements an APK example named url_launcher. Look at the two files below:
AndroidManifest.xml
StartAcvityAtBootReceiver.java
H ow to deploy the APK in producon mode without an USB hub?
To deploy your APK in producon for the first me, there is several ways:
either drop your APK in the /.apps/ directory of the WebDAV server,
or, if the TAB10s device is installed on a EX C.ETH.POGO adapter:
put your .apk files at the root directory of the USB-C storage device,
plug the USB-C storage device on the free USB-C connector of the TAB10s device.
or, if the debug mode is enabled:
use the Android tool named adb ( adb install -g <apk_file> ).
Once your APK is installed:
you can use a method described above,
your APK can install .apk files with the API PackageInstaller.
H ow to deploy the .apk files in producon mode with an USB hub?
plug on the TAB10s an USB hub supporng an USB-C connector for power delivery,
put your .apk files at the root directory of the USB storage device,
plug the USB storage device on the USB hub.
Is it possible to download a configuraon script and apk files from a remote server?
No, but you can develop your own APK.

19
2.1 Contacts
For further informaon, please contact us by e-mail:
Technical support: [email protected],
Sales department: [email protected]ech.
Refer to the Qeedji Website for FAQ, applicaon notes, and so ware downloads:
hps://www.qeedji.tech/
Qeedji FRANCE
INNES SA
5A rue Pierre Joseph Colin
35700 RENNES
Tel: + 33 (0)2 23 20 01 62
Fax: + 33 (0)2 23 20 22 59
Qeedji GERMANY
INNES SA
Verbindungsbüro Deutschland
Lebacher Str. 4
66113 Saarbrücken
Tel: + 49 (0)9386-979 39-14
Fax: + 49 (0)9386-979 39-15
Mob: + 49 (0)175 853 67 81
Other manuals for TAB10s
4
Table of contents
Other Qeedji Touch Panel manuals