package org.skylight1.hrm.glass; import org.skylight1.hrm.R; import android.app.Activity; import android.content.ComponentName; import android.content.Intent; import android.content.ServiceConnection; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; import android.view.Menu; import android.view.MenuItem; /** * This activity manages the options menu that appears when the user taps on the compass's live * card. */ public class MenuActivity extends Activity { private final Handler mHandler = new Handler(); private GlassService.HRMDemoBinder mGlassService; private boolean mAttachedToWindow; private boolean mOptionsMenuOpen; private ServiceConnection mConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { if (service instanceof GlassService.HRMDemoBinder) { mGlassService = (GlassService.HRMDemoBinder) service; openOptionsMenu(); } } @Override public void onServiceDisconnected(ComponentName name) { // Do nothing. } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); bindService(new Intent(this, GlassService.class), mConnection, 0); } @Override public void onAttachedToWindow() { super.onAttachedToWindow(); mAttachedToWindow = true; openOptionsMenu(); } @Override public void onDetachedFromWindow() { super.onDetachedFromWindow(); mAttachedToWindow = false; } @Override public void openOptionsMenu() { if (!mOptionsMenuOpen && mAttachedToWindow && mGlassService != null) { super.openOptionsMenu(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.hrmdemo, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.read_aloud: mGlassService.readAloud(); return true; case R.id.stop: mHandler.post(new Runnable() { @Override public void run() { stopService(new Intent(MenuActivity.this, GlassService.class)); } }); return true; default: return super.onOptionsItemSelected(item); } } @Override public void onOptionsMenuClosed(Menu menu) { super.onOptionsMenuClosed(menu); mOptionsMenuOpen = false; unbindService(mConnection); finish(); } }