Add minimal support for OP6 DND slider

This commit is contained in:
Pierre-Hugues Husson 2018-06-07 16:41:01 +02:00
parent 9c74ef21a7
commit eafa2e451f

View file

@ -4,14 +4,21 @@ import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.util.Log; import android.util.Log;
import android.media.AudioManager;
import android.media.AudioSystem; import android.media.AudioSystem;
import android.os.IBinder; 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.IQcRilAudioCallback;
import vendor.qti.hardware.radio.am.V1_0.IQcRilAudio; import vendor.qti.hardware.radio.am.V1_0.IQcRilAudio;
public class Service extends android.app.Service { public class Service extends android.app.Service {
AudioManager audioManager;
@Override public void onCreate() { @Override public void onCreate() {
String fp = SystemProperties.get("ro.vendor.build.fingerprint", "nothing");
audioManager = getSystemService(AudioManager.class);
new java.lang.Thread() { new java.lang.Thread() {
@Override @Override
public void run() { public void run() {
@ -25,37 +32,67 @@ public class Service extends android.app.Service {
} catch(Exception e) { } catch(Exception e) {
android.util.Log.d("PHH", "Failed setting callback", e); android.util.Log.d("PHH", "Failed setting callback", e);
} }
} if(fp.contains("OnePlus6")) {
}.start(); 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; boolean ringing = state.contains("USB=0");
IQcRilAudioCallback cb = new IQcRilAudioCallback.Stub() { boolean silent = state.contains("(null)=0");
@Override boolean vibrate = state.contains("USB_HOST=0");
public String getParameters(String parameter) { android.util.Log.v("PHH", "Got ringing = " + ringing + ", silent = " + silent + ", vibrate = " + vibrate);
android.util.Log.d("PHH", "Got getParameters " + parameter); if(ringing && !silent && !vibrate)
try { audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
return AudioSystem.getParameters(parameter); if(silent && !ringing && !vibrate)
} catch(Exception e) { audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
android.util.Log.d("PHH", "Failed getting parameters"); if(vibrate && !silent && !ringing)
} audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
return ""; } catch(Exception e) {
} android.util.Log.d("PHH", "Failed parsing uevent", e);
}
@Override }
public int setParameters(String parameters) { }).startObserving("DEVPATH=/devices/platform/soc/soc:tri_state_key");
android.util.Log.d("PHH", "Got setParameters " + parameters); } catch(Exception e) {
try { android.util.Log.d("PHH", "Failed setting UEventObserver", e);
AudioSystem.setParameters(parameters); }
} catch(Exception e) { }
android.util.Log.d("PHH", "Failed setting parameters");
}
return 0;
}
};
@Override }
public IBinder onBind(Intent intent) { }.start();
return null; }
}
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;
}
} }