Position: Senior Android Developer (Sofia)
Company: Multi-programming Solutions
Category: Java
Experience required: 5y
English level: upper

**Требования:**

- 4+ years of commercial experience in Android development
- Strong knowledge of Android SDK, Java, Kotlin
- Strong experience in working with REST API
- Understanding of MVP, MVVM patterns, Clean architecture
- English level - Upper Intermediate and higher
- Android TV development IS A PLUS
- Knowledge of Python is a plus

**Обязанности:**

Genie STBs currently utilize a server-client model based on the RVU standard. This model employs a Remote UIs (“RUIs”) that limit graphics performance. The Genie Improved Graphics Architecture (“GCUPU”) project reduces the use of RUIs for the “Menu” and “VOD” screens and adds a new, high-performing graphics engine for all Genie thin client STBs. This yields a major benefit of allowing the end users to navigate through menus with significantly greater speed and smoothness significantly increasing the overall customer experience, driving the net promoter score up while increasing the revenue opportunities through the improved performance of VOD screens on the RVU client devices. 

* Porting of MQ Telemetry Transport («MQTT») library to support server-client interactions using MQTT. This includes either freeing up sufficient space on the Genie server to allow the MQTT library to fit into the main stack or moving MQTT library to the satellite plugin and loading into the main stack separately.
* Implement screen management software on the server to properly detect and handle the new GUPPY screens.
* Implement all REST APIs to allow GUPPY clients to retrieve dynamic data necessary to populate the GUPPY screens.
* Implement REST APIs to allow GUPPY clients to trigger events on the server such as:
- Schedule a recording
- Start playback of an existing recording
- Tune to channel
- Navigate to a different screen (with context provided by a client).
- Support for audit trail functionality allowing the user to navigate to a screen back.
* Implement asynchronous notification model to signal changes to allow client to display necessary user interface adjustments in response to the following events:
- Recording Library changes (deletions, additions, completions)
- Schedule Service changes (added schedule, removed schedule)
- Advanced Program Guide (APG) changes impacting the titles currently displayed to the customer.
* Implement an error detection mechanism to allow the server to drop back to a normal RUI session in case any issues arise with the GUPPY protocol or networking.