Merge changes from topic "hearing-aid" into pi-dev

* changes:
  Add Feature Flag for Hearing Aid Profile
  To show hearing aids device in the available devices group
This commit is contained in:
TreeHugger Robot
2018-10-02 00:53:40 +00:00
committed by Android (Google) Code Review
8 changed files with 309 additions and 2 deletions

View File

@@ -97,6 +97,11 @@ public class AvailableMediaBluetoothDeviceUpdater extends BluetoothDeviceUpdater
if (DBG) {
Log.d(TAG, "isFilterMatched() current audio profile : " + currentAudioProfile);
}
// If device is Hearing Aid, it is compatible with HFP and A2DP.
// It would show in Available Devices group.
if (cachedDevice.isConnectedHearingAidDevice()) {
return true;
}
// According to the current audio profile type,
// this page will show the bluetooth device that have corresponding profile.
// For example:

View File

@@ -97,6 +97,11 @@ public class ConnectedBluetoothDeviceUpdater extends BluetoothDeviceUpdater {
if (DBG) {
Log.d(TAG, "isFilterMatched() current audio profile : " + currentAudioProfile);
}
// If device is Hearing Aid, it is compatible with HFP and A2DP.
// It would not show in Connected Devices group.
if (cachedDevice.isConnectedHearingAidDevice()) {
return false;
}
// According to the current audio profile type,
// this page will show the bluetooth device that doesn't have corresponding profile.
// For example:

View File

@@ -26,4 +26,5 @@ public class FeatureFlags {
public static final String BLUETOOTH_WHILE_DRIVING = "settings_bluetooth_while_driving";
public static final String DATA_USAGE_SETTINGS_V2 = "settings_data_usage_v2";
public static final String AUDIO_SWITCHER_SETTINGS = "settings_audio_switcher";
public static final String HEARING_AID_SETTINGS = "settings_bluetooth_hearing_aid";
}

View File

@@ -0,0 +1,66 @@
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.development.featureflags;
import android.content.Context;
import android.os.SystemProperties;
import android.support.annotation.VisibleForTesting;
import android.text.TextUtils;
import android.util.FeatureFlagUtils;
import android.util.Log;
import com.android.settings.core.FeatureFlags;
import java.util.HashSet;
/**
* Helper class to get feature persistent flag information.
*/
public class FeatureFlagPersistent {
private static final HashSet<String> PERSISTENT_FLAGS;
static {
PERSISTENT_FLAGS = new HashSet<>();
PERSISTENT_FLAGS.add(FeatureFlags.HEARING_AID_SETTINGS);
}
public static boolean isEnabled(Context context, String feature) {
String value = SystemProperties.get(FeatureFlagUtils.PERSIST_PREFIX + feature);
if (!TextUtils.isEmpty(value)) {
return Boolean.parseBoolean(value);
} else {
return FeatureFlagUtils.isEnabled(context, feature);
}
}
public static void setEnabled(Context context, String feature, boolean enabled) {
SystemProperties.set(FeatureFlagUtils.PERSIST_PREFIX + feature, enabled ? "true" : "false");
FeatureFlagUtils.setEnabled(context, feature, enabled);
}
public static boolean isPersistent(String feature) {
return PERSISTENT_FLAGS.contains(feature);
}
/**
* Returns all persistent flags in their raw form.
*/
@VisibleForTesting(otherwise = VisibleForTesting.NONE)
static HashSet<String> getAllPersistentFlags() {
return PERSISTENT_FLAGS;
}
}

View File

@@ -19,23 +19,36 @@ package com.android.settings.development.featureflags;
import android.content.Context;
import android.support.v14.preference.SwitchPreference;
import android.util.FeatureFlagUtils;
import android.util.Log;
public class FeatureFlagPreference extends SwitchPreference {
private final String mKey;
private final boolean mIsPersistent;
public FeatureFlagPreference(Context context, String key) {
super(context);
mKey = key;
setKey(key);
setTitle(key);
setCheckedInternal(FeatureFlagUtils.isEnabled(context, mKey));
mIsPersistent = FeatureFlagPersistent.isPersistent(key);
boolean isFeatureEnabled;
if (mIsPersistent) {
isFeatureEnabled = FeatureFlagPersistent.isEnabled(context, key);
} else {
isFeatureEnabled = FeatureFlagUtils.isEnabled(context, key);
}
setCheckedInternal(isFeatureEnabled);
}
@Override
public void setChecked(boolean isChecked) {
setCheckedInternal(isChecked);
FeatureFlagUtils.setEnabled(getContext(), mKey, isChecked);
if (mIsPersistent) {
FeatureFlagPersistent.setEnabled(getContext(), mKey, isChecked);
} else {
FeatureFlagUtils.setEnabled(getContext(), mKey, isChecked);
}
}
private void setCheckedInternal(boolean isChecked) {