From cc6b8c096d14cad8e89a3d151a437584cc814a01 Mon Sep 17 00:00:00 2001 From: woheller69 Date: Wed, 4 May 2022 10:12:42 +0200 Subject: [PATCH] add +/- buttons for frequency in single test add prev / next buttons for test result --- .../audiometry/PerformSingleTest.java | 58 +++++++++---------- .../org/woheller69/audiometry/TestData.java | 31 ++++++++-- .../org/woheller69/audiometry/TestLookup.java | 36 +++++++----- .../res/drawable/ic_skip_next_black_24dp.xml | 9 +++ .../drawable/ic_skip_previous_black_24dp.xml | 9 +++ .../res/layout/activity_performsingletest.xml | 54 ++++++++++++----- .../main/res/layout/activity_test_data.xml | 43 ++++++++++++-- 7 files changed, 167 insertions(+), 73 deletions(-) create mode 100644 app/src/main/res/drawable/ic_skip_next_black_24dp.xml create mode 100644 app/src/main/res/drawable/ic_skip_previous_black_24dp.xml diff --git a/app/src/main/java/org/woheller69/audiometry/PerformSingleTest.java b/app/src/main/java/org/woheller69/audiometry/PerformSingleTest.java index 38e3bdb..e001ebe 100644 --- a/app/src/main/java/org/woheller69/audiometry/PerformSingleTest.java +++ b/app/src/main/java/org/woheller69/audiometry/PerformSingleTest.java @@ -32,8 +32,10 @@ public class PerformSingleTest extends AppCompatActivity { TextView earView; TextView dBView; TextView frequencyView; - Button minusView; - Button plusView; + Button volMinusView; + Button volPlusView; + Button freqPlusView; + Button freqMinusView; private int s=0; private int i=0; @@ -87,37 +89,29 @@ public void run() { calibrationArray=fileOperations.readCalibration(context); actualVolume = (minVolume + maxVolume) / 2f; - plusView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - actualVolume = (actualVolume*Math.sqrt(2d)); - if (actualVolume>maxVolume) actualVolume=maxVolume; - } + volPlusView.setOnClickListener(v -> { + actualVolume = (actualVolume*Math.sqrt(2d)); + if (actualVolume>maxVolume) actualVolume=maxVolume; }); - minusView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - actualVolume = (actualVolume/Math.sqrt(2d)); - if (actualVolume <= 1) { - showToast(getString(R.string.error_volume)); - actualVolume = 1; - } + volMinusView.setOnClickListener(v -> { + actualVolume = (actualVolume/Math.sqrt(2d)); + if (actualVolume <= 1) { + showToast(getString(R.string.error_volume)); + actualVolume = 1; } }); - earView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - s =(s + 1)%2; - } + earView.setOnClickListener(v -> s =(s + 1)%2); + freqPlusView.setOnClickListener(v -> { + int j=i; + i=(i+1)%testFrequencies.length; + actualVolume=actualVolume*Math.pow(10,(calibrationArray[i]-calibrationArray[j])/20); + if (actualVolume>maxVolume) actualVolume=maxVolume; }); - frequencyView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - int j=i; - i=(i+1)%testFrequencies.length; - actualVolume=actualVolume*Math.pow(10,(calibrationArray[i]-calibrationArray[j])/20); - if (actualVolume>maxVolume) actualVolume=maxVolume; - } + freqMinusView.setOnClickListener(v -> { + int j=i; + i=(i+testFrequencies.length-1)%testFrequencies.length; + actualVolume=actualVolume*Math.pow(10,(calibrationArray[i]-calibrationArray[j])/20); + if (actualVolume>maxVolume) actualVolume=maxVolume; }); while (!stopped) { int frequency = testFrequencies[i]; @@ -155,8 +149,10 @@ protected void onCreate(Bundle savedInstanceState) { earView = findViewById(R.id.ear); frequencyView = findViewById(R.id.frequency); dBView = findViewById(R.id.db); - minusView = findViewById(R.id.minus); - plusView = findViewById(R.id.plus); + volMinusView = findViewById(R.id.vol_minus); + volPlusView = findViewById(R.id.vol_plus); + freqMinusView = findViewById(R.id.freq_minus); + freqPlusView = findViewById(R.id.freq_plus); getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); getWindow().setStatusBarColor(getResources().getColor(R.color.primary_dark,getTheme())); } diff --git a/app/src/main/java/org/woheller69/audiometry/TestData.java b/app/src/main/java/org/woheller69/audiometry/TestData.java index 28dff9f..4f8601b 100644 --- a/app/src/main/java/org/woheller69/audiometry/TestData.java +++ b/app/src/main/java/org/woheller69/audiometry/TestData.java @@ -30,7 +30,8 @@ import static org.woheller69.audiometry.PerformTest.testFrequencies; public class TestData extends AppCompatActivity { - + int index; + String[] allSavedTests; double[][] testResults = new double[2][testFrequencies.length]; double[] calibrationArray = new double[testFrequencies.length]; String fileName; @@ -53,15 +54,37 @@ public float unScaleCbr(double cbr) { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); context=this; + allSavedTests=TestLookup.getAllSavedTests(this); getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); getWindow().setStatusBarColor(getResources().getColor(R.color.primary_dark,getTheme())); setContentView(R.layout.activity_test_data); Intent intent = getIntent(); - fileName = intent.getStringExtra(TestLookup.DESIRED_FILE); + index = intent.getIntExtra("Index",0); + fileName = allSavedTests[index]; + + ImageButton next = (ImageButton) findViewById(R.id.next); + next.setOnClickListener(view -> { + index = (index - 1); + if (index < 0) index = 0; + fileName = allSavedTests[index]; + draw(); + }); - String[] names = fileName.split("-"); + ImageButton prev = (ImageButton) findViewById(R.id.prev); + prev.setOnClickListener(view -> { + index = (index + 1); + if (index > allSavedTests.length-1) index = allSavedTests.length-1; + fileName = allSavedTests[index]; + draw(); + }); + + draw(); + } + + private void draw() { + String[] names = fileName.split("-"); String time = DateFormat.getTimeInstance(DateFormat.SHORT).format(Long.parseLong(names[1])) + ", " + DateFormat.getDateInstance(DateFormat.SHORT).format(Long.parseLong(names[1])); String name = getString(R.string.test_at,time); @@ -181,11 +204,9 @@ public int getDecimalDigits() { chart.setData(data); chart.invalidate(); // refresh - } - @Override public boolean onCreateOptionsMenu(Menu menu) { diff --git a/app/src/main/java/org/woheller69/audiometry/TestLookup.java b/app/src/main/java/org/woheller69/audiometry/TestLookup.java index 0f4074b..6011860 100644 --- a/app/src/main/java/org/woheller69/audiometry/TestLookup.java +++ b/app/src/main/java/org/woheller69/audiometry/TestLookup.java @@ -1,5 +1,6 @@ package org.woheller69.audiometry; +import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Color; @@ -29,11 +30,10 @@ public class TestLookup extends AppCompatActivity { - public final static String DESIRED_FILE = "ut.ewh.audiometrytest.DESIRED_FILE"; String[] allSavedTests; - public void gotoTestData(View view, String fileName){ + public void gotoTestData(View view, int index){ Intent intent = new Intent(this, TestData.class); - intent.putExtra(DESIRED_FILE, fileName); + intent.putExtra("Index", index); startActivity(intent); } @@ -67,18 +67,7 @@ private void createView() { textview.setGravity(Gravity.CENTER); layout.addView(textview, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)); - SharedPreferences prefManager = PreferenceManager.getDefaultSharedPreferences(this); - int user = prefManager.getInt("user",1); - - List list = new ArrayList(Arrays.asList(fileList())); - Collections.sort(list,Collections.reverseOrder()); - for (Iterator iterator = list.iterator(); iterator.hasNext();) { - String string = iterator.next(); - if (string.equals("CalibrationPreferences")) iterator.remove(); - else if (user == 1 && string.contains("U2")) iterator.remove(); - else if (user == 2 && !string.contains("U2")) iterator.remove(); - } - allSavedTests = list.toArray(new String[0]); + allSavedTests = getAllSavedTests(this); if (allSavedTests.length < 1) { TextView message = new TextView(this); @@ -113,7 +102,7 @@ private void createView() { int finalI = i; b.setId(finalI); registerForContextMenu(b); - b.setOnClickListener(view -> gotoTestData(view, allSavedTests[finalI])); + b.setOnClickListener(view -> gotoTestData(view, finalI)); container.addView(b, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)); } scrollview.addView(container); @@ -122,6 +111,21 @@ private void createView() { } } + public static String[] getAllSavedTests(Context context) { + SharedPreferences prefManager = PreferenceManager.getDefaultSharedPreferences(context); + int user = prefManager.getInt("user",1); + + List list = new ArrayList(Arrays.asList(context.fileList())); + Collections.sort(list,Collections.reverseOrder()); + for (Iterator iterator = list.iterator(); iterator.hasNext();) { + String string = iterator.next(); + if (string.equals("CalibrationPreferences")) iterator.remove(); + else if (user == 1 && string.contains("U2")) iterator.remove(); + else if (user == 2 && !string.contains("U2")) iterator.remove(); + } + return list.toArray(new String[0]); + } + @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo){ super.onCreateContextMenu(menu, v, menuInfo); diff --git a/app/src/main/res/drawable/ic_skip_next_black_24dp.xml b/app/src/main/res/drawable/ic_skip_next_black_24dp.xml new file mode 100644 index 0000000..2bda386 --- /dev/null +++ b/app/src/main/res/drawable/ic_skip_next_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_skip_previous_black_24dp.xml b/app/src/main/res/drawable/ic_skip_previous_black_24dp.xml new file mode 100644 index 0000000..0c2abe0 --- /dev/null +++ b/app/src/main/res/drawable/ic_skip_previous_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/activity_performsingletest.xml b/app/src/main/res/layout/activity_performsingletest.xml index 9f27913..908292b 100644 --- a/app/src/main/res/layout/activity_performsingletest.xml +++ b/app/src/main/res/layout/activity_performsingletest.xml @@ -39,32 +39,32 @@ + android:textSize="40sp" + android:textStyle="bold" /> + android:textSize="40sp" + android:textStyle="bold" />