- Hello Neurable!
- Here's my submission:
- Your approach to solving the challenge.
- To mimic the Neurable headphones product, first you must connect to a device. Then the data will begin collecting. The app gives feedback based on your EEG readings. You can pause and restart the data transfer.
- We want this app to be highly reactive while interacting with data streams coming from other hardware. So I used an MVVM architecture to separate concerns like connecting to the device, collecting readings, and managing app UI.
- To help separate concerns, I used the concept of a Repository as the data storage layer, and the UseCase as the business logic layer.
- The Viewmodel handles the UI state and the interaction between the View and the UseCase, and in combination with LiveData allows easy lifecyle management.
- Steps to build and run the app.
- I've built the apk for your convenience: ben-tseytlin-app-submission.apk
- A unit test for focus score generation: FocusScoreFlowTest
- Any additional notes or assumptions.
- This was my first time working with Jetpack Compose. I've always worked with XML and various binding systems. I thought it would be interesting to learn Jetpack Compose as it was requested for this exercise.
- Obviously I kept it pretty limited on the UI side, but it satisfies the requirements as described!
- I would be interested to learn more of the best practices with Jetpack Compose as there are clearly various ways to pass around data, state and callbacks.
- Jetpack Compose was interesting and certainly is powerful. It was fun to be able to create (essentially) a recycler view with just a few lines of code, although Jetpack Compose is not without it's downsides.
- I would add significantly more UI to this app: animations, icons (a pulsing EEG, for example), a flushed out navigation implementation including back button from the Bluetooth Connection screen.
- Cheers, Ben
benzabill/AndroidDev
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|