diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 14879e24ab2..90b42f41cbe 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -5216,17 +5216,6 @@ android:value="com.android.settings.connecteddevice.audiosharing.AudioSharingDashboardFragment"/> - - - - - - - diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialog.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialog.java index f29405dd698..3130bbcdb42 100644 --- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialog.java +++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialog.java @@ -16,6 +16,8 @@ package com.android.settings.connecteddevice.audiosharing.audiostreams; +import static com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamsDashboardFragment.KEY_BROADCAST_METADATA; + import android.app.Activity; import android.app.Dialog; import android.app.settings.SettingsEnums; @@ -30,7 +32,6 @@ import androidx.annotation.Nullable; import com.android.settings.R; import com.android.settings.bluetooth.Utils; import com.android.settings.connecteddevice.audiosharing.AudioSharingUtils; -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; @@ -41,7 +42,6 @@ import com.android.settingslib.bluetooth.LocalBluetoothProfileManager; 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 static final int DEFAULT_DEVICE_NAME = R.string.audio_streams_dialog_default_device; @Nullable private LocalBluetoothManager mLocalBluetoothManager; @@ -63,8 +63,7 @@ public class AudioStreamConfirmDialog extends InstrumentedDialogFragment { mLocalBluetoothManager = Utils.getLocalBluetoothManager(mActivity); mProfileManager = mLocalBluetoothManager == null ? null : mLocalBluetoothManager.getProfileManager(); - mBroadcastMetadataStr = - mActivity.getIntent().getStringExtra(QrCodeScanModeFragment.KEY_BROADCAST_METADATA); + mBroadcastMetadataStr = mActivity.getIntent().getStringExtra(KEY_BROADCAST_METADATA); if (Strings.isNullOrEmpty(mBroadcastMetadataStr)) { Log.w(TAG, "onCreate() mBroadcastMetadataStr is null or empty!"); return; diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsDashboardFragment.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsDashboardFragment.java index 330c325b854..f79c5973ba6 100644 --- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsDashboardFragment.java +++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsDashboardFragment.java @@ -28,7 +28,6 @@ import android.util.Log; import androidx.annotation.Nullable; import com.android.settings.R; -import com.android.settings.connecteddevice.audiosharing.audiostreams.qrcode.QrCodeScanModeFragment; import com.android.settings.dashboard.DashboardFragment; import com.android.settingslib.bluetooth.BluetoothLeBroadcastMetadataExt; import com.android.settingslib.bluetooth.BluetoothUtils; @@ -36,6 +35,7 @@ import com.android.settingslib.bluetooth.BluetoothUtils; import com.google.common.base.Strings; public class AudioStreamsDashboardFragment extends DashboardFragment { + public static final String KEY_BROADCAST_METADATA = "key_broadcast_metadata"; private static final String TAG = "AudioStreamsDashboardFrag"; private static final boolean DEBUG = BluetoothUtils.D; private AudioStreamsProgressCategoryController mAudioStreamsProgressCategoryController; @@ -78,8 +78,7 @@ public class AudioStreamsDashboardFragment extends DashboardFragment { mAudioStreamsProgressCategoryController.setFragment(this); if (getArguments() != null) { - String broadcastMetadataStr = - getArguments().getString(AudioStreamConfirmDialog.KEY_BROADCAST_METADATA); + String broadcastMetadataStr = getArguments().getString(KEY_BROADCAST_METADATA); if (!Strings.isNullOrEmpty(broadcastMetadataStr)) { BluetoothLeBroadcastMetadata broadcastMetadata = BluetoothLeBroadcastMetadataExt.INSTANCE.convertToBroadcastMetadata( @@ -112,9 +111,7 @@ public class AudioStreamsDashboardFragment extends DashboardFragment { if (requestCode == REQUEST_SCAN_BT_BROADCAST_QR_CODE) { if (resultCode == Activity.RESULT_OK) { String broadcastMetadata = - data != null - ? data.getStringExtra(QrCodeScanModeFragment.KEY_BROADCAST_METADATA) - : ""; + data != null ? data.getStringExtra(KEY_BROADCAST_METADATA) : ""; BluetoothLeBroadcastMetadata source = BluetoothLeBroadcastMetadataExt.INSTANCE.convertToBroadcastMetadata( broadcastMetadata); diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/qrcode/QrCodeScanModeFragment.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsQrCodeScanFragment.java similarity index 81% rename from src/com/android/settings/connecteddevice/audiosharing/audiostreams/qrcode/QrCodeScanModeFragment.java rename to src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsQrCodeScanFragment.java index a00c29bd25b..4af2eb5ef19 100644 --- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/qrcode/QrCodeScanModeFragment.java +++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsQrCodeScanFragment.java @@ -14,7 +14,9 @@ * limitations under the License. */ -package com.android.settings.connecteddevice.audiosharing.audiostreams.qrcode; +package com.android.settings.connecteddevice.audiosharing.audiostreams; + +import static com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamsDashboardFragment.KEY_BROADCAST_METADATA; import android.app.Activity; import android.app.settings.SettingsEnums; @@ -26,6 +28,7 @@ import android.graphics.Rect; import android.graphics.SurfaceTexture; import android.os.Bundle; import android.os.Handler; +import android.os.Looper; import android.os.Message; import android.os.VibrationEffect; import android.os.Vibrator; @@ -41,11 +44,9 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.annotation.StringRes; import com.android.settings.R; import com.android.settings.bluetooth.Utils; -import com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamsHelper; import com.android.settings.core.InstrumentedFragment; import com.android.settingslib.bluetooth.BluetoothBroadcastUtils; import com.android.settingslib.bluetooth.BluetoothUtils; @@ -54,34 +55,54 @@ import com.android.settingslib.qrcode.QrCamera; import java.time.Duration; -public class QrCodeScanModeFragment extends InstrumentedFragment +public class AudioStreamsQrCodeScanFragment extends InstrumentedFragment implements TextureView.SurfaceTextureListener, QrCamera.ScannerCallback { private static final boolean DEBUG = BluetoothUtils.D; - private static final String TAG = "QrCodeScanModeFragment"; - - /** Message sent to hide error message */ + private static final String TAG = "AudioStreamsQrCodeScanFragment"; private static final int MESSAGE_HIDE_ERROR_MESSAGE = 1; - - /** Message sent to show error message */ private static final int MESSAGE_SHOW_ERROR_MESSAGE = 2; - - /** Message sent to broadcast QR code */ private static final int MESSAGE_SCAN_BROADCAST_SUCCESS = 3; - private static final long SHOW_ERROR_MESSAGE_INTERVAL = 10000; private static final long SHOW_SUCCESS_SQUARE_INTERVAL = 1000; - private static final Duration VIBRATE_DURATION_QR_CODE_RECOGNITION = Duration.ofMillis(3); - - public static final String KEY_BROADCAST_METADATA = "key_broadcast_metadata"; - + private final Handler mHandler = + new Handler(Looper.getMainLooper()) { + @Override + public void handleMessage(Message msg) { + switch (msg.what) { + case MESSAGE_HIDE_ERROR_MESSAGE: + mErrorMessage.setVisibility(View.INVISIBLE); + break; + case MESSAGE_SHOW_ERROR_MESSAGE: + String errorMessage = (String) msg.obj; + mErrorMessage.setVisibility(View.VISIBLE); + mErrorMessage.setText(errorMessage); + mErrorMessage.sendAccessibilityEvent( + AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); + // Cancel any pending messages to hide error view and requeue the + // message so user has time to see error + removeMessages(MESSAGE_HIDE_ERROR_MESSAGE); + sendEmptyMessageDelayed( + MESSAGE_HIDE_ERROR_MESSAGE, SHOW_ERROR_MESSAGE_INTERVAL); + break; + case MESSAGE_SCAN_BROADCAST_SUCCESS: + Log.d(TAG, "scan success"); + Intent resultIntent = new Intent(); + resultIntent.putExtra(KEY_BROADCAST_METADATA, mBroadcastMetadata); + if (getActivity() != null) { + getActivity().setResult(Activity.RESULT_OK, resultIntent); + notifyUserForQrCodeRecognition(); + } + break; + } + } + }; private LocalBluetoothManager mLocalBluetoothManager; private int mCornerRadius; @Nullable private String mBroadcastMetadata; private Context mContext; @Nullable private QrCamera mCamera; private TextureView mTextureView; - private TextView mSummary; private TextView mErrorMessage; @Override @@ -119,35 +140,23 @@ public class QrCodeScanModeFragment extends InstrumentedFragment var device = AudioStreamsHelper.getCachedBluetoothDeviceInSharingOrLeConnected( mLocalBluetoothManager); - mSummary = view.findViewById(android.R.id.summary); - if (mSummary != null && device.isPresent()) { - mSummary.setText( + TextView summary = view.findViewById(android.R.id.summary); + if (summary != null && device.isPresent()) { + summary.setText( getString( R.string.audio_streams_main_page_qr_code_scanner_summary, device.get().getName())); } } - private void initCamera(SurfaceTexture surface) { - // Check if the camera has already created. + @Override + public void onSurfaceTextureAvailable(@NonNull SurfaceTexture surface, int width, int height) { if (mCamera == null) { mCamera = new QrCamera(mContext, this); mCamera.start(surface); } } - private void destroyCamera() { - if (mCamera != null) { - mCamera.stop(); - mCamera = null; - } - } - - @Override - public void onSurfaceTextureAvailable(@NonNull SurfaceTexture surface, int width, int height) { - initCamera(surface); - } - @Override public void onSurfaceTextureSizeChanged( @NonNull SurfaceTexture surface, int width, int height) {} @@ -167,7 +176,8 @@ public class QrCodeScanModeFragment extends InstrumentedFragment Log.d(TAG, "handleSuccessfulResult(), get the qr code string."); } mBroadcastMetadata = qrCode; - handleBtLeAudioScanner(); + Message message = mHandler.obtainMessage(MESSAGE_SCAN_BROADCAST_SUCCESS); + mHandler.sendMessageDelayed(message, SHOW_SUCCESS_SQUARE_INTERVAL); } @Override @@ -194,53 +204,22 @@ public class QrCodeScanModeFragment extends InstrumentedFragment public boolean isValid(String qrCode) { if (qrCode.startsWith(BluetoothBroadcastUtils.SCHEME_BT_BROADCAST_METADATA)) { return true; - } else { - showErrorMessage(R.string.audio_streams_qr_code_is_not_valid_format); - return false; + } + Message message = + mHandler.obtainMessage( + MESSAGE_SHOW_ERROR_MESSAGE, + getString(R.string.audio_streams_qr_code_is_not_valid_format)); + message.sendToTarget(); + return false; + } + + private void destroyCamera() { + if (mCamera != null) { + mCamera.stop(); + mCamera = null; } } - protected boolean isDecodeTaskAlive() { - return mCamera != null && mCamera.isDecodeTaskAlive(); - } - - private final Handler mHandler = - new Handler() { - @Override - public void handleMessage(Message msg) { - switch (msg.what) { - case MESSAGE_HIDE_ERROR_MESSAGE: - mErrorMessage.setVisibility(View.INVISIBLE); - break; - - case MESSAGE_SHOW_ERROR_MESSAGE: - final String errorMessage = (String) msg.obj; - - mErrorMessage.setVisibility(View.VISIBLE); - mErrorMessage.setText(errorMessage); - mErrorMessage.sendAccessibilityEvent( - AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); - - // Cancel any pending messages to hide error view and requeue the - // message so - // user has time to see error - removeMessages(MESSAGE_HIDE_ERROR_MESSAGE); - sendEmptyMessageDelayed( - MESSAGE_HIDE_ERROR_MESSAGE, SHOW_ERROR_MESSAGE_INTERVAL); - break; - - case MESSAGE_SCAN_BROADCAST_SUCCESS: - Log.d(TAG, "scan success"); - final Intent resultIntent = new Intent(); - resultIntent.putExtra(KEY_BROADCAST_METADATA, mBroadcastMetadata); - getActivity().setResult(Activity.RESULT_OK, resultIntent); - notifyUserForQrCodeRecognition(); - break; - default: - } - } - }; - private void notifyUserForQrCodeRecognition() { if (mCamera != null) { mCamera.stop(); @@ -249,9 +228,11 @@ public class QrCodeScanModeFragment extends InstrumentedFragment mErrorMessage.setVisibility(View.INVISIBLE); mTextureView.setVisibility(View.INVISIBLE); - triggerVibrationForQrCodeRecognition(getContext()); + triggerVibrationForQrCodeRecognition(mContext); - getActivity().finish(); + if (getActivity() != null) { + getActivity().finish(); + } } private static void triggerVibrationForQrCodeRecognition(Context context) { @@ -265,17 +246,6 @@ public class QrCodeScanModeFragment extends InstrumentedFragment VibrationEffect.DEFAULT_AMPLITUDE)); } - private void showErrorMessage(@StringRes int messageResId) { - final Message message = - mHandler.obtainMessage(MESSAGE_SHOW_ERROR_MESSAGE, getString(messageResId)); - message.sendToTarget(); - } - - private void handleBtLeAudioScanner() { - Message message = mHandler.obtainMessage(MESSAGE_SCAN_BROADCAST_SUCCESS); - mHandler.sendMessageDelayed(message, SHOW_SUCCESS_SQUARE_INTERVAL); - } - @Override public int getMetricsCategory() { return SettingsEnums.LE_AUDIO_BROADCAST_SCAN_QR_CODE; diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsScanQrCodeController.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsScanQrCodeController.java index b63ec7ec736..cd99dda8962 100644 --- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsScanQrCodeController.java +++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsScanQrCodeController.java @@ -16,9 +16,9 @@ package com.android.settings.connecteddevice.audiosharing.audiostreams; +import android.app.settings.SettingsEnums; import android.bluetooth.BluetoothProfile; import android.content.Context; -import android.content.Intent; import android.util.Log; import androidx.annotation.NonNull; @@ -28,10 +28,10 @@ import androidx.lifecycle.LifecycleOwner; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; +import com.android.settings.R; import com.android.settings.bluetooth.Utils; -import com.android.settings.connecteddevice.audiosharing.audiostreams.qrcode.QrCodeScanModeActivity; import com.android.settings.core.BasePreferenceController; -import com.android.settingslib.bluetooth.BluetoothBroadcastUtils; +import com.android.settings.core.SubSettingLauncher; import com.android.settingslib.bluetooth.BluetoothCallback; import com.android.settingslib.bluetooth.BluetoothUtils; import com.android.settingslib.bluetooth.CachedBluetoothDevice; @@ -107,13 +107,12 @@ public class AudioStreamsScanQrCodeController extends BasePreferenceController return false; } if (preference.getKey().equals(KEY)) { - Intent intent = new Intent(mContext, QrCodeScanModeActivity.class); - intent.setAction( - BluetoothBroadcastUtils.ACTION_BLUETOOTH_LE_AUDIO_QR_CODE_SCANNER); - mFragment.startActivityForResult(intent, REQUEST_SCAN_BT_BROADCAST_QR_CODE); - if (DEBUG) { - Log.w(TAG, "displayPreference() sent intent : " + intent); - } + new SubSettingLauncher(mContext) + .setTitleRes(R.string.audio_streams_main_page_scan_qr_code_title) + .setDestination(AudioStreamsQrCodeScanFragment.class.getName()) + .setResultListener(mFragment, REQUEST_SCAN_BT_BROADCAST_QR_CODE) + .setSourceMetricsCategory(SettingsEnums.PAGE_UNKNOWN) + .launch(); return true; } return false; diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/WaitForSyncState.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/WaitForSyncState.java index e7197f6d023..7e6d943db7f 100644 --- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/WaitForSyncState.java +++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/WaitForSyncState.java @@ -19,15 +19,14 @@ package com.android.settings.connecteddevice.audiosharing.audiostreams; import static com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamsScanQrCodeController.REQUEST_SCAN_BT_BROADCAST_QR_CODE; import android.app.AlertDialog; +import android.app.settings.SettingsEnums; import android.content.Context; -import android.content.Intent; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import com.android.settings.R; -import com.android.settings.connecteddevice.audiosharing.audiostreams.qrcode.QrCodeScanModeActivity; -import com.android.settingslib.bluetooth.BluetoothBroadcastUtils; +import com.android.settings.core.SubSettingLauncher; import com.android.settingslib.utils.ThreadUtils; class WaitForSyncState extends AudioStreamStateHandler { @@ -102,14 +101,16 @@ class WaitForSyncState extends AudioStreamStateHandler { .setRightButtonOnClickListener( dialog -> { if (controller.getFragment() != null) { - Intent intent = new Intent(context, QrCodeScanModeActivity.class); - intent.setAction( - BluetoothBroadcastUtils - .ACTION_BLUETOOTH_LE_AUDIO_QR_CODE_SCANNER); - controller - .getFragment() - .startActivityForResult( - intent, REQUEST_SCAN_BT_BROADCAST_QR_CODE); + new SubSettingLauncher(context) + .setTitleRes( + R.string.audio_streams_main_page_scan_qr_code_title) + .setDestination( + AudioStreamsQrCodeScanFragment.class.getName()) + .setResultListener( + controller.getFragment(), + REQUEST_SCAN_BT_BROADCAST_QR_CODE) + .setSourceMetricsCategory(SettingsEnums.PAGE_UNKNOWN) + .launch(); dialog.dismiss(); } }); diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/qrcode/QrCodeScanModeActivity.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/qrcode/QrCodeScanModeActivity.java deleted file mode 100644 index aa460d39a30..00000000000 --- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/qrcode/QrCodeScanModeActivity.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright (C) 2023 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.qrcode; - -import android.content.Intent; -import android.os.Bundle; -import android.util.Log; - -import androidx.fragment.app.FragmentTransaction; - -import com.android.settings.R; -import com.android.settings.connecteddevice.audiosharing.AudioSharingUtils; -import com.android.settingslib.bluetooth.BluetoothBroadcastUtils; -import com.android.settingslib.bluetooth.BluetoothUtils; - -/** - * Finding a broadcast through QR code. - * - *

To use intent action {@link - * BluetoothBroadcastUtils#ACTION_BLUETOOTH_LE_AUDIO_QR_CODE_SCANNER}, specify the bluetooth device - * sink of the broadcast to be provisioned in {@link - * BluetoothBroadcastUtils#EXTRA_BLUETOOTH_DEVICE_SINK} and check the operation for all coordinated - * set members throughout one session or not by {@link - * BluetoothBroadcastUtils#EXTRA_BLUETOOTH_SINK_IS_GROUP}. - */ -public class QrCodeScanModeActivity extends QrCodeScanModeBaseActivity { - private static final boolean DEBUG = BluetoothUtils.D; - private static final String TAG = "QrCodeScanModeActivity"; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - } - - @Override - protected void handleIntent(Intent intent) { - if (!AudioSharingUtils.isFeatureEnabled()) { - finish(); - } - String action = intent != null ? intent.getAction() : null; - if (DEBUG) { - Log.d(TAG, "handleIntent(), action = " + action); - } - - if (action == null) { - finish(); - return; - } - - switch (action) { - case BluetoothBroadcastUtils.ACTION_BLUETOOTH_LE_AUDIO_QR_CODE_SCANNER: - showQrCodeScannerFragment(intent); - break; - default: - if (DEBUG) { - Log.e(TAG, "Launch with an invalid action"); - } - finish(); - } - } - - protected void showQrCodeScannerFragment(Intent intent) { - if (intent == null) { - if (DEBUG) { - Log.d(TAG, "intent is null, can not get bluetooth information from intent."); - } - return; - } - - if (DEBUG) { - Log.d(TAG, "showQrCodeScannerFragment"); - } - - if (DEBUG) { - Log.d(TAG, "get extra from intent"); - } - - QrCodeScanModeFragment fragment = - (QrCodeScanModeFragment) - mFragmentManager.findFragmentByTag( - BluetoothBroadcastUtils.TAG_FRAGMENT_QR_CODE_SCANNER); - - if (fragment == null) { - fragment = new QrCodeScanModeFragment(); - } else { - if (fragment.isVisible()) { - return; - } - - // When the fragment in back stack but not on top of the stack, we can simply pop - // stack because current fragment transactions are arranged in an order - mFragmentManager.popBackStackImmediate(); - return; - } - final FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction(); - - fragmentTransaction.replace( - R.id.fragment_container, - fragment, - BluetoothBroadcastUtils.TAG_FRAGMENT_QR_CODE_SCANNER); - fragmentTransaction.commit(); - } -} diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/qrcode/QrCodeScanModeBaseActivity.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/qrcode/QrCodeScanModeBaseActivity.java deleted file mode 100644 index 637014a9021..00000000000 --- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/qrcode/QrCodeScanModeBaseActivity.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (C) 2023 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.qrcode; - -import android.content.Intent; -import android.os.Bundle; -import android.os.SystemProperties; - -import androidx.fragment.app.FragmentManager; - -import com.android.settings.R; -import com.android.settingslib.core.lifecycle.ObservableActivity; - -import com.google.android.setupdesign.util.ThemeHelper; -import com.google.android.setupdesign.util.ThemeResolver; - -public abstract class QrCodeScanModeBaseActivity extends ObservableActivity { - - private static final String THEME_KEY = "setupwizard.theme"; - private static final String THEME_DEFAULT_VALUE = "SudThemeGlifV3_DayNight"; - protected FragmentManager mFragmentManager; - - protected abstract void handleIntent(Intent intent); - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - int defaultTheme = - ThemeHelper.isSetupWizardDayNightEnabled(this) - ? com.google.android.setupdesign.R.style.SudThemeGlifV3_DayNight - : com.google.android.setupdesign.R.style.SudThemeGlifV3_Light; - ThemeResolver themeResolver = - new ThemeResolver.Builder(ThemeResolver.getDefault()) - .setDefaultTheme(defaultTheme) - .setUseDayNight(true) - .build(); - setTheme( - themeResolver.resolve( - SystemProperties.get(THEME_KEY, THEME_DEFAULT_VALUE), - /* suppressDayNight= */ !ThemeHelper.isSetupWizardDayNightEnabled(this))); - - setContentView(R.layout.qrcode_scan_mode_activity); - mFragmentManager = getSupportFragmentManager(); - - if (savedInstanceState == null) { - handleIntent(getIntent()); - } - } -}