Move getLocalBtManager into FutureTask am: 988dc9fbe6
am: 7afd2e57a7
Change-Id: I7860a19b42b65844ec2a0fc8cf6c8b82d05fd4c6
This commit is contained in:
@@ -41,6 +41,7 @@ import androidx.preference.Preference;
|
|||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.FeatureFlagUtils;
|
import android.util.FeatureFlagUtils;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.bluetooth.Utils;
|
import com.android.settings.bluetooth.Utils;
|
||||||
@@ -59,6 +60,8 @@ import com.android.settingslib.core.lifecycle.events.OnStop;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.concurrent.ExecutionException;
|
||||||
|
import java.util.concurrent.FutureTask;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Abstract class for audio switcher controller to notify subclass
|
* Abstract class for audio switcher controller to notify subclass
|
||||||
@@ -70,21 +73,22 @@ public abstract class AudioSwitchPreferenceController extends BasePreferenceCont
|
|||||||
implements Preference.OnPreferenceChangeListener, BluetoothCallback,
|
implements Preference.OnPreferenceChangeListener, BluetoothCallback,
|
||||||
LifecycleObserver, OnStart, OnStop {
|
LifecycleObserver, OnStart, OnStop {
|
||||||
|
|
||||||
|
private static final String TAG = "AudioSwitchPreferenceController";
|
||||||
private static final int INVALID_INDEX = -1;
|
private static final int INVALID_INDEX = -1;
|
||||||
|
|
||||||
protected final List<BluetoothDevice> mConnectedDevices;
|
protected final List<BluetoothDevice> mConnectedDevices;
|
||||||
protected final AudioManager mAudioManager;
|
protected final AudioManager mAudioManager;
|
||||||
protected final MediaRouter mMediaRouter;
|
protected final MediaRouter mMediaRouter;
|
||||||
protected final LocalBluetoothProfileManager mProfileManager;
|
|
||||||
protected int mSelectedIndex;
|
protected int mSelectedIndex;
|
||||||
protected Preference mPreference;
|
protected Preference mPreference;
|
||||||
|
protected LocalBluetoothProfileManager mProfileManager;
|
||||||
protected AudioSwitchCallback mAudioSwitchPreferenceCallback;
|
protected AudioSwitchCallback mAudioSwitchPreferenceCallback;
|
||||||
|
|
||||||
private final AudioManagerAudioDeviceCallback mAudioManagerAudioDeviceCallback;
|
private final AudioManagerAudioDeviceCallback mAudioManagerAudioDeviceCallback;
|
||||||
private final LocalBluetoothManager mLocalBluetoothManager;
|
|
||||||
private final MediaRouterCallback mMediaRouterCallback;
|
private final MediaRouterCallback mMediaRouterCallback;
|
||||||
private final WiredHeadsetBroadcastReceiver mReceiver;
|
private final WiredHeadsetBroadcastReceiver mReceiver;
|
||||||
private final Handler mHandler;
|
private final Handler mHandler;
|
||||||
|
private LocalBluetoothManager mLocalBluetoothManager;
|
||||||
|
|
||||||
public interface AudioSwitchCallback {
|
public interface AudioSwitchCallback {
|
||||||
void onPreferenceDataChanged(ListPreference preference);
|
void onPreferenceDataChanged(ListPreference preference);
|
||||||
@@ -94,14 +98,23 @@ public abstract class AudioSwitchPreferenceController extends BasePreferenceCont
|
|||||||
super(context, preferenceKey);
|
super(context, preferenceKey);
|
||||||
mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
|
mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
|
||||||
mMediaRouter = (MediaRouter) context.getSystemService(Context.MEDIA_ROUTER_SERVICE);
|
mMediaRouter = (MediaRouter) context.getSystemService(Context.MEDIA_ROUTER_SERVICE);
|
||||||
mLocalBluetoothManager = Utils.getLocalBtManager(mContext);
|
|
||||||
mLocalBluetoothManager.setForegroundActivity(context);
|
|
||||||
mProfileManager = mLocalBluetoothManager.getProfileManager();
|
|
||||||
mHandler = new Handler(Looper.getMainLooper());
|
mHandler = new Handler(Looper.getMainLooper());
|
||||||
mAudioManagerAudioDeviceCallback = new AudioManagerAudioDeviceCallback();
|
mAudioManagerAudioDeviceCallback = new AudioManagerAudioDeviceCallback();
|
||||||
mReceiver = new WiredHeadsetBroadcastReceiver();
|
mReceiver = new WiredHeadsetBroadcastReceiver();
|
||||||
mMediaRouterCallback = new MediaRouterCallback();
|
mMediaRouterCallback = new MediaRouterCallback();
|
||||||
mConnectedDevices = new ArrayList<>();
|
mConnectedDevices = new ArrayList<>();
|
||||||
|
final FutureTask<LocalBluetoothManager> localBtManagerFutureTask = new FutureTask<>(
|
||||||
|
// Avoid StrictMode ThreadPolicy violation
|
||||||
|
() -> Utils.getLocalBtManager(mContext));
|
||||||
|
try {
|
||||||
|
localBtManagerFutureTask.run();
|
||||||
|
mLocalBluetoothManager = localBtManagerFutureTask.get();
|
||||||
|
} catch (InterruptedException | ExecutionException e) {
|
||||||
|
Log.w(TAG, "Error getting LocalBluetoothManager.", e);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mLocalBluetoothManager.setForegroundActivity(mContext);
|
||||||
|
mProfileManager = mLocalBluetoothManager.getProfileManager();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user