From db952297c516600547924aa6c9ebca53fd3bfea8 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Sun, 9 Feb 2020 21:39:57 +0100 Subject: integrate alternative codec for voice recorder via attachment settings --- .../messenger/services/XmppConnectionService.java | 4 ++++ .../de/pixart/messenger/ui/ConversationFragment.java | 1 + .../java/de/pixart/messenger/ui/RecordingActivity.java | 18 ++++++++++++++---- src/main/res/values/defaults.xml | 1 + src/main/res/values/strings.xml | 2 ++ src/main/res/xml/preferences.xml | 5 +++++ 6 files changed, 27 insertions(+), 4 deletions(-) (limited to 'src/main') diff --git a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java index 6f857889b..e5b6582d1 100644 --- a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java +++ b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java @@ -1009,6 +1009,10 @@ public class XmppConnectionService extends Service { return getBooleanPreference(SettingsActivity.AWAY_WHEN_SCREEN_IS_OFF, R.bool.away_when_screen_off); } + public boolean alternativeVoiceSettings() { + return getBooleanPreference("alternative_voice_settings", R.bool.alternative_voice_settings); + } + public int getCompressImageResolutionPreference() { switch (getPreferences().getString("image_compression", getResources().getString(R.string.image_compression))) { case "low": diff --git a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java index ef09a6a41..320c1eb8b 100644 --- a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java +++ b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java @@ -1799,6 +1799,7 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke break; case ATTACHMENT_CHOICE_RECORD_VOICE: intent = new Intent(getActivity(), RecordingActivity.class); + intent.putExtra("ALTERNATIVE_CODEC", activity.xmppConnectionService.alternativeVoiceSettings()); break; case ATTACHMENT_CHOICE_LOCATION: intent = new Intent(getActivity(), ShareLocationActivity.class); diff --git a/src/main/java/de/pixart/messenger/ui/RecordingActivity.java b/src/main/java/de/pixart/messenger/ui/RecordingActivity.java index cf247f920..1b1ea64c2 100644 --- a/src/main/java/de/pixart/messenger/ui/RecordingActivity.java +++ b/src/main/java/de/pixart/messenger/ui/RecordingActivity.java @@ -12,6 +12,7 @@ import android.os.Handler; import android.os.SystemClock; import android.util.Log; import android.view.View; +import android.view.Window; import android.view.WindowManager; import android.widget.Toast; @@ -39,6 +40,7 @@ public class RecordingActivity extends AppCompatActivity implements View.OnClick private MediaRecorder mRecorder; private long mStartTime = 0; + private boolean alternativeCodec = false; private CountDownLatch outputFileWrittenLatch = new CountDownLatch(1); @@ -59,6 +61,7 @@ public class RecordingActivity extends AppCompatActivity implements View.OnClick protected void onCreate(Bundle savedInstanceState) { setTheme(ThemeHelper.findDialog(this)); super.onCreate(savedInstanceState); + supportRequestWindowFeature(Window.FEATURE_NO_TITLE); this.binding = DataBindingUtil.setContentView(this, R.layout.activity_recording); this.setTitle(R.string.attach_record_voice); this.binding.cancelButton.setOnClickListener(this); @@ -70,6 +73,8 @@ public class RecordingActivity extends AppCompatActivity implements View.OnClick @Override protected void onStart() { super.onStart(); + Intent intent = getIntent(); + alternativeCodec = intent != null && intent.getBooleanExtra("ALTERNATIVE_CODEC", getResources().getBoolean(R.bool.alternative_voice_settings)); if (!startRecording()) { this.binding.shareButton.setEnabled(false); this.binding.timer.setTextAppearance(this, R.style.TextAppearance_Conversations_Title); @@ -92,10 +97,15 @@ public class RecordingActivity extends AppCompatActivity implements View.OnClick private boolean startRecording() { mRecorder = new MediaRecorder(); mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); - mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); - mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); - mRecorder.setAudioEncodingBitRate(96000); - mRecorder.setAudioSamplingRate(22050); + if (alternativeCodec) { + mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); + mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); + } else { + mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); + mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); + mRecorder.setAudioEncodingBitRate(96000); + mRecorder.setAudioSamplingRate(22050); + } setupOutputFile(); mRecorder.setOutputFile(mOutputFile.getAbsolutePath()); diff --git a/src/main/res/values/defaults.xml b/src/main/res/values/defaults.xml index ecfd9b224..2c3ea9331 100644 --- a/src/main/res/values/defaults.xml +++ b/src/main/res/values/defaults.xml @@ -72,6 +72,7 @@ small JABBER_NETWORK false + false pix-art.de diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 95075eb63..d2d3dfea3 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -998,4 +998,6 @@ Your server invitation Use unicolored background in chats. Use unicolored background + If you have problems during voice recording, use this setting to change the codec. + Alternative voice recording method diff --git a/src/main/res/xml/preferences.xml b/src/main/res/xml/preferences.xml index a17ef3ae2..8bc0d0372 100644 --- a/src/main/res/xml/preferences.xml +++ b/src/main/res/xml/preferences.xml @@ -251,6 +251,11 @@ android:key="video_compression" android:summary="@string/pref_video_quality_summary" android:title="@string/pref_video_quality" /> +