TCL RayNeo X2 AR Glasses
Smarthome Light Controller app
Self Introduction
App Demo with Voiceover
I submitted an app proposal and was chosen to receive a pre-release set of the AR glasses in order to develop my Smart Light Controller app, currently compatible with Philips Lighting Hue lights! And I was very fortunate to be featured in the launch presentation as well, at timestamp 88:50 or 1:28:50 (a clip was taken by TCL from the full videos posted above):
https://www.bilibili.com/video/BV1gB4y1Z7K3/
It was a fun challenge and quite exciting to work with a brand new piece of hardware, using an unreleased SDK under NDA agreement.
The X2 is truly the first of a new generation, with dual waveguide optics in clear lenses, allowing for true AR with stereoscopic, high-quality, full color images in a form factor about the same size as a standard pair of eyeglasses.
Thank you to TCL Industries for providing the glasses and for the nicely framed Certificate of Appreciation! I'm very excited to see where this partnership goes and what I'm able to accomplish as the platform grows and changes! More info on the glasses here: https://www.rayneo.com/products/tcl-rayneo-x2
This is an example app made with pure Jetpack Compose that recreates the Facebook Messenger UI using the latest Compose methods and libraries, including the Compose Navigation library.
An app which takes a Github username then displays the bio and profile image for that user. Then, a "Show Starred Repos" button shows a list of repos that user has starred. Each repo can be clicked to show a detail screen with the profile image of that repo's owner, along with a description of the repo, the number of forks, watchers, and stars.
Uses retrofit to download from Github API, then moshi to parse the JSON. Picasso is used to download and cache profile images. Uses Room to store user profile for offline browsing. ViewModels, DataBinding, BindingAdapters, and RecyclerView are used to display the data. Uses Navigation component to move between Fragments and SafeArgs to pass data between them.
Java app downloads movie posters and details via The Movie DB API for either popular movies or highest rated. Clicking a movie poster opens Movie Details activity which shows user rating, release date, description, and reviews. Also includes links to related trailers that open the Youtube app with an explicit intent. User can click the star icon to add the movie to a favorites database stored locally.
getResponseFromHttpUrl is used to manually download the JSON response from the API, which is then parsed using a custom JSONUtils class. Uses DiskIO and NetworkIO Executors to perform work on background threads. (Note: This is a Java app, but I've been using Room, retrofit, and moshi libraries in conjunction with Kotlin coroutines in more recent apps).
An app to view the asteroids detected by NASA that pass near Earth. You can view all the detected asteroids in a period of time, their data (size, velocity, and distance from Earth) and if they are potentially hazardous.
Uses Retrofit to fetch Asteroid data from NASA API in JSON format. Moshi converts to Domain Object, then it’s stored in a Room Database, and the list is displayed using a ViewModel, LiveData, DataBinding, and RecyclerView. Glide is also used to download and display the NASA image of the day.
An app to download a file from Internet by clicking on a Custom View Button where:
width of the button gets animated from left to right
text gets changed based on different states of the button
circle gets be animated from 0 to 360 degrees
A notification will be sent once the download is complete. When a user clicks on notification, the user lands on detail activity and the notification gets dismissed. In detail activity, the status of the download will be displayed and animated via MotionLayout upon opening the activity.
Uses IntentFilter and DownloadManager to register a BroadcastReceiver to be triggered when download status changes, which sends the user a notification. Created Custom View Button to act as loading indicator — text of Button changes depending on loading state and circle is animated inside Button to indicate loading is in progress. MotionLayout used to animate download status text in DetailActivity.