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();
}
}