A small Android App has to be developed which displays state-information provided by one or more remote servers.
Details: This App has to retrieve the state-information (in XML format) from one or more TCP/IP servers and has to display them. The server regularly sends updates and the App has to display these changes as soon as they arrive.
The App's main screen consists of a list of items where each item corresponds to one particular server connection. The item displays the name of the server and an icon showing the actual state (disconnected, idle, ready). It has to be expandable so that more icons/states can be added later.
"disconnected" is shown when the connection to the server is interrupted or when no data have been received for more than 3 minutes, in this case the App should try to reconnect to the server permanently (but with a delay of several seconds). When an existing connection is interrupted or timed-out, so that the App changes to "disconnected" it has to play a sound/vibrate (as configured, see below).
When the server switches from "ready" to "idle", the App should play a sound/vibrate (as configured, see below)
When pressing one of these list items, an other screen opens, where more details are shown: the name of the server, the state-icon, a text naming the state, the time-stamp when this state was sent and a file name. All these data are provided by the server as XML data. This detail screen needs to be developed in a way so that it is possible to add more parameters later.
The connection to the server has to be done in a background-service so that the App also works when it is not shown. When a state changes according to the descritpion above and the App is in background, a top-toolbar notification has to be shown (beside sound/vibration).
Additionally two major configuration possibilities have to exist:
- a server configuration where
a) a new server connection can be added (IP address and port number need to be specified) or where an existing server connection can be deleted
b) one can select a sound to be displayed when this servers state changes from "ready" to "idle" (or no sound),
c) one can turn on/off vibration when this servers state changes from "ready" to "idle",
d) one can select a sound to be displayed when this servers state changes to "disconnected" (or no sound),
e) one can turn on/off vibration when this servers state changes to "disconnected"
- a global configuration where user can
a) choose to have small/medium/large text fonts within the app,
b) choose to have light text on black background or black thext on light background within the app
On App's first start-up it should switch to the server configuration immediately in order to force the user to enter the first servers data.
The App has to work with Android 4 or higher. Icons/Images do not need to be designed, here simple placeholders can be set. These placeholders need to be prepared to work with different screen resolutions. The App needs to be as efficient as possible, so beside the Android-API not lots of external packages/frameworks/APIs should be included for these few functions. App has to be compilable with AndroidStudio from Google. Complete sources and make-data have to be handed over. All rights are transferred to us too. The App needs to be expandable easily so that more states/server information can be added later.
The server software to test the App with (easy installation package, no configuration needed) and the detailed description of the XML format will be provided.