diff options
| author | Michael Bestas <mkbestas@lineageos.org> | 2024-06-28 16:24:33 +0300 |
|---|---|---|
| committer | Michael Bestas <mkbestas@lineageos.org> | 2025-05-05 03:54:30 +0300 |
| commit | e3100a01343fc3f3dbfeede80026b71e0ed3d191 (patch) | |
| tree | 014c6a0c15dbecdc7aec675e53a74a8119eb4cf3 | |
| parent | 73c6ff854007ec0228d6d09617137f1817863c70 (diff) | |
miami: Remove camera 5G disabler
Revert "dubai: camera: Ignore face unlock and ASI front camera usage"
This reverts commit 3e6bd8cf18cd6173d75f736c788ba2f83ad493a7.
Revert "dubai: camera: Disable N78 5G NSA band too"
This reverts commit 9b139ed94d1df660b578c5c09eaf66aac72cb8bb.
Revert "dubai: Disable only N78 5G SA band for front camera"
This reverts commit b9046bddf157a6187d3efc5e8bc73f5d5a3ee310.
Revert "dubai: Disable 5G when front camera is in use"
This reverts commit 8808e9b818e78363cab97284198a2875129e47a8.
Change-Id: Ib786873d8d5707a6a1b6dbec5fbaf5d38be1ebac
| -rw-r--r-- | camera/Android.bp | 24 | ||||
| -rw-r--r-- | camera/AndroidManifest.xml | 36 | ||||
| -rw-r--r-- | camera/privapp-permissions-dubaicameraservice.xml | 11 | ||||
| -rw-r--r-- | camera/src/com/arrow/dubaicameraservice/BootReceiver.java | 21 | ||||
| -rw-r--r-- | camera/src/com/arrow/dubaicameraservice/DubaiCameraService.java | 162 | ||||
| -rw-r--r-- | camera/src/com/arrow/dubaicameraservice/QcRilMsgUtils.java | 169 | ||||
| -rw-r--r-- | camera/src/com/qualcomm/qcrilmsgtunnel/IQcrilMsgTunnel.aidl | 16 | ||||
| -rw-r--r-- | device.mk | 4 |
8 files changed, 0 insertions, 443 deletions
diff --git a/camera/Android.bp b/camera/Android.bp deleted file mode 100644 index ff65be3..0000000 --- a/camera/Android.bp +++ /dev/null @@ -1,24 +0,0 @@ -// -// SPDX-FileCopyrightText: 2023 ArrowOS -// SPDX-License-Identifier: Apache-2.0 -// - -android_app { - name: "DubaiCameraService", - srcs: [ - "src/**/*.java", - "src/**/*.aidl", - ], - certificate: "platform", - platform_apis: true, - privileged: true, - system_ext_specific: true, - required: ["privapp-permissions-dubaicameraservice.xml"], -} - -prebuilt_etc { - name: "privapp-permissions-dubaicameraservice.xml", - src: "privapp-permissions-dubaicameraservice.xml", - system_ext_specific: true, - sub_dir: "permissions", -} diff --git a/camera/AndroidManifest.xml b/camera/AndroidManifest.xml deleted file mode 100644 index e62425e..0000000 --- a/camera/AndroidManifest.xml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - SPDX-FileCopyrightText: 2023 ArrowOS - SPDX-License-Identifier: Apache-2.0 ---> -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.arrow.dubaicameraservice" - android:sharedUserId="android.uid.system"> - - <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> - <uses-permission android:name="android.permission.CAMERA_OPEN_CLOSE_LISTENER" /> - <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" /> - <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" /> - <uses-permission android:name="com.qualcomm.permission.USE_QCRIL_MSG_TUNNEL" /> - - <application - android:label="DubaiCameraService" - android:persistent="true"> - - <receiver - android:name=".BootReceiver" - android:exported="false"> - <intent-filter android:priority="1000"> - <action android:name="android.intent.action.BOOT_COMPLETED" /> - <category android:name="android.intent.category.DEFAULT" /> - </intent-filter> - </receiver> - - <service android:name=".DubaiCameraService" - android:permission="DubaiCameraService" - android:exported="false"> - </service> - - </application> - -</manifest> diff --git a/camera/privapp-permissions-dubaicameraservice.xml b/camera/privapp-permissions-dubaicameraservice.xml deleted file mode 100644 index 70a776c..0000000 --- a/camera/privapp-permissions-dubaicameraservice.xml +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - SPDX-FileCopyrightText: 2023 ArrowOS - SPDX-License-Identifier: Apache-2.0 ---> -<permissions> - <privapp-permissions package="com.arrow.dubaicameraservice"> - <permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/> - <permission name="android.permission.MODIFY_PHONE_STATE"/> - </privapp-permissions> -</permissions> diff --git a/camera/src/com/arrow/dubaicameraservice/BootReceiver.java b/camera/src/com/arrow/dubaicameraservice/BootReceiver.java deleted file mode 100644 index 6bb2e36..0000000 --- a/camera/src/com/arrow/dubaicameraservice/BootReceiver.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2023 ArrowOS - * SPDX-License-Identifier: Apache-2.0 - */ - -package com.arrow.dubaicameraservice; - -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; - -public class BootReceiver extends BroadcastReceiver { - - @Override - public void onReceive(final Context context, Intent intent) { - if (!intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) - return; - - DubaiCameraService.startService(context); - } -} diff --git a/camera/src/com/arrow/dubaicameraservice/DubaiCameraService.java b/camera/src/com/arrow/dubaicameraservice/DubaiCameraService.java deleted file mode 100644 index 8ab66bd..0000000 --- a/camera/src/com/arrow/dubaicameraservice/DubaiCameraService.java +++ /dev/null @@ -1,162 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2023 ArrowOS - * SPDX-License-Identifier: Apache-2.0 - */ - -package com.arrow.dubaicameraservice; - -import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID; - -import android.app.Service; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.hardware.camera2.CameraManager; -import android.os.Handler; -import android.os.HandlerExecutor; -import android.os.IBinder; -import android.os.Looper; -import android.os.UserHandle; -import android.telephony.SubscriptionManager; -import android.telephony.TelephonyCallback; -import android.telephony.TelephonyManager; -import android.util.Log; - -import java.util.Arrays; -import java.util.Set; -import java.util.concurrent.Executor; - -public class DubaiCameraService extends Service { - - private static final boolean DEBUG = false; - private static final String TAG = "DubaiCameraService"; - - private static final String FRONT_CAMERA_ID = "1"; - private static final int OFFENDING_NR_BAND = 78; - - private static final Set<String> IGNORED_PACKAGES = Set.of( - "co.aospa.sense", // face unlock - "com.google.android.as" // auto rotate, screen attention etc - ); - - private CameraManager mCameraManager; - private SubscriptionManager mSubManager; - private TelephonyManager mTelephonyManager; - private QcRilMsgUtils mQcRilMsgUtils; - - private boolean mIsFrontCamInUse = false; - private int[] mActiveSubIds = new int[0]; - private int mDefaultDataSubId = INVALID_SUBSCRIPTION_ID; - - private final Handler mHandler = new Handler(Looper.getMainLooper()); - private final Executor mExecutor = new HandlerExecutor(mHandler); - - private final CameraManager.AvailabilityCallback mCameraCallback = - new CameraManager.AvailabilityCallback() { - @Override - public void onCameraOpened(String cameraId, String packageId) { - dlog("onCameraOpened id=" + cameraId + " package=" + packageId); - if (cameraId.equals(FRONT_CAMERA_ID) && !IGNORED_PACKAGES.contains(packageId)) { - mIsFrontCamInUse = true; - update5gState(); - } - } - - @Override - public void onCameraClosed(String cameraId) { - dlog("onCameraClosed id=" + cameraId); - if (cameraId.equals(FRONT_CAMERA_ID) && mIsFrontCamInUse) { - mIsFrontCamInUse = false; - update5gState(); - } - } - }; - - private final SubscriptionManager.OnSubscriptionsChangedListener mSubListener = - new SubscriptionManager.OnSubscriptionsChangedListener() { - @Override - public void onSubscriptionsChanged() { - dlog("onSubscriptionsChanged"); - final int[] subs = mSubManager.getActiveSubscriptionIdList(); - if (!Arrays.equals(subs, mActiveSubIds)) { - dlog("active subs changed, was: " + Arrays.toString(mActiveSubIds) - + ", now: " + Arrays.toString(subs)); - mActiveSubIds = subs; - update5gState(); - } - } - }; - - private class ActiveDataSubIdCallback extends TelephonyCallback implements - TelephonyCallback.ActiveDataSubscriptionIdListener { - @Override - public void onActiveDataSubscriptionIdChanged(int subId) { - dlog("onActiveDataSubscriptionIdChanged subId:" + subId); - if (subId != mDefaultDataSubId) { - mDefaultDataSubId = subId; - update5gState(); - } - } - }; - - private final TelephonyCallback mTelephonyCallback = new ActiveDataSubIdCallback(); - - @Override - public void onCreate() { - dlog("onCreate"); - mQcRilMsgUtils = new QcRilMsgUtils(this); - mCameraManager = getSystemService(CameraManager.class); - mSubManager = getSystemService(SubscriptionManager.class); - mTelephonyManager = getSystemService(TelephonyManager.class); - } - - @Override - public int onStartCommand(Intent intent, int flags, int startId) { - dlog("onStartCommand"); - mQcRilMsgUtils.bindService(); - mCameraManager.registerAvailabilityCallback(mCameraCallback, mHandler); - mTelephonyManager.registerTelephonyCallback(mExecutor, mTelephonyCallback); - mSubManager.addOnSubscriptionsChangedListener(mExecutor, mSubListener); - return START_STICKY; - } - - @Override - public void onDestroy() { - dlog("onDestroy"); - mQcRilMsgUtils.unbindService(); - mCameraManager.unregisterAvailabilityCallback(mCameraCallback); - mTelephonyManager.unregisterTelephonyCallback(mTelephonyCallback); - mSubManager.removeOnSubscriptionsChangedListener(mSubListener); - } - - @Override - public IBinder onBind(Intent intent) { - return null; - } - - public static void startService(Context context) { - Log.i(TAG, "Starting service"); - context.startServiceAsUser(new Intent(context, DubaiCameraService.class), - UserHandle.CURRENT); - } - - private void update5gState() { - if (mDefaultDataSubId == INVALID_SUBSCRIPTION_ID - || mActiveSubIds.length == 0) { - dlog("update5gState: Invalid subid or no active subs!"); - return; - } - if (mQcRilMsgUtils.setNrBandEnabled(mSubManager.getPhoneId(mDefaultDataSubId), - OFFENDING_NR_BAND, !mIsFrontCamInUse)) { - Log.i(TAG, (mIsFrontCamInUse ? "Disabled" : "Enabled") + " NR band " - + OFFENDING_NR_BAND + " for subId " + mDefaultDataSubId); - } else { - Log.e(TAG, "Failed to " + (mIsFrontCamInUse ? "disable" : "enable") + " NR band " - + OFFENDING_NR_BAND + " for subId " + mDefaultDataSubId); - } - } - - protected static void dlog(String msg) { - if (DEBUG) Log.d(TAG, msg); - } -} diff --git a/camera/src/com/arrow/dubaicameraservice/QcRilMsgUtils.java b/camera/src/com/arrow/dubaicameraservice/QcRilMsgUtils.java deleted file mode 100644 index b7012c5..0000000 --- a/camera/src/com/arrow/dubaicameraservice/QcRilMsgUtils.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2023 ArrowOS - * SPDX-License-Identifier: Apache-2.0 - */ - -package com.arrow.dubaicameraservice; - -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.content.ServiceConnection; -import android.os.IBinder; -import android.os.RemoteException; -import android.util.Log; - -import com.qualcomm.qcrilmsgtunnel.IQcrilMsgTunnel; - -import java.nio.ByteBuffer; -import java.nio.ByteOrder; - -public class QcRilMsgUtils { - - private static final String TAG = "DubaiCameraService-QcRil"; - - private static final String PACKAGE_NAME = "com.qualcomm.qcrilmsgtunnel"; - private static final String SERVICE_NAME = "com.qualcomm.qcrilmsgtunnel.QcrilMsgTunnelService"; - - private static final int OEM_RIL_REQUEST_GET_BAND_PREF = 327723; - private static final int OEM_RIL_REQUEST_SET_BAND_PREF = 327724; - private static final int BAND_CONFIG_LENGTH = 168; - private static final int LTE_CONFIG_LENGTH = 4; - private static final int NR_CONFIG_LENGTH = 8; - - private IQcrilMsgTunnel mService; - private QcrilMsgTunnelConnection mServiceConnection; - private Context mContext; - - public QcRilMsgUtils(Context context) { - mContext = context; - mServiceConnection = new QcrilMsgTunnelConnection(); - } - - protected void bindService() { - dlog("bindService"); - if (!mContext.bindService(new Intent().setClassName(PACKAGE_NAME, SERVICE_NAME), - mServiceConnection, Context.BIND_AUTO_CREATE)) { - Log.e(TAG, "Failed to bind to QcrilMsgTunnelService!"); - } - } - - protected void unbindService() { - dlog("unbindService"); - mContext.unbindService(mServiceConnection); - mService = null; - } - - /* TODO: split this function */ - protected boolean setNrBandEnabled(int phoneId, int band, boolean enabled) { - if (mService == null) { - Log.e(TAG, "setNrSaBandEnabled: mService is null!"); - return false; - } - dlog("setNrSaBandEnabled: phoneId=" + phoneId + " band=" + band + " enabled=" + enabled); - - // get band config - byte[] reqData = new byte[8]; - ByteBuffer reqBuf = ByteBuffer.wrap(reqData) - .order(ByteOrder.BIG_ENDIAN) - .putInt(OEM_RIL_REQUEST_GET_BAND_PREF) - .putInt(0); - byte[] resp = new byte[BAND_CONFIG_LENGTH]; - try { - int ret = mService.sendOemRilRequestRaw(reqData, resp, phoneId); - if (ret < 0) - throw new Exception(); - } catch (Exception e) { - Log.e(TAG, "sendOemRilRequestRaw failed to get band config!", e); - return false; - } - ByteBuffer buf = ByteBuffer.wrap(resp) - .order(ByteOrder.nativeOrder()); - long nasConfig = buf.getLong(); - long[] lteConfigs = new long[LTE_CONFIG_LENGTH]; - for (int i = 0; i < LTE_CONFIG_LENGTH; i++) { - lteConfigs[i] = buf.getLong(); - } - long[] nrSaConfigs = new long[NR_CONFIG_LENGTH]; - for (int i = 0; i < NR_CONFIG_LENGTH; i++) { - nrSaConfigs[i] = buf.getLong(); - } - long[] nrNsaConfigs = new long[NR_CONFIG_LENGTH]; - for (int i = 0; i < NR_CONFIG_LENGTH; i++) { - nrNsaConfigs[i] = buf.getLong(); - } - - // modify band config - int row = (band - 1) / 64; - int col = (band - 1) % 64; - if (enabled) { - nrSaConfigs[row] |= (1 << col); - nrNsaConfigs[row] |= (1 << col); - } else { - nrSaConfigs[row] &= ~(1 << col); - nrNsaConfigs[row] &= ~(1 << col); - } - - // set band config - byte[] newData = new byte[BAND_CONFIG_LENGTH + 8]; - ByteBuffer newBuf = ByteBuffer.wrap(newData) - .order(ByteOrder.BIG_ENDIAN) - .putInt(OEM_RIL_REQUEST_SET_BAND_PREF) - .putInt(BAND_CONFIG_LENGTH) - .order(ByteOrder.nativeOrder()) - .putLong(nasConfig); - for (int i = 0; i < LTE_CONFIG_LENGTH; i++) { - newBuf.putLong(lteConfigs[i]); - } - for (int i = 0; i < NR_CONFIG_LENGTH; i++) { - newBuf.putLong(nrSaConfigs[i]); - } - for (int i = 0; i < NR_CONFIG_LENGTH; i++) { - newBuf.putLong(nrNsaConfigs[i]); - } - try { - int ret = mService.sendOemRilRequestRaw(newData, new byte[1], phoneId); - if (ret < 0) - throw new Exception(); - } catch (Exception e) { - Log.e(TAG, "sendOemRilRequestRaw failed to set band config!", e); - return false; - } - - return true; - } - - private class QcrilMsgTunnelConnection implements ServiceConnection { - @Override - public void onServiceConnected(ComponentName name, IBinder service) { - mService = IQcrilMsgTunnel.Stub.asInterface(service); - if (mService == null) { - Log.e(TAG, "Unable to get IQcrilMsgTunnel!"); - return; - } - try { - service.linkToDeath(new IBinder.DeathRecipient() { - @Override - public void binderDied() { - Log.e(TAG, "QcrilMsgTunnel service died, trying to bind again"); - mService = null; - QcRilMsgUtils.this.bindService(); - } - }, 0); - } catch (RemoteException e) { - Log.e(TAG, "linkToDeath failed", e); - } - Log.i(TAG, "QcrilMsgTunnel service connected"); - } - - @Override - public void onServiceDisconnected(ComponentName name) { - Log.i(TAG, "QcrilMsgTunnel service disconnected"); - mService = null; - } - } - - private static void dlog(String msg) { - DubaiCameraService.dlog(msg); - } -} diff --git a/camera/src/com/qualcomm/qcrilmsgtunnel/IQcrilMsgTunnel.aidl b/camera/src/com/qualcomm/qcrilmsgtunnel/IQcrilMsgTunnel.aidl deleted file mode 100644 index 81975ab..0000000 --- a/camera/src/com/qualcomm/qcrilmsgtunnel/IQcrilMsgTunnel.aidl +++ /dev/null @@ -1,16 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2023 ArrowOS - * SPDX-License-Identifier: Apache-2.0 - */ - -package com.qualcomm.qcrilmsgtunnel; - -interface IQcrilMsgTunnel { - - /** - * Sends a OEM request to the RIL and returns the response back to the - * Caller. The returnValue is negative on failure. 0 or length of response on SUCCESS - */ - int sendOemRilRequestRaw(in byte[] request, out byte[] response, in int sub); - -} @@ -41,10 +41,6 @@ PRODUCT_COPY_FILES += \ $(LOCAL_PATH)/audio/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml \ $(LOCAL_PATH)/audio/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/default_volume_tables.xml -# Camera -PRODUCT_PACKAGES += \ - DubaiCameraService - # Fingerprint PRODUCT_PACKAGES += \ android.hardware.biometrics.fingerprint@2.3-service.miami |
