diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8e41499..8527b14 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -14,7 +14,7 @@ = 21) s.setStorageAccessFramework(this, RESULT_STORAGE); AudioManager am = (AudioManager) context.getSystemService(AUDIO_SERVICE); - Preference bluetooth = pm.findPreference(MainApplication.PREFERENCE_SOURCE); + Preference bluetooth = pm.findPreference(AudioApplication.PREFERENCE_SOURCE); if (!am.isBluetoothScoAvailableOffCall()) { bluetooth.setVisible(false); } bindPreferenceSummaryToValue(bluetooth); - Preference p = pm.findPreference(MainApplication.PREFERENCE_CALL); + Preference p = pm.findPreference(AudioApplication.PREFERENCE_CALL); p.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { @@ -314,13 +314,13 @@ public class SettingsActivity extends AppCompatSettingsThemeActivity implements @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); - StoragePathPreferenceCompat s = (StoragePathPreferenceCompat) findPreference(MainApplication.PREFERENCE_STORAGE); + StoragePathPreferenceCompat s = (StoragePathPreferenceCompat) findPreference(AudioApplication.PREFERENCE_STORAGE); switch (requestCode) { case RESULT_STORAGE: s.onRequestPermissionsResult(permissions, grantResults); break; case RESULT_CALL: - SwitchPreferenceCompat p = (SwitchPreferenceCompat) findPreference(MainApplication.PREFERENCE_CALL); + SwitchPreferenceCompat p = (SwitchPreferenceCompat) findPreference(AudioApplication.PREFERENCE_CALL); if (!Storage.permitted(getContext(), PREMS)) p.setChecked(false); else @@ -332,7 +332,7 @@ public class SettingsActivity extends AppCompatSettingsThemeActivity implements @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); - StoragePathPreferenceCompat s = (StoragePathPreferenceCompat) findPreference(MainApplication.PREFERENCE_STORAGE); + StoragePathPreferenceCompat s = (StoragePathPreferenceCompat) findPreference(AudioApplication.PREFERENCE_STORAGE); switch (requestCode) { case RESULT_STORAGE: s.onActivityResult(resultCode, data); @@ -343,7 +343,7 @@ public class SettingsActivity extends AppCompatSettingsThemeActivity implements @Override public void onResume() { super.onResume(); - SilencePreferenceCompat silent = (SilencePreferenceCompat) findPreference(MainApplication.PREFERENCE_SILENT); + SilencePreferenceCompat silent = (SilencePreferenceCompat) findPreference(AudioApplication.PREFERENCE_SILENT); silent.onResume(); } } diff --git a/app/src/main/java/com/github/axet/audiorecorder/app/MainApplication.java b/app/src/main/java/com/github/axet/audiorecorder/app/AudioApplication.java similarity index 80% rename from app/src/main/java/com/github/axet/audiorecorder/app/MainApplication.java rename to app/src/main/java/com/github/axet/audiorecorder/app/AudioApplication.java index 6a4e6a8..1ab70fa 100644 --- a/app/src/main/java/com/github/axet/audiorecorder/app/MainApplication.java +++ b/app/src/main/java/com/github/axet/audiorecorder/app/AudioApplication.java @@ -1,23 +1,17 @@ package com.github.axet.audiorecorder.app; import android.annotation.SuppressLint; -import android.app.Notification; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Build; -import android.support.v4.app.NotificationCompat; import android.support.v4.app.NotificationManagerCompat; import android.support.v7.preference.PreferenceManager; -import android.support.v7.view.ContextThemeWrapper; import android.view.View; -import android.widget.RemoteViews; 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.androidlibrary.widgets.ThemeUtils; import com.github.axet.audiolibrary.encoders.FormatFLAC; import com.github.axet.audiolibrary.encoders.FormatM4A; import com.github.axet.audiolibrary.encoders.FormatOGG; @@ -26,7 +20,7 @@ import com.github.axet.audiorecorder.activities.MainActivity; import java.util.Locale; -public class MainApplication extends com.github.axet.audiolibrary.app.MainApplication { +public class AudioApplication extends com.github.axet.audiolibrary.app.MainApplication { public static final String PREFERENCE_CONTROLS = "controls"; public static final String PREFERENCE_TARGET = "target"; @@ -37,6 +31,10 @@ public class MainApplication extends com.github.axet.audiolibrary.app.MainApplic public NotificationChannelCompat channelStatus; + public static AudioApplication from(Context context) { + return (AudioApplication) com.github.axet.audiolibrary.app.MainApplication.from(context); + } + public int getUserTheme() { return getTheme(this, R.style.RecThemeLight, R.style.RecThemeDark); } @@ -56,9 +54,9 @@ public class MainApplication extends com.github.axet.audiolibrary.app.MainApplic SharedPreferences.Editor edit = shared.edit(); if (!FormatOGG.supported(this)) { if (Build.VERSION.SDK_INT >= 18) - edit.putString(MainApplication.PREFERENCE_ENCODING, FormatM4A.EXT); + edit.putString(AudioApplication.PREFERENCE_ENCODING, FormatM4A.EXT); else - edit.putString(MainApplication.PREFERENCE_ENCODING, FormatFLAC.EXT); + edit.putString(AudioApplication.PREFERENCE_ENCODING, FormatFLAC.EXT); } edit.putInt(PREFERENCE_VERSION, 2); edit.commit(); @@ -91,10 +89,10 @@ public class MainApplication extends com.github.axet.audiolibrary.app.MainApplic PendingIntent main = PendingIntent.getService(this, 0, new Intent(this, MainActivity.class), PendingIntent.FLAG_UPDATE_CURRENT); - RemoteNotificationCompat.Builder builder = new RemoteNotificationCompat.Builder(this, MainApplication.getTheme(this, R.layout.notifictaion_recording_light, R.layout.notifictaion_recording_dark)); - builder.view.setViewVisibility(R.id.notification_record, View.GONE); - builder.view.setViewVisibility(R.id.notification_pause, View.GONE); - builder.setTheme(MainApplication.getTheme(this, R.style.RecThemeLight, R.style.RecThemeDark)) + RemoteNotificationCompat.Builder builder = new RemoteNotificationCompat.Builder(this, R.layout.notifictaion); + builder.setViewVisibility(R.id.notification_record, View.GONE); + builder.setViewVisibility(R.id.notification_pause, View.GONE); + builder.setTheme(AudioApplication.getTheme(this, R.style.RecThemeLight, R.style.RecThemeDark)) .setImageViewTint(R.id.icon_circle, R.attr.colorButtonNormal) .setTitle(title) .setText(text) 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 7e6edc3..525b91a 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 @@ -25,11 +25,11 @@ public class Storage extends com.github.axet.audiolibrary.app.Storage { public Uri getNewFile() { SharedPreferences shared = PreferenceManager.getDefaultSharedPreferences(context); - String ext = shared.getString(MainApplication.PREFERENCE_ENCODING, ""); + String ext = shared.getString(AudioApplication.PREFERENCE_ENCODING, ""); String format = "%s"; - format = shared.getString(MainApplication.PREFERENCE_FORMAT, format); + format = shared.getString(AudioApplication.PREFERENCE_FORMAT, format); format = getFormatted(format, new Date()); @@ -55,7 +55,7 @@ public class Storage extends com.github.axet.audiolibrary.app.Storage { String format = "%s"; - format = shared.getString(MainApplication.PREFERENCE_FORMAT, format); + format = shared.getString(AudioApplication.PREFERENCE_FORMAT, format); format = getFormatted(format, new Date()); diff --git a/app/src/main/java/com/github/axet/audiorecorder/services/BluetoothReceiver.java b/app/src/main/java/com/github/axet/audiorecorder/services/BluetoothReceiver.java index 742b178..3a11598 100644 --- a/app/src/main/java/com/github/axet/audiorecorder/services/BluetoothReceiver.java +++ b/app/src/main/java/com/github/axet/audiorecorder/services/BluetoothReceiver.java @@ -13,7 +13,7 @@ import android.preference.PreferenceManager; import android.widget.Toast; import com.github.axet.audiorecorder.R; -import com.github.axet.audiorecorder.app.MainApplication; +import com.github.axet.audiorecorder.app.AudioApplication; // default bluetooth stack for API25 bugged and has to be cleared using this Receiver. // @@ -140,7 +140,7 @@ public class BluetoothReceiver extends BroadcastReceiver { public boolean isRecordingReady() { final SharedPreferences shared = PreferenceManager.getDefaultSharedPreferences(context); - if (shared.getString(MainApplication.PREFERENCE_SOURCE, context.getString(R.string.source_mic)).equals(context.getString(R.string.source_bluetooth))) { + if (shared.getString(AudioApplication.PREFERENCE_SOURCE, context.getString(R.string.source_mic)).equals(context.getString(R.string.source_bluetooth))) { bluetoothSource = true; if (!startBluetooth()) return false; 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 b3d7da9..64e7706 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 @@ -9,27 +9,21 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.net.Uri; -import android.os.Build; 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.support.v7.view.ContextThemeWrapper; import android.util.Log; import android.view.View; -import android.widget.ImageView; -import android.widget.RemoteViews; import com.github.axet.androidlibrary.widgets.ProximityShader; import com.github.axet.androidlibrary.widgets.RemoteNotificationCompat; 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; import com.github.axet.audiorecorder.activities.MainActivity; import com.github.axet.audiorecorder.activities.RecordingActivity; -import com.github.axet.audiorecorder.app.MainApplication; +import com.github.axet.audiorecorder.app.AudioApplication; import java.io.File; @@ -55,7 +49,7 @@ public class RecordingService extends Service { public static void startIfEnabled(Context context) { SharedPreferences shared = PreferenceManager.getDefaultSharedPreferences(context); - if (!shared.getBoolean(MainApplication.PREFERENCE_CONTROLS, false)) + if (!shared.getBoolean(AudioApplication.PREFERENCE_CONTROLS, false)) return; start(context); } @@ -64,7 +58,7 @@ public class RecordingService extends Service { Storage st = new Storage(context); if (st.recordingPending()) { final SharedPreferences shared = PreferenceManager.getDefaultSharedPreferences(context); - String f = shared.getString(MainApplication.PREFERENCE_TARGET, ""); + String f = shared.getString(AudioApplication.PREFERENCE_TARGET, ""); String d; if (f.startsWith(ContentResolver.SCHEME_CONTENT)) { Uri u = Uri.parse(f); @@ -97,7 +91,7 @@ public class RecordingService extends Service { public static void stopRecording(Context context) { SharedPreferences shared = PreferenceManager.getDefaultSharedPreferences(context); - if (shared.getBoolean(MainApplication.PREFERENCE_CONTROLS, false)) { + if (shared.getBoolean(AudioApplication.PREFERENCE_CONTROLS, false)) { start(context); return; } @@ -188,7 +182,7 @@ public class RecordingService extends Service { new Intent(this, RecordingService.class).setAction(RECORD_BUTTON), PendingIntent.FLAG_UPDATE_CURRENT); - RemoteNotificationCompat.Builder builder = new RemoteNotificationCompat.Builder(this, MainApplication.getTheme(this, R.layout.notifictaion_recording_light, R.layout.notifictaion_recording_dark)); + RemoteNotificationCompat.Builder builder = new RemoteNotificationCompat.Builder(this, R.layout.notifictaion); String title; String text; @@ -197,35 +191,35 @@ public class RecordingService extends Service { Uri f = storage.getStoragePath(); long free = storage.getFree(f); long sec = Storage.average(this, free); - text = MainApplication.formatFree(this, free, sec); - builder.view.setViewVisibility(R.id.notification_record, View.VISIBLE); - builder.view.setOnClickPendingIntent(R.id.notification_record, re); - builder.view.setViewVisibility(R.id.notification_pause, View.GONE); + text = AudioApplication.formatFree(this, free, sec); + builder.setViewVisibility(R.id.notification_record, View.VISIBLE); + builder.setOnClickPendingIntent(R.id.notification_record, re); + builder.setViewVisibility(R.id.notification_pause, View.GONE); } else { if (recording) title = getString(R.string.recording_title); else title = getString(R.string.pause_title); text = ".../" + targetFile; - builder.view.setViewVisibility(R.id.notification_record, View.GONE); - builder.view.setViewVisibility(R.id.notification_pause, View.VISIBLE); + builder.setViewVisibility(R.id.notification_record, View.GONE); + builder.setViewVisibility(R.id.notification_pause, View.VISIBLE); } if (encoding) { - builder.view.setViewVisibility(R.id.notification_pause, View.GONE); + builder.setViewVisibility(R.id.notification_pause, View.GONE); title = getString(R.string.encoding_title); } - builder.view.setOnClickPendingIntent(R.id.notification_pause, pe); - builder.view.setImageViewResource(R.id.notification_pause, !recording ? R.drawable.ic_play_arrow_black_24dp : R.drawable.ic_pause_black_24dp); - RemoteViewsCompat.setContentDescription(builder.view, R.id.notification_pause, getString(!recording ? R.string.record_button : R.string.pause_button)); + builder.setOnClickPendingIntent(R.id.notification_pause, pe); + builder.setImageViewResource(R.id.notification_pause, !recording ? R.drawable.ic_play_arrow_black_24dp : R.drawable.ic_pause_black_24dp); + RemoteViewsCompat.setContentDescription(builder.compact, R.id.notification_pause, getString(!recording ? R.string.record_button : R.string.pause_button)); builder.setMainIntent(main) - .setTheme(MainApplication.getTheme(this, R.style.RecThemeLight, R.style.RecThemeDark)) + .setTheme(AudioApplication.getTheme(this, R.style.RecThemeLight, R.style.RecThemeDark)) .setImageViewTint(R.id.icon_circle, R.attr.colorButtonNormal) .setTitle(title) .setText(text) - .setChannel(((MainApplication) getApplication()).channelStatus) + .setChannel(AudioApplication.from(this).channelStatus) .setWhen(notification) .setOngoing(true) .setSmallIcon(R.drawable.ic_mic);