commit c9661902bd72fda626d51c004813740e556d72fd
parent 0f79b2ccc79262ff98973300622184ffee9acf7e
Author: gstraube <gstraube@mailbox.org>
Date: Wed, 31 Jan 2018 17:59:56 +0100
Remember last selected tuning (issue #11)
Diffstat:
3 files changed, 35 insertions(+), 15 deletions(-)
diff --git a/app/src/main/java/com/github/cythara/MainActivity.java b/app/src/main/java/com/github/cythara/MainActivity.java
@@ -20,7 +20,6 @@ import android.view.MenuItem;
import android.view.WindowManager;
import android.widget.ArrayAdapter;
-import com.github.cythara.tuning.GuitarTuning;
import com.jaredrummler.materialspinner.MaterialSpinner;
import static android.widget.ArrayAdapter.createFromResource;
@@ -32,8 +31,13 @@ public class MainActivity extends AppCompatActivity implements ListenerFragment.
public static final int RECORD_AUDIO_PERMISSION = 0;
public static final String PREFS_FILE = "prefs_file";
public static final String USE_SCIENTIFIC_NOTATION = "use_scientific_notation";
+ public static final String CURRENT_TUNING = "current_tuning";
private static final String TAG_LISTENER_FRAGMENT = "listener_fragment";
- static Tuning tuning = new GuitarTuning();
+ private static int tuningPosition = 0;
+
+ public static Tuning getCurrentTuning() {
+ return getTuningFromPosition(tuningPosition);
+ }
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -50,12 +54,7 @@ public class MainActivity extends AppCompatActivity implements ListenerFragment.
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
- MaterialSpinner spinner = findViewById(R.id.tuning);
- ArrayAdapter<CharSequence> adapter = createFromResource(this,
- R.array.tunings, android.R.layout.simple_spinner_item);
- adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
- spinner.setAdapter(adapter);
- spinner.setOnItemSelectedListener(this);
+ setTuning();
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
@@ -84,8 +83,8 @@ public class MainActivity extends AppCompatActivity implements ListenerFragment.
case R.id.set_notation: {
final SharedPreferences preferences = getSharedPreferences(PREFS_FILE,
MODE_PRIVATE);
- final boolean useScientificNotation = preferences.getBoolean(USE_SCIENTIFIC_NOTATION,
- true);
+ final boolean useScientificNotation =
+ preferences.getBoolean(USE_SCIENTIFIC_NOTATION, true);
int checkedItem = useScientificNotation ? 0 : 1;
@@ -153,6 +152,18 @@ public class MainActivity extends AppCompatActivity implements ListenerFragment.
}
}
+ @Override
+ public void onItemSelected(MaterialSpinner view, int position, long id, Object item) {
+ final SharedPreferences preferences = getSharedPreferences(PREFS_FILE,
+ MODE_PRIVATE);
+
+ SharedPreferences.Editor editor = preferences.edit();
+ editor.putInt(CURRENT_TUNING, position);
+ editor.apply();
+
+ tuningPosition = position;
+ }
+
private void startRecording() {
FragmentManager fragmentManager = getFragmentManager();
ListenerFragment listenerFragment = (ListenerFragment)
@@ -167,8 +178,17 @@ public class MainActivity extends AppCompatActivity implements ListenerFragment.
}
}
- @Override
- public void onItemSelected(MaterialSpinner view, int position, long id, Object item) {
- tuning = getTuningFromPosition(position);
+ private void setTuning() {
+ final SharedPreferences preferences = getSharedPreferences(PREFS_FILE,
+ MODE_PRIVATE);
+ tuningPosition = preferences.getInt(CURRENT_TUNING, 0);
+
+ MaterialSpinner spinner = findViewById(R.id.tuning);
+ ArrayAdapter<CharSequence> adapter = createFromResource(this,
+ R.array.tunings, android.R.layout.simple_spinner_item);
+ adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+ spinner.setAdapter(adapter);
+ spinner.setOnItemSelectedListener(this);
+ spinner.setSelectedIndex(tuningPosition);
}
}
diff --git a/app/src/main/java/com/github/cythara/PitchComparator.java b/app/src/main/java/com/github/cythara/PitchComparator.java
@@ -6,7 +6,7 @@ import java.util.Comparator;
class PitchComparator {
static PitchDifference retrieveNote(float pitch) {
- Tuning tuning = MainActivity.tuning;
+ Tuning tuning = MainActivity.getCurrentTuning();
Note[] notes = tuning.getNotes();
Arrays.sort(notes, new Comparator<Note>() {
diff --git a/app/src/main/java/com/github/cythara/PitchDifference.java b/app/src/main/java/com/github/cythara/PitchDifference.java
@@ -14,7 +14,7 @@ class PitchDifference implements Parcelable {
}
private PitchDifference(Parcel in) {
- Tuning tuning = MainActivity.tuning;
+ Tuning tuning = MainActivity.getCurrentTuning();
closest = tuning.findNote(in.readString());
deviation = in.readDouble();
}