package dk.itu.eyedroid.demo;
import org.opencv.android.BaseLoaderCallback;
import org.opencv.android.LoaderCallbackInterface;
import org.opencv.android.OpenCVLoader;
import android.app.ActionBar;
import android.app.Activity;
import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
import dk.itu.eyedroid.R;
import dk.itu.eyedroid.settings.SettingsActivity;
/**
* EyeDroid demo main activity. This activity is loaded when the application
* starts
*/
public class MainActivity extends Activity implements
NavigationDrawerFragment.NavigationDrawerCallbacks {
private NavigationDrawerFragment mNavigationDrawerFragment; // Fragment
// managing the
// behavior,
// interactions
// and
// presentation
// of the
// navigation
// drawer.
private CharSequence mTitle; // Used to store the last screen title. For use
// in {@link #restoreActionBar()}.
BaseLoaderCallback mLoaderCallbacks; // Library loader callbacks
// Loading libraries
static {
System.loadLibrary("opencv_java");
System.loadLibrary("EyeDroid");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mNavigationDrawerFragment = (NavigationDrawerFragment) getFragmentManager()
.findFragmentById(R.id.navigation_drawer);
mTitle = getTitle();
// Set up the navigation drawer.
mNavigationDrawerFragment.setUp(R.id.navigation_drawer,
(DrawerLayout) findViewById(R.id.drawer_layout));
// Setup loader callbacks
mLoaderCallbacks = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
// Open CV loaded succesfully
case LoaderCallbackInterface.SUCCESS: {
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this,
"OpenCV library is loaded",
Toast.LENGTH_SHORT).show();
}
});
break;
}
// Open CV failed to load
case LoaderCallbackInterface.INIT_FAILED: {
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this,
"Could not load OpenCV", Toast.LENGTH_SHORT)
.show();
}
});
break;
}
default: {
super.onManagerConnected(status);
break;
}
}
}
};
// Initialize OpenCv library
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_9, this,
mLoaderCallbacks);
}
@Override
protected void onResume() {
super.onResume();
}
@Override
public void onNavigationDrawerItemSelected(int position) {
// Select input camera and update the main content by replacing
// fragments
Bundle bundle = new Bundle();
switch (position) {
case MainFragment.FRONT_CAMERA:
bundle.putInt(MainFragment.CAMERA_OPTION, MainFragment.FRONT_CAMERA);
break;
case MainFragment.BACK_CAMERA:
bundle.putInt(MainFragment.CAMERA_OPTION, MainFragment.BACK_CAMERA);
break;
case MainFragment.USB_CAMERA:
bundle.putInt(MainFragment.CAMERA_OPTION, MainFragment.USB_CAMERA);
break;
default:
break;
}
Fragment frag = new MainFragment();
frag.setArguments(bundle);
this.getFragmentManager().beginTransaction()
.replace(R.id.container, frag).commit();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (!mNavigationDrawerFragment.isDrawerOpen()) {
// Only show items in the action bar relevant to this screen if the
// drawer is not showing.
// Otherwise, let the drawer decide what to show in the action bar.
getMenuInflater().inflate(R.menu.main, menu);
restoreActionBar();
return true;
}
return super.onCreateOptionsMenu(menu);
}
public void restoreActionBar() {
ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setTitle(mTitle);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will automatically
// handle clicks on the Home/Up button,
// so long as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
Intent intent = new Intent(this, SettingsActivity.class);
this.startActivity(intent);
return true;
}
return super.onOptionsItemSelected(item);
}
}