summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-07-07 05:11:12 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-07-07 05:11:12 +0000
commit4154175a84481849178053c82a3fc1c13b7e616b (patch)
tree7a859673cf48e52e5be768c2fdf9f07511e11f3e
parentabba5c9675d98c2e206cbf67b57c59d9de8ae286 (diff)
parent6c008e99e6b24ab4e0fa5245d97c066dd043408b (diff)
downloadMusicFX-4154175a84481849178053c82a3fc1c13b7e616b.tar.gz
Snap for 10453563 from 6c008e99e6b24ab4e0fa5245d97c066dd043408b to mainline-neuralnetworks-releaseaml_neu_341010080aml_neu_341010000
Change-Id: I37b716660d472839b1c02312b8196c387f6394ba
-rw-r--r--res/values-bs/strings.xml2
-rw-r--r--res/values-fa/strings.xml2
-rw-r--r--res/values-iw/strings.xml2
-rw-r--r--res/values-or/strings.xml2
-rw-r--r--res/values-ro/strings.xml4
-rw-r--r--src/com/android/musicfx/ActivityMusic.java210
6 files changed, 126 insertions, 96 deletions
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 37c80cd..311862b 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -18,7 +18,7 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="2227320688818248940">"MusicFX"</string>
<string name="no_effects" msgid="9023408561505030260">"Efekti nisu dostupni."</string>
- <string name="eq_dialog_title" msgid="3237402214371962070">"Mikseta"</string>
+ <string name="eq_dialog_title" msgid="3237402214371962070">"Ekvalizator"</string>
<string name="headset_plug" msgid="1774198554148807517">"Priključite slušalice da čujete ove efekte."</string>
<string name="bass_boost_strength" msgid="8643071340166812205">"Pojačavanje basova"</string>
<string name="virtualizer_strength" msgid="2139410708760989842">"Okružujući zvuk"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index e829921..72cfbe3 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -18,7 +18,7 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="2227320688818248940">"MusicFX"</string>
<string name="no_effects" msgid="9023408561505030260">"جلوه‌ها دردسترس نیستند."</string>
- <string name="eq_dialog_title" msgid="3237402214371962070">"یکسان‌ساز"</string>
+ <string name="eq_dialog_title" msgid="3237402214371962070">"میزان‌گر"</string>
<string name="headset_plug" msgid="1774198554148807517">"برای این جلوه‌ها هدفون را وصل کنید."</string>
<string name="bass_boost_strength" msgid="8643071340166812205">"تقویت صدای بم"</string>
<string name="virtualizer_strength" msgid="2139410708760989842">"صدای فراگیر"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 7baa30f..0228792 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -18,7 +18,7 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="2227320688818248940">"MusicFX"</string>
<string name="no_effects" msgid="9023408561505030260">"האפקטים לא זמינים."</string>
- <string name="eq_dialog_title" msgid="3237402214371962070">"אקולייזר"</string>
+ <string name="eq_dialog_title" msgid="3237402214371962070">"אקוולייזר"</string>
<string name="headset_plug" msgid="1774198554148807517">"צריך לחבר אוזניות כדי לשמוע את האפקטים האלה."</string>
<string name="bass_boost_strength" msgid="8643071340166812205">"הגברת הבס"</string>
<string name="virtualizer_strength" msgid="2139410708760989842">"צליל סראונד"</string>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index ebc8717..3546364 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -34,6 +34,6 @@
<string name="pop" msgid="8568493898002509539">"ପପ୍"</string>
<string name="rock" msgid="4226553710464965901">"ରକ୍"</string>
<string name="ci_extreme" msgid="67259122484788490">"FX ବୁଷ୍ଟର୍"</string>
- <string name="user" msgid="8392147515328861077">"ଉପଯୋଗକର୍ତ୍ତା"</string>
+ <string name="user" msgid="8392147515328861077">"ୟୁଜର"</string>
<string name="picker_title" msgid="4756201760847390691">"ମ୍ୟୁଜିକ ଇଫେକ୍ଟ କଣ୍ଟ୍ରୋଲପ୍ୟାନେଲ"</string>
</resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 1df8740..776d4af 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -19,10 +19,10 @@
<string name="app_name" msgid="2227320688818248940">"MusicFX"</string>
<string name="no_effects" msgid="9023408561505030260">"Efectele nu sunt disponibile."</string>
<string name="eq_dialog_title" msgid="3237402214371962070">"Egalizator"</string>
- <string name="headset_plug" msgid="1774198554148807517">"Pentru aceste efecte trebuie să conectați căștile."</string>
+ <string name="headset_plug" msgid="1774198554148807517">"Pentru aceste efecte trebuie să conectezi căștile."</string>
<string name="bass_boost_strength" msgid="8643071340166812205">"Amplificare bas"</string>
<string name="virtualizer_strength" msgid="2139410708760989842">"Sunet surround"</string>
- <string name="setup" msgid="4811197673396615722">"Configurați"</string>
+ <string name="setup" msgid="4811197673396615722">"Configurează"</string>
<string name="normal" msgid="757786146857325609">"Normal"</string>
<string name="classical" msgid="1975693421508209132">"Clasică"</string>
<string name="dance" msgid="212617702657103572">"Dance"</string>
diff --git a/src/com/android/musicfx/ActivityMusic.java b/src/com/android/musicfx/ActivityMusic.java
index a2c356d..8ec4b98 100644
--- a/src/com/android/musicfx/ActivityMusic.java
+++ b/src/com/android/musicfx/ActivityMusic.java
@@ -16,36 +16,22 @@
package com.android.musicfx;
-import com.android.audiofx.OpenSLESConstants;
-
import android.app.ActionBar;
import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.bluetooth.BluetoothClass;
-import android.bluetooth.BluetoothDevice;
-import android.content.BroadcastReceiver;
import android.content.Context;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnCancelListener;
import android.content.Intent;
-import android.content.IntentFilter;
-import android.media.AudioAttributes;
+import android.media.AudioDeviceCallback;
import android.media.AudioDeviceInfo;
import android.media.AudioFormat;
import android.media.AudioManager;
-import android.media.AudioManager.AudioPlaybackCallback;
-import android.media.AudioPlaybackConfiguration;
import android.media.audiofx.AudioEffect;
import android.media.audiofx.AudioEffect.Descriptor;
import android.media.audiofx.Virtualizer;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
-import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
-import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
@@ -53,9 +39,6 @@ import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
-import android.widget.LinearLayout;
-import android.widget.ListView;
-import android.widget.RelativeLayout;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.Spinner;
@@ -63,14 +46,13 @@ import android.widget.Switch;
import android.widget.TextView;
import android.widget.Toast;
+import com.android.audiofx.OpenSLESConstants;
+
import java.util.Formatter;
-import java.util.HashMap;
import java.util.HashSet;
-import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
-import java.util.UUID;
/**
*
@@ -96,20 +78,20 @@ public class ActivityMusic extends Activity implements OnSeekBarChangeListener {
/**
* Indicates if Virtualizer effect is supported.
*/
- private boolean mVirtualizerSupported;
- private boolean mVirtualizerIsHeadphoneOnly;
+ private boolean mVirtualizerSupported = false;
+ private boolean mVirtualizerIsHeadphoneOnly = false;
/**
* Indicates if BassBoost effect is supported.
*/
- private boolean mBassBoostSupported;
+ private boolean mBassBoostSupported = false;
/**
* Indicates if Equalizer effect is supported.
*/
- private boolean mEqualizerSupported;
+ private boolean mEqualizerSupported = false;
/**
* Indicates if Preset Reverb effect is supported.
*/
- private boolean mPresetReverbSupported;
+ private boolean mPresetReverbSupported = false;
// Equalizer fields
private final SeekBar[] mEqualizerSeekBar = new SeekBar[EQUALIZER_MAX_BANDS];
@@ -177,19 +159,17 @@ public class ActivityMusic extends Activity implements OnSeekBarChangeListener {
/**
* Default localized equalizer preset names. Keep the same as EffectBundle::gEqualizerPresets.
*/
- private static final Map<String, Integer> LOCALIZED_EQUALIZER_PRESET_NAMES
- = new HashMap<String, Integer>() {{
- put("Normal", R.string.normal);
- put("Classical", R.string.classical);
- put("Dance", R.string.dance);
- put("Flat", R.string.flat);
- put("Folk", R.string.folk);
- put("Heavy Metal", R.string.heavy_metal);
- put("Hip Hop", R.string.hip_hop);
- put("Jazz", R.string.jazz);
- put("Pop", R.string.pop);
- put("Rock", R.string.rock);
- }};
+ private static final Map<String, Integer> LOCALIZED_EQUALIZER_PRESET_NAMES = Map.of(
+ "Normal", R.string.normal,
+ "Classical", R.string.classical,
+ "Dance", R.string.dance,
+ "Flat", R.string.flat,
+ "Folk", R.string.folk,
+ "Heavy Metal", R.string.heavy_metal,
+ "Hip Hop", R.string.hip_hop,
+ "Jazz", R.string.jazz,
+ "Pop", R.string.pop,
+ "Rock", R.string.rock);
/**
* Context field
@@ -201,27 +181,51 @@ public class ActivityMusic extends Activity implements OnSeekBarChangeListener {
*/
private String mCallingPackageName = "empty";
- // Audio Playback monitoring Callback to determine if a headset is used for music playback
- private final AudioPlaybackCallback mMyAudioPlaybackCallback = new AudioPlaybackCallback() {
- @Override
- public void onPlaybackConfigChanged(List<AudioPlaybackConfiguration> configs) {
- boolean isHeadsetOn = isHeadsetUsedForMedia(configs);
- if (isHeadsetOn != mIsHeadsetOn) {
- mIsHeadsetOn = isHeadsetOn;
- updateUIHeadset();
- }
- }
- };
-
- private static boolean isConfigForMedia(AudioPlaybackConfiguration apc) {
- AudioAttributes attr = apc.getAudioAttributes();
- if (attr.getUsage() == AudioAttributes.USAGE_MEDIA
- || attr.getUsage() == AudioAttributes.USAGE_GAME
- || attr.getUsage() == AudioAttributes.USAGE_UNKNOWN) {
- return true;
- }
- return false;
- }
+ // Listen to AudioDeviceCallback to determine if a headset is connected
+ private final AudioDeviceCallback mMyAudioDeviceCallback =
+ new AudioDeviceCallback() {
+
+ /**
+ * Called by the {@link AudioManager} to indicate that one or more audio devices
+ * have been connected.
+ *
+ * @see AudioDeviceCallback.
+ */
+ @Override
+ public void onAudioDevicesAdded(AudioDeviceInfo[] addedDevices) {
+ // do nothing if mIsHeadsetOn is true and new devices added
+ if (mIsHeadsetOn) {
+ return;
+ }
+ final boolean isHeadsetOn = isHeadSetDeviceConnected();
+ if (isHeadsetOn) {
+ Log.v(TAG, " HeadSet connected");
+ mIsHeadsetOn = true;
+ updateUIHeadset();
+ }
+ }
+
+ /**
+ * Called by the {@link AudioManager} to indicate that one or more audio devices
+ * have been disconnected.
+ *
+ * @param removedDevices An array of {@link AudioDeviceInfo} objects corresponding
+ * to any newly removed audio devices.
+ */
+ @Override
+ public void onAudioDevicesRemoved(AudioDeviceInfo[] removedDevices) {
+ // do nothing if mIsHeadsetOn is false and some devices removed
+ if (!mIsHeadsetOn) {
+ return;
+ }
+ final boolean isHeadsetOn = isHeadSetDeviceConnected();
+ if (!isHeadsetOn) {
+ Log.v(TAG, " HeadSet disconnected");
+ mIsHeadsetOn = false;
+ updateUIHeadset();
+ }
+ }
+ };
public static final Set<Integer> HEADSET_DEVICE_TYPES = new HashSet<>();
static {
@@ -234,23 +238,26 @@ public class ActivityMusic extends Activity implements OnSeekBarChangeListener {
HEADSET_DEVICE_TYPES.add(AudioDeviceInfo.TYPE_BLE_HEADSET);
}
- private static boolean isConfigForHeadset(AudioPlaybackConfiguration apc) {
- AudioDeviceInfo device = apc.getAudioDeviceInfo();
- if (device == null) {
- return false;
- }
- return HEADSET_DEVICE_TYPES.contains(device.getType());
- }
-
- private static boolean isHeadsetUsedForMedia(List<AudioPlaybackConfiguration> configs) {
- for (AudioPlaybackConfiguration config : configs) {
- if (config.isActive() && isConfigForMedia(config) && isConfigForHeadset(config)) {
+ private boolean isHeadSetDeviceConnected() {
+ final AudioManager audioManager = getSystemService(AudioManager.class);
+ final AudioDeviceInfo[] deviceInfos =
+ audioManager.getDevicesStatic(AudioManager.GET_DEVICES_OUTPUTS);
+ for (AudioDeviceInfo deviceInfo : deviceInfos) {
+ if (deviceInfo == null) {
+ continue;
+ }
+ final int type = deviceInfo.getType();
+ if (HEADSET_DEVICE_TYPES.contains(type)) {
+ Log.v(TAG, " at least a HeadSet device type " + type + " connected");
return true;
}
}
+
+ Log.v(TAG, " no HeadSet device type connected");
return false;
}
- /*
+
+ /*
* Declares and initializes all objects and widgets in the layouts and the CheckBox and SeekBar
* onchange methods on creation.
*
@@ -418,6 +425,8 @@ public class ActivityMusic extends Activity implements OnSeekBarChangeListener {
ControlPanelEffect.Key.virt_enabled, isChecked);
}
});
+ } else {
+ findViewById(R.id.vILayout).setVisibility(View.GONE);
}
// Initialize the Bass Boost elements.
@@ -468,9 +477,10 @@ public class ActivityMusic extends Activity implements OnSeekBarChangeListener {
ControlPanelEffect.setParameterBoolean(mContext, mCallingPackageName,
ControlPanelEffect.Key.bb_enabled, false);
}
-
}
});
+ } else {
+ findViewById(R.id.bBLayout).setVisibility(View.GONE);
}
// Initialize the Equalizer elements.
@@ -483,6 +493,8 @@ public class ActivityMusic extends Activity implements OnSeekBarChangeListener {
mEQPresetPrevious = mEQPreset;
equalizerSpinnerInit((Spinner)findViewById(R.id.eqSpinner));
equalizerBandsInit(findViewById(R.id.eqcontainer));
+ } else {
+ findViewById(R.id.eqSpinner).setVisibility(View.GONE);
}
// Initialize the Preset Reverb elements.
@@ -492,6 +504,8 @@ public class ActivityMusic extends Activity implements OnSeekBarChangeListener {
ControlPanelEffect.Key.pr_current_preset);
mPRPresetPrevious = mPRPreset;
reverbSpinnerInit((Spinner)findViewById(R.id.prSpinner));
+ } else {
+ findViewById(R.id.prSpinner).setVisibility(View.GONE);
}
ActionBar ab = getActionBar();
@@ -520,10 +534,10 @@ public class ActivityMusic extends Activity implements OnSeekBarChangeListener {
super.onResume();
if ((mVirtualizerSupported) || (mBassBoostSupported) || (mEqualizerSupported)
|| (mPresetReverbSupported)) {
- // Monitor active playback configurations used for media and playing on a headset.
- final AudioManager audioManager = (AudioManager) getSystemService(AudioManager.class);
- audioManager.registerAudioPlaybackCallback(mMyAudioPlaybackCallback, null);
- mIsHeadsetOn = isHeadsetUsedForMedia(audioManager.getActivePlaybackConfigurations());
+ // Monitor AudioDeviceCallback for device change
+ final AudioManager audioManager = getSystemService(AudioManager.class);
+ audioManager.registerAudioDeviceCallback(mMyAudioDeviceCallback, null);
+ mIsHeadsetOn = isHeadSetDeviceConnected();
Log.v(TAG, "onResume: mIsHeadsetOn : " + mIsHeadsetOn);
// Update UI
updateUI();
@@ -539,12 +553,14 @@ public class ActivityMusic extends Activity implements OnSeekBarChangeListener {
protected void onPause() {
super.onPause();
- // Stop monitoring active playback configurations. (These affect the visible UI,
- // so we only care about them while we're in the foreground.)
- if ((mVirtualizerSupported) || (mBassBoostSupported) || (mEqualizerSupported)
+ // Stop monitoring AudioDeviceCallback, (these affect the visible UI, so we only care about
+ // them while we're in the foreground).
+ if ((mVirtualizerSupported)
+ || (mBassBoostSupported)
+ || (mEqualizerSupported)
|| (mPresetReverbSupported)) {
- final AudioManager audioManager = (AudioManager) getSystemService(AudioManager.class);
- audioManager.unregisterAudioPlaybackCallback(mMyAudioPlaybackCallback);
+ final AudioManager audioManager = getSystemService(AudioManager.class);
+ audioManager.unregisterAudioDeviceCallback(mMyAudioDeviceCallback);
}
}
@@ -661,14 +677,28 @@ public class ActivityMusic extends Activity implements OnSeekBarChangeListener {
*/
private void updateUIHeadset() {
if (mToggleSwitch.isChecked()) {
- ((TextView) findViewById(R.id.vIStrengthText)).setEnabled(
- mIsHeadsetOn || !mVirtualizerIsHeadphoneOnly);
- ((SeekBar) findViewById(R.id.vIStrengthSeekBar)).setEnabled(
- mIsHeadsetOn || !mVirtualizerIsHeadphoneOnly);
- findViewById(R.id.vILayout).setEnabled(!mIsHeadsetOn || !mVirtualizerIsHeadphoneOnly);
- ((TextView) findViewById(R.id.bBStrengthText)).setEnabled(mIsHeadsetOn);
- ((SeekBar) findViewById(R.id.bBStrengthSeekBar)).setEnabled(mIsHeadsetOn);
- findViewById(R.id.bBLayout).setEnabled(!mIsHeadsetOn);
+ if (mVirtualizerSupported) {
+ // virtualizer is on if headset is on or transaural virtualizer supported
+ final boolean isVirtualizerOn = mIsHeadsetOn || !mVirtualizerIsHeadphoneOnly;
+ ControlPanelEffect.setParameterBoolean(
+ mContext,
+ mCallingPackageName,
+ ControlPanelEffect.Key.virt_enabled,
+ isVirtualizerOn);
+ ((TextView) findViewById(R.id.vIStrengthText)).setEnabled(isVirtualizerOn);
+ ((SeekBar) findViewById(R.id.vIStrengthSeekBar)).setEnabled(isVirtualizerOn);
+ findViewById(R.id.vILayout).setEnabled(!isVirtualizerOn);
+ }
+ if (mBassBoostSupported) {
+ ControlPanelEffect.setParameterBoolean(
+ mContext,
+ mCallingPackageName,
+ ControlPanelEffect.Key.bb_enabled,
+ mIsHeadsetOn);
+ ((TextView) findViewById(R.id.bBStrengthText)).setEnabled(mIsHeadsetOn);
+ ((SeekBar) findViewById(R.id.bBStrengthSeekBar)).setEnabled(mIsHeadsetOn);
+ findViewById(R.id.bBLayout).setEnabled(!mIsHeadsetOn);
+ }
}
}