From 83967fa47b21088ddea21cb088afac8cae8412bd Mon Sep 17 00:00:00 2001 From: Alexey Kuznetsov Date: Thu, 23 Aug 2018 20:26:17 +0300 Subject: [PATCH 1/7] cleanups --- .../activities/RecordingActivity.java | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 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 c20059d..eca84e9 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 @@ -727,17 +727,19 @@ public class RecordingActivity extends AppCompatThemeActivity { final SharedPreferences shared = PreferenceManager.getDefaultSharedPreferences(this); - TreeMap map = new TreeMap<>(); - map.put(getString(R.string.source_mic), MediaRecorder.AudioSource.MIC); - map.put(getString(R.string.source_default), MediaRecorder.AudioSource.DEFAULT); - if (Sound.isUnprocessedSupported(this)) - map.put(getString(R.string.source_raw), MediaRecorder.AudioSource.UNPROCESSED); - else - map.put(getString(R.string.source_raw), MediaRecorder.AudioSource.VOICE_RECOGNITION); - map.put(getString(R.string.source_bluetooth), MediaRecorder.AudioSource.MIC); + int user; + + if (shared.getString(MainApplication.PREFERENCE_SOURCE, getString(R.string.source_mic)).equals(getString(R.string.source_raw))) { + if (Sound.isUnprocessedSupported(this)) + user = MediaRecorder.AudioSource.UNPROCESSED; + else + user = MediaRecorder.AudioSource.VOICE_RECOGNITION; + } else { + user = MediaRecorder.AudioSource.MIC; + } int[] ss = new int[]{ - map.get(shared.getString(MainApplication.PREFERENCE_SOURCE, getString(R.string.source_mic))), + user, MediaRecorder.AudioSource.MIC, MediaRecorder.AudioSource.DEFAULT }; From b719613bfa9a107a0ae17ce3ed9fd7d0e48125d8 Mon Sep 17 00:00:00 2001 From: ditokp Date: Wed, 29 Aug 2018 17:18:03 +0000 Subject: [PATCH 2/7] Add Indonesian Translation --- app/src/main/res/raw-id/about.html | 24 ++++++ app/src/main/res/values-id/strings.xml | 108 +++++++++++++++++++++++++ 2 files changed, 132 insertions(+) create mode 100644 app/src/main/res/raw-id/about.html create mode 100644 app/src/main/res/values-id/strings.xml diff --git a/app/src/main/res/raw-id/about.html b/app/src/main/res/raw-id/about.html new file mode 100644 index 0000000..e029f37 --- /dev/null +++ b/app/src/main/res/raw-id/about.html @@ -0,0 +1,24 @@ + + + + + + + +

Tentang

+

+ Android ramah! +

+ +

Perekam Audio dengan folder rekaman kustom, indikator volume rekaman yang bagus, notifikasi rekaman, merekam aktivitas layar kunci.

+ +
+
Lisensi:
+
GPLv3
+
Kode Sumber:
+
https://gitlab.com/axet/android-audio-recorder
+
+ + diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml new file mode 100644 index 0000000..65d8938 --- /dev/null +++ b/app/src/main/res/values-id/strings.xml @@ -0,0 +1,108 @@ + + Audio Recorder + + + 48 kHz + 44.1 kHz (CD) + 32 kHz + 22 kHz + 16 kHz (bawaan) + 11 kHz + 8 kHz (telepon) + + + + 48000 + 44100 + 32000 + 22050 + 16000 + 11025 + 8000 + + + + Mik + Belum diproses + Bluetooth + + + + @string/source_mic + @string/source_raw + @string/source_bluetooth + + + + Tema Terang + Tema Gelap + + + + @string/Theme_Light + @string/Theme_Dark + + + + Mono (bawaan) + Stereo + + + + 1 + 2 + + + + 2017-02-01 09.08.01.wav + 1487926249.wav + 20170528T043902.wav + + + + %s + %T + %I + + + Tak ada aplikasi penampil folder yang terpasang + jeda (menahan berdasarkan panggilan) + merekan + encoding + jeda + sunting + Konfirmasi batal + Encoding... + Jeda... + Merekam + Buka Folder Rekaman + Daftar Rekaman Kosong\n\nKlik Rekam untuk Memulai Rekaman + Rekam + Potong + Berhenti + Batal + Jeda + + Jalur Penyimpanan + Rasio Sampel + Encoding + Format file output (.wav, .m4a, ...) + Mode + Saluran rekaman + Nama Format + Jeda Selama ada Panggilan + Berhenti merekam saat menjawab dan lanjutkan saat menutup telepon + Mode Senyap + Masukkan telepon dalam \'mode senyap\' saat rekaman + Kontrol Layar Lockscreen + Perlihatkan kontrol saat telepon dikunci + Tema Aplikasi + Setel tema aplikasi (gelap / terang) + Aplikasi + Rekaman + Encoding on Fly + Mengaktifkan encoding on fly menonaktifkan pengeditan, dan pemulihan kerusakan + jeda (bluetooth terputus) + Cari + Simpan sebagai WAV + From 861e3e74cd62d6ec1211edd47096b1524c2aac0d Mon Sep 17 00:00:00 2001 From: Alexey Kuznetsov Date: Wed, 29 Aug 2018 20:22:59 +0300 Subject: [PATCH 3/7] move trans to attrs --- app/src/main/res/values-w820dp/dimens.xml | 6 ---- app/src/main/res/values/attrs.xml | 38 +++++++++++++++++++++++ app/src/main/res/values/strings.xml | 38 ----------------------- 3 files changed, 38 insertions(+), 44 deletions(-) delete mode 100644 app/src/main/res/values-w820dp/dimens.xml diff --git a/app/src/main/res/values-w820dp/dimens.xml b/app/src/main/res/values-w820dp/dimens.xml deleted file mode 100644 index 63fc816..0000000 --- a/app/src/main/res/values-w820dp/dimens.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - 64dp - diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 97c23de..48f136f 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -6,4 +6,42 @@ default raw bluetooth + + + 48000 + 44100 + 32000 + 22050 + 16000 + 11025 + 8000 + + + + @string/source_mic + @string/source_raw + @string/source_bluetooth + + + + @string/Theme_Light + @string/Theme_Dark + + + + 1 + 2 + + + + 2017-02-01 09.08.01.wav + 1487926249.wav + 20170528T043902.wav + + + + %s + %T + %I + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c6b3251..c1fbdbd 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -11,60 +11,22 @@ 8 kHz (telephone) - - 48000 - 44100 - 32000 - 22050 - 16000 - 11025 - 8000 - - Mic Unprocessed Bluetooth - - @string/source_mic - @string/source_raw - @string/source_bluetooth - - Theme White Theme Dark - - @string/Theme_Light - @string/Theme_Dark - - Mono (default) Stereo - - 1 - 2 - - - - 2017-02-01 09.08.01.wav - 1487926249.wav - 20170528T043902.wav - - - - %s - %T - %I - - No folder view application installed pause (hold by call) recording From c58434d44ca60e710ebca802d3b460945adef5ca Mon Sep 17 00:00:00 2001 From: Alexey Kuznetsov Date: Wed, 29 Aug 2018 20:23:33 +0300 Subject: [PATCH 4/7] move trans to attrs --- app/src/main/res/values-id/strings.xml | 38 -------------------------- 1 file changed, 38 deletions(-) diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index 65d8938..b0eade6 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -11,60 +11,22 @@ 8 kHz (telepon) - - 48000 - 44100 - 32000 - 22050 - 16000 - 11025 - 8000 - - Mik Belum diproses Bluetooth - - @string/source_mic - @string/source_raw - @string/source_bluetooth - - Tema Terang Tema Gelap - - @string/Theme_Light - @string/Theme_Dark - - Mono (bawaan) Stereo - - 1 - 2 - - - - 2017-02-01 09.08.01.wav - 1487926249.wav - 20170528T043902.wav - - - - %s - %T - %I - - Tak ada aplikasi penampil folder yang terpasang jeda (menahan berdasarkan panggilan) merekan From b093cb6c1433d895b2fe394d02f832aec84c3eea Mon Sep 17 00:00:00 2001 From: Alexey Kuznetsov Date: Sun, 23 Sep 2018 00:01:37 +0300 Subject: [PATCH 5/7] add notification channels --- app/build.gradle | 2 +- .../activities/MainActivity.java | 4 +- .../audiorecorder/app/MainApplication.java | 10 +++++ .../services/RecordingService.java | 40 ++++++++++++------- app/src/main/res/values-sw700dp/dimens.xml | 6 +++ app/src/main/res/values/attrs.xml | 1 + 6 files changed, 45 insertions(+), 18 deletions(-) create mode 100644 app/src/main/res/values-sw700dp/dimens.xml diff --git a/app/build.gradle b/app/build.gradle index 1cc7eb2..0bb84ba 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -57,5 +57,5 @@ android { dependencies { testImplementation 'junit:junit:4.12' - implementation 'com.github.axet:android-audio-library:1.0.118' // implementation project(':android-audio-library') + implementation 'com.github.axet:android-audio-library:1.0.120' // implementation project(':android-audio-library') } 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 fc5a030..efddbdf 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 @@ -104,12 +104,12 @@ public class MainActivity extends AppCompatThemeActivity { receiver = new ScreenReceiver() { @Override - public void onReceive(Context context, Intent intent) { + public void onScreenOff() { boolean p = storage.recordingPending(); boolean c = shared.getBoolean(MainApplication.PREFERENCE_CONTROLS, false); if (!p && !c) return; - super.onReceive(context, intent); + super.onScreenOff(); } }; receiver.registerReceiver(this); diff --git a/app/src/main/java/com/github/axet/audiorecorder/app/MainApplication.java b/app/src/main/java/com/github/axet/audiorecorder/app/MainApplication.java index a52bace..dcedce1 100644 --- a/app/src/main/java/com/github/axet/audiorecorder/app/MainApplication.java +++ b/app/src/main/java/com/github/axet/audiorecorder/app/MainApplication.java @@ -3,8 +3,10 @@ package com.github.axet.audiorecorder.app; import android.content.Context; import android.content.SharedPreferences; import android.os.Build; +import android.support.v4.app.NotificationManagerCompat; import android.support.v7.preference.PreferenceManager; +import com.github.axet.androidlibrary.widgets.NotificationChannelCompat; import com.github.axet.audiolibrary.encoders.FormatFLAC; import com.github.axet.audiolibrary.encoders.FormatM4A; import com.github.axet.audiolibrary.encoders.FormatOGG; @@ -19,10 +21,18 @@ public class MainApplication extends com.github.axet.audiolibrary.app.MainApplic public static final String PREFERENCE_VERSION = "version"; + public NotificationChannelCompat channelStatus; + public int getUserTheme() { return getTheme(this, R.style.RecThemeLight, R.style.RecThemeDark); } + @Override + protected void attachBaseContext(Context base) { + super.attachBaseContext(base); + channelStatus = new NotificationChannelCompat(this, "status", "Status", NotificationManagerCompat.IMPORTANCE_LOW); + } + @Override public void onCreate() { super.onCreate(); diff --git a/app/src/main/java/com/github/axet/audiorecorder/services/RecordingService.java b/app/src/main/java/com/github/axet/audiorecorder/services/RecordingService.java index d74aefc..040da84 100644 --- a/app/src/main/java/com/github/axet/audiorecorder/services/RecordingService.java +++ b/app/src/main/java/com/github/axet/audiorecorder/services/RecordingService.java @@ -1,14 +1,11 @@ package com.github.axet.audiorecorder.services; import android.app.Notification; -import android.app.NotificationManager; import android.app.PendingIntent; import android.app.Service; -import android.content.BroadcastReceiver; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; -import android.content.IntentFilter; import android.content.SharedPreferences; import android.net.Uri; import android.os.Build; @@ -16,12 +13,14 @@ import android.os.IBinder; import android.preference.PreferenceManager; import android.support.annotation.Nullable; import android.support.v4.app.NotificationCompat; +import android.support.v4.app.NotificationManagerCompat; import android.util.Log; import android.view.View; +import android.widget.ImageView; import android.widget.RemoteViews; -import com.github.axet.androidlibrary.widgets.OptimizationPreferenceCompat; import com.github.axet.androidlibrary.widgets.ProximityShader; +import com.github.axet.androidlibrary.widgets.ThemeUtils; import com.github.axet.audiolibrary.app.Storage; import com.github.axet.audiorecorder.R; import com.github.axet.audiorecorder.activities.MainActivity; @@ -48,6 +47,7 @@ public class RecordingService extends Service { public static String RECORD_BUTTON = RecordingService.class.getCanonicalName() + ".RECORD_BUTTON"; Storage storage; // for storage path + Notification notification; public static void startIfEnabled(Context context) { SharedPreferences shared = PreferenceManager.getDefaultSharedPreferences(context); @@ -107,14 +107,20 @@ public class RecordingService extends Service { public RecordingService() { } + @Override + protected void attachBaseContext(Context base) { + super.attachBaseContext(base); + } + @Override public void onCreate() { + setTheme(MainApplication.getTheme(this, R.style.RecThemeLight, R.style.RecThemeDark)); super.onCreate(); Log.d(TAG, "onCreate"); storage = new Storage(this); - startForeground(NOTIFICATION_RECORDING_ICON, build(new Intent())); + showNotificationAlarm(true, new Intent()); } @Override @@ -158,9 +164,6 @@ public class RecordingService extends Service { public void onDestroy() { super.onDestroy(); Log.d(TAG, "onDestory"); - - stopForeground(false); - showNotificationAlarm(false, null); } @@ -181,9 +184,9 @@ public class RecordingService extends Service { new Intent(this, RecordingService.class).setAction(RECORD_BUTTON), PendingIntent.FLAG_UPDATE_CURRENT); - RemoteViews view = new RemoteViews(getPackageName(), MainApplication.getTheme(getBaseContext(), - R.layout.notifictaion_recording_light, - R.layout.notifictaion_recording_dark)); + RemoteViews view = new RemoteViews(getPackageName(), MainApplication.getTheme(this, R.layout.notifictaion_recording_light, R.layout.notifictaion_recording_dark)); + + view.setInt(R.id.icon_circle, "setColorFilter", ThemeUtils.getThemeColor(this, R.attr.colorButtonNormal)); // android:tint="?attr/colorButtonNormal" not working API16 String title; String text; @@ -237,13 +240,20 @@ public class RecordingService extends Service { return builder.build(); } - // alarm dismiss button public void showNotificationAlarm(boolean show, Intent intent) { - NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); + NotificationManagerCompat nm = NotificationManagerCompat.from(this); if (!show) { - notificationManager.cancel(NOTIFICATION_RECORDING_ICON); + stopForeground(false); + nm.cancel(NOTIFICATION_RECORDING_ICON); + notification = null; } else { - notificationManager.notify(NOTIFICATION_RECORDING_ICON, build(intent)); + Notification n = build(intent); + ((MainApplication) getApplication()).channelStatus.apply(n); + if (notification == null) + startForeground(NOTIFICATION_RECORDING_ICON, n); + else + nm.notify(NOTIFICATION_RECORDING_ICON, n); + notification = n; } } diff --git a/app/src/main/res/values-sw700dp/dimens.xml b/app/src/main/res/values-sw700dp/dimens.xml new file mode 100644 index 0000000..63fc816 --- /dev/null +++ b/app/src/main/res/values-sw700dp/dimens.xml @@ -0,0 +1,6 @@ + + + 64dp + diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 48f136f..71a8b1f 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -2,6 +2,7 @@ + mic default raw From 73aa7d5b32196bf691484fbe98b8313536e9b6a6 Mon Sep 17 00:00:00 2001 From: Alexey Kuznetsov Date: Sun, 23 Sep 2018 22:22:02 +0300 Subject: [PATCH 6/7] update libs --- app/build.gradle | 2 +- .../audiorecorder/services/RecordingService.java | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 0bb84ba..ba18037 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -57,5 +57,5 @@ android { dependencies { testImplementation 'junit:junit:4.12' - implementation 'com.github.axet:android-audio-library:1.0.120' // implementation project(':android-audio-library') + implementation 'com.github.axet:android-audio-library:1.0.121' // implementation project(':android-audio-library') } diff --git a/app/src/main/java/com/github/axet/audiorecorder/services/RecordingService.java b/app/src/main/java/com/github/axet/audiorecorder/services/RecordingService.java index 040da84..11e2559 100644 --- a/app/src/main/java/com/github/axet/audiorecorder/services/RecordingService.java +++ b/app/src/main/java/com/github/axet/audiorecorder/services/RecordingService.java @@ -20,6 +20,7 @@ import android.widget.ImageView; import android.widget.RemoteViews; import com.github.axet.androidlibrary.widgets.ProximityShader; +import com.github.axet.androidlibrary.widgets.RemoteViewsCompat; import com.github.axet.androidlibrary.widgets.ThemeUtils; import com.github.axet.audiolibrary.app.Storage; import com.github.axet.audiorecorder.R; @@ -186,7 +187,8 @@ public class RecordingService extends Service { RemoteViews view = new RemoteViews(getPackageName(), MainApplication.getTheme(this, R.layout.notifictaion_recording_light, R.layout.notifictaion_recording_dark)); - view.setInt(R.id.icon_circle, "setColorFilter", ThemeUtils.getThemeColor(this, R.attr.colorButtonNormal)); // android:tint="?attr/colorButtonNormal" not working API16 + RemoteViewsCompat.setImageViewTint(view, R.id.icon_circle, ThemeUtils.getThemeColor(this, R.attr.colorButtonNormal)); // android:tint="?attr/colorButtonNormal" not working API16 + RemoteViewsCompat.applyTheme(this, view); String title; String text; @@ -219,14 +221,14 @@ public class RecordingService extends Service { view.setTextViewText(R.id.notification_text, text); view.setOnClickPendingIntent(R.id.notification_pause, pe); view.setImageViewResource(R.id.notification_pause, !recording ? R.drawable.ic_play_arrow_black_24dp : R.drawable.ic_pause_black_24dp); - if (Build.VERSION.SDK_INT >= 15) - view.setContentDescription(R.id.notification_pause, getString(!recording ? R.string.record_button : R.string.pause_button)); + RemoteViewsCompat.setContentDescription(view, R.id.notification_pause, getString(!recording ? R.string.record_button : R.string.pause_button)); NotificationCompat.Builder builder = new NotificationCompat.Builder(this) .setOngoing(true) .setContentTitle(title) .setContentText(text) .setTicker(title) + .setWhen(notification == null ? System.currentTimeMillis() : notification.when) .setSmallIcon(R.drawable.ic_mic) .setContent(view); @@ -237,7 +239,9 @@ public class RecordingService extends Service { if (Build.VERSION.SDK_INT >= 21) builder.setVisibility(NotificationCompat.VISIBILITY_PUBLIC); - return builder.build(); + Notification n = builder.build(); + ((MainApplication) getApplication()).channelStatus.apply(n); + return n; } public void showNotificationAlarm(boolean show, Intent intent) { @@ -248,7 +252,6 @@ public class RecordingService extends Service { notification = null; } else { Notification n = build(intent); - ((MainApplication) getApplication()).channelStatus.apply(n); if (notification == null) startForeground(NOTIFICATION_RECORDING_ICON, n); else From 03b3d065005cff9df12f85305bbe34534defeb6e Mon Sep 17 00:00:00 2001 From: Alexey Kuznetsov Date: Sun, 23 Sep 2018 23:38:37 +0300 Subject: [PATCH 7/7] Bump version audiorecorder-3.2.20 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index ba18037..bf01bc2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ android { applicationId "com.github.axet.audiorecorder" minSdkVersion 9 targetSdkVersion 23 // 24+ file:// unable to open - versionCode 277 - versionName "3.2.19" + versionCode 278 + versionName "3.2.20" } signingConfigs { release {