From 1c95d7db12c4c45fe90ec910928c8b4926c8acbf Mon Sep 17 00:00:00 2001 From: Alexey Kuznetsov Date: Sun, 28 Jan 2024 11:04:02 +0300 Subject: [PATCH 01/14] new libs and expceptions --- .../activities/MainActivity.java | 3 +- .../activities/RecordingActivity.java | 84 +++++-------------- .../audiorecorder/app/EncodingStorage.java | 5 +- .../axet/audiorecorder/app/Storage.java | 4 +- 4 files changed, 29 insertions(+), 67 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 b85f0b5..82e0b10 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 @@ -54,6 +54,7 @@ import com.github.axet.audiorecorder.services.RecordingService; import org.json.JSONException; import java.io.File; +import java.io.IOException; public class MainActivity extends AppCompatThemeActivity { public final static String TAG = MainActivity.class.getSimpleName(); @@ -636,7 +637,7 @@ public class MainActivity extends AppCompatThemeActivity { if (Storage.permitted(MainActivity.this, permissions)) { try { storage.migrateLocalStorage(); - } catch (RuntimeException e) { + } catch (RuntimeException | IOException e) { ErrorDialog.Error(MainActivity.this, e); } recordings.load(false, null); 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 66bcb3d..779d2c7 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 @@ -10,8 +10,6 @@ import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.graphics.Rect; -import android.media.AudioFormat; -import android.media.MediaRecorder; import android.net.Uri; import android.os.Build; import android.os.Bundle; @@ -22,7 +20,6 @@ import android.provider.MediaStore; import android.support.v4.content.ContextCompat; import android.support.v7.app.AlertDialog; import android.support.v7.view.WindowCallbackWrapper; -import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.util.DisplayMetrics; import android.util.Log; @@ -38,6 +35,7 @@ import android.widget.TextView; import com.github.axet.androidlibrary.activities.AppCompatThemeActivity; import com.github.axet.androidlibrary.animations.MarginBottomAnimation; +import com.github.axet.androidlibrary.app.PhoneStateChangeListener; import com.github.axet.androidlibrary.services.FileProvider; import com.github.axet.androidlibrary.services.StorageProvider; import com.github.axet.androidlibrary.sound.AudioTrack; @@ -61,12 +59,7 @@ import com.github.axet.audiorecorder.services.EncodingService; import com.github.axet.audiorecorder.services.RecordingService; import java.io.File; -import java.lang.reflect.InvocationHandler; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.lang.reflect.Proxy; -import java.nio.ShortBuffer; -import java.util.concurrent.Executor; +import java.io.IOException; public class RecordingActivity extends AppCompatThemeActivity { public static final String TAG = RecordingActivity.class.getSimpleName(); @@ -86,7 +79,7 @@ public class RecordingActivity extends AppCompatThemeActivity { public static final String START_RECORDING = RecordingService.class.getCanonicalName() + ".START_RECORDING"; public static final String STOP_RECORDING = RecordingService.class.getCanonicalName() + ".STOP_RECORDING"; - PhoneStateChangeListener pscl = new PhoneStateChangeListener(); + PhoneStateChangeListener pscl; Headset headset; Intent recordSoundIntent = null; @@ -300,65 +293,29 @@ public class RecordingActivity extends AppCompatThemeActivity { } } - class PhoneStateChangeListener extends PhoneStateListener { - public boolean wasRinging; + class PhoneStateChangeListener extends com.github.axet.androidlibrary.app.PhoneStateChangeListener { public boolean pausedByCall; - @TargetApi(31) - TelephonyCallback e; - @TargetApi(31) - public class TelephonyCallback extends android.telephony.TelephonyCallback implements android.telephony.TelephonyCallback.CallStateListener { - @Override - public void onCallStateChanged(int i) { - PhoneStateChangeListener.this.onCallStateChanged(i, ""); - } + public PhoneStateChangeListener(Context context) { + super(context); } - public void create() { - Context context = RecordingActivity.this; - TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); - if (Build.VERSION.SDK_INT >= 31 && getApplicationInfo().targetSdkVersion >= 31) { - if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) { - e = new TelephonyCallback(); - tm.registerTelephonyCallback(getMainExecutor(), e); - } - } else { - tm.listen(this, PhoneStateListener.LISTEN_CALL_STATE); - } - } - - public void close() { - Context context = RecordingActivity.this; - TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); - if (Build.VERSION.SDK_INT >= 31 && getApplicationInfo().targetSdkVersion >= 31) { - if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) - tm.unregisterTelephonyCallback(e); - } else { - tm.listen(this, PhoneStateListener.LISTEN_NONE); + @Override + public void onAnswered() { + super.onAnswered(); + if (recording.thread != null) { + stopRecording(getString(R.string.hold_by_call), false); + pausedByCall = true; } } @Override - public void onCallStateChanged(int s, String incomingNumber) { - switch (s) { - case TelephonyManager.CALL_STATE_RINGING: - wasRinging = true; - break; - case TelephonyManager.CALL_STATE_OFFHOOK: - wasRinging = true; - if (recording.thread != null) { - stopRecording(getString(R.string.hold_by_call), false); - pausedByCall = true; - } - break; - case TelephonyManager.CALL_STATE_IDLE: - if (pausedByCall) { - if (receiver.isRecordingReady()) - ; // startRecording(); - } - wasRinging = false; - pausedByCall = false; - break; + public void onIdle() { + super.onIdle(); + if (pausedByCall) { +// if (receiver.isRecordingReady()) +// startRecording(); + pausedByCall = false; } } } @@ -439,6 +396,7 @@ public class RecordingActivity extends AppCompatThemeActivity { receiver.filter.addAction(ACTION_FINISH_RECORDING); receiver.registerReceiver(this); + pscl = new PhoneStateChangeListener(this); final SharedPreferences shared = PreferenceManager.getDefaultSharedPreferences(this); if (shared.getBoolean(AudioApplication.PREFERENCE_CALL, false)) pscl.create(); @@ -458,10 +416,10 @@ public class RecordingActivity extends AppCompatThemeActivity { recording.e.close(); recording.e = null; } - } catch (RuntimeException e) { + Storage.delete(RecordingActivity.this, recording.targetUri); + } catch (RuntimeException | IOException e) { Error(e); } - Storage.delete(RecordingActivity.this, recording.targetUri); } Storage.delete(recording.storage.getTempRecording()); finish(); diff --git a/app/src/main/java/com/github/axet/audiorecorder/app/EncodingStorage.java b/app/src/main/java/com/github/axet/audiorecorder/app/EncodingStorage.java index 26ed56d..33932d5 100644 --- a/app/src/main/java/com/github/axet/audiorecorder/app/EncodingStorage.java +++ b/app/src/main/java/com/github/axet/audiorecorder/app/EncodingStorage.java @@ -22,6 +22,7 @@ import org.json.JSONObject; import java.io.File; import java.io.FilenameFilter; +import java.io.IOException; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.HashMap; @@ -201,14 +202,14 @@ public class EncodingStorage extends HashMap { }, new Runnable() { @Override public void run() { // or error - Storage.delete(storage.getContext(), fly.targetUri); // fly has fd, delete target manually try { + Storage.delete(storage.getContext(), fly.targetUri); // fly has fd, delete target manually Intent intent = new Intent() .putExtra("in", encoder.in) .putExtra("info", info.save().toString()) .putExtra("e", encoder.getException()); Post(ERROR, intent); - } catch (JSONException e) { + } catch (JSONException | IOException e) { throw new RuntimeException(e); } } diff --git a/app/src/main/java/com/github/axet/audiorecorder/app/Storage.java b/app/src/main/java/com/github/axet/audiorecorder/app/Storage.java index 1676ca6..685b4bf 100644 --- a/app/src/main/java/com/github/axet/audiorecorder/app/Storage.java +++ b/app/src/main/java/com/github/axet/audiorecorder/app/Storage.java @@ -10,6 +10,8 @@ import android.preference.PreferenceManager; import com.github.axet.androidlibrary.services.StorageProvider; import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; @@ -135,7 +137,7 @@ public class Storage extends com.github.axet.audiolibrary.app.Storage { } @Override - public void migrateLocalStorage() { + public void migrateLocalStorage() throws IOException { super.migrateLocalStorage(); deleteTmp(); } From 16e61c92f57bdcc0d50342059ec47f7c2b33e06f Mon Sep 17 00:00:00 2001 From: Alexey Kuznetsov Date: Sun, 28 Jan 2024 13:55:42 +0300 Subject: [PATCH 02/14] cleanups expcetions --- .../axet/audiorecorder/activities/RecordingActivity.java | 4 ++-- .../com/github/axet/audiorecorder/app/EncodingStorage.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) 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 779d2c7..518aff3 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 @@ -416,10 +416,10 @@ public class RecordingActivity extends AppCompatThemeActivity { recording.e.close(); recording.e = null; } - Storage.delete(RecordingActivity.this, recording.targetUri); - } catch (RuntimeException | IOException e) { + } catch (RuntimeException e) { Error(e); } + Storage.delete(RecordingActivity.this, recording.targetUri); } Storage.delete(recording.storage.getTempRecording()); finish(); diff --git a/app/src/main/java/com/github/axet/audiorecorder/app/EncodingStorage.java b/app/src/main/java/com/github/axet/audiorecorder/app/EncodingStorage.java index 33932d5..ab541f1 100644 --- a/app/src/main/java/com/github/axet/audiorecorder/app/EncodingStorage.java +++ b/app/src/main/java/com/github/axet/audiorecorder/app/EncodingStorage.java @@ -209,7 +209,7 @@ public class EncodingStorage extends HashMap { .putExtra("info", info.save().toString()) .putExtra("e", encoder.getException()); Post(ERROR, intent); - } catch (JSONException | IOException e) { + } catch (JSONException e) { throw new RuntimeException(e); } } From 5292de89f4ce16b41b63b363c093ddf324076473 Mon Sep 17 00:00:00 2001 From: Alexey Kuznetsov Date: Tue, 26 Mar 2024 11:09:16 +0300 Subject: [PATCH 03/14] drop unit test --- .../axet/audiorecorder/ApplicationTest.java | 16 ---------------- .../axet/audiorecorder/ExampleUnitTest.java | 15 --------------- 2 files changed, 31 deletions(-) delete mode 100644 app/src/androidTest/java/com/github/axet/audiorecorder/ApplicationTest.java delete mode 100644 app/src/test/java/com/github/axet/audiorecorder/ExampleUnitTest.java diff --git a/app/src/androidTest/java/com/github/axet/audiorecorder/ApplicationTest.java b/app/src/androidTest/java/com/github/axet/audiorecorder/ApplicationTest.java deleted file mode 100644 index df0797a..0000000 --- a/app/src/androidTest/java/com/github/axet/audiorecorder/ApplicationTest.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.github.axet.audiorecorder; - -import android.app.Application; -import android.test.ApplicationTestCase; - -/** - * Testing Fundamentals - */ -public class ApplicationTest extends ApplicationTestCase { - public ApplicationTest() { - super(Application.class); - } - - public void testFFT() { - } -} diff --git a/app/src/test/java/com/github/axet/audiorecorder/ExampleUnitTest.java b/app/src/test/java/com/github/axet/audiorecorder/ExampleUnitTest.java deleted file mode 100644 index 7c4e1fa..0000000 --- a/app/src/test/java/com/github/axet/audiorecorder/ExampleUnitTest.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.github.axet.audiorecorder; - -import org.junit.Test; - -import static org.junit.Assert.*; - -/** - * To work on unit tests, switch the Test Artifact in the Build Variants view. - */ -public class ExampleUnitTest { - @Test - public void addition_isCorrect() throws Exception { - assertEquals(4, 2 + 2); - } -} \ No newline at end of file From 4bbf6eff3038bd24428d2fd4be2958ecdbce94e1 Mon Sep 17 00:00:00 2001 From: Alexey Kuznetsov Date: Tue, 26 Mar 2024 12:16:51 +0300 Subject: [PATCH 04/14] fix theme --- app/src/main/AndroidManifest.xml | 25 ++++++++----- .../activities/MainActivity.java | 2 +- .../activities/RecordingActivity.java | 2 +- .../activities/SettingsActivity.java | 2 +- .../audiorecorder/app/RecordingStorage.java | 36 +++++++------------ app/src/main/res/values/styles.xml | 21 ++++++++--- 6 files changed, 49 insertions(+), 39 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e490927..516f560 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -23,15 +23,18 @@ android:requestLegacyExternalStorage="true" android:roundIcon="@mipmap/ic_launcher" android:supportsRtl="true" - android:theme="@style/Translucent"> - + android:theme="@android:style/Theme.Translucent.NoTitleBar"> + + android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"> @@ -39,14 +42,15 @@ + android:label="@string/app_name" + android:theme="@android:style/Theme.Translucent.NoTitleBar" /> + android:theme="@android:style/Theme.Translucent.NoTitleBar"> @@ -62,7 +66,8 @@ android:configChanges="orientation|keyboardHidden|screenSize" android:exported="true" android:launchMode="singleInstance" - android:showOnLockScreen="true"> + android:showOnLockScreen="true" + android:theme="@android:style/Theme.Translucent.NoTitleBar"> @@ -79,14 +84,18 @@ - + - + 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 82e0b10..8b4f981 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 @@ -399,7 +399,7 @@ public class MainActivity extends AppCompatThemeActivity { @Override public int getAppTheme() { - return AudioApplication.getTheme(this, R.style.RecThemeLight_NoActionBar, R.style.RecThemeDark_NoActionBar); + return AudioApplication.getTheme(this, R.style.RecThemeLight_NoActionBar, R.style.RecThemeDark_NoActionBar, R.style.RecThemeDarkBlack_NoActionBar); } @Override 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 518aff3..d8439aa 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 @@ -370,7 +370,7 @@ public class RecordingActivity extends AppCompatThemeActivity { @Override public int getAppTheme() { - return AudioApplication.getTheme(this, R.style.RecThemeLight, R.style.RecThemeDark); + return AudioApplication.getTheme(this, R.style.RecThemeLight, R.style.RecThemeDark, R.style.RecThemeDarkBlack); } @Override 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 9616ae7..b0c83bb 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 @@ -60,7 +60,7 @@ public class SettingsActivity extends AppCompatSettingsThemeActivity implements @Override public int getAppTheme() { - return AudioApplication.getTheme(this, R.style.RecThemeLight, R.style.RecThemeDark); + return AudioApplication.getTheme(this, R.style.RecThemeLight, R.style.RecThemeDark, R.style.RecThemeDarkBlack); } @Override 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 db10e9c..9270ed5 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 @@ -1,6 +1,5 @@ package com.github.axet.audiorecorder.app; -import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.media.AudioFormat; @@ -18,20 +17,8 @@ import com.github.axet.audiolibrary.app.Sound; import com.github.axet.audiolibrary.encoders.Encoder; import com.github.axet.audiolibrary.encoders.OnFlyEncoding; import com.github.axet.audiorecorder.BuildConfig; -import com.github.axet.audiorecorder.R; -import org.apache.commons.io.FileUtils; -import org.apache.commons.io.FilenameUtils; -import org.json.JSONException; - -import java.io.File; -import java.io.IOException; -import java.nio.ByteBuffer; -import java.nio.ShortBuffer; -import java.nio.charset.Charset; -import java.nio.charset.StandardCharsets; import java.util.ArrayList; -import java.util.Locale; import java.util.concurrent.atomic.AtomicBoolean; public class RecordingStorage { @@ -78,7 +65,7 @@ public class RecordingStorage { info = new RawSamples.Info(format, sampleRate, Sound.getChannels(context)); } - public void startRecording(int source) { + public void startRecording(final int source) { final SharedPreferences shared = android.preference.PreferenceManager.getDefaultSharedPreferences(context); sound.silent(); @@ -240,17 +227,20 @@ public class RecordingStorage { } session += samples; - if (samplesTime - silence > 2 * sampleRate) { // 2 second of mic muted - if (!silenceDetected) { - silenceDetected = true; - Post(MUTED, null); - } - } else { - if (silenceDetected) { - silenceDetected = false; - Post(UNMUTED, null); + if (source != Sound.SOURCE_INTERNAL_AUDIO) { + if (samplesTime - silence > 2 * sampleRate) { // 2 second of mic muted + if (!silenceDetected) { + silenceDetected = true; + Post(MUTED, null); + } + } else { + if (silenceDetected) { + silenceDetected = false; + Post(UNMUTED, null); + } } } + diff = (now - start) * sampleRate / 1000; // number of samples we expect by this moment if (diff - session > 2 * sampleRate) { // 2 second of silence / paused by os Post(PAUSED, null); diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 657e03b..8320de5 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -6,20 +6,31 @@ #b1b1b1 + + - - + + + + From ebc956c9ee11aaf0c795a447dbb1382b50afcdb9 Mon Sep 17 00:00:00 2001 From: Alexey Kuznetsov Date: Mon, 10 Jun 2024 12:55:23 +0300 Subject: [PATCH 05/14] keylocker cleanups --- .../github/axet/audiorecorder/activities/MainActivity.java | 4 ++-- 1 file changed, 2 insertions(+), 2 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 8b4f981..beaffb3 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 @@ -35,6 +35,7 @@ import android.widget.Toast; import com.github.axet.androidlibrary.activities.AppCompatThemeActivity; import com.github.axet.androidlibrary.preferences.AboutPreferenceCompat; import com.github.axet.androidlibrary.preferences.OptimizationPreferenceCompat; +import com.github.axet.androidlibrary.preferences.ScreenlockPreference; import com.github.axet.androidlibrary.services.StorageProvider; import com.github.axet.androidlibrary.widgets.ErrorDialog; import com.github.axet.androidlibrary.widgets.OpenFileDialog; @@ -489,8 +490,7 @@ public class MainActivity extends AppCompatThemeActivity { getMenuInflater().inflate(R.menu.menu_main, menu); - KeyguardManager myKM = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); - if (myKM.inKeyguardRestrictedInputMode()) + if (ScreenlockPreference.isLocked(this)) menu.findItem(R.id.action_settings).setVisible(false); MenuItem item = menu.findItem(R.id.action_show_folder); From d82b1cf23dd14a564e52a300c0ad5f7869900d85 Mon Sep 17 00:00:00 2001 From: Stephan Paternotte Date: Sat, 21 Sep 2024 20:18:15 +0000 Subject: [PATCH 06/14] Dutch translations to master --- CONTRIBUTORS.md | 25 ++++----- app/src/main/res/raw-nl/about.html | 23 ++++++++ app/src/main/res/values-nl/strings.xml | 74 ++++++++++++++++++++++++++ 3 files changed, 110 insertions(+), 12 deletions(-) create mode 100644 app/src/main/res/raw-nl/about.html create mode 100644 app/src/main/res/values-nl/strings.xml diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index dd513a7..ff2c6a0 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -1,16 +1,17 @@ # Translations - * japanese translation thanks to @naofumi - * german translation thanks to @s72785 - * brazilian translation thanks to @vrozsas - * itallian tralslation thanks to @Agno94 - * slovak translation thanks to @pvagner - * french thanks to @Nonot - * turkish thanks to @tneonflo - * spanish thanks to @sguinetti - * greek tanks to @cryoranger - * Indonesian thanks to @ditokp, @zmni - * polish thanks to @krkk - * Chinese thanks to @itoy + * Chinese translation thanks to @itoy * Chinese (Taiwan) translation thanks to @cges30901 + * Brazilian translation thanks to @vrozsas * Danish translation thanks to @lianergoist + * Dutch translation thanks to @Stephan-P + * French translation thanks to @Nonot + * German translation thanks to @s72785 + * Greek translation thanks to @cryoranger + * Indonesian translation thanks to @ditokp, @zmni + * Italian translation thanks to @Agno94 + * Japanese translation thanks to @naofumi + * Polish translation thanks to @krkk + * Slovak translation thanks to @pvagner + * Spanish translation thanks to @sguinetti + * Turkish translation thanks to @tneonflo diff --git a/app/src/main/res/raw-nl/about.html b/app/src/main/res/raw-nl/about.html new file mode 100644 index 0000000..00a4c96 --- /dev/null +++ b/app/src/main/res/raw-nl/about.html @@ -0,0 +1,23 @@ + + + + + + +

Over

+

+ Android-vriendelijk! +

+ +

Audio Recorder met aangepaste map voor opnames, fraaie indicatie van opnamevolume, opnamemelding, opname-activiteit op het vergrendelingsscherm.

+ +
+
Licentie:
+
GPLv3
+
Broncode:
+
https://gitlab.com/axet/android-audio-recorder
+
+ + diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml new file mode 100644 index 0000000..a7e5114 --- /dev/null +++ b/app/src/main/res/values-nl/strings.xml @@ -0,0 +1,74 @@ + + Audio Recorder + + + 48 kHz + 44.1 kHz (CD) + 32 kHz + 22 kHz + 16 kHz (standaard) + 11 kHz + 8 kHz (telefoon) + + + + Microfoon + Onbewerkt + Bluetooth + Interne audio + + + + Mono (standaard) + Stereo + + + Geen app voor bestandsbeheer beschikbaar + pauzeren (onderbreking bij oproep) + opname + coderen + pauze + bewerken + Annulering bevestigen + Coderen… + Pauzeren… + Opname + Map met opnames openen + Opnamelijst is leeg\n\nKlik om een opname te starten + Opname + Knippen + Stoppen + Annuleren + Pauzeren + + Map met opnames + Samplerate + Codering + Uitvoerformaat (.wav, .m4a, …) + Audiokanalen + Opnamekanalen + Bestandsnaam-opmaak + Pauzeren tijdens oproep + Stop de opname bij een oproep en hervat deze bij het ophangen + Stille modus + \'Stille modus\' activeren tijdens opname + Bediening op vergrendelingsscherm + Bediening weergeven als de telefoon vergrendeld is + App-thema + App-thema instellen (donker/licht) + Applicatie + Opnames + Direct coderen + Met Direct coderen is bewerking niet mogelijk, evenals herstel van een crash + pauze (bluetooth niet verbonden) + Zoeken + Opslaan als WAV + Automatisch sluiten in (%1$d) + Microfoon gedempt + Android 9 (Pie) en hoger verhinderen dat inactieve achtergrondapps de microfoon gebruiken. Schakel SeLinux uit of downgrade naar een eerdere Android-release! + De microfoon is door Android gepauzeerd. De opnametijd is korter dan de geregistreerde gegevens. Controleer of jouw apparaat opnames in de achtergrond ondersteunt of dat het krachtig genoeg is voor de geselecteerde instellingen + Opname starten + Opname beëindigen + Achtergrondcodering onderbroken door Android-batterijoptimalisatie. Sta toe dat deze applicatie in de achtergrond kan werken + /s + From 1ff89fd8143787122ab976dbbc50d0aafccda40b Mon Sep 17 00:00:00 2001 From: Alexey Kuznetsov Date: Wed, 25 Sep 2024 01:04:03 +0300 Subject: [PATCH 07/14] switch to axet build exoplayer 2.7.3 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index dbaeeb3..253f0d8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -55,5 +55,5 @@ dependencies { testImplementation 'junit:junit:4.12' implementation ('com.github.axet:android-audio-library:1.1.23') // implementation project(':android-audio-library') implementation ('com.github.axet:wget:1.7.0') { exclude group: 'org.json', module: 'json' } - assets('com.google.android.exoplayer:exoplayer:2.7.3') { exclude group: 'com.android.support' } + assets('com.github.axet.exoplayer:exoplayer:2.7.3') { exclude group: 'com.android.support' } } From 6d6852eab0a9ffff3a032e97a88e3adc6f64a816 Mon Sep 17 00:00:00 2001 From: Alexey Kuznetsov Date: Thu, 26 Sep 2024 23:37:16 +0300 Subject: [PATCH 08/14] move screenshots --- README.md | 2 +- {docs => metadata}/google-play-badge.png | Bin .../screenshots/screenshot1.png | Bin 3 files changed, 1 insertion(+), 1 deletion(-) rename {docs => metadata}/google-play-badge.png (100%) rename docs/shot.png => metadata/screenshots/screenshot1.png (100%) diff --git a/README.md b/README.md index 3975dd1..302d477 100644 --- a/README.md +++ b/README.md @@ -16,4 +16,4 @@ If you want to translate 'Audio Recorder' to your language please read this: # Screenshots -![shot](/docs/shot.png) +![screenshot1](./metadata/screenshots/screenshot1.png) diff --git a/docs/google-play-badge.png b/metadata/google-play-badge.png similarity index 100% rename from docs/google-play-badge.png rename to metadata/google-play-badge.png diff --git a/docs/shot.png b/metadata/screenshots/screenshot1.png similarity index 100% rename from docs/shot.png rename to metadata/screenshots/screenshot1.png From 7ff969f0132ea4cd49de9c54d8a24291d05f4aac Mon Sep 17 00:00:00 2001 From: Alexey Kuznetsov Date: Thu, 26 Sep 2024 23:46:13 +0300 Subject: [PATCH 09/14] rename float to 32bit float --- app/src/main/res/values/attrs.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 62871fc..6a3b014 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -28,7 +28,7 @@ 16-bit PCM - 24-bit PCM (float) + 32-bit float From a3d42ff9f055f55de7c572fd9dca11e8ed103b1a Mon Sep 17 00:00:00 2001 From: Alexey Kuznetsov Date: Thu, 26 Sep 2024 23:46:23 +0300 Subject: [PATCH 10/14] readme comments on raw format --- docs/README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/README.md b/docs/README.md index c257577..9a7f85b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -32,16 +32,18 @@ For example: # Raw format - * Signed 16-bit PCM or float (depends on user settings) +Temporary recordings stored inside application specific data folders (described in Recording locations) with following format: + + * Signed 16-bit PCM (2 bytes) or (4 bytes) Float (depends on Settings/Audio Format user setup) * Big Endian - * 1 or 2 channels (depends on user settings). First 2 bytes for left channel, Second 2 bytes for right channel. + * 1 or 2 channels (depends on user settings). First 2/4 bytes for left channel, second 2/4 bytes for right channel. * 16hz to 48hz Sample Rate / Frequincy (depends on user settings) Android supports 16-bit PCM format or PCM float. Android recomends to use PCM float over 24-bit PCM format or 16-bit PCM if possible. * https://developer.android.com/reference/android/media/AudioFormat#encoding -float mantisa is 23 bits (plus sign bit and float point bits) persition in range from -1..1 can hold about 2130706431 unique numbers which is equivalent to 31 bits integer. When 24-bit PCM only gives you 2^24=16,777,216 unique values. +float mantisa is 23 bits (plus sign bit and float point bits) persition in range from -1..1 can hold about 2,130,706,431 unique numbers which is equivalent to 31 bits integer. When 24-bit PCM only gives you 2^24=16,777,216 unique values. # Adb commands From 618b3fa526c2a6916e3d99577626ac2ddca44cbf Mon Sep 17 00:00:00 2001 From: Alexey Kuznetsov Date: Fri, 27 Sep 2024 17:32:17 +0300 Subject: [PATCH 11/14] drop googleplay badge --- metadata/google-play-badge.png | Bin 12319 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 metadata/google-play-badge.png diff --git a/metadata/google-play-badge.png b/metadata/google-play-badge.png deleted file mode 100644 index 877bf747c8c55970665d22cd27ddddbd03f3ec31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12319 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 Date: Sat, 5 Oct 2024 20:50:07 +0300 Subject: [PATCH 12/14] fix bug #169 --- .../github/axet/audiorecorder/activities/MainActivity.java | 5 ++--- 1 file changed, 2 insertions(+), 3 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 beaffb3..df0815e 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 @@ -514,11 +514,10 @@ public class MainActivity extends AppCompatThemeActivity { return false; } }); - searchView.setOnCloseListener(new SearchView.OnCloseListener() { + searchView.setOnCollapsedListener(new SearchView.OnCollapsedListener() { @Override - public boolean onClose() { + public void onCollapsed() { recordings.searchClose(); - return true; } }); From b95bccda6a1b1464108b30c9df0399ba515dfc1e Mon Sep 17 00:00:00 2001 From: Alexey Kuznetsov Date: Thu, 31 Oct 2024 17:22:26 +0300 Subject: [PATCH 13/14] update lib --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 253f0d8..e32748b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -53,7 +53,7 @@ android { dependencies { testImplementation 'junit:junit:4.12' - implementation ('com.github.axet:android-audio-library:1.1.23') // implementation project(':android-audio-library') + implementation ('com.github.axet:android-audio-library:1.1.24') // implementation project(':android-audio-library') implementation ('com.github.axet:wget:1.7.0') { exclude group: 'org.json', module: 'json' } assets('com.github.axet.exoplayer:exoplayer:2.7.3') { exclude group: 'com.android.support' } } From 75648c02252e462287611cdb7aa5608fa264c758 Mon Sep 17 00:00:00 2001 From: Alexey Kuznetsov Date: Thu, 31 Oct 2024 17:22:38 +0300 Subject: [PATCH 14/14] Bump version audiorecorder-3.5.22 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index e32748b..0ceceb5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ android { applicationId "com.github.axet.audiorecorder" minSdkVersion 9 targetSdkVersion 31 - versionCode 377 - versionName "3.5.21" + versionCode 378 + versionName "3.5.22" } signingConfigs { release {