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

Commit b5dbe8af authored by Angela Wang's avatar Angela Wang
Browse files

Show battery info for mono audio location device

1. Show mono battery info in LeAudioBluetoothDetailsHeaderController
   without side text in front of the battery icon
2. Show mono side device on Settings > Accessibility > Hearing devices's
   summary without side information

Flag: EXEMPT bugfix
Bug: 379616650
Test: atest AccessibilityHearingAidPreferenceControllerTest
Test: manually check UI with real device
Change-Id: I4a1a3357e2cef51df505923e38da33767c78e8f3
parent bf47e441
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -176,5 +176,23 @@
                android:padding="@dimen/le_bluetooth_summary_padding"
                android:drawablePadding="@dimen/le_bluetooth_summary_drawable_padding"/>
        </LinearLayout>
        <LinearLayout
            android:id="@+id/bt_battery_mono"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="@dimen/le_bluetooth_battery_start_margin"
            android:layout_marginTop="@dimen/le_bluetooth_battery_top_margin"
            android:gravity="center_horizontal"
            android:orientation="horizontal"
            android:visibility="gone"
            android:focusable="true">
            <TextView
                android:id="@+id/bt_battery_mono_summary"
                style="@style/TextAppearance.EntityHeaderSummary"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="@dimen/le_bluetooth_summary_padding"
                android:drawablePadding="@dimen/le_bluetooth_summary_drawable_padding"/>
        </LinearLayout>
    </LinearLayout>
</LinearLayout>
+1 −6
Original line number Diff line number Diff line
@@ -162,18 +162,13 @@ public class AccessibilityHearingAidPreferenceController extends BasePreferenceC
        }

        final int side = device.getDeviceSide();
        if (side == HearingAidInfo.DeviceSide.SIDE_LEFT_AND_RIGHT) {
            return mContext.getString(
                    R.string.accessibility_hearingaid_left_and_right_side_device_summary, name);
        } else if (side == HearingAidInfo.DeviceSide.SIDE_LEFT) {
        if (side == HearingAidInfo.DeviceSide.SIDE_LEFT) {
            return mContext.getString(
                    R.string.accessibility_hearingaid_left_side_device_summary, name);
        } else if (side == HearingAidInfo.DeviceSide.SIDE_RIGHT) {
            return mContext.getString(
                    R.string.accessibility_hearingaid_right_side_device_summary, name);
        }

        // Invalid side
        return mContext.getString(
                R.string.accessibility_hearingaid_active_device_summary, name);
    }
+6 −5
Original line number Diff line number Diff line
@@ -225,6 +225,8 @@ public class LeAudioBluetoothDetailsHeaderController extends BasePreferenceContr
            return R.id.bt_battery_left_summary;
        } else if (containerId == R.id.bt_battery_right) {
            return R.id.bt_battery_right_summary;
        } else if (containerId == R.id.bt_battery_mono) {
            return R.id.bt_battery_mono_summary;
        }
        Log.d(TAG, "No summary resource id. The containerId is " + containerId);
        return INVALID_RESOURCE_ID;
@@ -237,6 +239,8 @@ public class LeAudioBluetoothDetailsHeaderController extends BasePreferenceContr
        updateBatteryLayout(R.id.bt_battery_left, BluetoothUtils.META_INT_ERROR);
        // hide the right
        updateBatteryLayout(R.id.bt_battery_right, BluetoothUtils.META_INT_ERROR);
        // hide the mono
        updateBatteryLayout(R.id.bt_battery_mono, BluetoothUtils.META_INT_ERROR);
    }

    private void updateBatteryLayout() {
@@ -261,11 +265,6 @@ public class LeAudioBluetoothDetailsHeaderController extends BasePreferenceContr
            int deviceId = leAudioProfile.getAudioLocation(cachedDevice.getDevice());
            Log.d(TAG, "LeAudioDevices:" + cachedDevice.getDevice().getAnonymizedAddress()
                    + ", deviceId:" + deviceId);

            if (deviceId == BluetoothLeAudio.AUDIO_LOCATION_INVALID) {
                Log.d(TAG, "The device does not support the AUDIO_LOCATION.");
                return;
            }
            boolean isLeft = (deviceId & LEFT_DEVICE_ID) != 0;
            boolean isRight = (deviceId & RIGHT_DEVICE_ID) != 0;
            boolean isLeftRight = isLeft && isRight;
@@ -280,6 +279,8 @@ public class LeAudioBluetoothDetailsHeaderController extends BasePreferenceContr
                updateBatteryLayout(R.id.bt_battery_left, cachedDevice.getBatteryLevel());
            } else if (isRight) {
                updateBatteryLayout(R.id.bt_battery_right, cachedDevice.getBatteryLevel());
            } else if (deviceId == BluetoothLeAudio.AUDIO_LOCATION_MONO) {
                updateBatteryLayout(R.id.bt_battery_mono, cachedDevice.getBatteryLevel());
            } else {
                Log.d(TAG, "The device id is other Audio Location. Do nothing.");
            }
+18 −1
Original line number Diff line number Diff line
@@ -208,7 +208,24 @@ public class AccessibilityHearingAidPreferenceControllerTest {
        ShadowLooper.idleMainLooper();

        assertThat(mHearingAidPreference.getSummary().toString().contentEquals(
                "TEST_HEARING_AID_BT_DEVICE_NAME / Left and right")).isTrue();
                "TEST_HEARING_AID_BT_DEVICE_NAME active")).isTrue();
    }

    @Test
    public void getSummary_connectedLeAudioHearingAidMonoSide_connectedSummary() {
        when(mCachedBluetoothDevice.getDeviceSide()).thenReturn(
                HearingAidInfo.DeviceSide.SIDE_MONO);
        when(mCachedBluetoothDevice.getMemberDevice()).thenReturn(new HashSet<>());
        when(mHapClientProfile.getConnectedDevices()).thenReturn(generateHearingAidDeviceList());

        mPreferenceController.onStart();
        Intent intent = new Intent(BluetoothHapClient.ACTION_HAP_CONNECTION_STATE_CHANGED);
        intent.putExtra(BluetoothHearingAid.EXTRA_STATE, BluetoothHapClient.STATE_CONNECTED);
        sendIntent(intent);
        ShadowLooper.idleMainLooper();

        assertThat(mHearingAidPreference.getSummary().toString().contentEquals(
                "TEST_HEARING_AID_BT_DEVICE_NAME active")).isTrue();
    }

    @Test