Loading src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java +57 −9 Original line number Diff line number Diff line Loading @@ -20,6 +20,11 @@ import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH; import android.bluetooth.BluetoothDevice; import android.content.Context; import android.os.Bundle; import android.support.annotation.VisibleForTesting; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; Loading @@ -36,15 +41,42 @@ public class BluetoothDeviceDetailsFragment extends RestrictedDashboardFragment public static final String KEY_DEVICE_ADDRESS = "device_address"; private static final String TAG = "BTDeviceDetailsFrg"; @VisibleForTesting static int EDIT_DEVICE_NAME_ITEM_ID = Menu.FIRST; private String mDeviceAddress; private LocalBluetoothManager mManager; private CachedBluetoothDevice mCachedDevice; public BluetoothDeviceDetailsFragment() { super(DISALLOW_CONFIG_BLUETOOTH); } @VisibleForTesting LocalBluetoothManager getLocalBluetoothManager(Context context) { return Utils.getLocalBtManager(context); } @VisibleForTesting CachedBluetoothDevice getCachedDevice(String deviceAddress) { BluetoothDevice remoteDevice = mManager.getBluetoothAdapter().getRemoteDevice(deviceAddress); return mManager.getCachedDeviceManager().findDevice(remoteDevice); } public static BluetoothDeviceDetailsFragment newInstance(String deviceAddress) { Bundle args = new Bundle(1); args.putString(KEY_DEVICE_ADDRESS, deviceAddress); BluetoothDeviceDetailsFragment fragment = new BluetoothDeviceDetailsFragment(); fragment.setArguments(args); return fragment; } @Override public void onAttach(Context context) { mDeviceAddress = getArguments().getString(KEY_DEVICE_ADDRESS); mManager = getLocalBluetoothManager(context); mCachedDevice = getCachedDevice(mDeviceAddress); super.onAttach(context); } Loading @@ -63,21 +95,37 @@ public class BluetoothDeviceDetailsFragment extends RestrictedDashboardFragment return R.xml.bluetooth_device_details_fragment; } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { MenuItem item = menu.add(0, EDIT_DEVICE_NAME_ITEM_ID, 0, R.string.bluetooth_rename_button); item.setIcon(R.drawable.ic_mode_edit); item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); super.onCreateOptionsMenu(menu, inflater); } @Override public boolean onOptionsItemSelected(MenuItem menuItem) { if (menuItem.getItemId() == EDIT_DEVICE_NAME_ITEM_ID) { RemoteDeviceNameDialogFragment.newInstance(mCachedDevice).show( getFragmentManager(), RemoteDeviceNameDialogFragment.TAG); return true; } return super.onOptionsItemSelected(menuItem); } @Override protected List<PreferenceController> getPreferenceControllers(Context context) { ArrayList<PreferenceController> controllers = new ArrayList<>(); LocalBluetoothManager manager = Utils.getLocalBtManager(context); BluetoothDevice remoteDevice = manager.getBluetoothAdapter().getRemoteDevice( mDeviceAddress); CachedBluetoothDevice device = manager.getCachedDeviceManager().findDevice(remoteDevice); if (device != null) { if (mCachedDevice != null) { Lifecycle lifecycle = getLifecycle(); controllers.add(new BluetoothDetailsHeaderController(context, this, device, lifecycle)); controllers.add(new BluetoothDetailsButtonsController(context, this, device, controllers.add(new BluetoothDetailsHeaderController(context, this, mCachedDevice, lifecycle)); controllers.add(new BluetoothDetailsProfilesController(context, this, manager, device, controllers.add(new BluetoothDetailsButtonsController(context, this, mCachedDevice, lifecycle)); controllers.add(new BluetoothDetailsMacAddressController(context, this, device, controllers.add(new BluetoothDetailsProfilesController(context, this, mManager, mCachedDevice, lifecycle)); controllers.add(new BluetoothDetailsMacAddressController(context, this, mCachedDevice, lifecycle)); } return controllers; Loading src/com/android/settings/bluetooth/BluetoothDeviceNamePreferenceController.java +2 −2 Original line number Diff line number Diff line Loading @@ -37,7 +37,6 @@ import com.android.settingslib.bluetooth.LocalBluetoothAdapter; import com.android.settingslib.bluetooth.LocalBluetoothManager; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnResume; import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStop; Loading Loading @@ -111,7 +110,8 @@ public class BluetoothDeviceNamePreferenceController extends PreferenceControlle @Override public boolean handlePreferenceTreeClick(Preference preference) { if (KEY_DEVICE_NAME.equals(preference.getKey())) { new BluetoothNameDialogFragment().show(mFragment.getFragmentManager(), "rename device"); LocalDeviceNameDialogFragment.newInstance() .show(mFragment.getFragmentManager(), LocalDeviceNameDialogFragment.TAG); return true; } Loading src/com/android/settings/bluetooth/BluetoothNameDialogFragment.java +26 −67 Original line number Diff line number Diff line Loading @@ -18,19 +18,13 @@ package com.android.settings.bluetooth; import android.app.AlertDialog; import android.app.Dialog; import android.app.DialogFragment; import android.bluetooth.BluetoothAdapter; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.content.res.Configuration; import android.os.Bundle; import android.text.Editable; import android.text.InputFilter; import android.text.TextWatcher; import android.util.Log; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; Loading @@ -40,25 +34,19 @@ import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settingslib.bluetooth.LocalBluetoothAdapter; import com.android.settingslib.bluetooth.LocalBluetoothManager; /** * Dialog fragment for renaming the local Bluetooth device. * Dialog fragment for renaming a Bluetooth device. */ public final class BluetoothNameDialogFragment extends InstrumentedDialogFragment abstract class BluetoothNameDialogFragment extends InstrumentedDialogFragment implements TextWatcher { private static final int BLUETOOTH_NAME_MAX_LENGTH_BYTES = 248; private AlertDialog mAlertDialog; private Button mOkButton; // accessed from inner class (not private to avoid thunks) static final String TAG = "BluetoothNameDialogFragment"; LocalBluetoothAdapter mLocalAdapter; EditText mDeviceNameView; // This flag is set when the name is updated by code, to distinguish from user changes Loading @@ -71,63 +59,43 @@ public final class BluetoothNameDialogFragment extends InstrumentedDialogFragmen private static final String KEY_NAME = "device_name"; private static final String KEY_NAME_EDITED = "device_name_edited"; private final BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED)) { updateDeviceName(); } else if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED) && (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR) == BluetoothAdapter.STATE_ON)) { updateDeviceName(); } } }; @Override public int getMetricsCategory() { return MetricsProto.MetricsEvent.DIALOG_BLUETOOTH_RENAME; } /** * @return the title to use for the dialog. */ abstract protected int getDialogTitle(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /** * @return the current name used for this device. */ abstract protected String getDeviceName(); LocalBluetoothManager localManager = Utils.getLocalBtManager(getActivity()); mLocalAdapter = localManager.getBluetoothAdapter(); } /** * Set the device to the given name. * @param deviceName the name to use */ abstract protected void setDeviceName(String deviceName); @Override public Dialog onCreateDialog(Bundle savedInstanceState) { String deviceName = mLocalAdapter.getName(); String deviceName = getDeviceName(); if (savedInstanceState != null) { deviceName = savedInstanceState.getString(KEY_NAME, deviceName); mDeviceNameEdited = savedInstanceState.getBoolean(KEY_NAME_EDITED, false); } mAlertDialog = new AlertDialog.Builder(getActivity()) .setTitle(R.string.bluetooth_rename_device) AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()) .setTitle(getDialogTitle()) .setView(createDialogView(deviceName)) .setPositiveButton(R.string.bluetooth_rename_button, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { String deviceName = mDeviceNameView.getText().toString(); setDeviceName(deviceName); } .setPositiveButton(R.string.bluetooth_rename_button, (dialog, which) -> { setDeviceName(mDeviceNameView.getText().toString()); }) .setNegativeButton(android.R.string.cancel, null) .create(); .setNegativeButton(android.R.string.cancel, null); mAlertDialog = builder.create(); mAlertDialog.getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); return mAlertDialog; } private void setDeviceName(String deviceName) { Log.d(TAG, "Setting device name to " + deviceName); mLocalAdapter.setName(deviceName); } @Override public void onSaveInstanceState(Bundle outState) { outState.putString(KEY_NAME, mDeviceNameView.getText().toString()); Loading Loading @@ -174,23 +142,14 @@ public final class BluetoothNameDialogFragment extends InstrumentedDialogFragmen mOkButton = mAlertDialog.getButton(DialogInterface.BUTTON_POSITIVE); mOkButton.setEnabled(mDeviceNameEdited); // Ok button enabled after user edits } IntentFilter filter = new IntentFilter(); filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED); filter.addAction(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED); getActivity().registerReceiver(mReceiver, filter); } @Override public void onPause() { super.onPause(); getActivity().unregisterReceiver(mReceiver); } void updateDeviceName() { if (mLocalAdapter != null && mLocalAdapter.isEnabled()) { String name = getDeviceName(); if (name != null) { mDeviceNameUpdated = true; mDeviceNameEdited = false; mDeviceNameView.setText(mLocalAdapter.getName()); mDeviceNameView.setText(name); } } Loading src/com/android/settings/bluetooth/BluetoothSettings.java +0 −1 Original line number Diff line number Diff line Loading @@ -316,7 +316,6 @@ public class BluetoothSettings extends DeviceListPreferenceFragment implements I // New version - uses a separate screen. args.putString(BluetoothDeviceDetailsFragment.KEY_DEVICE_ADDRESS, device.getDevice().getAddress()); BluetoothDeviceDetailsFragment fragment = new BluetoothDeviceDetailsFragment(); final SettingsActivity activity = (SettingsActivity) BluetoothSettings.this.getActivity(); activity.startPreferencePanel(this, Loading src/com/android/settings/bluetooth/LocalDeviceNameDialogFragment.java 0 → 100644 +97 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 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.bluetooth; import android.bluetooth.BluetoothAdapter; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; import com.android.settingslib.bluetooth.LocalBluetoothAdapter; import com.android.settingslib.bluetooth.LocalBluetoothManager; /** Provides a dialog for changing the advertised name of the local bluetooth adapter. */ public class LocalDeviceNameDialogFragment extends BluetoothNameDialogFragment { public static final String TAG = "LocalAdapterName"; private LocalBluetoothAdapter mLocalAdapter; public static LocalDeviceNameDialogFragment newInstance() { return new LocalDeviceNameDialogFragment(); } private final BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED.equals(action) || (BluetoothAdapter.ACTION_STATE_CHANGED.equals(action) && intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR) == BluetoothAdapter.STATE_ON)) { updateDeviceName(); } } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LocalBluetoothManager localManager = Utils.getLocalBtManager(getActivity()); mLocalAdapter = localManager.getBluetoothAdapter(); } @Override public void onResume() { super.onResume(); IntentFilter filter = new IntentFilter(); filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED); filter.addAction(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED); getActivity().registerReceiver(mReceiver, filter); } @Override public void onPause() { super.onPause(); getActivity().unregisterReceiver(mReceiver); } @Override public int getMetricsCategory() { return MetricsProto.MetricsEvent.DIALOG_BLUETOOTH_RENAME; } @Override protected int getDialogTitle() { return R.string.bluetooth_rename_device; } @Override protected String getDeviceName() { if (mLocalAdapter != null && mLocalAdapter.isEnabled()) { return mLocalAdapter.getName(); } return null; } @Override protected void setDeviceName(String deviceName) { mLocalAdapter.setName(deviceName); } } Loading
src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java +57 −9 Original line number Diff line number Diff line Loading @@ -20,6 +20,11 @@ import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH; import android.bluetooth.BluetoothDevice; import android.content.Context; import android.os.Bundle; import android.support.annotation.VisibleForTesting; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; Loading @@ -36,15 +41,42 @@ public class BluetoothDeviceDetailsFragment extends RestrictedDashboardFragment public static final String KEY_DEVICE_ADDRESS = "device_address"; private static final String TAG = "BTDeviceDetailsFrg"; @VisibleForTesting static int EDIT_DEVICE_NAME_ITEM_ID = Menu.FIRST; private String mDeviceAddress; private LocalBluetoothManager mManager; private CachedBluetoothDevice mCachedDevice; public BluetoothDeviceDetailsFragment() { super(DISALLOW_CONFIG_BLUETOOTH); } @VisibleForTesting LocalBluetoothManager getLocalBluetoothManager(Context context) { return Utils.getLocalBtManager(context); } @VisibleForTesting CachedBluetoothDevice getCachedDevice(String deviceAddress) { BluetoothDevice remoteDevice = mManager.getBluetoothAdapter().getRemoteDevice(deviceAddress); return mManager.getCachedDeviceManager().findDevice(remoteDevice); } public static BluetoothDeviceDetailsFragment newInstance(String deviceAddress) { Bundle args = new Bundle(1); args.putString(KEY_DEVICE_ADDRESS, deviceAddress); BluetoothDeviceDetailsFragment fragment = new BluetoothDeviceDetailsFragment(); fragment.setArguments(args); return fragment; } @Override public void onAttach(Context context) { mDeviceAddress = getArguments().getString(KEY_DEVICE_ADDRESS); mManager = getLocalBluetoothManager(context); mCachedDevice = getCachedDevice(mDeviceAddress); super.onAttach(context); } Loading @@ -63,21 +95,37 @@ public class BluetoothDeviceDetailsFragment extends RestrictedDashboardFragment return R.xml.bluetooth_device_details_fragment; } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { MenuItem item = menu.add(0, EDIT_DEVICE_NAME_ITEM_ID, 0, R.string.bluetooth_rename_button); item.setIcon(R.drawable.ic_mode_edit); item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); super.onCreateOptionsMenu(menu, inflater); } @Override public boolean onOptionsItemSelected(MenuItem menuItem) { if (menuItem.getItemId() == EDIT_DEVICE_NAME_ITEM_ID) { RemoteDeviceNameDialogFragment.newInstance(mCachedDevice).show( getFragmentManager(), RemoteDeviceNameDialogFragment.TAG); return true; } return super.onOptionsItemSelected(menuItem); } @Override protected List<PreferenceController> getPreferenceControllers(Context context) { ArrayList<PreferenceController> controllers = new ArrayList<>(); LocalBluetoothManager manager = Utils.getLocalBtManager(context); BluetoothDevice remoteDevice = manager.getBluetoothAdapter().getRemoteDevice( mDeviceAddress); CachedBluetoothDevice device = manager.getCachedDeviceManager().findDevice(remoteDevice); if (device != null) { if (mCachedDevice != null) { Lifecycle lifecycle = getLifecycle(); controllers.add(new BluetoothDetailsHeaderController(context, this, device, lifecycle)); controllers.add(new BluetoothDetailsButtonsController(context, this, device, controllers.add(new BluetoothDetailsHeaderController(context, this, mCachedDevice, lifecycle)); controllers.add(new BluetoothDetailsProfilesController(context, this, manager, device, controllers.add(new BluetoothDetailsButtonsController(context, this, mCachedDevice, lifecycle)); controllers.add(new BluetoothDetailsMacAddressController(context, this, device, controllers.add(new BluetoothDetailsProfilesController(context, this, mManager, mCachedDevice, lifecycle)); controllers.add(new BluetoothDetailsMacAddressController(context, this, mCachedDevice, lifecycle)); } return controllers; Loading
src/com/android/settings/bluetooth/BluetoothDeviceNamePreferenceController.java +2 −2 Original line number Diff line number Diff line Loading @@ -37,7 +37,6 @@ import com.android.settingslib.bluetooth.LocalBluetoothAdapter; import com.android.settingslib.bluetooth.LocalBluetoothManager; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnResume; import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStop; Loading Loading @@ -111,7 +110,8 @@ public class BluetoothDeviceNamePreferenceController extends PreferenceControlle @Override public boolean handlePreferenceTreeClick(Preference preference) { if (KEY_DEVICE_NAME.equals(preference.getKey())) { new BluetoothNameDialogFragment().show(mFragment.getFragmentManager(), "rename device"); LocalDeviceNameDialogFragment.newInstance() .show(mFragment.getFragmentManager(), LocalDeviceNameDialogFragment.TAG); return true; } Loading
src/com/android/settings/bluetooth/BluetoothNameDialogFragment.java +26 −67 Original line number Diff line number Diff line Loading @@ -18,19 +18,13 @@ package com.android.settings.bluetooth; import android.app.AlertDialog; import android.app.Dialog; import android.app.DialogFragment; import android.bluetooth.BluetoothAdapter; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.content.res.Configuration; import android.os.Bundle; import android.text.Editable; import android.text.InputFilter; import android.text.TextWatcher; import android.util.Log; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; Loading @@ -40,25 +34,19 @@ import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settingslib.bluetooth.LocalBluetoothAdapter; import com.android.settingslib.bluetooth.LocalBluetoothManager; /** * Dialog fragment for renaming the local Bluetooth device. * Dialog fragment for renaming a Bluetooth device. */ public final class BluetoothNameDialogFragment extends InstrumentedDialogFragment abstract class BluetoothNameDialogFragment extends InstrumentedDialogFragment implements TextWatcher { private static final int BLUETOOTH_NAME_MAX_LENGTH_BYTES = 248; private AlertDialog mAlertDialog; private Button mOkButton; // accessed from inner class (not private to avoid thunks) static final String TAG = "BluetoothNameDialogFragment"; LocalBluetoothAdapter mLocalAdapter; EditText mDeviceNameView; // This flag is set when the name is updated by code, to distinguish from user changes Loading @@ -71,63 +59,43 @@ public final class BluetoothNameDialogFragment extends InstrumentedDialogFragmen private static final String KEY_NAME = "device_name"; private static final String KEY_NAME_EDITED = "device_name_edited"; private final BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED)) { updateDeviceName(); } else if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED) && (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR) == BluetoothAdapter.STATE_ON)) { updateDeviceName(); } } }; @Override public int getMetricsCategory() { return MetricsProto.MetricsEvent.DIALOG_BLUETOOTH_RENAME; } /** * @return the title to use for the dialog. */ abstract protected int getDialogTitle(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /** * @return the current name used for this device. */ abstract protected String getDeviceName(); LocalBluetoothManager localManager = Utils.getLocalBtManager(getActivity()); mLocalAdapter = localManager.getBluetoothAdapter(); } /** * Set the device to the given name. * @param deviceName the name to use */ abstract protected void setDeviceName(String deviceName); @Override public Dialog onCreateDialog(Bundle savedInstanceState) { String deviceName = mLocalAdapter.getName(); String deviceName = getDeviceName(); if (savedInstanceState != null) { deviceName = savedInstanceState.getString(KEY_NAME, deviceName); mDeviceNameEdited = savedInstanceState.getBoolean(KEY_NAME_EDITED, false); } mAlertDialog = new AlertDialog.Builder(getActivity()) .setTitle(R.string.bluetooth_rename_device) AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()) .setTitle(getDialogTitle()) .setView(createDialogView(deviceName)) .setPositiveButton(R.string.bluetooth_rename_button, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { String deviceName = mDeviceNameView.getText().toString(); setDeviceName(deviceName); } .setPositiveButton(R.string.bluetooth_rename_button, (dialog, which) -> { setDeviceName(mDeviceNameView.getText().toString()); }) .setNegativeButton(android.R.string.cancel, null) .create(); .setNegativeButton(android.R.string.cancel, null); mAlertDialog = builder.create(); mAlertDialog.getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); return mAlertDialog; } private void setDeviceName(String deviceName) { Log.d(TAG, "Setting device name to " + deviceName); mLocalAdapter.setName(deviceName); } @Override public void onSaveInstanceState(Bundle outState) { outState.putString(KEY_NAME, mDeviceNameView.getText().toString()); Loading Loading @@ -174,23 +142,14 @@ public final class BluetoothNameDialogFragment extends InstrumentedDialogFragmen mOkButton = mAlertDialog.getButton(DialogInterface.BUTTON_POSITIVE); mOkButton.setEnabled(mDeviceNameEdited); // Ok button enabled after user edits } IntentFilter filter = new IntentFilter(); filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED); filter.addAction(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED); getActivity().registerReceiver(mReceiver, filter); } @Override public void onPause() { super.onPause(); getActivity().unregisterReceiver(mReceiver); } void updateDeviceName() { if (mLocalAdapter != null && mLocalAdapter.isEnabled()) { String name = getDeviceName(); if (name != null) { mDeviceNameUpdated = true; mDeviceNameEdited = false; mDeviceNameView.setText(mLocalAdapter.getName()); mDeviceNameView.setText(name); } } Loading
src/com/android/settings/bluetooth/BluetoothSettings.java +0 −1 Original line number Diff line number Diff line Loading @@ -316,7 +316,6 @@ public class BluetoothSettings extends DeviceListPreferenceFragment implements I // New version - uses a separate screen. args.putString(BluetoothDeviceDetailsFragment.KEY_DEVICE_ADDRESS, device.getDevice().getAddress()); BluetoothDeviceDetailsFragment fragment = new BluetoothDeviceDetailsFragment(); final SettingsActivity activity = (SettingsActivity) BluetoothSettings.this.getActivity(); activity.startPreferencePanel(this, Loading
src/com/android/settings/bluetooth/LocalDeviceNameDialogFragment.java 0 → 100644 +97 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 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.bluetooth; import android.bluetooth.BluetoothAdapter; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; import com.android.settingslib.bluetooth.LocalBluetoothAdapter; import com.android.settingslib.bluetooth.LocalBluetoothManager; /** Provides a dialog for changing the advertised name of the local bluetooth adapter. */ public class LocalDeviceNameDialogFragment extends BluetoothNameDialogFragment { public static final String TAG = "LocalAdapterName"; private LocalBluetoothAdapter mLocalAdapter; public static LocalDeviceNameDialogFragment newInstance() { return new LocalDeviceNameDialogFragment(); } private final BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED.equals(action) || (BluetoothAdapter.ACTION_STATE_CHANGED.equals(action) && intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR) == BluetoothAdapter.STATE_ON)) { updateDeviceName(); } } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LocalBluetoothManager localManager = Utils.getLocalBtManager(getActivity()); mLocalAdapter = localManager.getBluetoothAdapter(); } @Override public void onResume() { super.onResume(); IntentFilter filter = new IntentFilter(); filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED); filter.addAction(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED); getActivity().registerReceiver(mReceiver, filter); } @Override public void onPause() { super.onPause(); getActivity().unregisterReceiver(mReceiver); } @Override public int getMetricsCategory() { return MetricsProto.MetricsEvent.DIALOG_BLUETOOTH_RENAME; } @Override protected int getDialogTitle() { return R.string.bluetooth_rename_device; } @Override protected String getDeviceName() { if (mLocalAdapter != null && mLocalAdapter.isEnabled()) { return mLocalAdapter.getName(); } return null; } @Override protected void setDeviceName(String deviceName) { mLocalAdapter.setName(deviceName); } }