Stephen Siapno Help

Projects in Accenture

Client: Global Brand based in Japan

Our team collaborates closely with a prominent global brand headquartered in Japan.

Our mission? To create, update, and maintain a suite of pre-installed applications for Android TV.

Over the past four years, we've worked on over 20 Android apps for this client, handling a diverse range of responsibilities.

Specifically, I've spearheaded the architecture and development efforts for four critical modules within these applications.

Top Highlight

Project Device Modules

This module includes different parts that adjust picture, sound, and other settings based on how close the person is to the TV, specific configurations, and gestures made in front of the TV.

Some of the modules were assigned to my team.

Device Settings Module
  • Description: This application integrates a dedicated page into the Settings menu of Android TV, allowing seamless access to device-specific settings and related functionalities. Through this module, users can conveniently manage various device configurations directly from the Settings interface.

  • Type: Android App

  • Role: Lead, Android Engineer

  • Responsibility: Spearheaded the architecture design, development and act as the subject-matter expert

  • Language: Kotlin

  • Architecture: MVI-Clean Architecture

  • Library used: RxKotlin, Coroutine, JUnit, Mockito.

Device Initial Setup Wizard Module
  • Description: This application features an activity designed to manage various device-related activities within the Android TV setup wizard. Additionally, it includes functionality to detect the device's connection status with the Android TV and display the setup screen accordingly. By embedding this module into the setup wizard, users can conveniently configure device settings and initiate setup procedures directly from their Android TV.

  • Type: Android App

  • Role: Lead, Android Engineer

  • Responsibility: Spearheaded the architecture design, development and act as the subject-matter expert

  • Language: Kotlin

  • Architecture: MVI-Clean Architecture

  • Libraries used: RxJava, Coroutine, JUnit, Mockito

Factory Reset Library Module
  • Description: An Android Library designed to execute factory reset

  • operations on devices and invoke the necessary services related to

  • factory reset functionality. Type: Android Library

  • Type: Android Library

  • Role: Lead, Android Engineer

  • Responsibility: Development

  • Language: Kotlin

Others

Project Firmware Update

Firmware Update Settings
  • Description: An Android application designed to facilitate firmware updates for the device directly within the Settings Menu.

  • Type: Android App

  • Role: Lead, Android Engineer

  • Responsibility: Spearheaded the architecture design, development and act as the subject-matter expert

  • Language: Kotlin

  • Architecture: MVVM-Clean Architecture

  • Libraries used: RxJava, JUnit, Mockito

Firmware Update Setup
  • Description: This Android application component is called within the Device Initial Setup Wizard to initiate firmware updates in the background using a Service.

  • Type: Android App

  • Role: Lead, Android Engineer

  • Responsibility: Spearheaded the architecture design, development and act as the subject-matter expert

  • Language: Kotlin

  • Architecture: MVVM-Clean Architecture

  • Libraries used: RxJava, JUnit, Mockito

Energy Saving Projects

Energy Saving Dashboard
  • Description: An Android application that displays a dashboard demonstrating how users can save energy by configuring their settings.

  • Type: Android App

  • Role: Android Engineer

  • Responsibility: Conducting code reviews, provide guidance on the development, acting as a sub-subject matter expert, and implementing new features.

  • Language: Kotlin

  • Architecture: MVVM Hybrid Architecture

  • Libraries used: Coroutine

Power Saving Setup
  • Description: This Android application embeds a screen within the Initial Setup Wizard to configure Power Saving settings.

  • Type: Android App

  • Role: Maintainer, Android Engineer

  • Responsibility: Conducting code reviews and fixing defects.

  • Language: Kotlin

Initial Setup Wizard

Initial Setup Wizard relating to Client
  • Description: This Android application manages various screens from other applications to arrange multiple setup screens as required.

  • Type: Android App

  • Role: Maintainer, Android Engineer

  • Responsibility: Conducting code reviews and fixing defects.

  • Language: Java

Setup Wizard relating to Google
  • Description: This framework application manipulates the Google Initial Setup Wizard, which runs before the client's Initial Setup Wizard.

  • Type: Framework

  • Role: Maintainer, Android Engineer

  • Responsibility: Conducting code reviews, enhancing build configuration using build flavors, and adding additional configurations.

  • Language: Java, XML

Accessibility

Accessibility Settings
  • Description: This Android application embeds additional accessibility settings items that are not included in the standard Android settings.

  • Type: Android App

  • Role: Code Reviewer

  • Responsibility: Conducting code reviews and providing guidance.

  • Language: Kotlin

