Skip to content

Instantly share code, notes, and snippets.

Last active November 5, 2018 23:07
  • Star 16 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
What would you like to do?
Allow to detect Ambient mode to switch Watch face display on Wear devices
Handler handler = new Handler(Looper.getMainLooper());
final DisplayManager displayManager = (DisplayManager) getSystemService(Context.DISPLAY_SERVICE);
displayManager.registerDisplayListener(new DisplayManager.DisplayListener() {
public void onDisplayAdded(int displayId) {
public void onDisplayRemoved(int displayId) {
public void onDisplayChanged(int displayId) {
try {
if (displayManager.getDisplay(displayId).getState() == Display.STATE_DOZING) {
Log.d(TAG, "onDisplayChanged: dozing");
} else {
Log.d(TAG, "onDisplayChanged: not dozing");
} catch (NullPointerException exception) {
}, handler);
Copy link

So, I went to add this to my sample app and noticed something. The listener needs to be unregistered at some point, or even after the watch face is gone (switching watch faces), it will continue to call all of the methods.

Copy link

Any particular reason why you are catching/ignoring the NullPointerException here?

try {
} catch (NullPointerException e) {

Copy link

LouisCAD commented Feb 8, 2016

@kentarosu onDestroy() is the perfect place to unregister 😉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment