sanders: dirac: Add DiracSound backend
Special thanks to vasishath for his base work on mi3 Signed-off-by: Ashwin R C <ashwin2001achu@gmail.com> Signed-off-by: utsavbalar1231 <utsavbalar1231@gmail.com> Signed-off-by: ronaxdevil <pratabidya.007@gmail.com>
This commit is contained in:
committed by
ronaxdevil
parent
fa2a05dda6
commit
abc69bde44
95
LineageActions/res/values/arrays.xml
Normal file
95
LineageActions/res/values/arrays.xml
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
Copyright (C) 2018 The LineageOS Project
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
<resources>
|
||||||
|
<!-- Values for Dirac headset pref -->
|
||||||
|
<string-array name="dirac_headset_pref_entries" translatable="false">
|
||||||
|
<item>@string/dirac_headset_default</item>
|
||||||
|
<item>@string/dirac_headset_earbuds</item>
|
||||||
|
<item>@string/dirac_headset_in_ear_2013</item>
|
||||||
|
<item>@string/dirac_headset_piston_1</item>
|
||||||
|
<item>@string/dirac_headset_general</item>
|
||||||
|
<item>@string/dirac_headset_general_inear</item>
|
||||||
|
<item>@string/dirac_headset_piston_basic</item>
|
||||||
|
<item>@string/dirac_headset_piston_2</item>
|
||||||
|
<item>@string/dirac_headset_piston_standard</item>
|
||||||
|
<item>@string/dirac_headset_headphone</item>
|
||||||
|
<item>@string/dirac_headset_piston_youth</item>
|
||||||
|
<item>@string/dirac_headset_piston_color</item>
|
||||||
|
<item>@string/dirac_headset_in_ear</item>
|
||||||
|
<item>@string/dirac_headset_capsule</item>
|
||||||
|
<item>@string/dirac_headset_in_ear_pro</item>
|
||||||
|
<item>@string/dirac_headset_comfort</item>
|
||||||
|
<item>@string/dirac_headset_reduction_noise</item>
|
||||||
|
<item>@string/dirac_headset_cancelling</item>
|
||||||
|
<item>@string/dirac_headset_half_in_ear</item>
|
||||||
|
<item>@string/dirac_headset_in_ear2</item>
|
||||||
|
<item>@string/dirac_headset_earphone_basic</item>
|
||||||
|
<item>@string/dirac_headset_earphone</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
|
<string-array name="dirac_headset_pref_values" translatable="false">
|
||||||
|
<item>0</item>
|
||||||
|
<item>1</item>
|
||||||
|
<item>2</item>
|
||||||
|
<item>3</item>
|
||||||
|
<item>5</item>
|
||||||
|
<item>6</item>
|
||||||
|
<item>7</item>
|
||||||
|
<item>8</item>
|
||||||
|
<item>9</item>
|
||||||
|
<item>10</item>
|
||||||
|
<item>11</item>
|
||||||
|
<item>12</item>
|
||||||
|
<item>13</item>
|
||||||
|
<item>14</item>
|
||||||
|
<item>15</item>
|
||||||
|
<item>16</item>
|
||||||
|
<item>17</item>
|
||||||
|
<item>18</item>
|
||||||
|
<item>19</item>
|
||||||
|
<item>20</item>
|
||||||
|
<item>21</item>
|
||||||
|
<item>22</item>
|
||||||
|
<item>23</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
|
<!-- Values for Dirac preset pref -->
|
||||||
|
<string-array name="dirac_preset_pref_entries" translatable="false">
|
||||||
|
<item>@string/dirac_preset_default</item>
|
||||||
|
<item>@string/dirac_preset_rock</item>
|
||||||
|
<item>@string/dirac_preset_jazz</item>
|
||||||
|
<item>@string/dirac_preset_pop</item>
|
||||||
|
<item>@string/dirac_preset_classical</item>
|
||||||
|
<item>@string/dirac_preset_hiphop</item>
|
||||||
|
<item>@string/dirac_preset_blues</item>
|
||||||
|
<item>@string/dirac_preset_electronic</item>
|
||||||
|
<item>@string/dirac_preset_country</item>
|
||||||
|
<item>@string/dirac_preset_dance</item>
|
||||||
|
<item>@string/dirac_preset_metal</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
|
<string-array name="dirac_preset_pref_values" translatable="false">
|
||||||
|
<item>"0,0,0,0,0,0,0"</item>
|
||||||
|
<item>"4,2,-2,0,-2,-2,4"</item>
|
||||||
|
<item>"0,0,0,-2,-3,0,0"</item>
|
||||||
|
<item>"0,-3,-5,0,0,-3,0"</item>
|
||||||
|
<item>"0,0,0,0,3,6,6"</item>
|
||||||
|
<item>"3,3,-3,0,-3,0,2"</item>
|
||||||
|
<item>"2,4,-6,4,0,1,2"</item>
|
||||||
|
<item>"3,3,-1,0,-3,0,0"</item>
|
||||||
|
<item>"0,0,-2,-2,2,2,0"</item>
|
||||||
|
<item>"0,4,2,0,-2,-2,4"</item>
|
||||||
|
<item>"2,0,0,-2,-4,0,0"</item>
|
||||||
|
</string-array>
|
||||||
|
</resources>
|
||||||
@@ -96,15 +96,38 @@
|
|||||||
<string name="dirac_headset_title">Headset type</string>
|
<string name="dirac_headset_title">Headset type</string>
|
||||||
<string name="dirac_preset_title">Sound preset</string>
|
<string name="dirac_preset_title">Sound preset</string>
|
||||||
|
|
||||||
<!-- TODO: change the string values accordingly -->
|
<string name="dirac_headset_default">Default</string>
|
||||||
<string name="dirac_headset_0">Headset 0</string>
|
<string name="dirac_headset_earbuds">Mi Earbuds</string>
|
||||||
<string name="dirac_headset_1">Headset 1</string>
|
<string name="dirac_headset_in_ear_2013">Mi In-Ear (2013)</string>
|
||||||
<string name="dirac_headset_2">Headset 2</string>
|
<string name="dirac_headset_piston_1">Mi Piston 1</string>
|
||||||
<string name="dirac_headset_3">Headset 3</string>
|
<string name="dirac_headset_general">General Earbuds</string>
|
||||||
|
<string name="dirac_headset_general_inear">General In-Ear</string>
|
||||||
|
<string name="dirac_headset_piston_basic">Basic Edition</string>
|
||||||
|
<string name="dirac_headset_piston_2">Mi Piston 2</string>
|
||||||
|
<string name="dirac_headset_piston_standard">Mi Piston 3</string>
|
||||||
|
<string name="dirac_headset_headphone">Mi Headphone</string>
|
||||||
|
<string name="dirac_headset_piston_youth">Youth Edition</string>
|
||||||
|
<string name="dirac_headset_piston_color">Color Edition</string>
|
||||||
|
<string name="dirac_headset_in_ear">Mi In-Ear</string>
|
||||||
|
<string name="dirac_headset_capsule">Mi Capsule</string>
|
||||||
|
<string name="dirac_headset_in_ear_pro">Mi In-Ear Pro</string>
|
||||||
|
<string name="dirac_headset_comfort">Mi Comfort</string>
|
||||||
|
<string name="dirac_headset_reduction_noise">Mi Noise Cancelling (Type-C)</string>
|
||||||
|
<string name="dirac_headset_cancelling">Mi Noise Cancelling (3.5mm)</string>
|
||||||
|
<string name="dirac_headset_half_in_ear">Mi Half In-Ear</string>
|
||||||
|
<string name="dirac_headset_in_ear2">Mi In-Ear 2</string>
|
||||||
|
<string name="dirac_headset_earphone_basic">Mi Earphones Basic</string>
|
||||||
|
<string name="dirac_headset_earphone">Mi Earphones</string>
|
||||||
|
|
||||||
<!-- TODO: change the string values accordingly -->
|
<string name="dirac_preset_default">Default</string>
|
||||||
<string name="dirac_preset_0">Preset 0</string>
|
<string name="dirac_preset_rock">Rock</string>
|
||||||
<string name="dirac_preset_1">Preset 1</string>
|
<string name="dirac_preset_jazz">Jazz</string>
|
||||||
<string name="dirac_preset_2">Preset 2</string>
|
<string name="dirac_preset_pop">Pop</string>
|
||||||
<string name="dirac_preset_3">Preset 3</string>
|
<string name="dirac_preset_classical">Classical</string>
|
||||||
|
<string name="dirac_preset_hiphop">Hiphop</string>
|
||||||
|
<string name="dirac_preset_blues">Blues</string>
|
||||||
|
<string name="dirac_preset_electronic">Electronic</string>
|
||||||
|
<string name="dirac_preset_country">Country</string>
|
||||||
|
<string name="dirac_preset_dance">Dance</string>
|
||||||
|
<string name="dirac_preset_metal">Metal</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -15,13 +15,17 @@
|
|||||||
|
|
||||||
<ListPreference
|
<ListPreference
|
||||||
android:key="dirac_headset_pref"
|
android:key="dirac_headset_pref"
|
||||||
|
android:entries="@array/dirac_headset_pref_entries"
|
||||||
|
android:entryValues="@array/dirac_headset_pref_values"
|
||||||
android:defaultValue="0"
|
android:defaultValue="0"
|
||||||
android:title="@string/dirac_headset_title"
|
android:title="@string/dirac_headset_title"
|
||||||
android:summary="%s" />
|
android:summary="%s" />
|
||||||
|
|
||||||
<ListPreference
|
<ListPreference
|
||||||
android:key="dirac_preset_pref"
|
android:key="dirac_preset_pref"
|
||||||
android:defaultValue="0"
|
android:entries="@array/dirac_preset_pref_entries"
|
||||||
|
android:entryValues="@array/dirac_preset_pref_values"
|
||||||
|
android:defaultValue="0,0,0,0,0,0,0"
|
||||||
android:title="@string/dirac_preset_title"
|
android:title="@string/dirac_preset_title"
|
||||||
android:summary="%s" />
|
android:summary="%s" />
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ import lineageos.providers.LineageSettings;
|
|||||||
import org.lineageos.settings.device.util.FileUtils;
|
import org.lineageos.settings.device.util.FileUtils;
|
||||||
import org.lineageos.settings.device.actions.Constants;
|
import org.lineageos.settings.device.actions.Constants;
|
||||||
import org.lineageos.settings.device.ServiceWrapper.LocalBinder;
|
import org.lineageos.settings.device.ServiceWrapper.LocalBinder;
|
||||||
|
import org.lineageos.settings.device.dirac.DiracUtils;
|
||||||
|
|
||||||
public class BootCompletedReceiver extends BroadcastReceiver {
|
public class BootCompletedReceiver extends BroadcastReceiver {
|
||||||
static final String TAG = "LineageActions";
|
static final String TAG = "LineageActions";
|
||||||
@@ -56,6 +57,7 @@ public class BootCompletedReceiver extends BroadcastReceiver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
context.startService(new Intent(context, ServiceWrapper.class));
|
context.startService(new Intent(context, ServiceWrapper.class));
|
||||||
|
DiracUtils.initialize();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static void enableNavBar(boolean enable, Context context) {
|
protected static void enableNavBar(boolean enable, Context context) {
|
||||||
|
|||||||
@@ -61,34 +61,10 @@ public class DiracSettingsFragment extends PreferenceFragment implements
|
|||||||
mHeadsetType = (ListPreference) findPreference(PREF_HEADSET);
|
mHeadsetType = (ListPreference) findPreference(PREF_HEADSET);
|
||||||
mHeadsetType.setOnPreferenceChangeListener(this);
|
mHeadsetType.setOnPreferenceChangeListener(this);
|
||||||
mHeadsetType.setEnabled(enhancerEnabled);
|
mHeadsetType.setEnabled(enhancerEnabled);
|
||||||
// TODO: adapt to real values
|
|
||||||
String[] headsetEntries = new String[] {
|
|
||||||
getString(R.string.dirac_headset_0),
|
|
||||||
getString(R.string.dirac_headset_1),
|
|
||||||
getString(R.string.dirac_headset_2),
|
|
||||||
getString(R.string.dirac_headset_3)
|
|
||||||
};
|
|
||||||
String[] headsetValues = new String[] {
|
|
||||||
"0", "1", "2", "3"
|
|
||||||
};
|
|
||||||
mHeadsetType.setEntries(headsetEntries);
|
|
||||||
mHeadsetType.setEntryValues(headsetValues);
|
|
||||||
|
|
||||||
mPreset = (ListPreference) findPreference(PREF_PRESET);
|
mPreset = (ListPreference) findPreference(PREF_PRESET);
|
||||||
mPreset.setOnPreferenceChangeListener(this);
|
mPreset.setOnPreferenceChangeListener(this);
|
||||||
mPreset.setEnabled(enhancerEnabled);
|
mPreset.setEnabled(enhancerEnabled);
|
||||||
// TODO: adapt to real values
|
|
||||||
String[] presetEntries = new String[] {
|
|
||||||
getString(R.string.dirac_preset_0),
|
|
||||||
getString(R.string.dirac_preset_1),
|
|
||||||
getString(R.string.dirac_preset_2),
|
|
||||||
getString(R.string.dirac_preset_3)
|
|
||||||
};
|
|
||||||
String[] presetValues = new String[] {
|
|
||||||
"0", "1", "2", "3"
|
|
||||||
};
|
|
||||||
mPreset.setEntries(presetEntries);
|
|
||||||
mPreset.setEntryValues(presetValues);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -125,10 +101,10 @@ public class DiracSettingsFragment extends PreferenceFragment implements
|
|||||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||||
switch (preference.getKey()) {
|
switch (preference.getKey()) {
|
||||||
case PREF_HEADSET:
|
case PREF_HEADSET:
|
||||||
// TODO: on Headset changed
|
DiracUtils.setHeadsetType(Integer.parseInt(newValue.toString()));
|
||||||
return true;
|
return true;
|
||||||
case PREF_PRESET:
|
case PREF_PRESET:
|
||||||
// TODO: on Preset changed
|
DiracUtils.setLevel(String.valueOf(newValue));
|
||||||
return true;
|
return true;
|
||||||
default: return false;
|
default: return false;
|
||||||
}
|
}
|
||||||
@@ -136,7 +112,7 @@ public class DiracSettingsFragment extends PreferenceFragment implements
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
|
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
|
||||||
// TODO: Toggle enhancer
|
DiracUtils.setMusic(isChecked);
|
||||||
|
|
||||||
mTextView.setText(getString(isChecked ? R.string.switch_bar_on : R.string.switch_bar_off));
|
mTextView.setText(getString(isChecked ? R.string.switch_bar_on : R.string.switch_bar_off));
|
||||||
mSwitchBar.setActivated(isChecked);
|
mSwitchBar.setActivated(isChecked);
|
||||||
|
|||||||
@@ -0,0 +1,76 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2018 The LineageOS Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.lineageos.settings.dirac;
|
||||||
|
|
||||||
|
import android.media.audiofx.AudioEffect;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class DiracSound extends AudioEffect {
|
||||||
|
|
||||||
|
private static final int DIRACSOUND_PARAM_HEADSET_TYPE = 1;
|
||||||
|
private static final int DIRACSOUND_PARAM_EQ_LEVEL = 2;
|
||||||
|
private static final int DIRACSOUND_PARAM_MUSIC = 4;
|
||||||
|
|
||||||
|
private static final UUID EFFECT_TYPE_DIRACSOUND =
|
||||||
|
UUID.fromString("e069d9e0-8329-11df-9168-0002a5d5c51b");
|
||||||
|
private static final String TAG = "DiracSound";
|
||||||
|
|
||||||
|
public DiracSound(int priority, int audioSession) {
|
||||||
|
super(EFFECT_TYPE_NULL, EFFECT_TYPE_DIRACSOUND, priority, audioSession);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMusic(int enable) throws IllegalStateException,
|
||||||
|
IllegalArgumentException, UnsupportedOperationException {
|
||||||
|
checkStatus(setParameter(DIRACSOUND_PARAM_MUSIC, enable));
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getMusic() throws IllegalStateException,
|
||||||
|
IllegalArgumentException, UnsupportedOperationException {
|
||||||
|
int[] value = new int[1];
|
||||||
|
checkStatus(getParameter(DIRACSOUND_PARAM_MUSIC, value));
|
||||||
|
return value[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHeadsetType(int type) throws IllegalStateException,
|
||||||
|
IllegalArgumentException, UnsupportedOperationException {
|
||||||
|
checkStatus(setParameter(DIRACSOUND_PARAM_HEADSET_TYPE, type));
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getHeadsetType() throws IllegalStateException,
|
||||||
|
IllegalArgumentException, UnsupportedOperationException {
|
||||||
|
int[] value = new int[1];
|
||||||
|
checkStatus(getParameter(DIRACSOUND_PARAM_HEADSET_TYPE, value));
|
||||||
|
return value[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLevel(int band, float level) throws IllegalStateException,
|
||||||
|
IllegalArgumentException, UnsupportedOperationException {
|
||||||
|
checkStatus(setParameter(new int[]{DIRACSOUND_PARAM_EQ_LEVEL, band},
|
||||||
|
String.valueOf(level).getBytes()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getLevel(int band) throws IllegalStateException,
|
||||||
|
IllegalArgumentException, UnsupportedOperationException {
|
||||||
|
int[] param = new int[2];
|
||||||
|
byte[] value = new byte[10];
|
||||||
|
param[0] = DIRACSOUND_PARAM_EQ_LEVEL;
|
||||||
|
param[1] = band;
|
||||||
|
checkStatus(getParameter(param, value));
|
||||||
|
return new Float(new String(value)).floatValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -17,10 +17,51 @@
|
|||||||
package org.lineageos.settings.dirac;
|
package org.lineageos.settings.dirac;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.UserHandle;
|
||||||
|
|
||||||
public final class DiracUtils {
|
public final class DiracUtils {
|
||||||
|
|
||||||
|
protected static DiracSound mDiracSound;
|
||||||
|
private static boolean mInitialized;
|
||||||
|
|
||||||
|
public static void initialize() {
|
||||||
|
if (!mInitialized) {
|
||||||
|
mInitialized = true;
|
||||||
|
mDiracSound = new DiracSound(0, 0);
|
||||||
|
mDiracSound.setMusic(mDiracSound.getMusic());
|
||||||
|
mDiracSound.setHeadsetType(mDiracSound.getHeadsetType());
|
||||||
|
setLevel(getLevel());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static void setMusic(boolean enable) {
|
||||||
|
mDiracSound.setMusic(enable ? 1 : 0);
|
||||||
|
}
|
||||||
|
|
||||||
protected static boolean isDiracEnabled(Context context) {
|
protected static boolean isDiracEnabled(Context context) {
|
||||||
return false;
|
return mDiracSound.getMusic() == 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static void setLevel(String preset) {
|
||||||
|
String[] level = preset.split("\\s*,\\s*");
|
||||||
|
|
||||||
|
for (int band = 0; band <= level.length - 1; band++) {
|
||||||
|
mDiracSound.setLevel(band, Float.valueOf(level[band]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static String getLevel() {
|
||||||
|
String selected = "";
|
||||||
|
for (int band = 0; band <= 6; band++) {
|
||||||
|
int temp = (int) mDiracSound.getLevel(band);
|
||||||
|
selected += String.valueOf(temp);
|
||||||
|
if (band != 6) selected += ",";
|
||||||
|
}
|
||||||
|
return selected;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static void setHeadsetType(int paramInt) {
|
||||||
|
mDiracSound.setHeadsetType(paramInt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user