Merge "BluetoothManager: Make requestControllerActivityInfo one call" into nyc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
3723194dc8
@@ -472,12 +472,6 @@ public final class BluetoothAdapter {
|
||||
|
||||
private static final int ADDRESS_LENGTH = 17;
|
||||
|
||||
private static final int CONTROLLER_ENERGY_UPDATE_TIMEOUT_MILLIS = 30;
|
||||
/** @hide */
|
||||
public static final int ACTIVITY_ENERGY_INFO_CACHED = 0;
|
||||
/** @hide */
|
||||
public static final int ACTIVITY_ENERGY_INFO_REFRESHED = 1;
|
||||
|
||||
/**
|
||||
* Lazily initialized singleton. Guaranteed final after first object
|
||||
* constructed.
|
||||
@@ -1374,13 +1368,13 @@ public final class BluetoothAdapter {
|
||||
* @return a record with {@link BluetoothActivityEnergyInfo} or null if
|
||||
* report is unavailable or unsupported
|
||||
* @deprecated use the asynchronous
|
||||
* {@link #requestControllerActivityEnergyInfo(int, ResultReceiver)} instead.
|
||||
* {@link #requestControllerActivityEnergyInfo(ResultReceiver)} instead.
|
||||
* @hide
|
||||
*/
|
||||
@Deprecated
|
||||
public BluetoothActivityEnergyInfo getControllerActivityEnergyInfo(int updateType) {
|
||||
SynchronousResultReceiver receiver = new SynchronousResultReceiver();
|
||||
requestControllerActivityEnergyInfo(updateType, receiver);
|
||||
requestControllerActivityEnergyInfo(receiver);
|
||||
try {
|
||||
SynchronousResultReceiver.Result result = receiver.awaitResult(1000);
|
||||
if (result.bundle != null) {
|
||||
@@ -1400,34 +1394,24 @@ public final class BluetoothAdapter {
|
||||
* A null value for the activity info object may be sent if the bluetooth service is
|
||||
* unreachable or the device does not support reporting such information.
|
||||
*
|
||||
* @param updateType Type of info, cached vs refreshed.
|
||||
* @param result The callback to which to send the activity info.
|
||||
* @hide
|
||||
*/
|
||||
public void requestControllerActivityEnergyInfo(int updateType, ResultReceiver result) {
|
||||
if (getState() != STATE_ON) {
|
||||
result.send(0, null);
|
||||
return;
|
||||
}
|
||||
|
||||
public void requestControllerActivityEnergyInfo(ResultReceiver result) {
|
||||
try {
|
||||
if (!mService.isActivityAndEnergyReportingSupported()) {
|
||||
result.send(0, null);
|
||||
return;
|
||||
}
|
||||
synchronized(this) {
|
||||
if (updateType == ACTIVITY_ENERGY_INFO_REFRESHED) {
|
||||
mService.getActivityEnergyInfoFromController();
|
||||
wait(CONTROLLER_ENERGY_UPDATE_TIMEOUT_MILLIS);
|
||||
synchronized(mManagerCallback) {
|
||||
if (mService != null) {
|
||||
mService.requestActivityInfo(result);
|
||||
result = null;
|
||||
}
|
||||
mService.requestActivityInfo(result);
|
||||
}
|
||||
} catch (InterruptedException e) {
|
||||
Log.e(TAG, "getControllerActivityEnergyInfoCallback wait interrupted: " + e);
|
||||
result.send(0, null);
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "getControllerActivityEnergyInfoCallback: " + e);
|
||||
result.send(0, null);
|
||||
} finally {
|
||||
if (result != null) {
|
||||
// Only send an immediate result if we failed.
|
||||
result.send(0, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -102,7 +102,6 @@ interface IBluetooth
|
||||
boolean isOffloadedFilteringSupported();
|
||||
boolean isOffloadedScanBatchingSupported();
|
||||
boolean isActivityAndEnergyReportingSupported();
|
||||
void getActivityEnergyInfoFromController();
|
||||
BluetoothActivityEnergyInfo reportActivityInfo();
|
||||
|
||||
/**
|
||||
|
||||
@@ -309,90 +309,97 @@ public class ResourcesImpl {
|
||||
|
||||
public void updateConfiguration(Configuration config, DisplayMetrics metrics,
|
||||
CompatibilityInfo compat) {
|
||||
synchronized (mAccessLock) {
|
||||
if (false) {
|
||||
Slog.i(TAG, "**** Updating config of " + this + ": old config is "
|
||||
+ mConfiguration + " old compat is " + mCompatibilityInfo);
|
||||
Slog.i(TAG, "**** Updating config of " + this + ": new config is "
|
||||
+ config + " new compat is " + compat);
|
||||
}
|
||||
if (compat != null) {
|
||||
mCompatibilityInfo = compat;
|
||||
}
|
||||
if (metrics != null) {
|
||||
mMetrics.setTo(metrics);
|
||||
}
|
||||
// NOTE: We should re-arrange this code to create a Display
|
||||
// with the CompatibilityInfo that is used everywhere we deal
|
||||
// with the display in relation to this app, rather than
|
||||
// doing the conversion here. This impl should be okay because
|
||||
// we make sure to return a compatible display in the places
|
||||
// where there are public APIs to retrieve the display... but
|
||||
// it would be cleaner and more maintainble to just be
|
||||
// consistently dealing with a compatible display everywhere in
|
||||
// the framework.
|
||||
mCompatibilityInfo.applyToDisplayMetrics(mMetrics);
|
||||
Trace.traceBegin(Trace.TRACE_TAG_RESOURCES, "ResourcesImpl#updateConfiguration");
|
||||
try {
|
||||
synchronized (mAccessLock) {
|
||||
if (false) {
|
||||
Slog.i(TAG, "**** Updating config of " + this + ": old config is "
|
||||
+ mConfiguration + " old compat is " + mCompatibilityInfo);
|
||||
Slog.i(TAG, "**** Updating config of " + this + ": new config is "
|
||||
+ config + " new compat is " + compat);
|
||||
}
|
||||
if (compat != null) {
|
||||
mCompatibilityInfo = compat;
|
||||
}
|
||||
if (metrics != null) {
|
||||
mMetrics.setTo(metrics);
|
||||
}
|
||||
// NOTE: We should re-arrange this code to create a Display
|
||||
// with the CompatibilityInfo that is used everywhere we deal
|
||||
// with the display in relation to this app, rather than
|
||||
// doing the conversion here. This impl should be okay because
|
||||
// we make sure to return a compatible display in the places
|
||||
// where there are public APIs to retrieve the display... but
|
||||
// it would be cleaner and more maintainble to just be
|
||||
// consistently dealing with a compatible display everywhere in
|
||||
// the framework.
|
||||
mCompatibilityInfo.applyToDisplayMetrics(mMetrics);
|
||||
|
||||
final @Config int configChanges = calcConfigChanges(config);
|
||||
final @Config int configChanges = calcConfigChanges(config);
|
||||
|
||||
LocaleList locales = mConfiguration.getLocales();
|
||||
if (locales.isEmpty()) {
|
||||
locales = LocaleList.getAdjustedDefault();
|
||||
mConfiguration.setLocales(locales);
|
||||
LocaleList locales = mConfiguration.getLocales();
|
||||
if (locales.isEmpty()) {
|
||||
locales = LocaleList.getAdjustedDefault();
|
||||
mConfiguration.setLocales(locales);
|
||||
}
|
||||
if (mConfiguration.densityDpi != Configuration.DENSITY_DPI_UNDEFINED) {
|
||||
mMetrics.densityDpi = mConfiguration.densityDpi;
|
||||
mMetrics.density =
|
||||
mConfiguration.densityDpi * DisplayMetrics.DENSITY_DEFAULT_SCALE;
|
||||
}
|
||||
mMetrics.scaledDensity = mMetrics.density * mConfiguration.fontScale;
|
||||
|
||||
final int width, height;
|
||||
if (mMetrics.widthPixels >= mMetrics.heightPixels) {
|
||||
width = mMetrics.widthPixels;
|
||||
height = mMetrics.heightPixels;
|
||||
} else {
|
||||
//noinspection SuspiciousNameCombination
|
||||
width = mMetrics.heightPixels;
|
||||
//noinspection SuspiciousNameCombination
|
||||
height = mMetrics.widthPixels;
|
||||
}
|
||||
|
||||
final int keyboardHidden;
|
||||
if (mConfiguration.keyboardHidden == Configuration.KEYBOARDHIDDEN_NO
|
||||
&& mConfiguration.hardKeyboardHidden
|
||||
== Configuration.HARDKEYBOARDHIDDEN_YES) {
|
||||
keyboardHidden = Configuration.KEYBOARDHIDDEN_SOFT;
|
||||
} else {
|
||||
keyboardHidden = mConfiguration.keyboardHidden;
|
||||
}
|
||||
|
||||
mAssets.setConfiguration(mConfiguration.mcc, mConfiguration.mnc,
|
||||
adjustLanguageTag(locales.get(0).toLanguageTag()),
|
||||
mConfiguration.orientation,
|
||||
mConfiguration.touchscreen,
|
||||
mConfiguration.densityDpi, mConfiguration.keyboard,
|
||||
keyboardHidden, mConfiguration.navigation, width, height,
|
||||
mConfiguration.smallestScreenWidthDp,
|
||||
mConfiguration.screenWidthDp, mConfiguration.screenHeightDp,
|
||||
mConfiguration.screenLayout, mConfiguration.uiMode,
|
||||
Build.VERSION.RESOURCES_SDK_INT);
|
||||
|
||||
if (DEBUG_CONFIG) {
|
||||
Slog.i(TAG, "**** Updating config of " + this + ": final config is "
|
||||
+ mConfiguration + " final compat is " + mCompatibilityInfo);
|
||||
}
|
||||
|
||||
mDrawableCache.onConfigurationChange(configChanges);
|
||||
mColorDrawableCache.onConfigurationChange(configChanges);
|
||||
mComplexColorCache.onConfigurationChange(configChanges);
|
||||
mAnimatorCache.onConfigurationChange(configChanges);
|
||||
mStateListAnimatorCache.onConfigurationChange(configChanges);
|
||||
|
||||
flushLayoutCache();
|
||||
}
|
||||
if (mConfiguration.densityDpi != Configuration.DENSITY_DPI_UNDEFINED) {
|
||||
mMetrics.densityDpi = mConfiguration.densityDpi;
|
||||
mMetrics.density = mConfiguration.densityDpi * DisplayMetrics.DENSITY_DEFAULT_SCALE;
|
||||
}
|
||||
mMetrics.scaledDensity = mMetrics.density * mConfiguration.fontScale;
|
||||
|
||||
final int width, height;
|
||||
if (mMetrics.widthPixels >= mMetrics.heightPixels) {
|
||||
width = mMetrics.widthPixels;
|
||||
height = mMetrics.heightPixels;
|
||||
} else {
|
||||
//noinspection SuspiciousNameCombination
|
||||
width = mMetrics.heightPixels;
|
||||
//noinspection SuspiciousNameCombination
|
||||
height = mMetrics.widthPixels;
|
||||
}
|
||||
|
||||
final int keyboardHidden;
|
||||
if (mConfiguration.keyboardHidden == Configuration.KEYBOARDHIDDEN_NO
|
||||
&& mConfiguration.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES) {
|
||||
keyboardHidden = Configuration.KEYBOARDHIDDEN_SOFT;
|
||||
} else {
|
||||
keyboardHidden = mConfiguration.keyboardHidden;
|
||||
}
|
||||
|
||||
mAssets.setConfiguration(mConfiguration.mcc, mConfiguration.mnc,
|
||||
adjustLanguageTag(locales.get(0).toLanguageTag()),
|
||||
mConfiguration.orientation,
|
||||
mConfiguration.touchscreen,
|
||||
mConfiguration.densityDpi, mConfiguration.keyboard,
|
||||
keyboardHidden, mConfiguration.navigation, width, height,
|
||||
mConfiguration.smallestScreenWidthDp,
|
||||
mConfiguration.screenWidthDp, mConfiguration.screenHeightDp,
|
||||
mConfiguration.screenLayout, mConfiguration.uiMode,
|
||||
Build.VERSION.RESOURCES_SDK_INT);
|
||||
|
||||
if (DEBUG_CONFIG) {
|
||||
Slog.i(TAG, "**** Updating config of " + this + ": final config is "
|
||||
+ mConfiguration + " final compat is " + mCompatibilityInfo);
|
||||
}
|
||||
|
||||
mDrawableCache.onConfigurationChange(configChanges);
|
||||
mColorDrawableCache.onConfigurationChange(configChanges);
|
||||
mComplexColorCache.onConfigurationChange(configChanges);
|
||||
mAnimatorCache.onConfigurationChange(configChanges);
|
||||
mStateListAnimatorCache.onConfigurationChange(configChanges);
|
||||
|
||||
flushLayoutCache();
|
||||
}
|
||||
synchronized (sSync) {
|
||||
if (mPluralRule != null) {
|
||||
mPluralRule = PluralRules.forLocale(mConfiguration.getLocales().get(0));
|
||||
synchronized (sSync) {
|
||||
if (mPluralRule != null) {
|
||||
mPluralRule = PluralRules.forLocale(mConfiguration.getLocales().get(0));
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
Trace.traceEnd(Trace.TRACE_TAG_RESOURCES);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1448,9 +1448,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub
|
||||
final BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
|
||||
if (adapter != null) {
|
||||
bluetoothReceiver = new SynchronousResultReceiver();
|
||||
adapter.requestControllerActivityEnergyInfo(
|
||||
BluetoothAdapter.ACTIVITY_ENERGY_INFO_REFRESHED,
|
||||
bluetoothReceiver);
|
||||
adapter.requestControllerActivityEnergyInfo(bluetoothReceiver);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user