[Audiosharing] Create confirmation to join audio.
Bug: 305620450 Test: manual Change-Id: I7bb8ed290808115cb76b59f3bfdc52f09806034d
This commit is contained in:
@@ -4603,6 +4603,22 @@
|
||||
android:value="true" />
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:name="Settings$AudioStreamConfirmDialogActivity"
|
||||
android:exported="true"
|
||||
android:theme="@style/Transparent"
|
||||
android:permission="android.permission.BLUETOOTH_CONNECT"
|
||||
android:configChanges="orientation|keyboardHidden|screenSize">
|
||||
<intent-filter android:priority="1">
|
||||
<action android:name="android.settings.AUDIO_STREAM_DIALOG" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
|
||||
android:value="com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamConfirmDialog" />
|
||||
<meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
|
||||
android:value="true" />
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:name=".Settings$PreviouslyConnectedDeviceActivity"
|
||||
android:label="@string/connected_device_saved_title"
|
||||
|
@@ -78,14 +78,14 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_weight="1"
|
||||
android:visibility="gone"/>
|
||||
android:visibility="invisible"/>
|
||||
<Button
|
||||
android:id="@+id/right_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:layout_marginRight="16dp"
|
||||
android:visibility="gone"/>
|
||||
android:visibility="invisible"/>
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
@@ -399,6 +399,7 @@ public class Settings extends SettingsActivity {
|
||||
public static class StylusUsiDetailsActivity extends SettingsActivity { /* empty */ }
|
||||
public static class BluetoothBroadcastActivity extends SettingsActivity { /* empty */ }
|
||||
public static class BluetoothFindBroadcastsActivity extends SettingsActivity { /* empty */ }
|
||||
public static class AudioStreamConfirmDialogActivity extends SettingsActivity { /* empty */ }
|
||||
public static class WifiCallingDisclaimerActivity extends SettingsActivity { /* empty */ }
|
||||
public static class MobileNetworkListActivity extends SettingsActivity {}
|
||||
public static class PowerMenuSettingsActivity extends SettingsActivity {}
|
||||
|
@@ -0,0 +1,128 @@
|
||||
/*
|
||||
* Copyright (C) 2024 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.connecteddevice.audiosharing.audiostreams;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.Dialog;
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.bluetooth.BluetoothLeBroadcastMetadata;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.bluetooth.Utils;
|
||||
import com.android.settings.connecteddevice.audiosharing.audiostreams.qrcode.QrCodeScanModeFragment;
|
||||
import com.android.settings.core.SubSettingLauncher;
|
||||
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
||||
import com.android.settingslib.bluetooth.BluetoothLeBroadcastMetadataExt;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
|
||||
public class AudioStreamConfirmDialog extends InstrumentedDialogFragment {
|
||||
public static final String KEY_BROADCAST_METADATA = "key_broadcast_metadata";
|
||||
private static final String TAG = "AudioStreamConfirmDialog";
|
||||
private Activity mActivity;
|
||||
private String mBroadcastMetadataStr;
|
||||
private BluetoothLeBroadcastMetadata mBroadcastMetadata;
|
||||
private boolean mIsRequestValid = false;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setShowsDialog(true);
|
||||
mActivity = getActivity();
|
||||
if (mActivity == null) {
|
||||
Log.w(TAG, "onCreate() mActivity is null!");
|
||||
return;
|
||||
}
|
||||
mBroadcastMetadataStr =
|
||||
mActivity.getIntent().getStringExtra(QrCodeScanModeFragment.KEY_BROADCAST_METADATA);
|
||||
if (Strings.isNullOrEmpty(mBroadcastMetadataStr)) {
|
||||
Log.w(TAG, "onCreate() mBroadcastMetadataStr is null or empty!");
|
||||
return;
|
||||
}
|
||||
mBroadcastMetadata =
|
||||
BluetoothLeBroadcastMetadataExt.INSTANCE.convertToBroadcastMetadata(
|
||||
mBroadcastMetadataStr);
|
||||
if (mBroadcastMetadata == null) {
|
||||
Log.w(TAG, "onCreate() mBroadcastMetadata is null!");
|
||||
} else {
|
||||
// Warm up LE_AUDIO_BROADCAST_ASSISTANT service
|
||||
Utils.getLocalBluetoothManager(mActivity);
|
||||
mIsRequestValid = true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||
return mIsRequestValid ? getConfirmDialog() : getErrorDialog();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMetricsCategory() {
|
||||
// TODO(chelseahao): update metrics id
|
||||
return 0;
|
||||
}
|
||||
|
||||
private Dialog getConfirmDialog() {
|
||||
return new AudioStreamsDialogFragment.DialogBuilder(mActivity)
|
||||
.setTitle("Listen to audio stream")
|
||||
.setSubTitle1(mBroadcastMetadata.getBroadcastName())
|
||||
.setSubTitle2(
|
||||
"The audio stream will play on the active LE audio device. Use this device"
|
||||
+ " to control the volume.")
|
||||
.setLeftButtonText("Cancel")
|
||||
.setLeftButtonOnClickListener(
|
||||
unused -> {
|
||||
dismiss();
|
||||
mActivity.finish();
|
||||
})
|
||||
.setRightButtonText("Listen")
|
||||
.setRightButtonOnClickListener(
|
||||
unused -> {
|
||||
launchAudioStreamsActivity();
|
||||
dismiss();
|
||||
mActivity.finish();
|
||||
})
|
||||
.build();
|
||||
}
|
||||
|
||||
private Dialog getErrorDialog() {
|
||||
return new AudioStreamsDialogFragment.DialogBuilder(mActivity)
|
||||
.setTitle("Can't listen to audio stream")
|
||||
.setSubTitle1("Can't play this audio stream. Learn more")
|
||||
.setRightButtonText("Close")
|
||||
.setRightButtonOnClickListener(
|
||||
unused -> {
|
||||
dismiss();
|
||||
mActivity.finish();
|
||||
})
|
||||
.build();
|
||||
}
|
||||
|
||||
private void launchAudioStreamsActivity() {
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(KEY_BROADCAST_METADATA, mBroadcastMetadataStr);
|
||||
|
||||
new SubSettingLauncher(mActivity)
|
||||
.setTitleRes(R.string.bluetooth_find_broadcast_title)
|
||||
.setDestination(AudioStreamsDashboardFragment.class.getName())
|
||||
.setArguments(bundle)
|
||||
.setSourceMetricsCategory(SettingsEnums.PAGE_UNKNOWN)
|
||||
.launch();
|
||||
}
|
||||
}
|
@@ -31,6 +31,8 @@ import com.android.settings.dashboard.DashboardFragment;
|
||||
import com.android.settingslib.bluetooth.BluetoothLeBroadcastMetadataExt;
|
||||
import com.android.settingslib.bluetooth.BluetoothUtils;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
|
||||
public class AudioStreamsDashboardFragment extends DashboardFragment {
|
||||
private static final String TAG = "AudioStreamsDashboardFrag";
|
||||
private static final boolean DEBUG = BluetoothUtils.D;
|
||||
@@ -72,6 +74,21 @@ public class AudioStreamsDashboardFragment extends DashboardFragment {
|
||||
use(AudioStreamsScanQrCodeController.class).setFragment(this);
|
||||
mAudioStreamsProgressCategoryController = use(AudioStreamsProgressCategoryController.class);
|
||||
mAudioStreamsProgressCategoryController.setFragment(this);
|
||||
|
||||
if (getArguments() != null) {
|
||||
String broadcastMetadataStr =
|
||||
getArguments().getString(AudioStreamConfirmDialog.KEY_BROADCAST_METADATA);
|
||||
if (!Strings.isNullOrEmpty(broadcastMetadataStr)) {
|
||||
BluetoothLeBroadcastMetadata broadcastMetadata =
|
||||
BluetoothLeBroadcastMetadataExt.INSTANCE.convertToBroadcastMetadata(
|
||||
broadcastMetadataStr);
|
||||
if (broadcastMetadata == null) {
|
||||
Log.w(TAG, "onAttach() broadcastMetadata is null!");
|
||||
} else {
|
||||
mAudioStreamsProgressCategoryController.setSourceFromQrCode(broadcastMetadata);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -84,6 +84,7 @@ import com.android.settings.connecteddevice.AdvancedConnectedDeviceDashboardFrag
|
||||
import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
|
||||
import com.android.settings.connecteddevice.NfcAndPaymentFragment;
|
||||
import com.android.settings.connecteddevice.PreviouslyConnectedDeviceDashboardFragment;
|
||||
import com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamConfirmDialog;
|
||||
import com.android.settings.connecteddevice.stylus.StylusUsiDetailsFragment;
|
||||
import com.android.settings.connecteddevice.usb.UsbDetailsFragment;
|
||||
import com.android.settings.datausage.DataSaverSummary;
|
||||
@@ -349,6 +350,7 @@ public class SettingsGateway {
|
||||
DataUsageList.class.getName(),
|
||||
ToggleBackupSettingFragment.class.getName(),
|
||||
PreviouslyConnectedDeviceDashboardFragment.class.getName(),
|
||||
AudioStreamConfirmDialog.class.getName(),
|
||||
BatterySaverScheduleSettings.class.getName(),
|
||||
MobileNetworkListFragment.class.getName(),
|
||||
PowerMenuSettings.class.getName(),
|
||||
|
Reference in New Issue
Block a user