I have been trying to build this myself, without any coding experience and with a help, please do not judge, gemini 😃
The Goal
The idea is simple: create a Glyph animation that automatically plays on the back of the phone whenever the Google Assistant is actively listening, especially when the screen is off.
What works
Amazingly, it mostly works! The app correctly detects when the assistant starts, the ForegroundService kicks in, the animation plays for its set duration, and the timeout logic to stop the animation works perfectly. The logs show everything firing exactly as it should.
The bug
Here’s where we’re stuck. After our animation plays and our service calls unInit() to release the hardware, the Glyph Matrix gets “stuck.” No other apps or system features (like voice recorder animation, volume up/down animation or essential notifications) can use the Glyphs. The lights just stay off.
Workarounds
This is the weird part. We’ve discovered two ways to “un-stick” the hardware:
Locking and then unlocking the phone.
Pressing the physical Glyph Button on the back to cycle through the official Glyph Toys.
Doing either of these things seems to force a system-level reset of the hardware, and then everything works perfectly again until our animation runs.
The code is doing everything by the book: we call init(), register(), draw our frames, and on cleanup, we send a final blank frame and call unInit(). The logs confirm this all happens without any errors. It really seems like the unInit() command isn’t fully releasing the hardware lock.
Has anyone else run into this? Is there some secret, undocumented “force release” command I am missing, or is this a bug in the SDK?
Any help or wild theories would be hugely appreciated!