diff --git a/Android.mk b/Android.mk index cf52fcc..e2ebc8b 100644 --- a/Android.mk +++ b/Android.mk @@ -8,11 +8,9 @@ LOCAL_PROPRIETARY_MODULE := true LOCAL_SRC_FILES := $(call all-java-files-under, src) -LOCAL_JAVA_LIBRARIES := android.hidl.manager-V1.0-java LOCAL_STATIC_JAVA_LIBRARIES := vendor.qti.hardware.radio.am-V1.0-java LOCAL_PROGUARD_FLAG_FILES := proguard.flags -LOCAL_PRIVATE_PLATFORM_APIS := true -LOCAL_PRIVILEGED_MODULE := true +LOCAL_SDK_VERSION := system_current include $(BUILD_PACKAGE) diff --git a/src/com/sony/qcrilam/QcRilAmService.java b/src/com/sony/qcrilam/QcRilAmService.java index 5cd9563..2faf4ef 100644 --- a/src/com/sony/qcrilam/QcRilAmService.java +++ b/src/com/sony/qcrilam/QcRilAmService.java @@ -2,10 +2,10 @@ package com.sony.qcrilam; import android.app.Service; import android.content.Intent; -import android.media.AudioSystem; +import android.media.AudioManager; import android.os.IBinder; import android.os.RemoteException; -import android.telephony.TelephonyManager; +import android.telephony.SubscriptionManager; import android.util.Log; import vendor.qti.hardware.radio.am.V1_0.IQcRilAudio; import vendor.qti.hardware.radio.am.V1_0.IQcRilAudioCallback; @@ -18,7 +18,7 @@ public class QcRilAmService extends Service { return isRunning; } - private void addCallbackForSimSlot(int simSlotNo) { + private void addCallbackForSimSlot(final int simSlotNo, final AudioManager audioManager) { try { IQcRilAudio QcRilAudio = IQcRilAudio.getService("slot" + simSlotNo); if (QcRilAudio == null) { @@ -26,15 +26,19 @@ public class QcRilAmService extends Service { } else { QcRilAudio.setCallback(new IQcRilAudioCallback.Stub() { public String getParameters(String keys) { - return AudioSystem.getParameters(keys); + return audioManager.getParameters(keys); } public int setParameters(String keyValuePairs) { - return AudioSystem.setParameters(keyValuePairs); + /* return */ audioManager.setParameters(keyValuePairs); + // AudioManager.setParameters does not check nor return + // the value coming from AudioSystem.setParameters. + // Assume there was no error: + return 0; } }); } - } catch(RemoteException exception) { + } catch (RemoteException exception) { Log.e(TAG, "RemoteException while trying to add callback for slot" + simSlotNo); } } @@ -47,9 +51,13 @@ public class QcRilAmService extends Service { @Override public void onCreate() { isRunning = true; - int simCount = TelephonyManager.from(this).getSimCount(); + int simCount = SubscriptionManager.from(this).getActiveSubscriptionInfoCountMax(); + Log.i(TAG, "Device has " + simCount + " sim slots"); + final AudioManager audioManager = getSystemService(AudioManager.class); + if (audioManager == null) + throw new RuntimeException("Can't get audiomanager!"); for (int simSlotNo = 1; simSlotNo <= simCount; simSlotNo++) { - addCallbackForSimSlot(simSlotNo); + addCallbackForSimSlot(simSlotNo, audioManager); } }