android_packages_apps_QcRilAm/src/com/sony/qcrilam/QcRilAmService.java
oshmoun d0e1cf6a93 QcRilAm: An app to handle QcRilAudio callbacks
This app simply communicates with the vendor.qti.hardware.radio.am hal and sets the callbacks required for functional incall audio.
The interface definition of the hal was taken from:
https://github.com/phhusson/treble_experimentations/tree/master/interfaces/vendor/qti/hardware/radio/am/1.0
2018-11-15 11:30:44 +01:00

57 lines
1.8 KiB
Java

package com.sony.qcrilam;
import android.app.Service;
import android.content.Intent;
import android.media.AudioSystem;
import android.os.IBinder;
import android.os.RemoteException;
import android.telephony.TelephonyManager;
import android.util.Log;
import vendor.qti.hardware.radio.am.V1_0.IQcRilAudio;
import vendor.qti.hardware.radio.am.V1_0.IQcRilAudioCallback;
public class QcRilAmService extends Service {
private static final String TAG = "QcRilAm-Service";
private static boolean isRunning = false;
public static boolean isServiceRunning() {
return isRunning;
}
private void addCallbackForSimSlot(int simSlotNo) {
try {
IQcRilAudio QcRilAudio = IQcRilAudio.getService("slot" + simSlotNo);
if (QcRilAudio == null) {
Log.e(TAG, "Could not get service instance for slot" + simSlotNo + ", failing");
} else {
QcRilAudio.setCallback(new IQcRilAudioCallback.Stub() {
public String getParameters(String keys) {
return AudioSystem.getParameters(keys);
}
public int setParameters(String keyValuePairs) {
return AudioSystem.setParameters(keyValuePairs);
}
});
}
} catch(RemoteException exception) {
Log.e(TAG, "RemoteException while trying to add callback for slot" + simSlotNo);
}
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
isRunning = true;
int simCount = TelephonyManager.from(this).getSimCount();
for (int simSlotNo = 1; simSlotNo <= simCount; simSlotNo++) {
addCallbackForSimSlot(simSlotNo);
}
}
}