Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 76a1a959 authored by Rambo Wang's avatar Rambo Wang
Browse files

Clear up ALWAYS_REPORTED_SIGNAL_STRENGTH_CHANGED in BT pkg

The feature "alwasy report signal strength" has been obsoleted and
in clearing up. Client should switch to new public API
TelephonyManager#setSignalStrengthUpdateRequest.

Bug: 177924721
Fix: 203460567
Test: atest HeadsetPhoneStateTest
Change-Id: I8fc98a57c85d94e3cb3930459569d309bad33641
parent 2edf12eb
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.os.Handler;
import android.telephony.PhoneStateListener;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
import android.telephony.SignalStrengthUpdateRequest;
import android.telephony.SubscriptionManager;
import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener;
import android.telephony.TelephonyManager;
@@ -70,6 +71,7 @@ public class HeadsetPhoneState {
    private final HashMap<BluetoothDevice, Integer> mDeviceEventMap = new HashMap<>();
    private PhoneStateListener mPhoneStateListener;
    private final OnSubscriptionsChangedListener mOnSubscriptionsChangedListener;
    private SignalStrengthUpdateRequest mSignalStrengthUpdateRequest;

    HeadsetPhoneState(HeadsetService headsetService) {
        Objects.requireNonNull(headsetService, "headsetService is null");
@@ -85,6 +87,9 @@ public class HeadsetPhoneState {
        mOnSubscriptionsChangedListener = new HeadsetPhoneStateOnSubscriptionChangedListener();
        mSubscriptionManager.addOnSubscriptionsChangedListener(command -> mHandler.post(command),
                mOnSubscriptionsChangedListener);
        mSignalStrengthUpdateRequest = new SignalStrengthUpdateRequest.Builder()
                .setSystemThresholdReportingRequestedWhileIdle(true)
                .build();
    }

    /**
@@ -156,6 +161,9 @@ public class HeadsetPhoneState {
        Log.i(TAG, "startListenForPhoneState(), subId=" + subId + ", enabled_events=" + events);
        mPhoneStateListener = new HeadsetPhoneStateListener(command -> mHandler.post(command));
        mTelephonyManager.listen(mPhoneStateListener, events);
        if ((events & PhoneStateListener.LISTEN_SIGNAL_STRENGTHS) != 0) {
            mTelephonyManager.setSignalStrengthUpdateRequest(mSignalStrengthUpdateRequest);
        }
    }

    private void stopListenForPhoneState() {
@@ -167,6 +175,7 @@ public class HeadsetPhoneState {
                + getTelephonyEventsToListen());
        mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
        mPhoneStateListener = null;
        mTelephonyManager.clearSignalStrengthUpdateRequest(mSignalStrengthUpdateRequest);
    }

    int getCindService() {
+1 −1
Original line number Diff line number Diff line
@@ -2075,7 +2075,7 @@ public class HeadsetStateMachine extends StateMachine {
            events |= PhoneStateListener.LISTEN_SERVICE_STATE;
        }
        if (mAgIndicatorEnableState != null && mAgIndicatorEnableState.signal) {
            events |= PhoneStateListener.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH;
            events |= PhoneStateListener.LISTEN_SIGNAL_STRENGTHS;
        }
        mSystemInterface.getHeadsetPhoneState().listenForPhoneState(mDevice, events);
    }
+12 −12
Original line number Diff line number Diff line
@@ -137,9 +137,9 @@ public class HeadsetPhoneStateTest {
    public void testListenForPhoneState_ServiceAndSignalStrength() {
        BluetoothDevice device1 = TestUtils.getTestDevice(mAdapter, 1);
        mHeadsetPhoneState.listenForPhoneState(device1, PhoneStateListener.LISTEN_SERVICE_STATE
                | PhoneStateListener.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH);
                | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
        verify(mTelephonyManager).listen(any(), eq(PhoneStateListener.LISTEN_SERVICE_STATE
                | PhoneStateListener.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH));
                | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS));
    }

    /**
@@ -150,9 +150,9 @@ public class HeadsetPhoneStateTest {
    public void testListenForPhoneState_ServiceAndSignalStrengthUpdateTurnOffSignalStrengh() {
        BluetoothDevice device1 = TestUtils.getTestDevice(mAdapter, 1);
        mHeadsetPhoneState.listenForPhoneState(device1, PhoneStateListener.LISTEN_SERVICE_STATE
                | PhoneStateListener.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH);
                | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
        verify(mTelephonyManager).listen(any(), eq(PhoneStateListener.LISTEN_SERVICE_STATE
                | PhoneStateListener.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH));
                | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS));
        mHeadsetPhoneState.listenForPhoneState(device1, PhoneStateListener.LISTEN_SERVICE_STATE);
        verify(mTelephonyManager).listen(any(), eq(PhoneStateListener.LISTEN_NONE));
        verify(mTelephonyManager).listen(any(), eq(PhoneStateListener.LISTEN_SERVICE_STATE));
@@ -165,9 +165,9 @@ public class HeadsetPhoneStateTest {
    public void testListenForPhoneState_ServiceAndSignalStrengthUpdateTurnOffAll() {
        BluetoothDevice device1 = TestUtils.getTestDevice(mAdapter, 1);
        mHeadsetPhoneState.listenForPhoneState(device1, PhoneStateListener.LISTEN_SERVICE_STATE
                | PhoneStateListener.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH);
                | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
        verify(mTelephonyManager).listen(any(), eq(PhoneStateListener.LISTEN_SERVICE_STATE
                | PhoneStateListener.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH));
                | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS));
        mHeadsetPhoneState.listenForPhoneState(device1, PhoneStateListener.LISTEN_NONE);
        verify(mTelephonyManager).listen(any(), eq(PhoneStateListener.LISTEN_NONE));
    }
@@ -183,12 +183,12 @@ public class HeadsetPhoneStateTest {
        BluetoothDevice device2 = TestUtils.getTestDevice(mAdapter, 2);
        // Enabling updates from first device should trigger subscription
        mHeadsetPhoneState.listenForPhoneState(device1, PhoneStateListener.LISTEN_SERVICE_STATE
                | PhoneStateListener.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH);
                | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
        verify(mTelephonyManager).listen(any(), eq(PhoneStateListener.LISTEN_SERVICE_STATE
                | PhoneStateListener.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH));
                | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS));
        // Enabling updates from second device should not trigger the same subscription
        mHeadsetPhoneState.listenForPhoneState(device2, PhoneStateListener.LISTEN_SERVICE_STATE
                | PhoneStateListener.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH);
                | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
        // Disabling updates from first device should not cancel subscription
        mHeadsetPhoneState.listenForPhoneState(device1, PhoneStateListener.LISTEN_NONE);
        // Disabling updates from second device should cancel subscription
@@ -211,15 +211,15 @@ public class HeadsetPhoneStateTest {
        verifyNoMoreInteractions(mTelephonyManager);
        // Partially enabling updates from second device should trigger partial subscription
        mHeadsetPhoneState.listenForPhoneState(device2,
                PhoneStateListener.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH);
                PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
        verify(mTelephonyManager).listen(any(), eq(PhoneStateListener.LISTEN_NONE));
        verify(mTelephonyManager).listen(any(), eq(PhoneStateListener.LISTEN_SERVICE_STATE
                | PhoneStateListener.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH));
                | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS));
        // Partially disabling updates from first device should not cancel all subscription
        mHeadsetPhoneState.listenForPhoneState(device1, PhoneStateListener.LISTEN_NONE);
        verify(mTelephonyManager, times(2)).listen(any(), eq(PhoneStateListener.LISTEN_NONE));
        verify(mTelephonyManager).listen(
                any(), eq(PhoneStateListener.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH));
                any(), eq(PhoneStateListener.LISTEN_SIGNAL_STRENGTHS));
        // Partially disabling updates from second device should cancel subscription
        mHeadsetPhoneState.listenForPhoneState(device2, PhoneStateListener.LISTEN_NONE);
        verify(mTelephonyManager, times(3)).listen(any(), eq(PhoneStateListener.LISTEN_NONE));
+2 −2
Original line number Diff line number Diff line
@@ -896,7 +896,7 @@ public class HeadsetStateMachineTest {
    public void testAtBiaEvent_initialSubscriptionWithUpdates() {
        setUpConnectedState();
        verify(mPhoneState).listenForPhoneState(mTestDevice, PhoneStateListener.LISTEN_SERVICE_STATE
                | PhoneStateListener.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH);
                | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
        mHeadsetStateMachine.sendMessage(HeadsetStateMachine.STACK_EVENT,
                new HeadsetStackEvent(HeadsetStackEvent.EVENT_TYPE_BIA,
                        new HeadsetAgIndicatorEnableState(true, true, false, false), mTestDevice));
@@ -906,7 +906,7 @@ public class HeadsetStateMachineTest {
                new HeadsetStackEvent(HeadsetStackEvent.EVENT_TYPE_BIA,
                        new HeadsetAgIndicatorEnableState(false, true, true, false), mTestDevice));
        verify(mPhoneState, timeout(ASYNC_CALL_TIMEOUT_MILLIS)).listenForPhoneState(mTestDevice,
                PhoneStateListener.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH);
                PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
        mHeadsetStateMachine.sendMessage(HeadsetStateMachine.STACK_EVENT,
                new HeadsetStackEvent(HeadsetStackEvent.EVENT_TYPE_BIA,
                        new HeadsetAgIndicatorEnableState(false, true, false, false), mTestDevice));