Accessibility Wizard
  • Description: This Android application is launched during the Initial Setup Wizard to inform users about the availability of accessibility features.

  • Type: Android App

  • Role: Code Reviewer

  • Responsibility: Conducting code reviews.

  • Language: Kotlin

Accessibility Cards
  • Description: This Android application showcases how to utilize Accessibility features based on different accessibility needs.

  • Type: Android App

  • Role: Code Reviewer, Maintainer

  • Responsibility: Conducting code reviews and fixing defects.

  • Language: Java

Accessibility Module in Client System Service
  • Description: This module configures the necessary accessibility features in the background using the client's system service.

  • Type: Module included in System Service

  • Role: Code Reviewer and Android Engineer

  • Responsibility: Conducting code reviews and adding new features.

  • Language: Kotlin

Country and Region

Country and Region App
  • Description: This Android application integrates into the setup and settings, overriding the default country and region setup to align more closely with the client's expected data.

  • Type: Android App

  • Role: Android Engineer

  • Responsibility: Fixing defects and introducing unit tests for easier testing.

  • Language: Implementation is Java, but Unit Testing is done in Kotlin.

  • Libraries used: JUnit and Mockito

Clock

Alarm and timer
  • Description: This Android application includes features for setting alarms, timers, and other related time management tools.

  • Type: Android App

  • Role: Maintainer

  • Responsibility: Fixing defects and providing guidance.

  • Language: Java

Other Device

Remote control Settings
  • Description: This Android application is responsible for filtering remote types and updating the firmware of the remote.

  • Type: Android App

  • Role: Maintainer

  • Responsibility: Fixing defects and providing guidance.

  • Language: Java

Audio Settings
  • Description: This Android application is embedded in the settings menu and is responsible for managing previously connected audio devices.

  • Type: Android App

  • Role: Android Engineer

  • Responsibility: Contributed to the development of the app as part of the team.

  • Language: Kotlin

  • Architecture: MVVM

  • Libraries used: Room, Coroutine

Audio Setup
  • Description: This Android application detects if a new audio device is connected and displays an audio setup screen accordingly.

  • Type: Android App

  • Role: Android Engineer

  • Responsibility: Contributed to the development of the app as part of the team.

  • Language: Kotlin

  • Architecture: MVVM

  • Libraries used: Room, Coroutine, Retrofit

Audio Module related to Client System Service
  • Description: This module facilitates communication with the lower layers and checks Bluetooth connections by filtering only selected audio devices, enabling the launch of the Audio Setup screen.

  • Type: Module in Client System Service

  • Role: Android Engineer

  • Responsibility: Contributed to the development of the module as part of the team.

  • Language: Java

Picture and Sound Settings

Picture and Sound Settings
  • Description: This Android application contains all the necessary configurations for picture and audio settings. Users can set up different configurations depending on the input type or application displayed on the screen (e.g., HDMI1, HDMI2, Cable, Netflix).

  • Type: Android App

  • Role: Android Engineer

  • Responsibility: Adding new features, updating the database to support new hardware versions, and fixing defects.

  • Language: Java

  • Architecture: Factory Pattern Design

  • Libraries used: SQLite

Picture and Sound Modules related to Client System Service
  • Description: This module facilitates communication with the low layer to relay changes in picture and sound configurations to the Picture and Sound Application for rendering and sharing.

  • Type: Module in Client System Service

  • Role: Android Engineer

  • Responsibility: Contributed to the development of the module as part of the team.

  • Language: Java

Prototype Projects

Remote Plugin
  • Description: This plugin simulates the behavior of a remote control by sending adb commands to control navigation and other functionalities that a remote can perform.

  • Type: Android Studio Plugin

  • Role: Researcher

  • Responsibility: Create a proof of concept application.

  • Language: Java

Reflection

Reflecting on my Android development projects, I've encountered various challenges and opportunities that have contributed to my growth as a developer. From leading critical modules to maintaining and enhancing applications, each project has been a learning experience.

I've tackled tasks like managing device settings, executing firmware updates, and developing custom features with enthusiasm and dedication.

Through code reviews, defect fixes, and feature enhancements, I've ensured the quality and functionality of every app.

My involvement in these projects has reinforced my commitment to continuous learning and improvement. By staying updated with the latest technologies and practices, I aim to deliver impactful solutions that meet evolving needs.

Looking ahead, I'm excited to take on new challenges and continue growing as an Android developer.

Each project has been a stepping stone in my journey, driving me toward excellence and innovation in every endeavor.

Last modified: 07 March 2024