diff --git a/src/com/android/settings/bluetooth/BluetoothDetailsHeaderController.java b/src/com/android/settings/bluetooth/BluetoothDetailsHeaderController.java
index dca7e20..0bfc494 100644
--- a/src/com/android/settings/bluetooth/BluetoothDetailsHeaderController.java
+++ b/src/com/android/settings/bluetooth/BluetoothDetailsHeaderController.java
@@ -18,9 +18,11 @@
 
 import android.content.Context;
 import android.graphics.drawable.Drawable;
+import android.util.Log;
+import android.util.Pair;
+
 import androidx.preference.PreferenceFragment;
 import androidx.preference.PreferenceScreen;
-import android.util.Pair;
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.settings.R;
@@ -36,6 +38,7 @@
  */
 public class BluetoothDetailsHeaderController extends BluetoothDetailsController {
     private static final String KEY_DEVICE_HEADER = "bluetooth_device_header";
+    private static final String TAG = "BluetoothDetailsHeaderController";
 
     private EntityHeaderController mHeaderController;
     private LocalBluetoothManager mLocalManager;
@@ -63,12 +66,16 @@
                 .getBtClassDrawableWithDescription(mContext, mCachedDevice,
                 mContext.getResources().getFraction(R.fraction.bt_battery_scale_fraction, 1, 1));
         String summaryText = mCachedDevice.getConnectionSummary();
-        // If both the hearing aids are connected, two battery status should be shown.
-        final String pairDeviceSummary = mDeviceManager
-            .getHearingAidPairDeviceSummary(mCachedDevice);
-        if (pairDeviceSummary != null) {
+
+        if (mCachedDevice.isHearingAidDevice()) {
+            // For Hearing Aid device, display the other battery status.
+            final String pairDeviceSummary = mDeviceManager
+                .getHearingAidPairDeviceSummary(mCachedDevice);
+            Log.d(TAG, "setHeaderProperties: HearingAid: summaryText=" + summaryText
+                  + ", pairDeviceSummary=" + pairDeviceSummary);
             mHeaderController.setSecondSummary(pairDeviceSummary);
         }
+
         mHeaderController.setLabel(mCachedDevice.getName());
         mHeaderController.setIcon(pair.first);
         mHeaderController.setIconContentDescription(pair.second);
diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsHeaderControllerTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsHeaderControllerTest.java
index 2567f53..e3f26b2 100644
--- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsHeaderControllerTest.java
+++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsHeaderControllerTest.java
@@ -19,6 +19,7 @@
 import static com.google.common.truth.Truth.assertThat;
 import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.inOrder;
+import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
@@ -96,7 +97,7 @@
         verify(mHeaderController).setIcon(any(Drawable.class));
         verify(mHeaderController).setIconContentDescription(any(String.class));
         verify(mHeaderController).setSummary(any(String.class));
-        verify(mHeaderController).setSecondSummary(any(String.class));
+        verify(mHeaderController, never()).setSecondSummary(any(String.class));
         verify(mHeaderController).done(mActivity, true);
     }
 
@@ -119,4 +120,12 @@
         inOrder.verify(mHeaderController)
             .setSummary(mContext.getString(R.string.bluetooth_connecting));
     }
+
+    @Test
+    public void testSecondSummary_isHearingAidDevice_showSecondSummary() {
+        when(mCachedDevice.isHearingAidDevice()).thenReturn(true);
+        showScreen(mController);
+
+        verify(mHeaderController).setSecondSummary(any(String.class));
+    }
 }
