From e5bd60a0cfb57601a789abd863a1154df124d8ec Mon Sep 17 00:00:00 2001 From: Yiyi Shen Date: Tue, 14 May 2024 12:50:20 +0800 Subject: [PATCH] [Audiosharing] Migrate feature from overlay to Settings Bug: 340379827 Test: atest Change-Id: I3a88ac1d2f575f3be1f26f617479bbfd25cf6a8e --- AndroidManifest.xml | 50 ++ res-product/values/strings.xml | 13 + res/drawable/audio_sharing_guidance.png | Bin 0 -> 3109 bytes res/drawable/audio_sharing_rounded_bg.xml | 22 + .../audio_sharing_rounded_bg_ripple.xml | 21 + res/drawable/ic_audio_calls_and_alarms.xml | 32 + res/drawable/ic_audio_play_sample.xml | 32 + res/layout/audio_sharing_device_item.xml | 33 + res/layout/audio_sharing_password_dialog.xml | 75 +++ .../dialog_custom_body_audio_sharing.xml | 71 +++ .../dialog_custom_title_audio_sharing.xml | 42 ++ res/layout/preference_widget_lock.xml | 29 + res/layout/qrcode_scanner_fragment.xml | 2 +- res/values/dimens.xml | 3 + res/values/strings.xml | 199 +++++- res/xml/bluetooth_audio_streams_dialog.xml | 101 +++ res/xml/bluetooth_audio_streams_qr_code.xml | 63 ++ res/xml/bluetooth_le_audio_sharing.xml | 81 +++ ...tooth_le_audio_stream_details_fragment.xml | 36 ++ res/xml/bluetooth_le_audio_streams.xml | 46 ++ res/xml/connected_devices.xml | 16 +- res/xml/connected_devices_advanced.xml | 9 + .../AvailableMediaBluetoothDeviceUpdater.java | 26 +- .../AvailableMediaDeviceGroupController.java | 132 +++- .../ConnectedDeviceDashboardFragment.java | 46 +- .../audiosharing/AudioSharingActivity.java | 36 ++ .../AudioSharingBasePreferenceController.java | 127 ++++ .../AudioSharingBluetoothDeviceUpdater.java | 91 +++ ...ringCompatibilityPreferenceController.java | 252 ++++++++ .../AudioSharingConfirmDialogFragment.java | 71 +++ .../AudioSharingDashboardFragment.java | 111 ++++ .../AudioSharingDeviceAdapter.java | 116 ++++ .../audiosharing/AudioSharingDeviceItem.java | 75 +++ ...udioSharingDevicePreferenceController.java | 486 +++++++++++++++ ...udioSharingDeviceVolumeControlUpdater.java | 177 ++++++ ...dioSharingDeviceVolumeGroupController.java | 427 +++++++++++++ .../AudioSharingDeviceVolumePreference.java | 57 ++ .../AudioSharingDialogFactory.java | 348 +++++++++++ .../AudioSharingDialogFragment.java | 137 +++++ .../AudioSharingDialogHandler.java | 452 ++++++++++++++ .../AudioSharingDialogHelper.java | 62 ++ .../AudioSharingDisconnectDialogFragment.java | 152 +++++ .../AudioSharingFeatureProvider.java | 53 -- .../AudioSharingFeatureProviderImpl.java | 55 -- .../AudioSharingJoinDialogFragment.java | 159 +++++ .../AudioSharingNamePreference.java | 110 ++++ .../AudioSharingNamePreferenceController.java | 275 +++++++++ .../AudioSharingNameTextValidator.java | 44 ++ .../AudioSharingPasswordPreference.java | 142 +++++ ...ioSharingPasswordPreferenceController.java | 178 ++++++ .../AudioSharingPasswordValidator.java | 51 ++ ...oSharingPlaySoundPreferenceController.java | 112 ++++ .../AudioSharingPreferenceController.java | 168 +++++ .../audiosharing/AudioSharingReceiver.java | 149 +++++ .../AudioSharingStopDialogFragment.java | 162 +++++ .../AudioSharingSwitchBarController.java | 522 ++++++++++++++++ .../audiosharing/AudioSharingUtils.java | 386 ++++++++++++ .../CallsAndAlarmsDialogFragment.java | 107 ++++ .../CallsAndAlarmsPreferenceController.java | 361 +++++++++++ .../StreamSettingsCategoryController.java | 144 +++++ .../audiostreams/AddSourceBadCodeState.java | 49 ++ .../audiostreams/AddSourceFailedState.java | 49 ++ .../AddSourceWaitForResponseState.java | 106 ++++ .../AudioStreamButtonController.java | 197 ++++++ .../AudioStreamConfirmDialog.java | 195 ++++++ .../AudioStreamConfirmDialogActivity.java | 38 ++ .../AudioStreamDetailsFragment.java | 59 ++ .../AudioStreamHeaderController.java | 182 ++++++ .../audiostreams/AudioStreamMediaService.java | 378 ++++++++++++ .../audiostreams/AudioStreamPreference.java | 201 ++++++ .../audiostreams/AudioStreamStateHandler.java | 111 ++++ .../AudioStreamsActiveDeviceController.java | 70 +++ ...udioStreamsActiveDeviceSummaryUpdater.java | 106 ++++ ...udioStreamsBroadcastAssistantCallback.java | 132 ++++ .../AudioStreamsCategoryController.java | 134 ++++ .../AudioStreamsDashboardFragment.java | 138 +++++ .../AudioStreamsDialogFragment.java | 249 ++++++++ .../audiostreams/AudioStreamsHelper.java | 355 +++++++++++ .../AudioStreamsProgressCategoryCallback.java | 122 ++++ ...udioStreamsProgressCategoryController.java | 575 ++++++++++++++++++ ...udioStreamsProgressCategoryPreference.java | 89 +++ .../AudioStreamsQrCodeFragment.java | 134 ++++ .../audiostreams/AudioStreamsRepository.java | 159 +++++ .../AudioStreamsScanQrCodeController.java | 140 +++++ .../audiostreams/MediaControlHelper.java | 133 ++++ .../audiostreams/SourceAddedState.java | 94 +++ .../audiostreams/SyncedState.java | 114 ++++ .../audiostreams/WaitForSyncState.java | 117 ++++ .../qrcode/QrCodeScanModeActivity.java | 117 ++++ .../qrcode/QrCodeScanModeBaseActivity.java | 64 ++ .../qrcode/QrCodeScanModeFragment.java | 283 +++++++++ .../settings/overlay/FeatureFactory.kt | 6 - .../settings/overlay/FeatureFactoryImpl.kt | 6 - ...ilableMediaBluetoothDeviceUpdaterTest.java | 94 ++- ...ailableMediaDeviceGroupControllerTest.java | 116 +++- .../ConnectedDeviceDashboardFragmentTest.java | 18 +- .../AudioSharingActivityTest.java | 88 +++ ...udioSharingBluetoothDeviceUpdaterTest.java | 270 ++++++++ ...CompatibilityPreferenceControllerTest.java | 271 +++++++++ .../AudioSharingDashboardFragmentTest.java | 65 ++ .../AudioSharingDeviceItemTest.java | 66 ++ ...SharingDevicePreferenceControllerTest.java | 487 +++++++++++++++ ...SharingDeviceVolumeControlUpdaterTest.java | 299 +++++++++ ...haringDeviceVolumeGroupControllerTest.java | 414 +++++++++++++ ...dioSharingDeviceVolumePreferenceTest.java} | 35 +- .../AudioSharingDialogFragmentTest.java | 233 +++++++ .../AudioSharingDialogHandlerTest.java | 385 ++++++++++++ .../AudioSharingDialogHelperTest.java | 79 +++ ...ioSharingDisconnectDialogFragmentTest.java | 238 ++++++++ .../AudioSharingJoinDialogFragmentTest.java | 231 +++++++ ...ringPlaySoundPreferenceControllerTest.java | 185 ++++++ .../AudioSharingPreferenceControllerTest.java | 169 +++++ .../AudioSharingReceiverTest.java | 210 +++++++ .../AudioSharingStopDialogFragmentTest.java | 242 ++++++++ .../AudioSharingSwitchBarControllerTest.java | 365 +++++++++++ .../CallsAndAlarmsDialogFragmentTest.java | 105 ++++ ...allsAndAlarmsPreferenceControllerTest.java | 381 ++++++++++++ .../StreamSettingsCategoryControllerTest.java | 247 ++++++++ .../AddSourceBadCodeStateTest.java | 58 ++ .../AddSourceFailedStateTest.java | 57 ++ .../AddSourceWaitForResponseStateTest.java | 115 ++++ .../AudioStreamButtonControllerTest.java | 108 ++++ .../AudioStreamHeaderControllerTest.java | 108 ++++ .../audiostreams/MediaControlHelperTest.java | 134 ++++ .../audiostreams/SourceAddedStateTest.java | 61 ++ .../audiostreams/SyncedStateTest.java | 117 ++++ .../audiostreams/WaitForSyncStateTest.java | 102 ++++ .../testshadows/ShadowAudioStreamsHelper.java | 61 ++ .../ShadowEntityHeaderController.java | 43 ++ .../testshadows/ShadowLocalMediaManager.java | 59 ++ .../testutils/FakeFeatureFactory.java | 8 - .../settings/testutils/FakeFeatureFactory.kt | 3 - .../testutils/FakeFeatureFactory.java | 8 - 133 files changed, 18497 insertions(+), 275 deletions(-) create mode 100644 res/drawable/audio_sharing_guidance.png create mode 100644 res/drawable/audio_sharing_rounded_bg.xml create mode 100644 res/drawable/audio_sharing_rounded_bg_ripple.xml create mode 100644 res/drawable/ic_audio_calls_and_alarms.xml create mode 100644 res/drawable/ic_audio_play_sample.xml create mode 100644 res/layout/audio_sharing_device_item.xml create mode 100644 res/layout/audio_sharing_password_dialog.xml create mode 100644 res/layout/dialog_custom_body_audio_sharing.xml create mode 100644 res/layout/dialog_custom_title_audio_sharing.xml create mode 100644 res/layout/preference_widget_lock.xml create mode 100644 res/xml/bluetooth_audio_streams_dialog.xml create mode 100644 res/xml/bluetooth_audio_streams_qr_code.xml create mode 100644 res/xml/bluetooth_le_audio_sharing.xml create mode 100644 res/xml/bluetooth_le_audio_stream_details_fragment.xml create mode 100644 res/xml/bluetooth_le_audio_streams.xml create mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingActivity.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingBasePreferenceController.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingBluetoothDeviceUpdater.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingCompatibilityPreferenceController.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingConfirmDialogFragment.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingDashboardFragment.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceAdapter.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceItem.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingDevicePreferenceController.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceVolumeControlUpdater.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceVolumeGroupController.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceVolumePreference.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFactory.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragment.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogHandler.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogHelper.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragment.java delete mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingFeatureProvider.java delete mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingFeatureProviderImpl.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragment.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingNamePreference.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingNamePreferenceController.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingNameTextValidator.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreference.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreferenceController.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordValidator.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingPlaySoundPreferenceController.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingPreferenceController.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingReceiver.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragment.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarController.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/AudioSharingUtils.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/CallsAndAlarmsDialogFragment.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/CallsAndAlarmsPreferenceController.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/StreamSettingsCategoryController.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/AddSourceBadCodeState.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/AddSourceFailedState.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/AddSourceWaitForResponseState.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamButtonController.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialog.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialogActivity.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamDetailsFragment.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamHeaderController.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamMediaService.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamPreference.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamStateHandler.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsActiveDeviceController.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsActiveDeviceSummaryUpdater.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsBroadcastAssistantCallback.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsCategoryController.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsDashboardFragment.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsDialogFragment.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsHelper.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryCallback.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryController.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryPreference.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsQrCodeFragment.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsRepository.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsScanQrCodeController.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/MediaControlHelper.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/SourceAddedState.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/SyncedState.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/WaitForSyncState.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/qrcode/QrCodeScanModeActivity.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/qrcode/QrCodeScanModeBaseActivity.java create mode 100644 src/com/android/settings/connecteddevice/audiosharing/audiostreams/qrcode/QrCodeScanModeFragment.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingActivityTest.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingBluetoothDeviceUpdaterTest.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCompatibilityPreferenceControllerTest.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDashboardFragmentTest.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceItemTest.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDevicePreferenceControllerTest.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceVolumeControlUpdaterTest.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceVolumeGroupControllerTest.java rename tests/robotests/src/com/android/settings/connecteddevice/audiosharing/{AudioSharingFeatureProviderImplTest.java => AudioSharingDeviceVolumePreferenceTest.java} (52%) create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragmentTest.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogHandlerTest.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogHelperTest.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragmentTest.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragmentTest.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPlaySoundPreferenceControllerTest.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPreferenceControllerTest.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingReceiverTest.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragmentTest.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarControllerTest.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/CallsAndAlarmsDialogFragmentTest.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/CallsAndAlarmsPreferenceControllerTest.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/StreamSettingsCategoryControllerTest.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AddSourceBadCodeStateTest.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AddSourceFailedStateTest.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AddSourceWaitForResponseStateTest.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamButtonControllerTest.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamHeaderControllerTest.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/MediaControlHelperTest.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/SourceAddedStateTest.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/SyncedStateTest.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/WaitForSyncStateTest.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/testshadows/ShadowAudioStreamsHelper.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/testshadows/ShadowEntityHeaderController.java create mode 100644 tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/testshadows/ShadowLocalMediaManager.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index fd9f2e50a74..57fd25f35f0 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -5194,6 +5194,56 @@ android:theme="@style/Theme.SpaLib.Dialog"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res-product/values/strings.xml b/res-product/values/strings.xml index c9dc2489ae3..a42153eca7f 100644 --- a/res-product/values/strings.xml +++ b/res-product/values/strings.xml @@ -745,4 +745,17 @@ Tablet speakers Device speakers + + + This phone\'s music and videos will play on both pairs of headphones + This tablet\'s music and videos will play on both pairs of headphones + This device\'s music and videos will play on both pairs of headphones + + This phone\'s music and videos will play on the headphones you connect + This tablet\'s music and videos will play on the headphones you connect + This device\'s music and videos will play on the headphones you connect + + To listen to an audio stream, first connect headphones that support LE Audio to this phone. + To listen to an audio stream, first connect headphones that support LE Audio to this tablet. + To listen to an audio stream, first connect headphones that support LE Audio to this device. diff --git a/res/drawable/audio_sharing_guidance.png b/res/drawable/audio_sharing_guidance.png new file mode 100644 index 0000000000000000000000000000000000000000..c0ab6377019b3d1a85b14f502c54eecb3f80eb2b GIT binary patch literal 3109 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 literal 0 HcmV?d00001 diff --git a/res/drawable/audio_sharing_rounded_bg.xml b/res/drawable/audio_sharing_rounded_bg.xml new file mode 100644 index 00000000000..db1e1bbe3fb --- /dev/null +++ b/res/drawable/audio_sharing_rounded_bg.xml @@ -0,0 +1,22 @@ + + + + + + + \ No newline at end of file diff --git a/res/drawable/audio_sharing_rounded_bg_ripple.xml b/res/drawable/audio_sharing_rounded_bg_ripple.xml new file mode 100644 index 00000000000..18696c627ec --- /dev/null +++ b/res/drawable/audio_sharing_rounded_bg_ripple.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file diff --git a/res/drawable/ic_audio_calls_and_alarms.xml b/res/drawable/ic_audio_calls_and_alarms.xml new file mode 100644 index 00000000000..5da27c69ca5 --- /dev/null +++ b/res/drawable/ic_audio_calls_and_alarms.xml @@ -0,0 +1,32 @@ + + + + + + diff --git a/res/drawable/ic_audio_play_sample.xml b/res/drawable/ic_audio_play_sample.xml new file mode 100644 index 00000000000..3666c22ce96 --- /dev/null +++ b/res/drawable/ic_audio_play_sample.xml @@ -0,0 +1,32 @@ + + + + + + + diff --git a/res/layout/audio_sharing_device_item.xml b/res/layout/audio_sharing_device_item.xml new file mode 100644 index 00000000000..04ecdd758af --- /dev/null +++ b/res/layout/audio_sharing_device_item.xml @@ -0,0 +1,33 @@ + + + + + +