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.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;
}
}