From eafa2e451f8a44485c468f8ffd014ae88f50135e Mon Sep 17 00:00:00 2001 From: Pierre-Hugues Husson Date: Thu, 7 Jun 2018 16:41:01 +0200 Subject: [PATCH] Add minimal support for OP6 DND slider --- .../src/me/phh/qti/audio/Service.java | 97 +++++++++++++------ 1 file changed, 67 insertions(+), 30 deletions(-) diff --git a/Qualcomm/QtiAudio/src/me/phh/qti/audio/Service.java b/Qualcomm/QtiAudio/src/me/phh/qti/audio/Service.java index 94adc5d..ecc1a07 100644 --- a/Qualcomm/QtiAudio/src/me/phh/qti/audio/Service.java +++ b/Qualcomm/QtiAudio/src/me/phh/qti/audio/Service.java @@ -4,14 +4,21 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; +import android.media.AudioManager; import android.media.AudioSystem; import android.os.IBinder; +import android.os.UEventObserver; +import android.os.SystemProperties; import vendor.qti.hardware.radio.am.V1_0.IQcRilAudioCallback; import vendor.qti.hardware.radio.am.V1_0.IQcRilAudio; public class Service extends android.app.Service { + AudioManager audioManager; @Override public void onCreate() { + String fp = SystemProperties.get("ro.vendor.build.fingerprint", "nothing"); + audioManager = getSystemService(AudioManager.class); + new java.lang.Thread() { @Override public void run() { @@ -25,37 +32,67 @@ public class Service extends android.app.Service { } catch(Exception e) { android.util.Log.d("PHH", "Failed setting callback", e); } - } - }.start(); - } + if(fp.contains("OnePlus6")) { + try { + (new UEventObserver() { + @Override + public void onUEvent(UEventObserver.UEvent event) { + try { + android.util.Log.v("PHH", "USB UEVENT: " + event.toString()); + String state = event.get("STATE"); - IQcRilAudio service; - IQcRilAudioCallback cb = new IQcRilAudioCallback.Stub() { - @Override - public String getParameters(String parameter) { - android.util.Log.d("PHH", "Got getParameters " + parameter); - try { - return AudioSystem.getParameters(parameter); - } catch(Exception e) { - android.util.Log.d("PHH", "Failed getting parameters"); - } - return ""; - } + boolean ringing = state.contains("USB=0"); + boolean silent = state.contains("(null)=0"); + boolean vibrate = state.contains("USB_HOST=0"); + android.util.Log.v("PHH", "Got ringing = " + ringing + ", silent = " + silent + ", vibrate = " + vibrate); + if(ringing && !silent && !vibrate) + audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); + if(silent && !ringing && !vibrate) + audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT); + if(vibrate && !silent && !ringing) + audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE); + } catch(Exception e) { + android.util.Log.d("PHH", "Failed parsing uevent", e); + } - @Override - public int setParameters(String parameters) { - android.util.Log.d("PHH", "Got setParameters " + parameters); - try { - AudioSystem.setParameters(parameters); - } catch(Exception e) { - android.util.Log.d("PHH", "Failed setting parameters"); - } - return 0; - } - }; + } + }).startObserving("DEVPATH=/devices/platform/soc/soc:tri_state_key"); + } catch(Exception e) { + android.util.Log.d("PHH", "Failed setting UEventObserver", e); + } + } - @Override - public IBinder onBind(Intent intent) { - return null; - } + } + }.start(); + } + + IQcRilAudio service; + IQcRilAudioCallback cb = new IQcRilAudioCallback.Stub() { + @Override + public String getParameters(String parameter) { + android.util.Log.d("PHH", "Got getParameters " + parameter); + try { + return AudioSystem.getParameters(parameter); + } catch(Exception e) { + android.util.Log.d("PHH", "Failed getting parameters"); + } + return ""; + } + + @Override + public int setParameters(String parameters) { + android.util.Log.d("PHH", "Got setParameters " + parameters); + try { + AudioSystem.setParameters(parameters); + } catch(Exception e) { + android.util.Log.d("PHH", "Failed setting parameters"); + } + return 0; + } + }; + + @Override + public IBinder onBind(Intent intent) { + return null; + } }