diff --git a/app/src/main/java/xdsopl/robot36/MainActivity.java b/app/src/main/java/xdsopl/robot36/MainActivity.java index ddd93bf..974cc98 100644 --- a/app/src/main/java/xdsopl/robot36/MainActivity.java +++ b/app/src/main/java/xdsopl/robot36/MainActivity.java @@ -52,6 +52,7 @@ public class MainActivity extends Activity { private ShareActionProvider share; private int notifyID = 1; private boolean enableAnalyzer = true; + private Menu menu; private void showNotification() { Intent intent = new Intent(this, MainActivity.class); @@ -123,39 +124,68 @@ public class MainActivity extends Activity { setContentView(R.layout.activity_main); changeLayoutOrientation(getResources().getConfiguration()); image = (ImageView)findViewById(R.id.image); + manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); + startDecoder(); + } + + protected void stopDecoder() { + if (decoder == null) + return; + decoder.destroy(); + decoder = null; + manager.cancel(notifyID); + menu.findItem(R.id.action_toggle_decoder).setIcon(getResources().getDrawable(android.R.drawable.ic_media_play)); + menu.setGroupEnabled(R.id.group_decoder, false); + } + + protected void startDecoder() { + if (decoder != null) + return; decoder = new Decoder(this, (SpectrumView)findViewById(R.id.spectrum), (SpectrumView)findViewById(R.id.spectrogram), - image, + (ImageView)findViewById(R.id.image), (VUMeterView)findViewById(R.id.meter) ); - manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); + decoder.enable_analyzer(enableAnalyzer); showNotification(); + if (menu != null) { + menu.findItem(R.id.action_toggle_decoder).setIcon(getResources().getDrawable(android.R.drawable.ic_media_pause)); + menu.setGroupEnabled(R.id.group_decoder, true); + } + } + + protected void toggleDecoder() { + if (decoder == null) + startDecoder(); + else + stopDecoder(); } @Override protected void onDestroy () { - decoder.destroy(); - decoder = null; - manager.cancel(notifyID); + stopDecoder(); super.onDestroy(); } @Override protected void onPause() { - decoder.pause(); + if (decoder != null) + decoder.pause(); super.onPause(); } @Override protected void onResume() { - decoder.resume(); + if (decoder != null) + decoder.resume(); super.onResume(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); + this.menu = menu; share = (ShareActionProvider)menu.findItem(R.id.menu_item_share).getActionProvider(); return true; } @@ -183,6 +213,9 @@ public class MainActivity extends Activity { @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { + case R.id.action_toggle_decoder: + toggleDecoder(); + return true; case R.id.action_save_image: storeBitmap(image.bitmap); return true; diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml index a6fb30a..8d8ff88 100644 --- a/app/src/main/res/menu/menu_main.xml +++ b/app/src/main/res/menu/menu_main.xml @@ -15,47 +15,55 @@ android:showAsAction="ifRoom" /> - - + + - - - - + + - - + + + + - + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index a9aef8a..baf8b6e 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -4,6 +4,7 @@ "Dekodierer läuft Bild speichern Bild löschen + Dekodierer umschalten Automatik umschalten Bildanalyse umschalten Analysator umschalten diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1ac0cc8..9a6a163 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -4,6 +4,7 @@ "decoder is running Save Image Clear Image + Toggle Decoder Toggle Auto Mode Toggle Debug Mode Toggle Analyzer