diff --git a/res/drawable/ic_fast_pair_24dp.xml b/res/drawable/ic_fast_pair_24dp.xml new file mode 100644 index 00000000000..17bfdd9143f --- /dev/null +++ b/res/drawable/ic_fast_pair_24dp.xml @@ -0,0 +1,36 @@ + + + + + + + + + \ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index 32719495ab1..188e88db61a 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -5945,6 +5945,15 @@ + + + + + Fast Pair + + + Nearby detection of Fast Pair bluetooth devices. + @@ -8380,6 +8389,9 @@ connected, device, headphones, headset, speaker, wireless, pair, earbuds, music, media + + pair, earbuds, bluetooth + background, theme, grid, customize, personalize diff --git a/res/xml/connected_devices_advanced.xml b/res/xml/connected_devices_advanced.xml index 152446c38c7..e7d178c61f8 100644 --- a/res/xml/connected_devices_advanced.xml +++ b/res/xml/connected_devices_advanced.xml @@ -67,6 +67,15 @@ android:summary="@string/summary_placeholder" settings:controller="com.android.settings.uwb.UwbPreferenceController"/> + + diff --git a/res/xml/fast_pair_settings.xml b/res/xml/fast_pair_settings.xml new file mode 100644 index 00000000000..ec4cda9fbf7 --- /dev/null +++ b/res/xml/fast_pair_settings.xml @@ -0,0 +1,24 @@ + + + + + + \ No newline at end of file diff --git a/src/com/android/settings/nearby/FastPairPreferenceController.java b/src/com/android/settings/nearby/FastPairPreferenceController.java new file mode 100644 index 00000000000..a1152022c6b --- /dev/null +++ b/src/com/android/settings/nearby/FastPairPreferenceController.java @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2022 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.nearby; + +import android.content.Context; + +import androidx.lifecycle.LifecycleObserver; + +import com.android.settings.core.BasePreferenceController; + +/** + * {@link BasePreferenceController} for Fast Pair settings. + */ +public class FastPairPreferenceController extends BasePreferenceController implements + LifecycleObserver { + public static final String TAG = "FastPairPrefController"; + public static final String KEY_FAST_PAIR_SETTINGS = "connected_device_fast_pair"; + + public FastPairPreferenceController(Context context) { + super(context, KEY_FAST_PAIR_SETTINGS); + } + + @Override + public int getAvailabilityStatus() { + return AVAILABLE; + } +} diff --git a/src/com/android/settings/nearby/FastPairSettingsFragment.java b/src/com/android/settings/nearby/FastPairSettingsFragment.java new file mode 100644 index 00000000000..094725bf09f --- /dev/null +++ b/src/com/android/settings/nearby/FastPairSettingsFragment.java @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2022 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.nearby; + +import android.app.settings.SettingsEnums; + +import com.android.settings.R; +import com.android.settings.SettingsPreferenceFragment; +import com.android.settings.search.BaseSearchIndexProvider; +import com.android.settingslib.search.SearchIndexable; + +/** + * Fragment with the top level fast pair settings. + */ +@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC) +public class FastPairSettingsFragment extends SettingsPreferenceFragment { + + @Override + public int getMetricsCategory() { + return SettingsEnums.CONNECTION_DEVICE_ADVANCED_FAST_PAIR; + } + + @Override + public int getHelpResource() { + return 0; + } + + @Override + protected int getPreferenceScreenResId() { + return R.xml.fast_pair_settings; + } + + public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = + new BaseSearchIndexProvider(R.xml.fast_pair_settings); + +} diff --git a/tests/unit/README b/tests/unit/README index 5a85603debe..1c4d99f1f0a 100644 --- a/tests/unit/README +++ b/tests/unit/README @@ -4,7 +4,7 @@ $ atest SettingsUnitTests A single class can also be tested with the following command $ atest -c -// The following instrutions show how to run the test suite using make + adb // +// The following instructions show how to run the test suite using make + adb // To build the tests you can use the following command at the root of your android source tree $ make SettingsUnitTests diff --git a/tests/unit/src/com/android/settings/nearby/FastPairPreferenceControllerTest.java b/tests/unit/src/com/android/settings/nearby/FastPairPreferenceControllerTest.java new file mode 100644 index 00000000000..f06be4b2288 --- /dev/null +++ b/tests/unit/src/com/android/settings/nearby/FastPairPreferenceControllerTest.java @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2022 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.nearby; + +import static com.google.common.truth.Truth.assertThat; + +import static org.mockito.Mockito.spy; + +import android.content.Context; +import android.os.Looper; + +import androidx.test.core.app.ApplicationProvider; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +@RunWith(AndroidJUnit4.class) +public class FastPairPreferenceControllerTest { + + private Context mContext; + private FastPairPreferenceController mController; + + @Before + public void setUp() { + mContext = spy(ApplicationProvider.getApplicationContext()); + mController = new FastPairPreferenceController(mContext); + if (Looper.myLooper() == null) { + Looper.prepare(); + } + } + + @Test + public void isAvailable_shouldBeTrue() { + assertThat(mController.isAvailable()).isTrue(); + } +} diff --git a/tests/unit/src/com/android/settings/nearby/FastPairSettingsFragmentTest.java b/tests/unit/src/com/android/settings/nearby/FastPairSettingsFragmentTest.java new file mode 100644 index 00000000000..faabe8fd9fe --- /dev/null +++ b/tests/unit/src/com/android/settings/nearby/FastPairSettingsFragmentTest.java @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2022 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.nearby; + +import static com.google.common.truth.Truth.assertThat; + +import android.app.Instrumentation; +import android.app.settings.SettingsEnums; + +import androidx.test.ext.junit.runners.AndroidJUnit4; +import androidx.test.platform.app.InstrumentationRegistry; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +@RunWith(AndroidJUnit4.class) +public class FastPairSettingsFragmentTest { + + private FastPairSettingsFragment mFragment; + + @Before + public void setUp() { + final Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation(); + instrumentation.runOnMainSync(() -> mFragment = new FastPairSettingsFragment()); + } + + @Test + public void getCategoryKey_isNetwork() { + assertThat(mFragment.getMetricsCategory()) + .isEqualTo(SettingsEnums.CONNECTION_DEVICE_ADVANCED_FAST_PAIR); + } +}