1919
2020import android .annotation .TargetApi ;
2121import android .content .Context ;
22+ import android .content .SharedPreferences ;
2223import android .content .pm .ActivityInfo ;
2324import android .content .pm .PackageManager ;
2425import android .media .AudioManager ;
@@ -44,7 +45,9 @@ public class MainActivity extends AppCompatActivity {
4445 private static final int VARIABLE_LOAD_LOW_DURATION = 2000 ;
4546 private static final int VARIABLE_LOAD_HIGH_DURATION = 2000 ;
4647 public static final int MAXIMUM_WORK_CYCLES = 500000 ;
47- private static final int WORK_CYCLE_STEPS = 100 ;
48+ private static final int SEEKBAR_STEPS = 100 ;
49+ private static final float WORK_CYCLES_PER_STEP = MAXIMUM_WORK_CYCLES / SEEKBAR_STEPS ;
50+ private static final String PREFERENCES_KEY_WORK_CYCLES = "work_cycles" ;
4851
4952 private static int workCycles = 0 ;
5053
@@ -55,6 +58,7 @@ public class MainActivity extends AppCompatActivity {
5558 private TextView mDeviceInfoText , mWorkCyclesText ;
5659 private AudioTrack mAudioTrack ;
5760 private VariableLoadGenerator mLoadThread ;
61+ private SharedPreferences mSettings ;
5862
5963 // Native methods
6064 private static native void native_createEngine (int apiLevel );
@@ -77,6 +81,10 @@ protected void onCreate(Bundle savedInstanceState) {
7781 // Lock to portrait to avoid onCreate being called more than once
7882 setRequestedOrientation (ActivityInfo .SCREEN_ORIENTATION_PORTRAIT );
7983
84+ // Load any previously saved values
85+ mSettings = getPreferences (MODE_PRIVATE );
86+ workCycles = mSettings .getInt (PREFERENCES_KEY_WORK_CYCLES , workCycles );
87+
8088 initDeviceInfoUI ();
8189 initPerformanceConfigurationUI ();
8290
@@ -88,6 +96,16 @@ protected void onCreate(Bundle savedInstanceState) {
8896
8997 // Update the UI when there are underruns
9098 initUnderrunUpdater ();
99+
100+ setWorkCycles (workCycles );
101+ }
102+
103+ @ Override
104+ protected void onStop (){
105+ super .onStop ();
106+ SharedPreferences .Editor editor = mSettings .edit ();
107+ editor .putInt (PREFERENCES_KEY_WORK_CYCLES , workCycles );
108+ editor .apply ();
91109 }
92110
93111 private void initDeviceInfoUI (){
@@ -210,10 +228,12 @@ public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
210228 mWorkCyclesText = (TextView ) findViewById (R .id .workCyclesText );
211229
212230 SeekBar workCyclesSeekBar = (SeekBar ) findViewById (R .id .workCycles );
231+ workCyclesSeekBar .setProgress ((int )(workCycles / WORK_CYCLES_PER_STEP ));
232+
213233 workCyclesSeekBar .setOnSeekBarChangeListener (new SeekBar .OnSeekBarChangeListener () {
214234 @ Override
215235 public void onProgressChanged (SeekBar seekBar , int progress , boolean fromUser ) {
216- workCycles = progress * ( MAXIMUM_WORK_CYCLES / WORK_CYCLE_STEPS );
236+ workCycles = ( int )( progress * WORK_CYCLES_PER_STEP );
217237 setWorkCycles (workCycles );
218238 }
219239
0 commit comments