From b8a1268c2093d40424463527706e398868c8d132 Mon Sep 17 00:00:00 2001 From: Alexey Kuznetsov Date: Sun, 27 Feb 2022 12:16:25 +0300 Subject: [PATCH] add audioformat pref --- .../axet/audiorecorder/activities/MainActivity.java | 3 ++- .../audiorecorder/activities/RecordingActivity.java | 4 ++-- .../audiorecorder/activities/SettingsActivity.java | 3 ++- .../axet/audiorecorder/app/RecordingStorage.java | 4 ++-- .../axet/audiorecorder/services/ControlsService.java | 3 ++- .../widgets/RecordingSourcePreferenceCompat.java | 2 ++ app/src/main/res/values/attrs.xml | 10 ++++++++++ app/src/main/res/xml/pref_general.xml | 10 ++++++++++ 8 files changed, 32 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/github/axet/audiorecorder/activities/MainActivity.java b/app/src/main/java/com/github/axet/audiorecorder/activities/MainActivity.java index c555f02..b85f0b5 100644 --- a/app/src/main/java/com/github/axet/audiorecorder/activities/MainActivity.java +++ b/app/src/main/java/com/github/axet/audiorecorder/activities/MainActivity.java @@ -40,6 +40,7 @@ import com.github.axet.androidlibrary.widgets.ErrorDialog; import com.github.axet.androidlibrary.widgets.OpenFileDialog; import com.github.axet.androidlibrary.widgets.SearchView; import com.github.axet.audiolibrary.app.RawSamples; +import com.github.axet.audiolibrary.app.Sound; import com.github.axet.audiolibrary.encoders.FormatWAV; import com.github.axet.audiorecorder.R; import com.github.axet.audiorecorder.app.AudioApplication; @@ -663,7 +664,7 @@ public class MainActivity extends AppCompatThemeActivity { void updateHeader() { Uri uri = storage.getStoragePath(); long free = Storage.getFree(this, uri); - long sec = Storage.average(this, free); + long sec = Storage.average(this, Sound.getAudioFormat(this), free); TextView text = (TextView) findViewById(R.id.space_left); text.setText(AudioApplication.formatFree(this, free, sec)); } diff --git a/app/src/main/java/com/github/axet/audiorecorder/activities/RecordingActivity.java b/app/src/main/java/com/github/axet/audiorecorder/activities/RecordingActivity.java index 36fc274..2e406a0 100644 --- a/app/src/main/java/com/github/axet/audiorecorder/activities/RecordingActivity.java +++ b/app/src/main/java/com/github/axet/audiorecorder/activities/RecordingActivity.java @@ -519,7 +519,7 @@ public class RecordingActivity extends AppCompatThemeActivity { editor.commit(); } Log.d(TAG, "create recording at: " + targetUri); - app.recording = new RecordingStorage(this, pitch.getPitchTime(), targetUri); + app.recording = new RecordingStorage(this, Sound.getAudioFormat(this), pitch.getPitchTime(), targetUri); } recording = app.recording; synchronized (recording.handlers) { @@ -754,7 +754,7 @@ public class RecordingActivity extends AppCompatThemeActivity { String ext = shared.getString(AudioApplication.PREFERENCE_ENCODING, ""); if (shared.getBoolean(AudioApplication.PREFERENCE_FLY, false)) { - perSec = Factory.getEncoderRate(ext, recording.sampleRate); + perSec = Factory.getEncoderRate(Sound.getAudioFormat(this), ext, recording.sampleRate); try { free = Storage.getFree(this, recording.targetUri); } catch (RuntimeException e) { // IllegalArgumentException diff --git a/app/src/main/java/com/github/axet/audiorecorder/activities/SettingsActivity.java b/app/src/main/java/com/github/axet/audiorecorder/activities/SettingsActivity.java index f3a0944..650d9f6 100644 --- a/app/src/main/java/com/github/axet/audiorecorder/activities/SettingsActivity.java +++ b/app/src/main/java/com/github/axet/audiorecorder/activities/SettingsActivity.java @@ -99,7 +99,7 @@ public class SettingsActivity extends AppCompatSettingsThemeActivity implements storage.migrateLocalStorageDialog(this); if (key.equals(AudioApplication.PREFERENCE_RATE)) { int sampleRate = Integer.parseInt(sharedPreferences.getString(AudioApplication.PREFERENCE_RATE, "")); - if (sampleRate != Sound.getValidRecordRate(Sound.getInMode(this), sampleRate)) + if (sampleRate != Sound.getValidRecordRate(Sound.getAudioFormat(this), Sound.getInMode(this), sampleRate)) Toast.Text(this, "Not supported Hz"); } } @@ -163,6 +163,7 @@ public class SettingsActivity extends AppCompatSettingsThemeActivity implements bindPreferenceSummaryToValue(pm.findPreference(AudioApplication.PREFERENCE_CHANNELS)); bindPreferenceSummaryToValue(pm.findPreference(AudioApplication.PREFERENCE_FORMAT)); bindPreferenceSummaryToValue(pm.findPreference(AudioApplication.PREFERENCE_VOLUME)); + bindPreferenceSummaryToValue(pm.findPreference(AudioApplication.PREFERENCE_AUDIOFORMAT)); StoragePathPreferenceCompat s = (StoragePathPreferenceCompat) pm.findPreference(AudioApplication.PREFERENCE_STORAGE); s.setStorage(new Storage(getContext())); diff --git a/app/src/main/java/com/github/axet/audiorecorder/app/RecordingStorage.java b/app/src/main/java/com/github/axet/audiorecorder/app/RecordingStorage.java index d918099..fd6e6ef 100644 --- a/app/src/main/java/com/github/axet/audiorecorder/app/RecordingStorage.java +++ b/app/src/main/java/com/github/axet/audiorecorder/app/RecordingStorage.java @@ -66,7 +66,7 @@ public class RecordingStorage { public int pitchTime; // screen width - public RecordingStorage(Context context, int pitchTime, Uri targetUri) { + public RecordingStorage(Context context, int format, int pitchTime, Uri targetUri) { this.context = context; this.pitchTime = pitchTime; this.targetUri = targetUri; @@ -75,7 +75,7 @@ public class RecordingStorage { sampleRate = Sound.getSampleRate(context); samplesUpdate = (int) (pitchTime * sampleRate / 1000f); samplesUpdateStereo = samplesUpdate * Sound.getChannels(context); - info = new RawSamples.Info(sampleRate, Sound.getChannels(context)); + info = new RawSamples.Info(format, sampleRate, Sound.getChannels(context)); } public void startRecording(int source) { diff --git a/app/src/main/java/com/github/axet/audiorecorder/services/ControlsService.java b/app/src/main/java/com/github/axet/audiorecorder/services/ControlsService.java index 2880a81..f7efdd7 100644 --- a/app/src/main/java/com/github/axet/audiorecorder/services/ControlsService.java +++ b/app/src/main/java/com/github/axet/audiorecorder/services/ControlsService.java @@ -27,6 +27,7 @@ import com.github.axet.androidlibrary.services.PersistentService; import com.github.axet.androidlibrary.widgets.NotificationChannelCompat; import com.github.axet.androidlibrary.widgets.RemoteNotificationCompat; import com.github.axet.androidlibrary.widgets.RemoteViewsCompat; +import com.github.axet.audiolibrary.app.Sound; import com.github.axet.audiolibrary.app.Storage; import com.github.axet.audiorecorder.R; import com.github.axet.audiorecorder.activities.MainActivity; @@ -128,7 +129,7 @@ public class ControlsService extends PersistentService { title = getString(R.string.app_name); Uri f = storage.getStoragePath(); long free = Storage.getFree(context, f); - long sec = Storage.average(context, free); + long sec = Storage.average(context, Sound.getAudioFormat(context), free); text = AudioApplication.formatFree(context, free, sec); builder = new RemoteNotificationCompat.Low(context, R.layout.notifictaion); builder.setViewVisibility(R.id.notification_record, View.VISIBLE); diff --git a/app/src/main/java/com/github/axet/audiorecorder/widgets/RecordingSourcePreferenceCompat.java b/app/src/main/java/com/github/axet/audiorecorder/widgets/RecordingSourcePreferenceCompat.java index 1a8388f..60c571c 100644 --- a/app/src/main/java/com/github/axet/audiorecorder/widgets/RecordingSourcePreferenceCompat.java +++ b/app/src/main/java/com/github/axet/audiorecorder/widgets/RecordingSourcePreferenceCompat.java @@ -6,6 +6,8 @@ import android.content.res.TypedArray; import android.os.Build; import android.preference.PreferenceManager; import android.support.v7.preference.ListPreference; +import android.support.v7.preference.ListPreferenceDialogFragmentCompat; +import android.support.v7.preference.PreferenceViewHolder; import android.util.AttributeSet; import com.github.axet.audiolibrary.app.Sound; diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 18e8db7..570c35f 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -26,6 +26,16 @@ @string/source_internal + + 16-bit PCM + 24-bit PCM (float) + + + + 16 + float + + @string/Theme_Light @string/Theme_Dark diff --git a/app/src/main/res/xml/pref_general.xml b/app/src/main/res/xml/pref_general.xml index 2605104..f620ee5 100644 --- a/app/src/main/res/xml/pref_general.xml +++ b/app/src/main/res/xml/pref_general.xml @@ -7,6 +7,16 @@ android:summary="/sdcard/some/" android:title="@string/pref_storage_title" /> + +