diff options
279 files changed, 1077 insertions, 430 deletions
diff --git a/api/current.txt b/api/current.txt index 1443bee..7a00fb9 100644 --- a/api/current.txt +++ b/api/current.txt @@ -10623,6 +10623,10 @@ package android.hardware { field public int width; } + public abstract interface FlushCompleteListener { + method public abstract void onFlushCompleted(android.hardware.Sensor); + } + public class GeomagneticField { ctor public GeomagneticField(float, float, float, long); method public float getDeclination(); @@ -10635,6 +10639,8 @@ package android.hardware { } public final class Sensor { + method public int getFifoMaxEventCount(); + method public int getFifoReservedEventCount(); method public float getMaximumRange(); method public int getMinDelay(); method public java.lang.String getName(); @@ -10685,6 +10691,7 @@ package android.hardware { public abstract class SensorManager { method public boolean cancelTriggerSensor(android.hardware.TriggerEventListener, android.hardware.Sensor); + method public boolean flush(android.hardware.Sensor); method public static float getAltitude(float, float); method public static void getAngleChange(float[], float[], float[]); method public android.hardware.Sensor getDefaultSensor(int); @@ -10698,7 +10705,9 @@ package android.hardware { method public deprecated boolean registerListener(android.hardware.SensorListener, int); method public deprecated boolean registerListener(android.hardware.SensorListener, int, int); method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int); + method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int, int, int, android.hardware.FlushCompleteListener); method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int, android.os.Handler); + method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int, int, int, android.os.Handler, android.hardware.FlushCompleteListener); method public static boolean remapCoordinateSystem(float[], int, int, float[]); method public boolean requestTriggerSensor(android.hardware.TriggerEventListener, android.hardware.Sensor); method public deprecated void unregisterListener(android.hardware.SensorListener); @@ -12130,6 +12139,12 @@ package android.media { method public abstract void onPeriodicNotification(android.media.AudioRecord); } + public final class AudioTimestamp { + ctor public AudioTimestamp(); + field public long framePosition; + field public long nanoTime; + } + public class AudioTrack { ctor public AudioTrack(int, int, int, int, int, int) throws java.lang.IllegalArgumentException; ctor public AudioTrack(int, int, int, int, int, int, int) throws java.lang.IllegalArgumentException; @@ -12152,6 +12167,7 @@ package android.media { method public int getSampleRate(); method public int getState(); method public int getStreamType(); + method public android.media.AudioTimestamp getTimestamp(android.media.AudioTimestamp); method public void pause() throws java.lang.IllegalStateException; method public void play() throws java.lang.IllegalStateException; method public void release(); @@ -22789,6 +22805,26 @@ package android.speech { } +package android.speech.hotword { + + public abstract class HotwordRecognitionService extends android.app.Service { + ctor public HotwordRecognitionService(); + method public android.os.IBinder onBind(android.content.Intent); + method public abstract void onStartHotwordRecognition(android.speech.hotword.HotwordRecognitionService.Callback); + method public abstract void onStopHotwordRecognition(); + field public static final java.lang.String SERVICE_INTERFACE = "android.speech.hotword.HotwordRecognitionService"; + } + + public static class HotwordRecognitionService.Callback { + method public void onError(int) throws android.os.RemoteException; + method public void onHotwordEvent(int, android.os.Bundle) throws android.os.RemoteException; + method public void onHotwordRecognitionStarted() throws android.os.RemoteException; + method public void onHotwordRecognitionStopped() throws android.os.RemoteException; + method public void onHotwordRecognized(android.content.Intent) throws android.os.RemoteException; + } + +} + package android.speech.tts { public abstract interface SynthesisCallback { diff --git a/core/java/android/bluetooth/BluetoothAdapter.java b/core/java/android/bluetooth/BluetoothAdapter.java index e062fa8..676fd1f 100644 --- a/core/java/android/bluetooth/BluetoothAdapter.java +++ b/core/java/android/bluetooth/BluetoothAdapter.java @@ -924,6 +924,42 @@ public final class BluetoothAdapter { } /** + * Create a listening, L2CAP Bluetooth socket. + * <p>A remote device connecting to this socket will optionally be + * authenticated and communication on this socket will optionally be + * encrypted. + * <p>Use {@link BluetoothServerSocket#accept} to retrieve incoming + * connections from a listening {@link BluetoothServerSocket}. + * <p>Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN} + * @param secure whether security and authentication are required + * @param fixedChannel whether we're looking for a PSM-based connection or a fixed channel + * @param channel L2CAP PSM or channel to use + * @return a listening L2CAP BluetoothServerSocket + * @throws IOException on error, for example Bluetooth not available, or + * insufficient permissions, or channel in use. + * @hide + */ + public BluetoothServerSocket listenUsingL2CapOn(boolean secure, boolean fixedChannel, + int channel) throws IOException { + BluetoothServerSocket socket; + + if (fixedChannel) { + channel |= BluetoothSocket.PORT_MASK_FIXED_CHAN; + } + + socket = new BluetoothServerSocket( + BluetoothSocket.TYPE_L2CAP, secure, secure, channel); + int errno = socket.mSocket.bindListen(); + if (errno != 0) { + //TODO(BT): Throw the same exception error code + // that the previous code was using. + //socket.mSocket.throwErrnoNative(errno); + throw new IOException("Error: " + errno); + } + return socket; + } + + /** * Create a listening, secure RFCOMM Bluetooth socket. * <p>A remote device connecting to this socket will be authenticated and * communication on this socket will be encrypted. diff --git a/core/java/android/bluetooth/BluetoothDevice.java b/core/java/android/bluetooth/BluetoothDevice.java index 3acd9b0..2c85382 100644 --- a/core/java/android/bluetooth/BluetoothDevice.java +++ b/core/java/android/bluetooth/BluetoothDevice.java @@ -1144,6 +1144,33 @@ public final class BluetoothDevice implements Parcelable { return new BluetoothSocket(BluetoothSocket.TYPE_SCO, -1, true, true, this, -1, null); } + + /** + * Construct a L2CAP socket ready to start an outgoing connection. + * Call #connect on the returned #BluetoothSocket to begin the connection. + * <p>Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN} + * + * @param secure select whether security will be required + * @param fixedChannel select if this will be a "fixed channel" L2CAP connection + * or a PSM-based connection + * @param channel fixed channel or PSM to connect to + * @return a L2CAP BluetoothSocket + * @throws IOException on error, for example Bluetooth not available, or + * insufficient permissions. + * @hide + */ + public BluetoothSocket createL2CapSocket(boolean secure, boolean fixedChannel, int channel) + throws IOException { + + if (fixedChannel) { + channel |= BluetoothSocket.PORT_MASK_FIXED_CHAN; + } + + return new BluetoothSocket(BluetoothSocket.TYPE_L2CAP, -1, secure, secure, this, + channel, null); + } + + /** * Check that a pin is valid and convert to byte array. * diff --git a/core/java/android/bluetooth/BluetoothSocket.java b/core/java/android/bluetooth/BluetoothSocket.java index d10eaea..191bf67 100644 --- a/core/java/android/bluetooth/BluetoothSocket.java +++ b/core/java/android/bluetooth/BluetoothSocket.java @@ -103,6 +103,8 @@ public final class BluetoothSocket implements Closeable { /*package*/ static final int SEC_FLAG_ENCRYPT = 1; /*package*/ static final int SEC_FLAG_AUTH = 1 << 1; + /*package*/ static final int PORT_MASK_FIXED_CHAN = 1 << 16; + private final int mType; /* one of TYPE_RFCOMM etc */ private BluetoothDevice mDevice; /* remote device */ private String mAddress; /* remote address */ @@ -115,7 +117,7 @@ public final class BluetoothSocket implements Closeable { private LocalSocket mSocket; private InputStream mSocketIS; private OutputStream mSocketOS; - private int mPort; /* RFCOMM channel or L2CAP psm */ + private int mPort; /* RFCOMM channel or L2CAP psm/channel */ private int mFd; private String mServiceName; private static int PROXY_CONNECTION_TIMEOUT = 5000; diff --git a/core/java/android/content/pm/ActivityInfo.java b/core/java/android/content/pm/ActivityInfo.java index 8154bca..b8ac3bf 100644 --- a/core/java/android/content/pm/ActivityInfo.java +++ b/core/java/android/content/pm/ActivityInfo.java @@ -16,6 +16,7 @@ package android.content.pm; +import android.content.res.Configuration; import android.os.Parcel; import android.os.Parcelable; import android.util.Printer; @@ -437,20 +438,20 @@ public class ActivityInfo extends ComponentInfo * native side given the bit we have assigned in ActivityInfo. */ public static int[] CONFIG_NATIVE_BITS = new int[] { - 0x0001, // MNC - 0x0002, // MCC - 0x0004, // LOCALE - 0x0008, // TOUCH SCREEN - 0x0010, // KEYBOARD - 0x0020, // KEYBOARD HIDDEN - 0x0040, // NAVIGATION - 0x0080, // ORIENTATION - 0x0800, // SCREEN LAYOUT - 0x1000, // UI MODE - 0x0200, // SCREEN SIZE - 0x2000, // SMALLEST SCREEN SIZE - 0x0100, // DENSITY - 0x4000, // LAYOUT DIRECTION + Configuration.NATIVE_CONFIG_MNC, // MNC + Configuration.NATIVE_CONFIG_MCC, // MCC + Configuration.NATIVE_CONFIG_LOCALE, // LOCALE + Configuration.NATIVE_CONFIG_TOUCHSCREEN, // TOUCH SCREEN + Configuration.NATIVE_CONFIG_KEYBOARD, // KEYBOARD + Configuration.NATIVE_CONFIG_KEYBOARD_HIDDEN, // KEYBOARD HIDDEN + Configuration.NATIVE_CONFIG_NAVIGATION, // NAVIGATION + Configuration.NATIVE_CONFIG_ORIENTATION, // ORIENTATION + Configuration.NATIVE_CONFIG_SCREEN_LAYOUT, // SCREEN LAYOUT + Configuration.NATIVE_CONFIG_UI_MODE, // UI MODE + Configuration.NATIVE_CONFIG_SCREEN_SIZE, // SCREEN SIZE + Configuration.NATIVE_CONFIG_SMALLEST_SCREEN_SIZE, // SMALLEST SCREEN SIZE + Configuration.NATIVE_CONFIG_DENSITY, // DENSITY + Configuration.NATIVE_CONFIG_LAYOUTDIR, // LAYOUT DIRECTION }; /** @hide * Convert Java change bits to native. diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index 541dcb9..6760f49 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -1864,7 +1864,8 @@ public class PackageParser { } String manageSpaceActivity = sa.getNonConfigurationString( - com.android.internal.R.styleable.AndroidManifestApplication_manageSpaceActivity, 0); + com.android.internal.R.styleable.AndroidManifestApplication_manageSpaceActivity, + Configuration.NATIVE_CONFIG_VERSION); if (manageSpaceActivity != null) { ai.manageSpaceActivityName = buildClassName(pkgName, manageSpaceActivity, outError); @@ -1878,7 +1879,8 @@ public class PackageParser { // backupAgent, killAfterRestore, and restoreAnyVersion are only relevant // if backup is possible for the given application. String backupAgent = sa.getNonConfigurationString( - com.android.internal.R.styleable.AndroidManifestApplication_backupAgent, 0); + com.android.internal.R.styleable.AndroidManifestApplication_backupAgent, + Configuration.NATIVE_CONFIG_VERSION); if (backupAgent != null) { ai.backupAgentName = buildClassName(pkgName, backupAgent, outError); if (DEBUG_BACKUP) { @@ -1999,7 +2001,8 @@ public class PackageParser { if (owner.applicationInfo.targetSdkVersion >= Build.VERSION_CODES.FROYO) { str = sa.getNonConfigurationString( - com.android.internal.R.styleable.AndroidManifestApplication_taskAffinity, 0); + com.android.internal.R.styleable.AndroidManifestApplication_taskAffinity, + Configuration.NATIVE_CONFIG_VERSION); } else { // Some older apps have been seen to use a resource reference // here that on older builds was ignored (with a warning). We @@ -2014,7 +2017,8 @@ public class PackageParser { CharSequence pname; if (owner.applicationInfo.targetSdkVersion >= Build.VERSION_CODES.FROYO) { pname = sa.getNonConfigurationString( - com.android.internal.R.styleable.AndroidManifestApplication_process, 0); + com.android.internal.R.styleable.AndroidManifestApplication_process, + Configuration.NATIVE_CONFIG_VERSION); } else { // Some older apps have been seen to use a resource reference // here that on older builds was ignored (with a warning). We @@ -2278,7 +2282,8 @@ public class PackageParser { a.info.applicationInfo.uiOptions); String parentName = sa.getNonConfigurationString( - com.android.internal.R.styleable.AndroidManifestActivity_parentActivityName, 0); + com.android.internal.R.styleable.AndroidManifestActivity_parentActivityName, + Configuration.NATIVE_CONFIG_VERSION); if (parentName != null) { String parentClassName = buildClassName(a.info.packageName, parentName, outError); if (outError[0] == null) { @@ -2300,7 +2305,8 @@ public class PackageParser { } str = sa.getNonConfigurationString( - com.android.internal.R.styleable.AndroidManifestActivity_taskAffinity, 0); + com.android.internal.R.styleable.AndroidManifestActivity_taskAffinity, + Configuration.NATIVE_CONFIG_VERSION); a.info.taskAffinity = buildTaskAffinityName(owner.applicationInfo.packageName, owner.applicationInfo.taskAffinity, str, outError); @@ -2509,7 +2515,8 @@ public class PackageParser { com.android.internal.R.styleable.AndroidManifestActivityAlias); String targetActivity = sa.getNonConfigurationString( - com.android.internal.R.styleable.AndroidManifestActivityAlias_targetActivity, 0); + com.android.internal.R.styleable.AndroidManifestActivityAlias_targetActivity, + Configuration.NATIVE_CONFIG_VERSION); if (targetActivity == null) { outError[0] = "<activity-alias> does not specify android:targetActivity"; sa.recycle(); @@ -2599,7 +2606,7 @@ public class PackageParser { String parentName = sa.getNonConfigurationString( com.android.internal.R.styleable.AndroidManifestActivityAlias_parentActivityName, - 0); + Configuration.NATIVE_CONFIG_VERSION); if (parentName != null) { String parentClassName = buildClassName(a.info.packageName, parentName, outError); if (outError[0] == null) { @@ -3656,7 +3663,8 @@ public class PackageParser { if (args.processRes != 0) { CharSequence pname; if (owner.applicationInfo.targetSdkVersion >= Build.VERSION_CODES.FROYO) { - pname = args.sa.getNonConfigurationString(args.processRes, 0); + pname = args.sa.getNonConfigurationString(args.processRes, + Configuration.NATIVE_CONFIG_VERSION); } else { // Some older apps have been seen to use a resource reference // here that on older builds was ignored (with a warning). We diff --git a/core/java/android/content/res/Configuration.java b/core/java/android/content/res/Configuration.java index 0402eeb..48b6fca 100644 --- a/core/java/android/content/res/Configuration.java +++ b/core/java/android/content/res/Configuration.java @@ -544,7 +544,40 @@ public final class Configuration implements Parcelable, Comparable<Configuration * @hide Internal book-keeping. */ public int seq; - + + /** @hide Native-specific bit mask for MCC config; DO NOT USE UNLESS YOU ARE SURE. */ + public static final int NATIVE_CONFIG_MCC = 0x0001; + /** @hide Native-specific bit mask for MNC config; DO NOT USE UNLESS YOU ARE SURE. */ + public static final int NATIVE_CONFIG_MNC = 0x0002; + /** @hide Native-specific bit mask for LOCALE config; DO NOT USE UNLESS YOU ARE SURE. */ + public static final int NATIVE_CONFIG_LOCALE = 0x0004; + /** @hide Native-specific bit mask for TOUCHSCREEN config; DO NOT USE UNLESS YOU ARE SURE. */ + public static final int NATIVE_CONFIG_TOUCHSCREEN = 0x0008; + /** @hide Native-specific bit mask for KEYBOARD config; DO NOT USE UNLESS YOU ARE SURE. */ + public static final int NATIVE_CONFIG_KEYBOARD = 0x0010; + /** @hide Native-specific bit mask for KEYBOARD_HIDDEN config; DO NOT USE UNLESS YOU + * ARE SURE. */ + public static final int NATIVE_CONFIG_KEYBOARD_HIDDEN = 0x0020; + /** @hide Native-specific bit mask for NAVIGATION config; DO NOT USE UNLESS YOU ARE SURE. */ + public static final int NATIVE_CONFIG_NAVIGATION = 0x0040; + /** @hide Native-specific bit mask for ORIENTATION config; DO NOT USE UNLESS YOU ARE SURE. */ + public static final int NATIVE_CONFIG_ORIENTATION = 0x0080; + /** @hide Native-specific bit mask for DENSITY config; DO NOT USE UNLESS YOU ARE SURE. */ + public static final int NATIVE_CONFIG_DENSITY = 0x0100; + /** @hide Native-specific bit mask for SCREEN_SIZE config; DO NOT USE UNLESS YOU ARE SURE. */ + public static final int NATIVE_CONFIG_SCREEN_SIZE = 0x0200; + /** @hide Native-specific bit mask for VERSION config; DO NOT USE UNLESS YOU ARE SURE. */ + public static final int NATIVE_CONFIG_VERSION = 0x0400; + /** @hide Native-specific bit mask for SCREEN_LAYOUT config; DO NOT USE UNLESS YOU ARE SURE. */ + public static final int NATIVE_CONFIG_SCREEN_LAYOUT = 0x0800; + /** @hide Native-specific bit mask for UI_MODE config; DO NOT USE UNLESS YOU ARE SURE. */ + public static final int NATIVE_CONFIG_UI_MODE = 0x1000; + /** @hide Native-specific bit mask for SMALLEST_SCREEN_SIZE config; DO NOT USE UNLESS YOU + * ARE SURE. */ + public static final int NATIVE_CONFIG_SMALLEST_SCREEN_SIZE = 0x2000; + /** @hide Native-specific bit mask for LAYOUTDIR config ; DO NOT USE UNLESS YOU ARE SURE.*/ + public static final int NATIVE_CONFIG_LAYOUTDIR = 0x4000; + /** * Construct an invalid Configuration. You must call {@link #setToDefaults} * for this object to be valid. {@more} diff --git a/core/java/android/content/res/TypedArray.java b/core/java/android/content/res/TypedArray.java index 27dddd4..83d48aa 100644 --- a/core/java/android/content/res/TypedArray.java +++ b/core/java/android/content/res/TypedArray.java @@ -16,6 +16,7 @@ package android.content.res; +import android.content.pm.ActivityInfo; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.util.DisplayMetrics; @@ -170,8 +171,8 @@ public class TypedArray { * * @param index Index of attribute to retrieve. * @param allowedChangingConfigs Bit mask of configurations from - * ActivityInfo that are allowed to change. - * + * {@link Configuration}.NATIVE_CONFIG_* that are allowed to change. + * * @return String holding string data. Any styling information is * removed. Returns null if the attribute is not defined. */ diff --git a/core/java/android/hardware/FlushCompleteListener.java b/core/java/android/hardware/FlushCompleteListener.java index cb5b9e3..fbdf4c8 100644 --- a/core/java/android/hardware/FlushCompleteListener.java +++ b/core/java/android/hardware/FlushCompleteListener.java @@ -18,7 +18,6 @@ package android.hardware; /** * Used for receiving a notification when a flush() has been successfully completed. - * @hide */ public interface FlushCompleteListener { /** diff --git a/core/java/android/hardware/Sensor.java b/core/java/android/hardware/Sensor.java index bbede57..89a5819 100644 --- a/core/java/android/hardware/Sensor.java +++ b/core/java/android/hardware/Sensor.java @@ -385,8 +385,7 @@ public final class Sensor { /** * @return Number of events reserved for this sensor in the batch mode FIFO. This gives a - * guarantee on the minimum number of events that can be batched - * @hide + * guarantee on the minimum number of events that can be batched. */ public int getFifoReservedEventCount() { return mFifoReservedEventCount; @@ -397,7 +396,6 @@ public final class Sensor { * it indicates that batch mode is not supported for this sensor. If other applications * registered to batched sensors, the actual number of events that can be batched might be * smaller because the hardware FiFo will be partially used to batch the other sensors. - * @hide */ public int getFifoMaxEventCount() { return mFifoMaxEventCount; diff --git a/core/java/android/hardware/SensorManager.java b/core/java/android/hardware/SensorManager.java index b6ca62a..8a4aa1d 100644 --- a/core/java/android/hardware/SensorManager.java +++ b/core/java/android/hardware/SensorManager.java @@ -582,7 +582,7 @@ public abstract class SensorManager { * @param sensor * The {@link android.hardware.Sensor Sensor} to register to. * - * @param rate + * @param rateUs * The rate {@link android.hardware.SensorEvent sensor events} are * delivered at. This is only a hint to the system. Events may be * received faster or slower than the specified rate. Usually events @@ -603,14 +603,14 @@ public abstract class SensorManager { * * @throws IllegalArgumentException when sensor is null or a trigger sensor */ - public boolean registerListener(SensorEventListener listener, Sensor sensor, int rate) { - return registerListener(listener, sensor, rate, null); + public boolean registerListener(SensorEventListener listener, Sensor sensor, int rateUs) { + return registerListener(listener, sensor, rateUs, null); } /** * Enables batch mode for a sensor with the given rate and maxBatchReportLatency. If the * underlying hardware does not support batch mode, this defaults to - * {@link #registerListener(SensorEventListener, Sensor, int)} and other parameters are are + * {@link #registerListener(SensorEventListener, Sensor, int)} and other parameters are * ignored. In non-batch mode, all sensor events must be reported as soon as they are detected. * While in batch mode, sensor events do not need to be reported as soon as they are detected. * They can be temporarily stored in batches and reported in batches, as long as no event is @@ -640,13 +640,13 @@ public abstract class SensorManager { * @param listener A {@link android.hardware.SensorEventListener SensorEventListener} object * that will receive the sensor events. * @param sensor The {@link android.hardware.Sensor Sensor} to register to. - * @param rate The desired delay between two consecutive events in microseconds. This is only a - * hint to the system. Events may be received faster or slower than the specified + * @param rateUs The desired delay between two consecutive events in microseconds. This is only + * a hint to the system. Events may be received faster or slower than the specified * rate. Usually events are received faster. Can be one of * {@link #SENSOR_DELAY_NORMAL}, {@link #SENSOR_DELAY_UI}, * {@link #SENSOR_DELAY_GAME}, {@link #SENSOR_DELAY_FASTEST} or the delay in * microseconds. - * @param maxBatchReportLatency An event in the batch can be delayed by at most + * @param maxBatchReportLatencyUs An event in the batch can be delayed by at most * maxBatchReportLatency microseconds. More events can be batched if this value is * large. If this is set to zero, batch mode is disabled and events are delivered in * continuous mode as soon as they are available which is equivalent to calling @@ -661,7 +661,6 @@ public abstract class SensorManager { * @see #unregisterListener(SensorEventListener) * @see #flush(Sensor) * @throws IllegalArgumentException when sensor or listener is null or a trigger sensor. - * @hide */ public boolean registerListener(SensorEventListener listener, Sensor sensor, int rateUs, int maxBatchReportLatencyUs, int reservedFlags, @@ -673,7 +672,9 @@ public abstract class SensorManager { /** * Registers a {@link android.hardware.SensorEventListener SensorEventListener} for the given - * sensor. Events are delivered in continuous mode as soon as they are available. + * sensor. Events are delivered in continuous mode as soon as they are available. To reduce the + * battery usage, use {@link #registerListener(SensorEventListener, Sensor, int, int, int, + * FlushCompleteListener)} which enables batch mode for the sensor. * * <p class="note"></p> * Note: Don't use this method with a one shot trigger sensor such as @@ -688,7 +689,7 @@ public abstract class SensorManager { * @param sensor * The {@link android.hardware.Sensor Sensor} to register to. * - * @param rate + * @param rateUs * The rate {@link android.hardware.SensorEvent sensor events} are * delivered at. This is only a hint to the system. Events may be * received faster or slower than the specified rate. Usually events @@ -713,13 +714,13 @@ public abstract class SensorManager { * * @throws IllegalArgumentException when sensor is null or a trigger sensor */ - public boolean registerListener(SensorEventListener listener, Sensor sensor, int rate, + public boolean registerListener(SensorEventListener listener, Sensor sensor, int rateUs, Handler handler) { if (listener == null || sensor == null) { return false; } - int delay = getDelay(rate); + int delay = getDelay(rateUs); return registerListenerImpl(listener, sensor, delay, handler, 0, 0, null); } @@ -731,7 +732,6 @@ public abstract class SensorManager { * delivered to. * * @see #registerListener(SensorEventListener, Sensor, int, int, int, FlushCompleteListener) - * @hide */ public boolean registerListener(SensorEventListener listener, Sensor sensor, int rateUs, int maxBatchReportLatencyUs, int reservedFlags, Handler handler, @@ -760,7 +760,6 @@ public abstract class SensorManager { * i.e no application is registered for updates from this sensor. * @see #registerListener(SensorEventListener, Sensor, int, int, int, FlushCompleteListener) * @throws IllegalArgumentException when sensor is null or a trigger sensor. - * @hide */ public boolean flush(Sensor sensor) { return flushImpl(sensor); diff --git a/core/java/android/hardware/camera2/CaptureRequest.java b/core/java/android/hardware/camera2/CaptureRequest.java index 3f9b9e9..7735146 100644 --- a/core/java/android/hardware/camera2/CaptureRequest.java +++ b/core/java/android/hardware/camera2/CaptureRequest.java @@ -182,7 +182,7 @@ public final class CaptureRequest extends CameraMetadata implements Parcelable { /** * <p> - * When android.sensor.awbMode is not OFF, TRANSFORM_MATRIX + * When android.control.awbMode is not OFF, TRANSFORM_MATRIX * should be ignored. * </p> * @see #COLOR_CORRECTION_MODE_TRANSFORM_MATRIX diff --git a/core/java/android/net/LinkProperties.java b/core/java/android/net/LinkProperties.java index 43d6b71..b4d07a1 100644 --- a/core/java/android/net/LinkProperties.java +++ b/core/java/android/net/LinkProperties.java @@ -66,6 +66,7 @@ public class LinkProperties implements Parcelable { private String mDomains; private Collection<RouteInfo> mRoutes = new ArrayList<RouteInfo>(); private ProxyProperties mHttpProxy; + private int mMtu; // Stores the properties of links that are "stacked" above this link. // Indexed by interface name to allow modification and to prevent duplicates being added. @@ -104,6 +105,7 @@ public class LinkProperties implements Parcelable { for (LinkProperties l: source.mStackedLinks.values()) { addStackedLink(l); } + setMtu(source.getMtu()); } } @@ -223,6 +225,14 @@ public class LinkProperties implements Parcelable { mDomains = domains; } + public void setMtu(int mtu) { + mMtu = mtu; + } + + public int getMtu() { + return mMtu; + } + private RouteInfo routeWithInterface(RouteInfo route) { return new RouteInfo( route.getDestination(), @@ -322,6 +332,7 @@ public class LinkProperties implements Parcelable { mRoutes.clear(); mHttpProxy = null; mStackedLinks.clear(); + mMtu = 0; } /** @@ -346,6 +357,8 @@ public class LinkProperties implements Parcelable { String domainName = "Domains: " + mDomains; + String mtu = "MTU: " + mMtu; + String routes = " Routes: ["; for (RouteInfo route : mRoutes) routes += route.toString() + ","; routes += "] "; @@ -359,7 +372,8 @@ public class LinkProperties implements Parcelable { } stacked += "] "; } - return "{" + ifaceName + linkAddresses + routes + dns + domainName + proxy + stacked + "}"; + return "{" + ifaceName + linkAddresses + routes + dns + domainName + mtu + + proxy + stacked + "}"; } /** @@ -474,6 +488,16 @@ public class LinkProperties implements Parcelable { return true; } + /** + * Compares this {@code LinkProperties} MTU against the target + * + * @param target LinkProperties to compare. + * @return {@code true} if both are identical, {@code false} otherwise. + */ + public boolean isIdenticalMtu(LinkProperties target) { + return getMtu() == target.getMtu(); + } + @Override /** * Compares this {@code LinkProperties} instance against the target @@ -505,7 +529,8 @@ public class LinkProperties implements Parcelable { isIdenticalDnses(target) && isIdenticalRoutes(target) && isIdenticalHttpProxy(target) && - isIdenticalStackedLinks(target); + isIdenticalStackedLinks(target) && + isIdenticalMtu(target); } /** @@ -607,7 +632,8 @@ public class LinkProperties implements Parcelable { + ((null == mDomains) ? 0 : mDomains.hashCode()) + mRoutes.size() * 41 + ((null == mHttpProxy) ? 0 : mHttpProxy.hashCode()) - + mStackedLinks.hashCode() * 47); + + mStackedLinks.hashCode() * 47) + + mMtu * 51; } /** @@ -625,7 +651,7 @@ public class LinkProperties implements Parcelable { dest.writeByteArray(d.getAddress()); } dest.writeString(mDomains); - + dest.writeInt(mMtu); dest.writeInt(mRoutes.size()); for(RouteInfo route : mRoutes) { dest.writeParcelable(route, flags); @@ -664,6 +690,7 @@ public class LinkProperties implements Parcelable { } catch (UnknownHostException e) { } } netProp.setDomains(in.readString()); + netProp.setMtu(in.readInt()); addressCount = in.readInt(); for (int i=0; i<addressCount; i++) { netProp.addRoute((RouteInfo)in.readParcelable(null)); diff --git a/core/java/android/net/MobileDataStateTracker.java b/core/java/android/net/MobileDataStateTracker.java index b5d8489..b914940 100644 --- a/core/java/android/net/MobileDataStateTracker.java +++ b/core/java/android/net/MobileDataStateTracker.java @@ -198,6 +198,8 @@ public class MobileDataStateTracker extends BaseNetworkStateTracker { loge("CONNECTED event did not supply link properties."); mLinkProperties = new LinkProperties(); } + mLinkProperties.setMtu(mContext.getResources().getInteger( + com.android.internal.R.integer.config_mobile_mtu)); mLinkCapabilities = intent.getParcelableExtra( PhoneConstants.DATA_LINK_CAPABILITIES_KEY); if (mLinkCapabilities == null) { @@ -209,6 +211,8 @@ public class MobileDataStateTracker extends BaseNetworkStateTracker { private class MobileDataStateReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { + // Assume this isn't a provisioning network. + mNetworkInfo.setIsConnectedToProvisioningNetwork(false); if (intent.getAction().equals(TelephonyIntents. ACTION_DATA_CONNECTION_CONNECTED_TO_PROVISIONING_APN)) { String apnName = intent.getStringExtra(PhoneConstants.DATA_APN_KEY); @@ -224,7 +228,11 @@ public class MobileDataStateTracker extends BaseNetworkStateTracker { // Make us in the connecting state until we make a new TYPE_MOBILE_PROVISIONING mMobileDataState = PhoneConstants.DataState.CONNECTING; updateLinkProperitesAndCapatilities(intent); - setDetailedState(DetailedState.CONNECTED_TO_PROVISIONING_NETWORK, "", apnName); + mNetworkInfo.setIsConnectedToProvisioningNetwork(true); + + // Change state to SUSPENDED so setDetailedState + // sends EVENT_STATE_CHANGED to connectivityService + setDetailedState(DetailedState.SUSPENDED, "", apnName); } else if (intent.getAction().equals(TelephonyIntents. ACTION_ANY_DATA_CONNECTION_STATE_CHANGED)) { String apnType = intent.getStringExtra(PhoneConstants.DATA_APN_TYPE_KEY); diff --git a/core/java/android/net/NetworkInfo.java b/core/java/android/net/NetworkInfo.java index dabc73a..4d2a70d 100644 --- a/core/java/android/net/NetworkInfo.java +++ b/core/java/android/net/NetworkInfo.java @@ -83,13 +83,7 @@ public class NetworkInfo implements Parcelable { /** Link has poor connectivity. */ VERIFYING_POOR_LINK, /** Checking if network is a captive portal */ - CAPTIVE_PORTAL_CHECK, - /** - * Network is connected to provisioning network - * TODO: Probably not needed when we add TYPE_PROVISIONING_NETWORK - * @hide - */ - CONNECTED_TO_PROVISIONING_NETWORK + CAPTIVE_PORTAL_CHECK } /** @@ -114,7 +108,6 @@ public class NetworkInfo implements Parcelable { stateMap.put(DetailedState.DISCONNECTED, State.DISCONNECTED); stateMap.put(DetailedState.FAILED, State.DISCONNECTED); stateMap.put(DetailedState.BLOCKED, State.DISCONNECTED); - stateMap.put(DetailedState.CONNECTED_TO_PROVISIONING_NETWORK, State.CONNECTED); } private int mNetworkType; @@ -127,6 +120,8 @@ public class NetworkInfo implements Parcelable { private String mExtraInfo; private boolean mIsFailover; private boolean mIsRoaming; + private boolean mIsConnectedToProvisioningNetwork; + /** * Indicates whether network connectivity is possible: */ @@ -155,6 +150,7 @@ public class NetworkInfo implements Parcelable { mState = State.UNKNOWN; mIsAvailable = false; // until we're told otherwise, assume unavailable mIsRoaming = false; + mIsConnectedToProvisioningNetwork = false; } /** {@hide} */ @@ -171,6 +167,7 @@ public class NetworkInfo implements Parcelable { mIsFailover = source.mIsFailover; mIsRoaming = source.mIsRoaming; mIsAvailable = source.mIsAvailable; + mIsConnectedToProvisioningNetwork = source.mIsConnectedToProvisioningNetwork; } } @@ -329,6 +326,22 @@ public class NetworkInfo implements Parcelable { } } + /** {@hide} */ + @VisibleForTesting + public boolean isConnectedToProvisioningNetwork() { + synchronized (this) { + return mIsConnectedToProvisioningNetwork; + } + } + + /** {@hide} */ + @VisibleForTesting + public void setIsConnectedToProvisioningNetwork(boolean val) { + synchronized (this) { + mIsConnectedToProvisioningNetwork = val; + } + } + /** * Reports the current coarse-grained state of the network. * @return the coarse-grained state @@ -412,7 +425,9 @@ public class NetworkInfo implements Parcelable { append(", extra: ").append(mExtraInfo == null ? "(none)" : mExtraInfo). append(", roaming: ").append(mIsRoaming). append(", failover: ").append(mIsFailover). - append(", isAvailable: ").append(mIsAvailable); + append(", isAvailable: ").append(mIsAvailable). + append(", isConnectedToProvisioningNetwork: "). + append(mIsConnectedToProvisioningNetwork); return builder.toString(); } } @@ -440,6 +455,7 @@ public class NetworkInfo implements Parcelable { dest.writeInt(mIsFailover ? 1 : 0); dest.writeInt(mIsAvailable ? 1 : 0); dest.writeInt(mIsRoaming ? 1 : 0); + dest.writeInt(mIsConnectedToProvisioningNetwork ? 1 : 0); dest.writeString(mReason); dest.writeString(mExtraInfo); } @@ -462,6 +478,7 @@ public class NetworkInfo implements Parcelable { netInfo.mIsFailover = in.readInt() != 0; netInfo.mIsAvailable = in.readInt() != 0; netInfo.mIsRoaming = in.readInt() != 0; + netInfo.mIsConnectedToProvisioningNetwork = in.readInt() != 0; netInfo.mReason = in.readString(); netInfo.mExtraInfo = in.readString(); return netInfo; diff --git a/core/java/android/os/Binder.java b/core/java/android/os/Binder.java index 4627c88..26fc769 100644 --- a/core/java/android/os/Binder.java +++ b/core/java/android/os/Binder.java @@ -399,17 +399,27 @@ public class Binder implements IBinder { // but all that does is rewind it, and we just got these from an IPC, // so we'll just call it directly. boolean res; + // Log any exceptions as warnings, don't silently suppress them. + // If the call was FLAG_ONEWAY then these exceptions disappear into the ether. try { res = onTransact(code, data, reply, flags); } catch (RemoteException e) { + if ((flags & FLAG_ONEWAY) != 0) { + Log.w(TAG, "Binder call failed.", e); + } reply.setDataPosition(0); reply.writeException(e); res = true; } catch (RuntimeException e) { + if ((flags & FLAG_ONEWAY) != 0) { + Log.w(TAG, "Caught a RuntimeException from the binder stub implementation.", e); + } reply.setDataPosition(0); reply.writeException(e); res = true; } catch (OutOfMemoryError e) { + // Unconditionally log this, since this is generally unrecoverable. + Log.e(TAG, "Caught an OutOfMemoryError from the binder stub implementation.", e); RuntimeException re = new RuntimeException("Out of memory", e); reply.setDataPosition(0); reply.writeException(re); diff --git a/core/java/android/os/Debug.java b/core/java/android/os/Debug.java index 60ce132..8f68fc1 100644 --- a/core/java/android/os/Debug.java +++ b/core/java/android/os/Debug.java @@ -158,7 +158,7 @@ public final class Debug public int otherSharedClean; /** @hide */ - public static final int NUM_OTHER_STATS = 13; + public static final int NUM_OTHER_STATS = 14; /** @hide */ public static final int NUM_DVK_STATS = 5; @@ -285,11 +285,12 @@ public final class Debug case 10: return "code mmap"; case 11: return "image mmap"; case 12: return "Other mmap"; - case 13: return ".Heap"; - case 14: return ".LOS"; - case 15: return ".LinearAlloc"; - case 16: return ".GC"; - case 17: return ".JITCache"; + case 13: return "GPU"; + case 14: return ".Heap"; + case 15: return ".LOS"; + case 16: return ".LinearAlloc"; + case 17: return ".GC"; + case 18: return ".JITCache"; default: return "????"; } } diff --git a/core/java/android/os/INetworkManagementService.aidl b/core/java/android/os/INetworkManagementService.aidl index ed9620f..61e5a4b 100644 --- a/core/java/android/os/INetworkManagementService.aidl +++ b/core/java/android/os/INetworkManagementService.aidl @@ -118,6 +118,11 @@ interface INetworkManagementService void removeSecondaryRoute(String iface, in RouteInfo route); /** + * Set the specified MTU size + */ + void setMtu(String iface, int mtu); + + /** * Shuts down the service */ void shutdown(); diff --git a/core/java/android/os/MessageQueue.java b/core/java/android/os/MessageQueue.java index 1e8983e..d1b8213 100644 --- a/core/java/android/os/MessageQueue.java +++ b/core/java/android/os/MessageQueue.java @@ -39,7 +39,7 @@ public final class MessageQueue { Message mMessages; private final ArrayList<IdleHandler> mIdleHandlers = new ArrayList<IdleHandler>(); private IdleHandler[] mPendingIdleHandlers; - private boolean mQuiting; + private boolean mQuitting; // Indicates whether next() is blocked waiting in pollOnce() with a non-zero timeout. private boolean mBlocked; @@ -115,6 +115,8 @@ public final class MessageQueue { } } + // Disposes of the underlying message queue. + // Must only be called on the looper thread or the finalizer. private void dispose() { if (mPtr != 0) { nativeDestroy(mPtr); @@ -125,11 +127,13 @@ public final class MessageQueue { Message next() { int pendingIdleHandlerCount = -1; // -1 only during first iteration int nextPollTimeoutMillis = 0; - for (;;) { if (nextPollTimeoutMillis != 0) { Binder.flushPendingCommands(); } + + // We can assume mPtr != 0 because the loop is obviously still running. + // The looper will not call this method after the loop quits. nativePollOnce(mPtr, nextPollTimeoutMillis); synchronized (this) { @@ -167,7 +171,7 @@ public final class MessageQueue { } // Process the quit message now that all pending messages have been handled. - if (mQuiting) { + if (mQuitting) { dispose(); return null; } @@ -226,18 +230,20 @@ public final class MessageQueue { } synchronized (this) { - if (mQuiting) { + if (mQuitting) { return; } - mQuiting = true; + mQuitting = true; if (safe) { removeAllFutureMessagesLocked(); } else { removeAllMessagesLocked(); } + + // We can assume mPtr != 0 because mQuitting was previously false. + nativeWake(mPtr); } - nativeWake(mPtr); } int enqueueSyncBarrier(long when) { @@ -270,7 +276,6 @@ public final class MessageQueue { void removeSyncBarrier(int token) { // Remove a sync barrier token from the queue. // If the queue is no longer stalled by a barrier then wake it. - final boolean needWake; synchronized (this) { Message prev = null; Message p = mMessages; @@ -282,6 +287,7 @@ public final class MessageQueue { throw new IllegalStateException("The specified message queue synchronization " + " barrier token has not been posted or has already been removed."); } + final boolean needWake; if (prev != null) { prev.next = p.next; needWake = false; @@ -290,9 +296,12 @@ public final class MessageQueue { needWake = mMessages == null || mMessages.target != null; } p.recycle(); - } - if (needWake) { - nativeWake(mPtr); + + // If the loop is quitting then it is already awake. + // We can assume mPtr != 0 when mQuitting is false. + if (needWake && !mQuitting) { + nativeWake(mPtr); + } } } @@ -304,9 +313,8 @@ public final class MessageQueue { throw new AndroidRuntimeException("Message must have a target."); } - boolean needWake; synchronized (this) { - if (mQuiting) { + if (mQuitting) { RuntimeException e = new RuntimeException( msg.target + " sending message to a Handler on a dead thread"); Log.w("MessageQueue", e.getMessage(), e); @@ -315,6 +323,7 @@ public final class MessageQueue { msg.when = when; Message p = mMessages; + boolean needWake; if (p == null || when == 0 || when < p.when) { // New head, wake up the event queue if blocked. msg.next = p; @@ -339,9 +348,11 @@ public final class MessageQueue { msg.next = p; // invariant: p == prev.next prev.next = msg; } - } - if (needWake) { - nativeWake(mPtr); + + // We can assume mPtr != 0 because mQuitting is false. + if (needWake) { + nativeWake(mPtr); + } } return true; } @@ -381,7 +392,11 @@ public final class MessageQueue { } boolean isIdling() { - return nativeIsIdling(mPtr); + synchronized (this) { + // If the loop is quitting then it must not be idling. + // We can assume mPtr != 0 when mQuitting is false. + return !mQuitting && nativeIsIdling(mPtr); + } } void removeMessages(Handler h, int what, Object object) { diff --git a/core/java/android/speech/hotword/HotwordRecognitionListener.java b/core/java/android/speech/hotword/HotwordRecognitionListener.java index 8e62373..8a32654 100644 --- a/core/java/android/speech/hotword/HotwordRecognitionListener.java +++ b/core/java/android/speech/hotword/HotwordRecognitionListener.java @@ -16,7 +16,6 @@ package android.speech.hotword; -import android.app.PendingIntent; import android.content.Intent; import android.os.Bundle; @@ -47,9 +46,10 @@ public interface HotwordRecognitionListener { /** * Called back when hotword is detected. - * The action tells the client what action to take, post hotword-detection. + * + * @param intent for the activity to launch, post hotword detection. */ - void onHotwordRecognized(PendingIntent intent); + void onHotwordRecognized(Intent intent); /** * Called when the HotwordRecognitionService encounters an error. diff --git a/core/java/android/speech/hotword/HotwordRecognitionService.java b/core/java/android/speech/hotword/HotwordRecognitionService.java index 521d06d..7a26e0c 100644 --- a/core/java/android/speech/hotword/HotwordRecognitionService.java +++ b/core/java/android/speech/hotword/HotwordRecognitionService.java @@ -21,6 +21,7 @@ import android.annotation.SdkConstant.SdkConstantType; import android.app.PendingIntent; import android.app.Service; import android.content.Intent; +import android.content.pm.PackageManager; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; @@ -31,7 +32,6 @@ import android.util.Log; /** * This class provides a base class for hotword detection service implementations. * This class should be extended only if you wish to implement a new hotword recognizer. - * {@hide} */ public abstract class HotwordRecognitionService extends Service { /** @@ -45,8 +45,7 @@ public abstract class HotwordRecognitionService extends Service { private static final String TAG = "HotwordRecognitionService"; /** Debugging flag */ - // TODO: Turn off. - private static final boolean DBG = true; + private static final boolean DBG = false; private static final int MSG_START_RECOGNITION = 1; private static final int MSG_STOP_RECOGNITION = 2; @@ -160,7 +159,7 @@ public abstract class HotwordRecognitionService extends Service { public void startHotwordRecognition(IHotwordRecognitionListener listener) { if (DBG) Log.d(TAG, "startRecognition called by: " + listener.asBinder()); - if (mInternalService != null) { + if (mInternalService != null && mInternalService.checkPermissions(listener)) { mInternalService.mHandler.sendMessage( Message.obtain(mInternalService.mHandler, MSG_START_RECOGNITION, listener)); } @@ -168,7 +167,7 @@ public abstract class HotwordRecognitionService extends Service { public void stopHotwordRecognition(IHotwordRecognitionListener listener) { if (DBG) Log.d(TAG, "stopRecognition called by: " + listener.asBinder()); - if (mInternalService != null) { + if (mInternalService != null && mInternalService.checkPermissions(listener)) { mInternalService.mHandler.sendMessage( Message.obtain(mInternalService.mHandler, MSG_STOP_RECOGNITION, listener)); } @@ -180,6 +179,27 @@ public abstract class HotwordRecognitionService extends Service { } /** + * Checks whether the caller has sufficient permissions + * + * @param listener to send the error message to in case of error. + * @return {@code true} if the caller has enough permissions, {@code false} otherwise. + */ + private boolean checkPermissions(IHotwordRecognitionListener listener) { + if (DBG) Log.d(TAG, "checkPermissions"); + if (checkCallingOrSelfPermission(android.Manifest.permission.HOTWORD_RECOGNITION) == + PackageManager.PERMISSION_GRANTED) { + return true; + } + try { + Log.e(TAG, "Recognition service called without HOTWORD_RECOGNITION permissions"); + listener.onHotwordError(HotwordRecognizer.ERROR_FAILED); + } catch (RemoteException e) { + Log.e(TAG, "onHotwordError(ERROR_FAILED) message failed", e); + } + return false; + } + + /** * This class acts passes on the callbacks received from the Hotword service * to the listener. */ @@ -207,7 +227,7 @@ public abstract class HotwordRecognitionService extends Service { /** * Called on an event of interest to the client. * - * @param eventType the event type. Event types are defined in {@link HotwordRecognizer}. + * @param eventType the event type. * @param eventBundle a Bundle containing the hotword event(s). */ public void onHotwordEvent(int eventType, Bundle eventBundle) throws RemoteException { @@ -216,17 +236,17 @@ public abstract class HotwordRecognitionService extends Service { /** * Called back when hotword is detected. - * The action tells the client what action to take, post hotword-detection. + * + * @param activityIntent for the activity to launch, post hotword detection. */ - public void onHotwordRecognized(PendingIntent intent) throws RemoteException { - mListener.onHotwordRecognized(intent); + public void onHotwordRecognized(Intent activityIntent) throws RemoteException { + mListener.onHotwordRecognized(activityIntent); } /** * Called when the HotwordRecognitionService encounters an error. * * @param errorCode the error code describing the error that was encountered. - * Error codes are defined in {@link HotwordRecognizer}. */ public void onError(int errorCode) throws RemoteException { mListener.onHotwordError(errorCode); diff --git a/core/java/android/speech/hotword/HotwordRecognizer.java b/core/java/android/speech/hotword/HotwordRecognizer.java index 82cec10..939c11d 100644 --- a/core/java/android/speech/hotword/HotwordRecognizer.java +++ b/core/java/android/speech/hotword/HotwordRecognizer.java @@ -45,8 +45,7 @@ import java.util.Queue; */ public class HotwordRecognizer { /** DEBUG value to enable verbose debug prints */ - // TODO: Turn off. - private final static boolean DBG = true; + private final static boolean DBG = false; /** Log messages identifier */ private static final String TAG = "HotwordRecognizer"; @@ -81,6 +80,9 @@ public class HotwordRecognizer { /** The service received concurrent start calls */ public static final int ERROR_SERVICE_ALREADY_STARTED = 6; + /** Hotword recognition is unavailable on the device */ + public static final int ERROR_UNAVAILABLE = 7; + /** action codes */ private static final int MSG_START = 1; private static final int MSG_STOP = 2; @@ -354,7 +356,7 @@ public class HotwordRecognizer { mInternalListener.onHotwordEvent(msg.arg1, (Bundle) msg.obj); break; case MSG_ON_RECOGNIZED: - mInternalListener.onHotwordRecognized((PendingIntent) msg.obj); + mInternalListener.onHotwordRecognized((Intent) msg.obj); break; case MSG_ON_ERROR: mInternalListener.onHotwordError((Integer) msg.obj); @@ -380,8 +382,8 @@ public class HotwordRecognizer { } @Override - public void onHotwordRecognized(PendingIntent intent) throws RemoteException { - Message.obtain(mInternalHandler, MSG_ON_RECOGNIZED, intent) + public void onHotwordRecognized(Intent activityIntent) throws RemoteException { + Message.obtain(mInternalHandler, MSG_ON_RECOGNIZED, activityIntent) .sendToTarget(); } diff --git a/core/java/android/speech/hotword/IHotwordRecognitionListener.aidl b/core/java/android/speech/hotword/IHotwordRecognitionListener.aidl index 49c5233..4ea2e8e 100644 --- a/core/java/android/speech/hotword/IHotwordRecognitionListener.aidl +++ b/core/java/android/speech/hotword/IHotwordRecognitionListener.aidl @@ -16,7 +16,7 @@ package android.speech.hotword; -import android.app.PendingIntent; +import android.content.Intent; import android.os.Bundle; /** @@ -47,9 +47,10 @@ oneway interface IHotwordRecognitionListener { /** * Called back when hotword is detected. - * The action tells the client what action to take, post hotword-detection. + * + * @param intent for the activity to launch, post hotword detection. */ - void onHotwordRecognized(in PendingIntent intent); + void onHotwordRecognized(in Intent intent); /** * Called when the HotwordRecognitionService encounters an error. diff --git a/core/java/android/view/GestureDetector.java b/core/java/android/view/GestureDetector.java index 6bbfe0f..2351548 100644 --- a/core/java/android/view/GestureDetector.java +++ b/core/java/android/view/GestureDetector.java @@ -17,7 +17,6 @@ package android.view; import android.content.Context; -import android.os.Build; import android.os.Handler; import android.os.Message; @@ -202,6 +201,7 @@ public class GestureDetector { private static final int LONGPRESS_TIMEOUT = ViewConfiguration.getLongPressTimeout(); private static final int TAP_TIMEOUT = ViewConfiguration.getTapTimeout(); private static final int DOUBLE_TAP_TIMEOUT = ViewConfiguration.getDoubleTapTimeout(); + private static final int DOUBLE_TAP_MIN_TIME = ViewConfiguration.getDoubleTapMinTime(); // constants for Message.what used by GestureHandler below private static final int SHOW_PRESS = 1; @@ -673,7 +673,8 @@ public class GestureDetector { return false; } - if (secondDown.getEventTime() - firstUp.getEventTime() > DOUBLE_TAP_TIMEOUT) { + final long deltaTime = secondDown.getEventTime() - firstUp.getEventTime(); + if (deltaTime > DOUBLE_TAP_TIMEOUT || deltaTime < DOUBLE_TAP_MIN_TIME) { return false; } diff --git a/core/java/android/view/ViewConfiguration.java b/core/java/android/view/ViewConfiguration.java index f8cb9c0..c3f064f 100644 --- a/core/java/android/view/ViewConfiguration.java +++ b/core/java/android/view/ViewConfiguration.java @@ -97,6 +97,13 @@ public class ViewConfiguration { private static final int DOUBLE_TAP_TIMEOUT = 300; /** + * Defines the minimum duration in milliseconds between the first tap's up event and + * the second tap's down event for an interaction to be considered a + * double-tap. + */ + private static final int DOUBLE_TAP_MIN_TIME = 40; + + /** * Defines the maximum duration in milliseconds between a touch pad * touch and release for a given touch to be considered a tap (click) as * opposed to a hover movement gesture. @@ -436,6 +443,17 @@ public class ViewConfiguration { } /** + * @return the minimum duration in milliseconds between the first tap's + * up event and the second tap's down event for an interaction to be considered a + * double-tap. + * + * @hide + */ + public static int getDoubleTapMinTime() { + return DOUBLE_TAP_MIN_TIME; + } + + /** * @return the maximum duration in milliseconds between a touch pad * touch and release for a given touch to be considered a tap (click) as * opposed to a hover movement gesture. diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 0f9a2ac..c7d61eb 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -81,6 +81,7 @@ import java.io.OutputStream; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.HashSet; +import java.util.Locale; /** * The top of a view hierarchy, implementing the needed protocol between View @@ -228,7 +229,8 @@ public final class ViewRootImpl implements ViewParent, InputStage mFirstInputStage; InputStage mFirstPostImeInputStage; - SyntheticInputStage mSyntheticInputStage; + + boolean mFlipControllerFallbackKeys; boolean mWindowAttributesChanged = false; int mWindowAttributesChangesFlag = 0; @@ -366,6 +368,8 @@ public final class ViewRootImpl implements ViewParent, mNoncompatDensity = context.getResources().getDisplayMetrics().noncompatDensityDpi; mFallbackEventHandler = PolicyManager.makeNewFallbackEventHandler(context); mChoreographer = Choreographer.getInstance(); + mFlipControllerFallbackKeys = + context.getResources().getBoolean(R.bool.flip_controller_fallback_keys); PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); mAttachInfo.mScreenOn = powerManager.isScreenOn(); @@ -590,8 +594,8 @@ public final class ViewRootImpl implements ViewParent, // Set up the input pipeline. CharSequence counterSuffix = attrs.getTitle(); - mSyntheticInputStage = new SyntheticInputStage(); - InputStage viewPostImeStage = new ViewPostImeInputStage(mSyntheticInputStage); + InputStage syntheticInputStage = new SyntheticInputStage(); + InputStage viewPostImeStage = new ViewPostImeInputStage(syntheticInputStage); InputStage nativePostImeStage = new NativePostImeInputStage(viewPostImeStage, "aq:native-post-ime:" + counterSuffix); InputStage earlyPostImeStage = new EarlyPostImeInputStage(nativePostImeStage); @@ -2873,8 +2877,11 @@ public final class ViewRootImpl implements ViewParent, mView.dispatchConfigurationChanged(config); } } + + mFlipControllerFallbackKeys = + mContext.getResources().getBoolean(R.bool.flip_controller_fallback_keys); } - + /** * Return true if child is an ancestor of parent, (or equal to the parent). */ @@ -3774,9 +3781,6 @@ public final class ViewRootImpl implements ViewParent, private int processKeyEvent(QueuedInputEvent q) { final KeyEvent event = (KeyEvent)q.mEvent; - // The synthetic stage occasionally needs to know about keys in order to debounce taps - mSyntheticInputStage.notifyKeyEvent(event); - // Deliver the key to the view hierarchy. if (mView.dispatchKeyEvent(event)) { return FINISH_HANDLED; @@ -3904,6 +3908,7 @@ public final class ViewRootImpl implements ViewParent, private final SyntheticJoystickHandler mJoystick = new SyntheticJoystickHandler(); private final SyntheticTouchNavigationHandler mTouchNavigation = new SyntheticTouchNavigationHandler(); + private final SyntheticKeyHandler mKeys = new SyntheticKeyHandler(); public SyntheticInputStage() { super(null); @@ -3926,7 +3931,12 @@ public final class ViewRootImpl implements ViewParent, mTouchNavigation.process(event); return FINISH_HANDLED; } + } else if (q.mEvent instanceof KeyEvent) { + if (mKeys.process((KeyEvent) q.mEvent)) { + return FINISH_HANDLED; + } } + return FORWARD; } @@ -3949,10 +3959,6 @@ public final class ViewRootImpl implements ViewParent, } super.onDeliverToNext(q); } - - public void notifyKeyEvent(KeyEvent e) { - mTouchNavigation.notifyKeyEvent(e); - } } /** @@ -4380,15 +4386,6 @@ public final class ViewRootImpl implements ViewParent, /* TODO: These constants should eventually be moved to ViewConfiguration. */ - // Tap timeout in milliseconds. - private static final int TAP_TIMEOUT = 250; - - // Debounce timeout for touch nav devices with a button under their pad, in milliseconds - private static final int DEBOUNCE_TIME = 250; - - // The maximum distance traveled for a gesture to be considered a tap in millimeters. - private static final int TAP_SLOP_MILLIMETERS = 5; - // The nominal distance traveled to move by one unit. private static final int TICK_DISTANCE_MILLIMETERS = 12; @@ -4416,13 +4413,6 @@ public final class ViewRootImpl implements ViewParent, /* Configuration for the current input device. */ - // The tap timeout and scaled slop. - private int mConfigTapTimeout; - private float mConfigTapSlop; - - // Amount of time to wait between button presses and tap generation for debouncing - private int mConfigDebounceTime; - // The scaled tick distance. A movement of this amount should generally translate // into a single dpad event in a given direction. private float mConfigTickDistance; @@ -4471,8 +4461,6 @@ public final class ViewRootImpl implements ViewParent, // The last time a confirm key was pressed on the touch nav device private long mLastConfirmKeyTime = Long.MAX_VALUE; - private boolean mHasButtonUnderPad; - public SyntheticTouchNavigationHandler() { super(true); } @@ -4509,21 +4497,15 @@ public final class ViewRootImpl implements ViewParent, float nominalRes = (xRes + yRes) * 0.5f; // Precompute all of the configuration thresholds we will need. - mConfigTapTimeout = TAP_TIMEOUT; - mConfigTapSlop = TAP_SLOP_MILLIMETERS * nominalRes; mConfigTickDistance = TICK_DISTANCE_MILLIMETERS * nominalRes; mConfigMinFlingVelocity = MIN_FLING_VELOCITY_TICKS_PER_SECOND * mConfigTickDistance; mConfigMaxFlingVelocity = MAX_FLING_VELOCITY_TICKS_PER_SECOND * mConfigTickDistance; - mConfigDebounceTime = DEBOUNCE_TIME; - mHasButtonUnderPad = device.hasButtonUnderPad(); if (LOCAL_DEBUG) { Log.d(LOCAL_TAG, "Configured device " + mCurrentDeviceId + " (" + Integer.toHexString(mCurrentSource) + "): " - + "mConfigTapTimeout=" + mConfigTapTimeout - + ", mConfigTapSlop=" + mConfigTapSlop + ", mConfigTickDistance=" + mConfigTickDistance + ", mConfigMinFlingVelocity=" + mConfigMinFlingVelocity + ", mConfigMaxFlingVelocity=" + mConfigMaxFlingVelocity); @@ -4585,18 +4567,7 @@ public final class ViewRootImpl implements ViewParent, // Detect taps and flings. if (action == MotionEvent.ACTION_UP) { - if (!mConsumedMovement - && Math.hypot(mLastX - mStartX, mLastY - mStartY) < mConfigTapSlop - && time <= mStartTime + mConfigTapTimeout) { - if (!mHasButtonUnderPad || - time >= mLastConfirmKeyTime + mConfigDebounceTime) { - // It's a tap! - finishKeys(time); - sendKeyDownOrRepeat(time, KeyEvent.KEYCODE_DPAD_CENTER, metaState); - sendKeyUp(time); - } - } else if (mConsumedMovement - && mPendingKeyCode != KeyEvent.KEYCODE_UNKNOWN) { + if (mConsumedMovement && mPendingKeyCode != KeyEvent.KEYCODE_UNKNOWN) { // It might be a fling. mVelocityTracker.computeCurrentVelocity(1000, mConfigMaxFlingVelocity); final float vx = mVelocityTracker.getXVelocity(mActivePointerId); @@ -4627,13 +4598,6 @@ public final class ViewRootImpl implements ViewParent, } } - public void notifyKeyEvent(KeyEvent e) { - final int keyCode = e.getKeyCode(); - if (KeyEvent.isConfirmKey(e.getKeyCode())) { - mLastConfirmKeyTime = e.getDownTime(); - } - } - private void finishKeys(long time) { cancelFling(); sendKeyUp(time); @@ -4802,6 +4766,63 @@ public final class ViewRootImpl implements ViewParent, }; } + final class SyntheticKeyHandler { + + public boolean process(KeyEvent event) { + // In some locales (like Japan) controllers use B for confirm and A for back, rather + // than vice versa, so we need to special case this here since the input system itself + // is not locale-aware. + int keyCode; + switch(event.getKeyCode()) { + case KeyEvent.KEYCODE_BUTTON_A: + case KeyEvent.KEYCODE_BUTTON_C: + case KeyEvent.KEYCODE_BUTTON_X: + case KeyEvent.KEYCODE_BUTTON_Z: + keyCode = mFlipControllerFallbackKeys ? + KeyEvent.KEYCODE_BACK : KeyEvent.KEYCODE_DPAD_CENTER; + break; + case KeyEvent.KEYCODE_BUTTON_B: + case KeyEvent.KEYCODE_BUTTON_Y: + keyCode = mFlipControllerFallbackKeys ? + KeyEvent.KEYCODE_DPAD_CENTER : KeyEvent.KEYCODE_BACK; + break; + case KeyEvent.KEYCODE_BUTTON_THUMBL: + case KeyEvent.KEYCODE_BUTTON_THUMBR: + case KeyEvent.KEYCODE_BUTTON_START: + case KeyEvent.KEYCODE_BUTTON_1: + case KeyEvent.KEYCODE_BUTTON_2: + case KeyEvent.KEYCODE_BUTTON_3: + case KeyEvent.KEYCODE_BUTTON_4: + case KeyEvent.KEYCODE_BUTTON_5: + case KeyEvent.KEYCODE_BUTTON_6: + case KeyEvent.KEYCODE_BUTTON_7: + case KeyEvent.KEYCODE_BUTTON_8: + case KeyEvent.KEYCODE_BUTTON_9: + case KeyEvent.KEYCODE_BUTTON_10: + case KeyEvent.KEYCODE_BUTTON_11: + case KeyEvent.KEYCODE_BUTTON_12: + case KeyEvent.KEYCODE_BUTTON_13: + case KeyEvent.KEYCODE_BUTTON_14: + case KeyEvent.KEYCODE_BUTTON_15: + case KeyEvent.KEYCODE_BUTTON_16: + keyCode = KeyEvent.KEYCODE_DPAD_CENTER; + break; + case KeyEvent.KEYCODE_BUTTON_SELECT: + case KeyEvent.KEYCODE_BUTTON_MODE: + keyCode = KeyEvent.KEYCODE_MENU; + default: + return false; + } + + enqueueInputEvent(new KeyEvent(event.getDownTime(), event.getEventTime(), + event.getAction(), keyCode, event.getRepeatCount(), event.getMetaState(), + event.getScanCode(), event.getFlags() | KeyEvent.FLAG_FALLBACK, + event.getSource())); + return true; + } + + } + /** * Returns true if the key is used for keyboard navigation. * @param keyEvent The key event. diff --git a/core/java/com/android/internal/app/IAppOpsService.aidl b/core/java/com/android/internal/app/IAppOpsService.aidl index 9056641..16c41f3 100644 --- a/core/java/com/android/internal/app/IAppOpsService.aidl +++ b/core/java/com/android/internal/app/IAppOpsService.aidl @@ -23,7 +23,6 @@ interface IAppOpsService { // These first methods are also called by native code, so must // be kept in sync with frameworks/native/include/binder/IAppOpsService.h int checkOperation(int code, int uid, String packageName); - int checkPackage(int uid, String packageName); int noteOperation(int code, int uid, String packageName); int startOperation(IBinder token, int code, int uid, String packageName); void finishOperation(IBinder token, int code, int uid, String packageName); @@ -32,6 +31,7 @@ interface IAppOpsService { IBinder getToken(IBinder clientToken); // Remaining methods are only used in Java. + int checkPackage(int uid, String packageName); List<AppOpsManager.PackageOps> getPackagesForOps(in int[] ops); List<AppOpsManager.PackageOps> getOpsForPackage(int uid, String packageName, in int[] ops); void setMode(int code, int uid, String packageName, int mode); diff --git a/core/jni/android_os_Debug.cpp b/core/jni/android_os_Debug.cpp index f5eb389..dd07c4f 100644 --- a/core/jni/android_os_Debug.cpp +++ b/core/jni/android_os_Debug.cpp @@ -56,6 +56,7 @@ enum { HEAP_OAT, HEAP_ART, HEAP_UNKNOWN_MAP, + HEAP_GPU, HEAP_DALVIK_NORMAL, HEAP_DALVIK_LARGE, @@ -64,7 +65,7 @@ enum { HEAP_DALVIK_CODE_CACHE, _NUM_HEAP, - _NUM_EXCLUSIVE_HEAP = HEAP_UNKNOWN_MAP+1, + _NUM_EXCLUSIVE_HEAP = HEAP_GPU+1, _NUM_CORE_HEAP = HEAP_NATIVE+1 }; @@ -137,6 +138,72 @@ static jlong android_os_Debug_getNativeHeapFreeSize(JNIEnv *env, jobject clazz) #endif } +// XXX Qualcom-specific! +static jlong read_gpu_mem(int pid) +{ + char line[1024]; + jlong uss = 0; + unsigned temp; + + char tmp[128]; + FILE *fp; + + sprintf(tmp, "/d/kgsl/proc/%d/mem", pid); + fp = fopen(tmp, "r"); + if (fp == 0) { + //ALOGI("Unable to open: %s", tmp); + return 0; + } + + while (true) { + if (fgets(line, 1024, fp) == NULL) { + break; + } + + //ALOGI("Read: %s", line); + + // Format is: + // gpuaddr useraddr size id flags type usage sglen + // 54676000 54676000 4096 1 ----p gpumem arraybuffer 1 + // + // If useraddr is 0, this is gpu mem not otherwise accounted + // against the process. + + // Make sure line is long enough. + int i = 0; + while (i < 9) { + if (line[i] == 0) { + break; + } + i++; + } + if (i < 9) { + //ALOGI("Early line term!"); + continue; + } + + // Look to see if useraddr is 00000000. + while (i < 17) { + if (line[i] != '0') { + break; + } + i++; + } + if (i < 17) { + //ALOGI("useraddr not 0!"); + continue; + } + + uss += atoi(line + i); + //ALOGI("Uss now: %ld", uss); + } + + fclose(fp); + + // Convert from bytes to KB. + return uss / 1024; +} + static void read_mapinfo(FILE *fp, stats_t* stats) { char line[1024]; @@ -340,6 +407,10 @@ static void android_os_Debug_getDirtyPagesPid(JNIEnv *env, jobject clazz, load_maps(pid, stats); + jlong gpu = read_gpu_mem(pid); + stats[HEAP_GPU].pss += gpu; + stats[HEAP_GPU].privateDirty += gpu; + for (int i=_NUM_CORE_HEAP; i<_NUM_EXCLUSIVE_HEAP; i++) { stats[HEAP_UNKNOWN].pss += stats[i].pss; stats[HEAP_UNKNOWN].swappablePss += stats[i].swappablePss; @@ -394,34 +465,37 @@ static jlong android_os_Debug_getPssPid(JNIEnv *env, jobject clazz, jint pid, jl char tmp[128]; FILE *fp; + pss = uss = read_gpu_mem(pid); + sprintf(tmp, "/proc/%d/smaps", pid); fp = fopen(tmp, "r"); - if (fp == 0) return 0; - while (true) { - if (fgets(line, 1024, fp) == NULL) { - break; - } + if (fp != 0) { + while (true) { + if (fgets(line, 1024, fp) == NULL) { + break; + } - if (line[0] == 'P') { - if (strncmp(line, "Pss:", 4) == 0) { - char* c = line + 4; - while (*c != 0 && (*c < '0' || *c > '9')) { - c++; - } - pss += atoi(c); - } else if (strncmp(line, "Private_Clean:", 14) - || strncmp(line, "Private_Dirty:", 14)) { - char* c = line + 14; - while (*c != 0 && (*c < '0' || *c > '9')) { - c++; + if (line[0] == 'P') { + if (strncmp(line, "Pss:", 4) == 0) { + char* c = line + 4; + while (*c != 0 && (*c < '0' || *c > '9')) { + c++; + } + pss += atoi(c); + } else if (strncmp(line, "Private_Clean:", 14) + || strncmp(line, "Private_Dirty:", 14)) { + char* c = line + 14; + while (*c != 0 && (*c < '0' || *c > '9')) { + c++; + } + uss += atoi(c); } - uss += atoi(c); } } - } - fclose(fp); + fclose(fp); + } if (outUss != NULL) { if (env->GetArrayLength(outUss) >= 1) { diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 83a0c56..2e47928 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -2444,6 +2444,13 @@ android:description="@string/permdesc_accessNetworkConditions" android:protectionLevel="signature|system" /> + <!-- Allows an application to request HotwordRecognition. + @hide This is not a third-party API (intended for system apps). --> + <permission android:name="android.permission.HOTWORD_RECOGNITION" + android:label="@string/permlab_hotwordRecognition" + android:description="@string/permdesc_hotwordRecognition" + android:protectionLevel="signature|system" /> + <!-- The system process is explicitly the only one allowed to launch the confirmation UI for full backup/restore --> <uses-permission android:name="android.permission.CONFIRM_FULL_BACKUP"/> diff --git a/core/res/res/values-ja/bools.xml b/core/res/res/values-ja/bools.xml new file mode 100644 index 0000000..59cf744 --- /dev/null +++ b/core/res/res/values-ja/bools.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2013 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. +--> + +<resources> + <bool name="flip_controller_fallback_keys">true</bool> +</resources> + diff --git a/core/res/res/values-mcc204-mnc04/config.xml b/core/res/res/values-mcc204-mnc04/config.xml new file mode 100644 index 0000000..7a48342 --- /dev/null +++ b/core/res/res/values-mcc204-mnc04/config.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2013, 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 my 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. +*/ +--> + +<!-- These resources are around just to allow their values to be customized + for different hardware and product builds. --> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + + <!-- Configure mobile network MTU. Carrier specific value is set here. + --> + <integer name="config_mobile_mtu">1358</integer> + +</resources> diff --git a/core/res/res/values-mcc302-mnc370/config.xml b/core/res/res/values-mcc302-mnc370/config.xml index 3d2ea75..4fb2232 100644 --- a/core/res/res/values-mcc302-mnc370/config.xml +++ b/core/res/res/values-mcc302-mnc370/config.xml @@ -36,4 +36,8 @@ note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" --> <string translatable="false" name="config_tether_apndata">Fido LTE Tethering,ltedata.apn,,,,,,,,,302,370,,DUN</string> + <!-- Configure mobile network MTU. Carrier specific value is set here. + --> + <integer name="config_mobile_mtu">1410</integer> + </resources> diff --git a/core/res/res/values-mcc302-mnc610/config.xml b/core/res/res/values-mcc302-mnc610/config.xml index 706570c..638aa92 100644 --- a/core/res/res/values-mcc302-mnc610/config.xml +++ b/core/res/res/values-mcc302-mnc610/config.xml @@ -22,4 +22,9 @@ <string-array translatable="false" name="config_operatorConsideredNonRoaming"> <item>302</item> </string-array> + + <!-- Configure mobile network MTU. Carrier specific value is set here. + --> + <integer name="config_mobile_mtu">1358</integer> + </resources> diff --git a/core/res/res/values-mcc302-mnc660/config.xml b/core/res/res/values-mcc302-mnc660/config.xml index 37853cf..76f7968 100644 --- a/core/res/res/values-mcc302-mnc660/config.xml +++ b/core/res/res/values-mcc302-mnc660/config.xml @@ -35,4 +35,9 @@ "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type" note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" --> <string translatable="false" name="config_tether_apndata">MTS -Tethering,internet.mts,,,,,,,,,302,660,,DUN</string> + + <!-- Configure mobile network MTU. Carrier specific value is set here. + --> + <integer name="config_mobile_mtu">1430</integer> + </resources> diff --git a/core/res/res/values-mcc302-mnc720/config.xml b/core/res/res/values-mcc302-mnc720/config.xml index 680f1a3..4eceffc 100644 --- a/core/res/res/values-mcc302-mnc720/config.xml +++ b/core/res/res/values-mcc302-mnc720/config.xml @@ -36,4 +36,8 @@ note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" --> <string translatable="false" name="config_tether_apndata">Rogers LTE Tethering,ltedata.apn,,,,,,,,,302,720,,DUN</string> + <!-- Configure mobile network MTU. Carrier specific value is set here. + --> + <integer name="config_mobile_mtu">1430</integer> + </resources> diff --git a/core/res/res/values-mcc302-mnc780/config.xml b/core/res/res/values-mcc302-mnc780/config.xml index b03d14e..cd40191 100644 --- a/core/res/res/values-mcc302-mnc780/config.xml +++ b/core/res/res/values-mcc302-mnc780/config.xml @@ -41,4 +41,9 @@ <string-array translatable="false" name="config_operatorConsideredNonRoaming"> <item>302</item> </string-array> + + <!-- Configure mobile network MTU. Carrier specific value is set here. + --> + <integer name="config_mobile_mtu">1358</integer> + </resources> diff --git a/core/res/res/values-mcc310-mnc120/config.xml b/core/res/res/values-mcc310-mnc120/config.xml new file mode 100644 index 0000000..62001d9 --- /dev/null +++ b/core/res/res/values-mcc310-mnc120/config.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2013, 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 my 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. +*/ +--> + +<!-- These resources are around just to allow their values to be customized + for different hardware and product builds. --> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + + <!-- Configure mobile network MTU. Carrier specific value is set here. + --> + <integer name="config_mobile_mtu">1422</integer> + +</resources> diff --git a/core/res/res/values-mcc310-mnc260/config.xml b/core/res/res/values-mcc310-mnc260/config.xml index 56a5d4e..886ecbe 100644 --- a/core/res/res/values-mcc310-mnc260/config.xml +++ b/core/res/res/values-mcc310-mnc260/config.xml @@ -37,4 +37,8 @@ note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" --> <string translatable="false" name="config_tether_apndata">T-Mobile Tethering,pcweb.tmobile.com,,,,,,,,,310,260,,DUN</string> + <!-- Configure mobile network MTU. Carrier specific value is set here. + --> + <integer name="config_mobile_mtu">1440</integer> + </resources> diff --git a/core/res/res/values-mcc310-mnc410/config.xml b/core/res/res/values-mcc310-mnc410/config.xml new file mode 100644 index 0000000..73aa1ce --- /dev/null +++ b/core/res/res/values-mcc310-mnc410/config.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2013, 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 my 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. +*/ +--> + +<!-- These resources are around just to allow their values to be customized + for different hardware and product builds. --> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + + <!-- Configure mobile network MTU. Carrier specific value is set here. + --> + <integer name="config_mobile_mtu">1410</integer> + +</resources> diff --git a/core/res/res/values-mcc440-mnc20/config.xml b/core/res/res/values-mcc440-mnc20/config.xml new file mode 100644 index 0000000..ba709fa --- /dev/null +++ b/core/res/res/values-mcc440-mnc20/config.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2013, 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 my 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. +*/ +--> + +<!-- These resources are around just to allow their values to be customized + for different hardware and product builds. --> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + + <!-- Configure mobile network MTU. Carrier specific value is set here. + --> + <integer name="config_mobile_mtu">1340</integer> + +</resources> diff --git a/core/res/res/values-mcc440-mnc50/config.xml b/core/res/res/values-mcc440-mnc50/config.xml new file mode 100644 index 0000000..fa5cba4 --- /dev/null +++ b/core/res/res/values-mcc440-mnc50/config.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2013, 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 my 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. +*/ +--> + +<!-- These resources are around just to allow their values to be customized + for different hardware and product builds. --> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + + <!-- Configure mobile network MTU. Carrier specific value is set here. + --> + <integer name="config_mobile_mtu">1420</integer> + +</resources> diff --git a/core/res/res/values-mcc440-mnc54/config.xml b/core/res/res/values-mcc440-mnc54/config.xml new file mode 100644 index 0000000..fa5cba4 --- /dev/null +++ b/core/res/res/values-mcc440-mnc54/config.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2013, 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 my 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. +*/ +--> + +<!-- These resources are around just to allow their values to be customized + for different hardware and product builds. --> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + + <!-- Configure mobile network MTU. Carrier specific value is set here. + --> + <integer name="config_mobile_mtu">1420</integer> + +</resources> diff --git a/core/res/res/values-mcc450-mnc05/config.xml b/core/res/res/values-mcc450-mnc05/config.xml new file mode 100644 index 0000000..d602c9f --- /dev/null +++ b/core/res/res/values-mcc450-mnc05/config.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2013, 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 my 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. +*/ +--> + +<!-- These resources are around just to allow their values to be customized + for different hardware and product builds. --> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + + <!-- Configure mobile network MTU. Carrier specific value is set here. + --> + <integer name="config_mobile_mtu">1440</integer> + +</resources> diff --git a/core/res/res/values-mcc450-mnc06/config.xml b/core/res/res/values-mcc450-mnc06/config.xml new file mode 100644 index 0000000..63f9823 --- /dev/null +++ b/core/res/res/values-mcc450-mnc06/config.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2013, 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 my 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. +*/ +--> + +<!-- These resources are around just to allow their values to be customized + for different hardware and product builds. --> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + + <!-- Configure mobile network MTU. Carrier specific value is set here. + --> + <integer name="config_mobile_mtu">1428</integer> + +</resources> diff --git a/core/res/res/values-mcc450-mnc08/config.xml b/core/res/res/values-mcc450-mnc08/config.xml new file mode 100644 index 0000000..950c62b --- /dev/null +++ b/core/res/res/values-mcc450-mnc08/config.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2013, 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 my 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. +*/ +--> + +<!-- These resources are around just to allow their values to be customized + for different hardware and product builds. --> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + + <!-- Configure mobile network MTU. Carrier specific value is set here. + --> + <integer name="config_mobile_mtu">1450</integer> + +</resources> diff --git a/core/res/res/values-mcc505-mnc01/config.xml b/core/res/res/values-mcc505-mnc01/config.xml index f9d9ac7..7331c50 100644 --- a/core/res/res/values-mcc505-mnc01/config.xml +++ b/core/res/res/values-mcc505-mnc01/config.xml @@ -37,4 +37,8 @@ note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" --> <string translatable="false" name="config_tether_apndata">Telstra Tethering,telstra.internet,,,,,,,,,505,01,,DUN</string> + <!-- Configure mobile network MTU. Carrier specific value is set here. + --> + <integer name="config_mobile_mtu">1400</integer> + </resources> diff --git a/core/res/res/values/bools.xml b/core/res/res/values/bools.xml index 18e4f2f..10a5d85 100644 --- a/core/res/res/values/bools.xml +++ b/core/res/res/values/bools.xml @@ -26,4 +26,5 @@ <bool name="show_ongoing_ime_switcher">true</bool> <bool name="action_bar_expanded_action_views_exclusive">true</bool> <bool name="target_honeycomb_needs_options_menu">true</bool> + <bool name="flip_controller_fallback_keys">false</bool> </resources> diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index dd233c5..ab95d40 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -1097,6 +1097,10 @@ players. --> <integer name="config_safe_media_volume_index">10</integer> + <!-- Configure mobile network MTU. The standard default is set here but each carrier + may have a specific value set in an overlay config.xml file. --> + <integer name="config_mobile_mtu">1500</integer> + <!-- Whether WiFi display is supported by this device. There are many prerequisites for this feature to work correctly. Here are a few of them: diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index aa04bf6..68acd8c 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -1911,6 +1911,11 @@ <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permdesc_accessNetworkConditions">Allows an application to listen for observations on network conditions. Should never be needed for normal apps.</string> + <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permlab_hotwordRecognition">request hotword recognition</string> + <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permdesc_hotwordRecognition">Allows an application to request for hotword recognition. Should never be needed for normal apps.</string> + <!-- Policy administration --> <!-- Title of policy access to limiting the user's password choices --> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index fcd56eb..39e7127 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -285,6 +285,7 @@ <java-symbol type="bool" name="config_useFixedVolume" /> <java-symbol type="bool" name="config_forceDefaultOrientation" /> <java-symbol type="bool" name="config_wifi_batched_scan_supported" /> + <java-symbol type="bool" name="flip_controller_fallback_keys" /> <java-symbol type="integer" name="config_cursorWindowSize" /> <java-symbol type="integer" name="config_extraFreeKbytesAdjust" /> @@ -311,6 +312,8 @@ <java-symbol type="integer" name="config_lockSoundVolumeDb" /> <java-symbol type="integer" name="config_multiuserMaximumUsers" /> <java-symbol type="integer" name="config_safe_media_volume_index" /> + <java-symbol type="integer" name="config_mobile_mtu" /> + <java-symbol type="color" name="tab_indicator_text_v4" /> <java-symbol type="dimen" name="accessibility_touch_slop" /> diff --git a/core/tests/coretests/src/android/net/LinkPropertiesTest.java b/core/tests/coretests/src/android/net/LinkPropertiesTest.java index 7e70c6b..e63f6b0 100644 --- a/core/tests/coretests/src/android/net/LinkPropertiesTest.java +++ b/core/tests/coretests/src/android/net/LinkPropertiesTest.java @@ -33,6 +33,7 @@ public class LinkPropertiesTest extends TestCase { private static InetAddress GATEWAY1 = NetworkUtils.numericToInetAddress("75.208.8.1"); private static InetAddress GATEWAY2 = NetworkUtils.numericToInetAddress("69.78.8.1"); private static String NAME = "qmi0"; + private static int MTU = 1500; private static LinkAddress LINKADDRV4 = new LinkAddress(ADDRV4, 32); private static LinkAddress LINKADDRV6 = new LinkAddress(ADDRV6, 128); @@ -57,6 +58,9 @@ public class LinkPropertiesTest extends TestCase { assertTrue(source.isIdenticalStackedLinks(target)); assertTrue(target.isIdenticalStackedLinks(source)); + assertTrue(source.isIdenticalMtu(target)); + assertTrue(target.isIdenticalMtu(source)); + // Check result of equals(). assertTrue(source.equals(target)); assertTrue(target.equals(source)); @@ -88,6 +92,7 @@ public class LinkPropertiesTest extends TestCase { // set 2 gateways source.addRoute(new RouteInfo(GATEWAY1)); source.addRoute(new RouteInfo(GATEWAY2)); + source.setMtu(MTU); LinkProperties target = new LinkProperties(); @@ -99,6 +104,7 @@ public class LinkPropertiesTest extends TestCase { target.addDns(DNS2); target.addRoute(new RouteInfo(GATEWAY1)); target.addRoute(new RouteInfo(GATEWAY2)); + target.setMtu(MTU); assertLinkPropertiesEqual(source, target); @@ -111,6 +117,7 @@ public class LinkPropertiesTest extends TestCase { target.addDns(DNS2); target.addRoute(new RouteInfo(GATEWAY1)); target.addRoute(new RouteInfo(GATEWAY2)); + target.setMtu(MTU); assertFalse(source.equals(target)); target.clear(); @@ -123,6 +130,7 @@ public class LinkPropertiesTest extends TestCase { target.addDns(DNS2); target.addRoute(new RouteInfo(GATEWAY1)); target.addRoute(new RouteInfo(GATEWAY2)); + target.setMtu(MTU); assertFalse(source.equals(target)); target.clear(); @@ -134,6 +142,7 @@ public class LinkPropertiesTest extends TestCase { target.addDns(DNS2); target.addRoute(new RouteInfo(GATEWAY1)); target.addRoute(new RouteInfo(GATEWAY2)); + target.setMtu(MTU); assertFalse(source.equals(target)); target.clear(); @@ -145,6 +154,19 @@ public class LinkPropertiesTest extends TestCase { // change gateway target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress("75.208.8.2"))); target.addRoute(new RouteInfo(GATEWAY2)); + target.setMtu(MTU); + assertFalse(source.equals(target)); + + target.clear(); + target.setInterfaceName(NAME); + target.addLinkAddress(LINKADDRV4); + target.addLinkAddress(LINKADDRV6); + target.addDns(DNS1); + target.addDns(DNS2); + target.addRoute(new RouteInfo(GATEWAY1)); + target.addRoute(new RouteInfo(GATEWAY2)); + // change mtu + target.setMtu(1440); assertFalse(source.equals(target)); } catch (Exception e) { @@ -167,6 +189,7 @@ public class LinkPropertiesTest extends TestCase { // set 2 gateways source.addRoute(new RouteInfo(GATEWAY1)); source.addRoute(new RouteInfo(GATEWAY2)); + source.setMtu(MTU); LinkProperties target = new LinkProperties(); // Exchange order @@ -177,6 +200,7 @@ public class LinkPropertiesTest extends TestCase { target.addDns(DNS1); target.addRoute(new RouteInfo(GATEWAY2)); target.addRoute(new RouteInfo(GATEWAY1)); + target.setMtu(MTU); assertLinkPropertiesEqual(source, target); } catch (Exception e) { diff --git a/data/fonts/fallback_fonts.xml b/data/fonts/fallback_fonts.xml index d7b1464..d9170c9 100644 --- a/data/fonts/fallback_fonts.xml +++ b/data/fonts/fallback_fonts.xml @@ -175,6 +175,11 @@ </family> <family> <fileset> + <file>NotoSansSymbols-Regular.ttf</file> + </fileset> + </family> + <family> + <fileset> <file>AndroidEmoji.ttf</file> </fileset> </family> diff --git a/data/keyboards/Generic.kcm b/data/keyboards/Generic.kcm index 01d22ee..695a74f 100644 --- a/data/keyboards/Generic.kcm +++ b/data/keyboards/Generic.kcm @@ -477,128 +477,4 @@ key ESCAPE { ctrl: fallback MENU } -### Gamepad buttons ### - -key BUTTON_A { - base: fallback DPAD_CENTER -} - -key BUTTON_B { - base: fallback BACK -} - -key BUTTON_C { - base: fallback DPAD_CENTER -} - -key BUTTON_X { - base: fallback DPAD_CENTER -} - -key BUTTON_Y { - base: fallback BACK -} - -key BUTTON_Z { - base: fallback DPAD_CENTER -} - -key BUTTON_L1 { - base: none -} - -key BUTTON_R1 { - base: none -} - -key BUTTON_L2 { - base: none -} - -key BUTTON_R2 { - base: none -} - -key BUTTON_THUMBL { - base: fallback DPAD_CENTER -} - -key BUTTON_THUMBR { - base: fallback DPAD_CENTER -} - -key BUTTON_START { - base: fallback DPAD_CENTER -} - -key BUTTON_SELECT { - base: fallback MENU -} - -key BUTTON_MODE { - base: fallback MENU -} - -key BUTTON_1 { - base: fallback DPAD_CENTER -} - -key BUTTON_2 { - base: fallback DPAD_CENTER -} - -key BUTTON_3 { - base: fallback DPAD_CENTER -} - -key BUTTON_4 { - base: fallback DPAD_CENTER -} - -key BUTTON_5 { - base: fallback DPAD_CENTER -} - -key BUTTON_6 { - base: fallback DPAD_CENTER -} - -key BUTTON_7 { - base: fallback DPAD_CENTER -} - -key BUTTON_8 { - base: fallback DPAD_CENTER -} - -key BUTTON_9 { - base: fallback DPAD_CENTER -} - -key BUTTON_10 { - base: fallback DPAD_CENTER -} - -key BUTTON_11 { - base: fallback DPAD_CENTER -} - -key BUTTON_12 { - base: fallback DPAD_CENTER -} - -key BUTTON_13 { - base: fallback DPAD_CENTER -} - -key BUTTON_14 { - base: fallback DPAD_CENTER -} - -key BUTTON_15 { - base: fallback DPAD_CENTER -} - -key BUTTON_16 { - base: fallback DPAD_CENTER -} +### Gamepad buttons are handled by the view root ### diff --git a/libs/hwui/DisplayList.cpp b/libs/hwui/DisplayList.cpp index cebfd26..0d7b37d 100644 --- a/libs/hwui/DisplayList.cpp +++ b/libs/hwui/DisplayList.cpp @@ -358,7 +358,7 @@ void DisplayList::outputViewProperties(const int level) { } if (mAnimationMatrix) { ALOGD("%*sConcatMatrix (animation) %p: " MATRIX_STRING, - level * 2, "", mAnimationMatrix, MATRIX_ARGS(mStaticMatrix)); + level * 2, "", mAnimationMatrix, MATRIX_ARGS(mAnimationMatrix)); } if (mMatrixFlags != 0) { if (mMatrixFlags == TRANSLATION) { diff --git a/media/java/android/media/AudioTimestamp.java b/media/java/android/media/AudioTimestamp.java index 437a0c6..965ba85 100644 --- a/media/java/android/media/AudioTimestamp.java +++ b/media/java/android/media/AudioTimestamp.java @@ -26,9 +26,6 @@ package android.media; * is available to the system, but cannot account for any delay unknown to the implementation. * * @see AudioTrack#getTimestamp - * @see AudioTrack.TimestampListener - * - * @hide */ public final class AudioTimestamp { diff --git a/media/java/android/media/AudioTrack.java b/media/java/android/media/AudioTrack.java index 88539f28..788257d 100644 --- a/media/java/android/media/AudioTrack.java +++ b/media/java/android/media/AudioTrack.java @@ -735,8 +735,7 @@ public class AudioTrack /** * Poll for a timestamp on demand. * - * Use if {@link TimestampListener} is not delivered often enough for your needs, - * or if you need to get the most recent timestamp outside of the event callback handler. + * Use if you need to get the most recent timestamp outside of the event callback handler. * Calling this method too often may be inefficient; * if you need a high-resolution mapping between frame position and presentation time, * consider implementing that at application level, based on low-resolution timestamps. @@ -756,8 +755,6 @@ public class AudioTrack * with the estimated time when that frame was presented or is committed to * be presented. * In the case that no timestamp is available, any supplied instance is left unaltered. - * - * @hide */ public AudioTimestamp getTimestamp(AudioTimestamp timestamp) { diff --git a/media/java/android/media/MediaPlayer.java b/media/java/android/media/MediaPlayer.java index d286be4..ce1896a 100644 --- a/media/java/android/media/MediaPlayer.java +++ b/media/java/android/media/MediaPlayer.java @@ -1351,8 +1351,10 @@ public class MediaPlayer implements SubtitleController.Listener mOnInfoListener = null; mOnVideoSizeChangedListener = null; mOnTimedTextListener = null; - mTimeProvider.close(); - mTimeProvider = null; + if (mTimeProvider != null) { + mTimeProvider.close(); + mTimeProvider = null; + } mOnSubtitleDataListener = null; _release(); } @@ -1380,11 +1382,17 @@ public class MediaPlayer implements SubtitleController.Listener if (mSubtitleController != null) { mSubtitleController.reset(); } + if (mTimeProvider != null) { + mTimeProvider.close(); + mTimeProvider = null; + } stayAwake(false); _reset(); // make sure none of the listeners get called anymore - mEventHandler.removeCallbacksAndMessages(null); + if (mEventHandler != null) { + mEventHandler.removeCallbacksAndMessages(null); + } disableProxyListener(); } @@ -2121,6 +2129,9 @@ public class MediaPlayer implements SubtitleController.Listener /** @hide */ public MediaTimeProvider getMediaTimeProvider() { + if (mTimeProvider == null) { + mTimeProvider = new TimeProvider(this); + } return mTimeProvider; } @@ -2761,6 +2772,7 @@ public class MediaPlayer implements SubtitleController.Listener private static final int REFRESH_AND_NOTIFY_TIME = 1; private static final int NOTIFY_STOP = 2; private static final int NOTIFY_SEEK = 3; + private HandlerThread mHandlerThread; /** @hide */ public boolean DEBUG = false; @@ -2773,7 +2785,18 @@ public class MediaPlayer implements SubtitleController.Listener // we assume starting position mRefresh = true; } - mEventHandler = new EventHandler(); + + Looper looper; + if ((looper = Looper.myLooper()) == null && + (looper = Looper.getMainLooper()) == null) { + // Create our own looper here in case MP was created without one + mHandlerThread = new HandlerThread("MediaPlayerMTPEventThread", + Process.THREAD_PRIORITY_FOREGROUND); + mHandlerThread.start(); + looper = mHandlerThread.getLooper(); + } + mEventHandler = new EventHandler(looper); + mListeners = new MediaTimeProvider.OnMediaTimeListener[0]; mTimes = new long[0]; mLastTimeUs = 0; @@ -2790,6 +2813,17 @@ public class MediaPlayer implements SubtitleController.Listener /** @hide */ public void close() { mEventHandler.removeMessages(NOTIFY); + if (mHandlerThread != null) { + mHandlerThread.quitSafely(); + mHandlerThread = null; + } + } + + /** @hide */ + protected void finalize() { + if (mHandlerThread != null) { + mHandlerThread.quitSafely(); + } } /** @hide */ @@ -3055,6 +3089,10 @@ public class MediaPlayer implements SubtitleController.Listener } private class EventHandler extends Handler { + public EventHandler(Looper looper) { + super(looper); + } + @Override public void handleMessage(Message msg) { if (msg.what == NOTIFY) { @@ -3075,10 +3113,5 @@ public class MediaPlayer implements SubtitleController.Listener } } } - - /** @hide */ - public Handler getHandler() { - return mEventHandler; - } } } diff --git a/packages/Keyguard/AndroidManifest.xml b/packages/Keyguard/AndroidManifest.xml index 7d77c48..d2c82c8 100644 --- a/packages/Keyguard/AndroidManifest.xml +++ b/packages/Keyguard/AndroidManifest.xml @@ -37,6 +37,8 @@ <uses-permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW" /> <uses-permission android:name="android.permission.BIND_DEVICE_ADMIN" /> <uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE" /> + <!-- Permission to perform hotword recognition --> + <uses-permission android:name="android.permission.HOTWORD_RECOGNITION" /> <application android:label="@string/app_name" android:process="com.android.systemui" diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardHostView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardHostView.java index 00124b0..78b842c 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardHostView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardHostView.java @@ -1784,30 +1784,23 @@ public class KeyguardHostView extends KeyguardViewBase { } } - public void onHotwordRecognized(final PendingIntent intent) { + public void onHotwordRecognized(final Intent intent) { if (DEBUG) Log.d(TAG, "onHotwordRecognized"); maybeStopHotwordDetector(); + // See if an activity can handle this intent. + if (getContext().getPackageManager().resolveActivity(intent, 0) == null) + return; if (SecurityMode.None == mCurrentSecuritySelection) { if (intent != null) { - try { - intent.send(); - } catch (PendingIntent.CanceledException e) { - Log.w(TAG, "Failed to launch PendingIntent. Encountered CanceledException"); - } + mActivityLauncher.launchActivity(intent, true, true, null, null); } mCallback.userActivity(0); - mCallback.dismiss(false); } else if (ENABLE_HOTWORD_SECURE && mLockPatternUtils.isSecure()) { setOnDismissAction(new OnDismissAction() { @Override public boolean onDismiss() { if (intent != null) { - try { - intent.send(); - } catch (PendingIntent.CanceledException e) { - Log.w(TAG, "Failed to launch PendingIntent." - + "Encountered CanceledException"); - } + mActivityLauncher.launchActivity(intent, true, true, null, null); } return false; } diff --git a/packages/SystemUI/res/drawable-hdpi/ic_notification_overlay.9.png b/packages/SystemUI/res/drawable-hdpi/ic_notification_overlay.9.png Binary files differindex fd33ef3..a93916f 100644 --- a/packages/SystemUI/res/drawable-hdpi/ic_notification_overlay.9.png +++ b/packages/SystemUI/res/drawable-hdpi/ic_notification_overlay.9.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_0.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_0.png Binary files differindex be6bad3..4ff22d2 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_0.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_0.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_100.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_100.png Binary files differindex 5382e0a..612b362 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_100.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_100.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_15.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_15.png Binary files differindex 4c60c68..c779e7e 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_15.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_15.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_28.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_28.png Binary files differindex f526262..a6d4796 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_28.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_28.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_43.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_43.png Binary files differindex dffa104..67a6a73 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_43.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_43.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_57.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_57.png Binary files differindex 5870080..f972ebd 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_57.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_57.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_71.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_71.png Binary files differindex 017e5a1..b707fa1 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_71.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_71.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_85.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_85.png Binary files differindex 362b38d..82d6545 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_85.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_85.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim0.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim0.png Binary files differindex b225e7f..59edd98 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim0.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim0.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim100.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim100.png Binary files differindex e676c2a..450dd70 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim100.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim100.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim15.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim15.png Binary files differindex b76a124..ae6fee5 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim15.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim15.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim28.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim28.png Binary files differindex 843b833..67fa3ad 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim28.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim28.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim43.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim43.png Binary files differindex ac0b5ef..ba367ea 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim43.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim43.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim57.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim57.png Binary files differindex 807fdc5..3ce0c6e 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim57.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim57.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim71.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim71.png Binary files differindex cdbdea2..d502d5d 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim71.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim71.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim85.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim85.png Binary files differindex 269eab1..2f44643 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim85.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_anim85.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_bluetooth.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_bluetooth.png Binary files differindex 1489b90..7ed4c78 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_bluetooth.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_bluetooth.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_no_sim.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_no_sim.png Binary files differindex fe7d280..5ce8708 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_no_sim.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_no_sim.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_roaming_cdma_0.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_roaming_cdma_0.png Binary files differindex a59c844..8f17b72 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_roaming_cdma_0.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_roaming_cdma_0.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_0.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_0.png Binary files differindex 6253d9a..da941c8 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_0.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_0.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_0_fully.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_0_fully.png Binary files differindex 6253d9a..0fd09d7 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_0_fully.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_0_fully.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_1.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_1.png Binary files differindex 0bed6d9..cf07aae 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_1.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_1.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_1_fully.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_1_fully.png Binary files differindex 0b27331..cfe43dd 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_1_fully.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_1_fully.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_2.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_2.png Binary files differindex 6bb92a3..50aa77f 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_2.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_2.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_2_fully.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_2_fully.png Binary files differindex c77c37f..92a5b1c 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_2_fully.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_2_fully.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_3.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_3.png Binary files differindex 92e6837..045182c 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_3.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_3.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_3_fully.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_3_fully.png Binary files differindex 269eae2..9454cd8 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_3_fully.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_3_fully.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_4.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_4.png Binary files differindex ac2eaf0..5232169 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_4.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_4.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_4_fully.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_4_fully.png Binary files differindex d9da0d9..6cb18c7 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_4_fully.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_4_fully.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_null.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_null.png Binary files differindex e02a84b..45ed7ca 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_null.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_null.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_tty_mode.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_tty_mode.png Binary files differindex a2aadd9..ece3450 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_tty_mode.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_tty_mode.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_0.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_0.png Binary files differindex 986e7fb..0060eba 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_0.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_0.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_1.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_1.png Binary files differindex a5795ed..2b0da2c 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_1.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_1.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_1_fully.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_1_fully.png Binary files differindex b647f45..faf4153 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_1_fully.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_1_fully.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_2.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_2.png Binary files differindex 02144e5..24755d9 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_2.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_2.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_2_fully.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_2_fully.png Binary files differindex 7eb285f..6a25705 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_2_fully.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_2_fully.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_3.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_3.png Binary files differindex 20364a3..3f30896 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_3.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_3.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_3_fully.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_3_fully.png Binary files differindex 169d684..c609847 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_3_fully.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_3_fully.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_4.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_4.png Binary files differindex 850150a..87da72b 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_4.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_4.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_4_fully.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_4_fully.png Binary files differindex 7279d5a..6248cfd 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_4_fully.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_4_fully.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_null.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_null.png Binary files differindex 546a222..8c3e896 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_null.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_signal_null.png diff --git a/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_0.png b/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_0.png Binary files differindex 4ecb2a8..b477332 100644 --- a/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_0.png +++ b/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_0.png diff --git a/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_0_fully.png b/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_0_fully.png Binary files differindex f0b0588..b477332 100644 --- a/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_0_fully.png +++ b/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_0_fully.png diff --git a/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_1.png b/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_1.png Binary files differindex 2c86ddf..395adad 100644 --- a/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_1.png +++ b/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_1.png diff --git a/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_1_fully.png b/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_1_fully.png Binary files differindex 508a073..36cb7e5 100644 --- a/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_1_fully.png +++ b/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_1_fully.png diff --git a/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_2.png b/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_2.png Binary files differindex 6232c94..4ded923 100644 --- a/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_2.png +++ b/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_2.png diff --git a/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_2_fully.png b/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_2_fully.png Binary files differindex 73c5c2c..cc30aa1 100644 --- a/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_2_fully.png +++ b/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_2_fully.png diff --git a/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_3.png b/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_3.png Binary files differindex 49c0c0b..568c296 100644 --- a/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_3.png +++ b/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_3.png diff --git a/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_3_fully.png b/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_3_fully.png Binary files differindex a03ac38..6f0b419 100644 --- a/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_3_fully.png +++ b/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_3_fully.png diff --git a/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_4.png b/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_4.png Binary files differindex 21e5ae8..000f93d 100644 --- a/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_4.png +++ b/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_4.png diff --git a/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_4_fully.png b/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_4_fully.png Binary files differindex 8cfc0f8..01d47c5 100644 --- a/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_4_fully.png +++ b/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_4_fully.png diff --git a/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_null.png b/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_null.png Binary files differindex ecca5d5..cd4056c 100644 --- a/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_null.png +++ b/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_signal_null.png diff --git a/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_0.png b/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_0.png Binary files differindex bea4247..6f457e0 100644 --- a/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_0.png +++ b/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_0.png diff --git a/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_0_fully.png b/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_0_fully.png Binary files differindex 3fda61d..6f457e0 100644 --- a/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_0_fully.png +++ b/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_0_fully.png diff --git a/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_1.png b/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_1.png Binary files differindex 28dd0ab..33a35d0 100644 --- a/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_1.png +++ b/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_1.png diff --git a/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_1_fully.png b/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_1_fully.png Binary files differindex 7c01b40..45d733e 100644 --- a/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_1_fully.png +++ b/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_1_fully.png diff --git a/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_2.png b/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_2.png Binary files differindex dbd3c59..71e396e 100644 --- a/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_2.png +++ b/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_2.png diff --git a/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_2_fully.png b/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_2_fully.png Binary files differindex 2cf3eff..093387a 100644 --- a/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_2_fully.png +++ b/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_2_fully.png diff --git a/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_3.png b/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_3.png Binary files differindex 19cdc61..b61b1e0 100644 --- a/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_3.png +++ b/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_3.png diff --git a/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_3_fully.png b/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_3_fully.png Binary files differindex 0478d4a..2f32c4c 100644 --- a/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_3_fully.png +++ b/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_3_fully.png diff --git a/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_4.png b/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_4.png Binary files differindex 126e31d..7121abb 100644 --- a/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_4.png +++ b/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_4.png diff --git a/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_4_fully.png b/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_4_fully.png Binary files differindex d32e309..8e9ba9c 100644 --- a/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_4_fully.png +++ b/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_4_fully.png diff --git a/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_null.png b/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_null.png Binary files differindex b961902..c18d103 100644 --- a/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_null.png +++ b/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_signal_null.png diff --git a/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_0.png b/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_0.png Binary files differindex dca7457..60ede0a 100644 --- a/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_0.png +++ b/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_0.png diff --git a/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_0_fully.png b/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_0_fully.png Binary files differindex 474795c..a22fa28 100644 --- a/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_0_fully.png +++ b/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_0_fully.png diff --git a/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_1.png b/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_1.png Binary files differindex 8718fa8..ef91328 100644 --- a/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_1.png +++ b/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_1.png diff --git a/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_1_fully.png b/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_1_fully.png Binary files differindex 6710650..26a0543 100644 --- a/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_1_fully.png +++ b/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_1_fully.png diff --git a/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_2.png b/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_2.png Binary files differindex dcfd2d1..ffb3b55 100644 --- a/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_2.png +++ b/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_2.png diff --git a/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_2_fully.png b/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_2_fully.png Binary files differindex caa4189..ec31162 100644 --- a/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_2_fully.png +++ b/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_2_fully.png diff --git a/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_3.png b/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_3.png Binary files differindex 69cc6c4..85eef22 100644 --- a/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_3.png +++ b/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_3.png diff --git a/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_3_fully.png b/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_3_fully.png Binary files differindex 7e0158f..26cd26f 100644 --- a/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_3_fully.png +++ b/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_3_fully.png diff --git a/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_4.png b/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_4.png Binary files differindex 9d5b2c7..5aeb913 100644 --- a/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_4.png +++ b/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_4.png diff --git a/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_4_fully.png b/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_4_fully.png Binary files differindex 03b5c55..25ed626 100644 --- a/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_4_fully.png +++ b/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_4_fully.png diff --git a/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_null.png b/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_null.png Binary files differindex 2ef75ac..37da333 100644 --- a/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_null.png +++ b/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_signal_null.png diff --git a/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_0.png b/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_0.png Binary files differindex db8d8c1..5950ef8 100644 --- a/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_0.png +++ b/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_0.png diff --git a/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_0_fully.png b/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_0_fully.png Binary files differindex db8d8c1..a930649 100644 --- a/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_0_fully.png +++ b/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_0_fully.png diff --git a/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_1.png b/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_1.png Binary files differindex 1d21ea1..dc4a01e 100644 --- a/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_1.png +++ b/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_1.png diff --git a/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_1_fully.png b/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_1_fully.png Binary files differindex d1609d6..9245462 100644 --- a/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_1_fully.png +++ b/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_1_fully.png diff --git a/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_2.png b/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_2.png Binary files differindex fe80d3d..bb6fd30 100644 --- a/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_2.png +++ b/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_2.png diff --git a/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_2_fully.png b/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_2_fully.png Binary files differindex ef73123..b5b8884 100644 --- a/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_2_fully.png +++ b/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_2_fully.png diff --git a/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_3.png b/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_3.png Binary files differindex a80d45a..b77c833 100644 --- a/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_3.png +++ b/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_3.png diff --git a/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_3_fully.png b/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_3_fully.png Binary files differindex d40cb3f..11b5832 100644 --- a/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_3_fully.png +++ b/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_3_fully.png diff --git a/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_4.png b/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_4.png Binary files differindex 880a735..448d79b 100644 --- a/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_4.png +++ b/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_4.png diff --git a/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_4_fully.png b/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_4_fully.png Binary files differindex f11bfff..ff8246e 100644 --- a/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_4_fully.png +++ b/packages/SystemUI/res/drawable-ldrtl-xxhdpi/stat_sys_signal_4_fully.png diff --git a/packages/SystemUI/res/drawable-mdpi/ic_notification_overlay.9.png b/packages/SystemUI/res/drawable-mdpi/ic_notification_overlay.9.png Binary files differindex 667b13d..7ae6079 100644 --- a/packages/SystemUI/res/drawable-mdpi/ic_notification_overlay.9.png +++ b/packages/SystemUI/res/drawable-mdpi/ic_notification_overlay.9.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_0.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_0.png Binary files differindex 017023e..edcb1b3 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_0.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_0.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_100.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_100.png Binary files differindex 09f30c3..8e0ec0f 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_100.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_100.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_15.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_15.png Binary files differindex 580a81c..62807cd 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_15.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_15.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_28.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_28.png Binary files differindex 6b4383d..868bbbc 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_28.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_28.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_43.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_43.png Binary files differindex 9d30447..890129e 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_43.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_43.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_57.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_57.png Binary files differindex 3c4c07f..86279af 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_57.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_57.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_71.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_71.png Binary files differindex b543639..de2aa4e 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_71.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_71.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_85.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_85.png Binary files differindex 3c59cbb..c008d6f 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_85.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_85.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim0.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim0.png Binary files differindex 3ae1228..62ab39a 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim0.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim0.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim100.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim100.png Binary files differindex cc4d343..4082a2c 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim100.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim100.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim15.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim15.png Binary files differindex e26142f..8c1c15a 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim15.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim15.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim28.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim28.png Binary files differindex f088b6b..6ba3496 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim28.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim28.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim43.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim43.png Binary files differindex bbbe14a..4a91d65 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim43.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim43.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim57.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim57.png Binary files differindex d4370fd..18d6198 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim57.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim57.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim71.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim71.png Binary files differindex 82057f8..a11e57e 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim71.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim71.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim85.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim85.png Binary files differindex faacde9..5a3a627 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim85.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_anim85.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_data_bluetooth.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_data_bluetooth.png Binary files differindex a28235b..bd4e1ae 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_data_bluetooth.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_data_bluetooth.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_no_sim.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_no_sim.png Binary files differindex 6a08773..bdf0f67 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_no_sim.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_no_sim.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_0.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_0.png Binary files differindex 55173f8..ca02605 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_0.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_0.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_0_fully.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_0_fully.png Binary files differindex 55173f8..2dcbe28 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_0_fully.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_0_fully.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_1.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_1.png Binary files differindex 6649d7c..c3c6b93 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_1.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_1.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_1_fully.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_1_fully.png Binary files differindex dcfe5b4..fe71893 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_1_fully.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_1_fully.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_2.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_2.png Binary files differindex be3fe62..bb2e9ba 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_2.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_2.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_2_fully.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_2_fully.png Binary files differindex 734c52a..a6c61ff 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_2_fully.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_2_fully.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_3.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_3.png Binary files differindex 0deb868..6583922 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_3.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_3.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_3_fully.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_3_fully.png Binary files differindex d808990..ba4a9d9 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_3_fully.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_3_fully.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_4.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_4.png Binary files differindex f890c2b..9b1cbcc 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_4.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_4.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_4_fully.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_4_fully.png Binary files differindex 0e11ce8..79c2ec1 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_4_fully.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_4_fully.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_null.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_null.png Binary files differindex 1ffeaa3..4548617 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_null.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_null.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_tty_mode.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_tty_mode.png Binary files differindex fb70ba8..b4db0bb 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_tty_mode.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_tty_mode.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_0.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_0.png Binary files differindex 716cc7c..3cc96ee 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_0.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_0.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_1.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_1.png Binary files differindex 5891ff0..3fb4427 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_1.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_1.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_1_fully.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_1_fully.png Binary files differindex 188ea3d..34ae3bf 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_1_fully.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_1_fully.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_2.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_2.png Binary files differindex b42650f..abcc317 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_2.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_2.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_2_fully.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_2_fully.png Binary files differindex 17680ce..cb3623a 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_2_fully.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_2_fully.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_3.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_3.png Binary files differindex add0a93..a3b2678 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_3.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_3.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_3_fully.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_3_fully.png Binary files differindex 7023c4f..4f9a8b0 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_3_fully.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_3_fully.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_4.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_4.png Binary files differindex 6f2a767..b4278f2 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_4.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_4.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_4_fully.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_4_fully.png Binary files differindex 318bfd5..441de0c 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_4_fully.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_4_fully.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_null.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_null.png Binary files differindex 26ea7b6..34abc98 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_null.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_signal_null.png diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_notification_overlay.9.png b/packages/SystemUI/res/drawable-xhdpi/ic_notification_overlay.9.png Binary files differindex 8758b02..aae807b 100644 --- a/packages/SystemUI/res/drawable-xhdpi/ic_notification_overlay.9.png +++ b/packages/SystemUI/res/drawable-xhdpi/ic_notification_overlay.9.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_0.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_0.png Binary files differindex 11305ea..8ea54ee 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_0.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_0.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_100.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_100.png Binary files differindex 9cd3dbb..877abf4 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_100.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_100.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_15.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_15.png Binary files differindex 2c6a018..1e68ac7 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_15.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_15.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_28.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_28.png Binary files differindex 045a080..c4b77ec 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_28.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_28.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_43.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_43.png Binary files differindex 91d9694..9983d60 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_43.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_43.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_57.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_57.png Binary files differindex c87bbf2..de09dc6 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_57.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_57.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_71.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_71.png Binary files differindex d629095..99908696 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_71.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_71.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_85.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_85.png Binary files differindex da7dc8f..7a630f9 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_85.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_85.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim0.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim0.png Binary files differindex 3350a2d..4378a895 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim0.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim0.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim100.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim100.png Binary files differindex 8af8515..dc144aa 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim100.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim100.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim15.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim15.png Binary files differindex af3f5f5..722148c 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim15.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim15.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim28.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim28.png Binary files differindex 919e71d..a3d11f2 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim28.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim28.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim43.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim43.png Binary files differindex 4d92503..9e63b78 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim43.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim43.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim57.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim57.png Binary files differindex b7aa3d1..74f9129 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim57.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim57.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim71.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim71.png Binary files differindex 0b25ab3..38838fe 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim71.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim71.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim85.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim85.png Binary files differindex b699296..28d26f2 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim85.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_anim85.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_bluetooth.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_bluetooth.png Binary files differindex 0896225..757dbf3 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_bluetooth.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_bluetooth.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_no_sim.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_no_sim.png Binary files differindex eeac6ad..461535c 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_no_sim.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_no_sim.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_0.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_0.png Binary files differindex 8b34373..659275f 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_0.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_0.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_0_fully.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_0_fully.png Binary files differindex 8b34373..17c0d99 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_0_fully.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_0_fully.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_1.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_1.png Binary files differindex 610e78f..23288de 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_1.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_1.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_1_fully.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_1_fully.png Binary files differindex f682a0e..8a5a476 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_1_fully.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_1_fully.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_2.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_2.png Binary files differindex 5bb372e..32e05fe 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_2.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_2.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_2_fully.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_2_fully.png Binary files differindex ef05975..a6c12b2 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_2_fully.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_2_fully.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_3.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_3.png Binary files differindex d556733..f2f88a1 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_3.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_3.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_3_fully.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_3_fully.png Binary files differindex c5088b5..3fdc60e 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_3_fully.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_3_fully.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_4.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_4.png Binary files differindex e1bd8bd..7a38994 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_4.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_4.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_4_fully.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_4_fully.png Binary files differindex c82a435..b09247e 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_4_fully.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_4_fully.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_null.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_null.png Binary files differindex 298b27d..3b94b6b 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_null.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_null.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_0.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_0.png Binary files differindex 0ae59e3..e402ff6 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_0.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_0.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_1.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_1.png Binary files differindex 172ab5b..a93e3a8 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_1.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_1.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_1_fully.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_1_fully.png Binary files differindex 0368f17..313ce4e 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_1_fully.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_1_fully.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_2.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_2.png Binary files differindex 669750f..24b47b2 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_2.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_2.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_2_fully.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_2_fully.png Binary files differindex 2813464..546c7a8 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_2_fully.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_2_fully.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_3.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_3.png Binary files differindex 5e11523..b4b3f02 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_3.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_3.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_3_fully.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_3_fully.png Binary files differindex 811038c..ec45d86 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_3_fully.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_3_fully.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_4.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_4.png Binary files differindex b6b6555..758ebe7 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_4.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_4.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_4_fully.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_4_fully.png Binary files differindex b4821d7..459a1a2 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_4_fully.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_4_fully.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_null.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_null.png Binary files differindex bdf7bca..d6f752a 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_null.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_wifi_signal_null.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/ic_notification_overlay.9.png b/packages/SystemUI/res/drawable-xxhdpi/ic_notification_overlay.9.png Binary files differnew file mode 100644 index 0000000..fa7de0e --- /dev/null +++ b/packages/SystemUI/res/drawable-xxhdpi/ic_notification_overlay.9.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_0.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_0.png Binary files differindex 0795f3a..2d916d7 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_0.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_0.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_100.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_100.png Binary files differindex 5b002df..fe3c750 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_100.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_100.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_15.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_15.png Binary files differindex c03248a..d026936 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_15.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_15.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_28.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_28.png Binary files differindex e489d2c..224be03 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_28.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_28.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_43.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_43.png Binary files differindex 68a1be8..dabed32 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_43.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_43.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_57.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_57.png Binary files differindex e5f639d..82d04c5 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_57.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_57.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_71.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_71.png Binary files differindex ddfa424..1d403c6 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_71.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_71.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_85.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_85.png Binary files differindex 3b3025b..b917d37 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_85.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_85.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim0.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim0.png Binary files differindex 7ece3af..3356733 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim0.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim0.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim100.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim100.png Binary files differindex 2f4cf03..080bdda 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim100.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim100.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim15.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim15.png Binary files differindex 8179eba..0d1e47a 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim15.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim15.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim28.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim28.png Binary files differindex 5c925c1..f565046 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim28.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim28.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim43.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim43.png Binary files differindex f527679..378d433 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim43.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim43.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim57.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim57.png Binary files differindex fab08f4..3bd5759 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim57.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim57.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim71.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim71.png Binary files differindex 1f8dc5e..3d56db4 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim71.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim71.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim85.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim85.png Binary files differindex 7f1f977..2d24d99 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim85.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_battery_charge_anim85.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_data_bluetooth.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_data_bluetooth.png Binary files differindex b9825f9..17ffdb9 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_data_bluetooth.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_data_bluetooth.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_no_sim.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_no_sim.png Binary files differindex 32415c2..7b03a11 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_no_sim.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_no_sim.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_0.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_0.png Binary files differindex 361ff48..3c9d3e6 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_0.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_0.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_0_fully.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_0_fully.png Binary files differindex 937839b..065f1da 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_0_fully.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_0_fully.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_1.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_1.png Binary files differindex d185a4d..afacef5 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_1.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_1.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_1_fully.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_1_fully.png Binary files differindex 2bd6eb1..da2da18 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_1_fully.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_1_fully.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_2.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_2.png Binary files differindex 9594607..1b1c863 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_2.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_2.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_2_fully.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_2_fully.png Binary files differindex aad369e..30c5abf 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_2_fully.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_2_fully.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_3.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_3.png Binary files differindex 6f9f50c..99094e3 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_3.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_3.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_3_fully.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_3_fully.png Binary files differindex c76e188..e49fd0a 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_3_fully.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_3_fully.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_4.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_4.png Binary files differindex 75a182f..8aff999 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_4.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_4.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_4_fully.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_4_fully.png Binary files differindex 1889813..c5114e7 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_4_fully.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_signal_4_fully.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_0.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_0.png Binary files differindex 93fd9b6..bc272ed 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_0.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_0.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_1.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_1.png Binary files differindex a8681ec..3fe77d0 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_1.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_1.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_1_fully.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_1_fully.png Binary files differindex 47a04cb..d032db3 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_1_fully.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_1_fully.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_2.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_2.png Binary files differindex 343eef9..dec522d 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_2.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_2.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_2_fully.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_2_fully.png Binary files differindex 033bced..562101b 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_2_fully.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_2_fully.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_3.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_3.png Binary files differindex 168f8ff..9e679c2 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_3.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_3.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_3_fully.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_3_fully.png Binary files differindex c546e08..ceb4163 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_3_fully.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_3_fully.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_4.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_4.png Binary files differindex a7b32c9..f4c7250 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_4.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_4.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_4_fully.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_4_fully.png Binary files differindex 1126d9b..494b005 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_4_fully.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_4_fully.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_null.png b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_null.png Binary files differindex 5f8e67b..3da56ad 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_null.png +++ b/packages/SystemUI/res/drawable-xxhdpi/stat_sys_wifi_signal_null.png diff --git a/packages/SystemUI/res/values/arrays.xml b/packages/SystemUI/res/values/arrays.xml index 174fb9e..0812e80 100644 --- a/packages/SystemUI/res/values/arrays.xml +++ b/packages/SystemUI/res/values/arrays.xml @@ -47,8 +47,8 @@ <item>100</item> </array> <array name="batterymeter_color_values"> - <item>#FFFF0000</item> - <item>#FFFE6600</item> + <item>#FFFF3300</item> + <item>#FFFF3300</item> <item>#FFFFFFFF</item> </array> diff --git a/packages/SystemUI/res/values/colors.xml b/packages/SystemUI/res/values/colors.xml index 2c06aec..67a932a 100644 --- a/packages/SystemUI/res/values/colors.xml +++ b/packages/SystemUI/res/values/colors.xml @@ -34,8 +34,7 @@ <drawable name="heads_up_notification_bg_pressed">#ff33B5E5</drawable> <drawable name="notification_header_bg">#FF000000</drawable> <color name="notification_panel_scrim_color">#B0000000</color> - - <color name="batterymeter_frame_color">#33FFFFFF</color> - <color name="batterymeter_charge_color">#7FFFFFFF</color> + <color name="batterymeter_frame_color">#66FFFFFF</color><!-- 40% white --> + <color name="batterymeter_charge_color">#FFFFFFFF</color> <color name="status_bar_clock_color">#FFFFFFFF</color> </resources> diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index e0b3bc6..3076ab4 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -89,7 +89,7 @@ <dimen name="status_bar_icon_drawing_size">18dip</dimen> <!-- opacity at which Notification icons will be drawn in the status bar --> - <item type="dimen" name="status_bar_icon_drawing_alpha">65%</item> + <item type="dimen" name="status_bar_icon_drawing_alpha">75%</item> <!-- gap on either side of status bar notification icons --> <dimen name="status_bar_icon_padding">0dp</dimen> diff --git a/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java b/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java index 6a0f6e3..be5c326 100755 --- a/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java +++ b/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java @@ -23,6 +23,7 @@ import android.content.IntentFilter; import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Canvas; +import android.graphics.LightingColorFilter; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.RectF; @@ -42,6 +43,11 @@ public class BatteryMeterView extends View implements DemoMode { public static final boolean SINGLE_DIGIT_PERCENT = false; public static final boolean SHOW_100_PERCENT = false; + private static final LightingColorFilter LIGHTNING_FILTER_OPAQUE = + new LightingColorFilter(0x00000000, 0x00000000); + private static final LightingColorFilter LIGHTNING_FILTER_TRANS = + new LightingColorFilter(0x00999999, 0x00000000); + public static final int FULL = 96; public static final int EMPTY = 4; @@ -214,6 +220,15 @@ public class BatteryMeterView extends View implements DemoMode { return color; } + // TODO jspurlock - remove once we draw hollow bolt in code + public void setBarTransparent(boolean isTransparent) { + mLightning.setColorFilter(isTransparent ? LIGHTNING_FILTER_TRANS : LIGHTNING_FILTER_OPAQUE); + BatteryTracker tracker = mDemoMode ? mDemoTracker : mTracker; + if (tracker.plugged) { + postInvalidate(); + } + } + @Override public void draw(Canvas c) { BatteryTracker tracker = mDemoMode ? mDemoTracker : mTracker; @@ -290,17 +305,6 @@ public class BatteryMeterView extends View implements DemoMode { x, y, mTextPaint); - -// Paint pt = new Paint(); -// pt.setStrokeWidth(1f); -// pt.setStyle(Paint.Style.STROKE); -// pt.setColor(0xFFFF0000); -// c.drawRect(x, y-mTextHeight, x+tw, y, pt); -// -// Slog.v(TAG, "tw=" + tw + " th=" + mTextHeight); -// -// pt.setColor(0xFFFF00FF); -// c.drawRect(1, 1, mWidth, mHeight, pt); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java index 63e0c7a..f8b6ca6 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java @@ -16,11 +16,6 @@ package com.android.systemui.statusbar.phone; -import static com.android.systemui.statusbar.phone.BarTransitions.MODE_SEMI_TRANSPARENT; -import static com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSPARENT; - -import android.animation.Animator; -import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.app.ActivityManager; import android.content.Context; @@ -33,6 +28,7 @@ import android.view.MotionEvent; import android.view.View; import android.view.accessibility.AccessibilityEvent; +import com.android.systemui.BatteryMeterView; import com.android.systemui.EventLogTags; import com.android.systemui.R; @@ -59,6 +55,7 @@ public class PhoneStatusBarView extends PanelBar { private final float mAlphaWhenTransparent = 1; private View mLeftSide; private View mRightSide; + private BatteryMeterView mBattery; public StatusBarTransitions(Context context) { super(context, PhoneStatusBarView.this); @@ -70,6 +67,7 @@ public class PhoneStatusBarView extends PanelBar { public void init() { mLeftSide = findViewById(R.id.notification_icon_area); mRightSide = findViewById(R.id.system_icon_area); + mBattery = (BatteryMeterView) findViewById(R.id.battery); applyMode(getMode(), false /*animate*/); } @@ -84,8 +82,11 @@ public class PhoneStatusBarView extends PanelBar { } public float getAlphaFor(int mode) { - final boolean isTransparent = mode == MODE_SEMI_TRANSPARENT || mode == MODE_TRANSPARENT; - return isTransparent ? mAlphaWhenTransparent : mAlphaWhenOpaque; + return isTransparent(mode) ? mAlphaWhenTransparent : mAlphaWhenOpaque; + } + + private boolean isTransparent(int mode) { + return mode == MODE_SEMI_TRANSPARENT || mode == MODE_TRANSPARENT; } @Override @@ -96,13 +97,13 @@ public class PhoneStatusBarView extends PanelBar { private void applyMode(int mode, boolean animate) { if (mLeftSide == null || mRightSide == null) return; + mBattery.setBarTransparent(isTransparent(mode)); float newAlpha = getAlphaFor(mode); if (animate) { ObjectAnimator lhs = animateTransitionTo(mLeftSide, newAlpha); - ObjectAnimator rhs = animateTransitionTo(mRightSide, newAlpha); - AnimatorSet set = new AnimatorSet(); - set.playTogether(lhs, rhs); - set.start(); + lhs.start(); + // TODO jspurlock - fix conflicting rhs animations on tablets + mRightSide.setAlpha(newAlpha); } else { mLeftSide.setAlpha(newAlpha); mRightSide.setAlpha(newAlpha); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationController.java index 5f6063d..312bba3 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationController.java @@ -129,6 +129,8 @@ public class LocationController extends BroadcastReceiver { // setting won't be fully enabled until the user accepts the agreement. int mode = enabled ? Settings.Secure.LOCATION_MODE_HIGH_ACCURACY : Settings.Secure.LOCATION_MODE_OFF; + // QuickSettings always runs as the owner, so specifically set the settings + // for the current foreground user. return Settings.Secure .putIntForUser(cr, Settings.Secure.LOCATION_MODE, mode, currentUserId); } @@ -137,14 +139,11 @@ public class LocationController extends BroadcastReceiver { * Returns true if location isn't disabled in settings. */ public boolean isLocationEnabled() { - int currentUserId = ActivityManager.getCurrentUser(); - if (isUserLocationRestricted(currentUserId)) { - return false; - } - ContentResolver resolver = mContext.getContentResolver(); + // QuickSettings always runs as the owner, so specifically retrieve the settings + // for the current foreground user. int mode = Settings.Secure.getIntForUser(resolver, Settings.Secure.LOCATION_MODE, - Settings.Secure.LOCATION_MODE_OFF, currentUserId); + Settings.Secure.LOCATION_MODE_OFF, ActivityManager.getCurrentUser()); return mode != Settings.Secure.LOCATION_MODE_OFF; } diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java index d377902..27bf38cc 100644 --- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java @@ -460,6 +460,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { PowerManager.WakeLock mBroadcastWakeLock; boolean mHavePendingMediaKeyRepeatWithWakeLock; + private int mCurrentUserId; + // Maps global key codes to the components that will handle them. private GlobalKeyManager mGlobalKeyManager; @@ -4813,7 +4815,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { ResolveInfo info = mContext.getPackageManager().resolveActivityAsUser( intent, PackageManager.MATCH_DEFAULT_ONLY | PackageManager.GET_META_DATA, - getCurrentUserId()); + mCurrentUserId); if (info != null) { ai = info.activityInfo; } @@ -4828,16 +4830,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { return null; } - private int getCurrentUserId() { - try { - UserInfo user = ActivityManagerNative.getDefault().getCurrentUser(); - return user != null ? user.id : UserHandle.USER_NULL; - } catch (RemoteException e) { - // noop - } - return UserHandle.USER_NULL; - } - void startDockOrHome() { awakenDreams(); @@ -5093,9 +5085,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { boolean oldTransientNav = isTransientNavigationAllowed(oldVis); boolean isTransientNav = isTransientNavigationAllowed(vis); if (mFocusedWindow != null && oldTransientNav != isTransientNav) { - final int uid = getCurrentUserId(); final String pkg = mFocusedWindow.getOwningPackage(); - mTransientNavigationConfirmation.transientNavigationChanged(uid, pkg, isTransientNav); + mTransientNavigationConfirmation.transientNavigationChanged(mCurrentUserId, pkg, + isTransientNav); } vis = mNavigationBarController.updateVisibilityLw(isTransientNav, oldVis, vis); @@ -5174,6 +5166,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { @Override public void setCurrentUserLw(int newUserId) { + mCurrentUserId = newUserId; if (mKeyguardDelegate != null) { mKeyguardDelegate.setCurrentUser(newUserId); } diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java index 9bf2d3b..ab0eb23 100644 --- a/services/java/com/android/server/ConnectivityService.java +++ b/services/java/com/android/server/ConnectivityService.java @@ -184,7 +184,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { private static final String ACTION_PKT_CNT_SAMPLE_INTERVAL_ELAPSED = "android.net.ConnectivityService.action.PKT_CNT_SAMPLE_INTERVAL_ELAPSED"; - private static final int SAMPLE_INTERVAL_ELAPSED_REQURST_CODE = 0; + private static final int SAMPLE_INTERVAL_ELAPSED_REQUEST_CODE = 0; private PendingIntent mSampleIntervalElapsedIntent; @@ -661,7 +661,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { // start network sampling .. Intent intent = new Intent(ACTION_PKT_CNT_SAMPLE_INTERVAL_ELAPSED, null); mSampleIntervalElapsedIntent = PendingIntent.getBroadcast(mContext, - SAMPLE_INTERVAL_ELAPSED_REQURST_CODE, intent, 0); + SAMPLE_INTERVAL_ELAPSED_REQUEST_CODE, intent, 0); mAlarmManager = (AlarmManager)mContext.getSystemService(Context.ALARM_SERVICE); setAlarm(DEFAULT_START_SAMPLING_INTERVAL_IN_SECONDS * 1000, mSampleIntervalElapsedIntent); @@ -965,8 +965,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { // Find the first Provisioning Network NetworkInfo provNi = null; for (NetworkInfo ni : getAllNetworkInfo()) { - if (ni.getDetailedState() - == NetworkInfo.DetailedState.CONNECTED_TO_PROVISIONING_NETWORK) { + if (ni.isConnectedToProvisioningNetwork()) { provNi = ni; break; } @@ -2300,6 +2299,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { } thisNet.setTeardownRequested(false); updateNetworkSettings(thisNet); + updateMtuSizeSettings(thisNet); handleConnectivityChange(newNetType, false); sendConnectedBroadcastDelayed(info, getConnectivityChangeDelay()); @@ -2637,6 +2637,26 @@ public class ConnectivityService extends IConnectivityManager.Stub { return routesChanged; } + /** + * Reads the network specific MTU size from reources. + * and set it on it's iface. + */ + private void updateMtuSizeSettings(NetworkStateTracker nt) { + final String iface = nt.getLinkProperties().getInterfaceName(); + final int mtu = nt.getLinkProperties().getMtu(); + + if (mtu < 68 || mtu > 10000) { + loge("Unexpected mtu value: " + nt); + return; + } + + try { + if (VDBG) log("Setting MTU size: " + iface + ", " + mtu); + mNetd.setMtu(iface, mtu); + } catch (Exception e) { + Slog.e(TAG, "exception in setMtu()" + e); + } + } /** * Reads the network specific TCP buffer sizes from SystemProperties @@ -2919,7 +2939,8 @@ public class ConnectivityService extends IConnectivityManager.Stub { NetworkInfo.State state = info.getState(); if (VDBG || (state == NetworkInfo.State.CONNECTED) || - (state == NetworkInfo.State.DISCONNECTED)) { + (state == NetworkInfo.State.DISCONNECTED) || + (state == NetworkInfo.State.SUSPENDED)) { log("ConnectivityChange for " + info.getTypeName() + ": " + state + "/" + info.getDetailedState()); @@ -2934,7 +2955,8 @@ public class ConnectivityService extends IConnectivityManager.Stub { if (ConnectivityManager.isNetworkTypeMobile(info.getType()) && (0 != Settings.Global.getInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 0)) - && (state == NetworkInfo.State.CONNECTED)) { + && ((state == NetworkInfo.State.CONNECTED) + || info.isConnectedToProvisioningNetwork())) { checkMobileProvisioning(CheckMp.MAX_TIMEOUT_MS); } @@ -2947,8 +2969,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { } else if (info.getDetailedState() == DetailedState.CAPTIVE_PORTAL_CHECK) { handleCaptivePortalTrackerCheck(info); - } else if (info.getDetailedState() == - DetailedState.CONNECTED_TO_PROVISIONING_NETWORK) { + } else if (info.isConnectedToProvisioningNetwork()) { /** * TODO: Create ConnectivityManager.TYPE_MOBILE_PROVISIONING * for now its an in between network, its a network that @@ -3017,7 +3038,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { public void handleMessage(Message msg) { NetworkInfo info; switch (msg.what) { - case EVENT_CLEAR_NET_TRANSITION_WAKELOCK: + case EVENT_CLEAR_NET_TRANSITION_WAKELOCK: { String causedBy = null; synchronized (ConnectivityService.this) { if (msg.arg1 == mNetTransitionWakeLockSerialNumber && @@ -3030,49 +3051,44 @@ public class ConnectivityService extends IConnectivityManager.Stub { log("NetTransition Wakelock for " + causedBy + " released by timeout"); } break; - case EVENT_RESTORE_DEFAULT_NETWORK: + } + case EVENT_RESTORE_DEFAULT_NETWORK: { FeatureUser u = (FeatureUser)msg.obj; u.expire(); break; - case EVENT_INET_CONDITION_CHANGE: - { + } + case EVENT_INET_CONDITION_CHANGE: { int netType = msg.arg1; int condition = msg.arg2; handleInetConditionChange(netType, condition); break; } - case EVENT_INET_CONDITION_HOLD_END: - { + case EVENT_INET_CONDITION_HOLD_END: { int netType = msg.arg1; int sequence = msg.arg2; handleInetConditionHoldEnd(netType, sequence); break; } - case EVENT_SET_NETWORK_PREFERENCE: - { + case EVENT_SET_NETWORK_PREFERENCE: { int preference = msg.arg1; handleSetNetworkPreference(preference); break; } - case EVENT_SET_MOBILE_DATA: - { + case EVENT_SET_MOBILE_DATA: { boolean enabled = (msg.arg1 == ENABLED); handleSetMobileData(enabled); break; } - case EVENT_APPLY_GLOBAL_HTTP_PROXY: - { + case EVENT_APPLY_GLOBAL_HTTP_PROXY: { handleDeprecatedGlobalHttpProxy(); break; } - case EVENT_SET_DEPENDENCY_MET: - { + case EVENT_SET_DEPENDENCY_MET: { boolean met = (msg.arg1 == ENABLED); handleSetDependencyMet(msg.arg2, met); break; } - case EVENT_SEND_STICKY_BROADCAST_INTENT: - { + case EVENT_SEND_STICKY_BROADCAST_INTENT: { Intent intent = (Intent)msg.obj; sendStickyBroadcast(intent); break; @@ -3101,10 +3117,12 @@ public class ConnectivityService extends IConnectivityManager.Stub { log("EVENT_ENABLE_FAIL_FAST_MOBILE_DATA: stale arg1:" + msg.arg1 + " != tag:" + tag); } + break; } - case EVENT_SAMPLE_INTERVAL_ELAPSED: + case EVENT_SAMPLE_INTERVAL_ELAPSED: { handleNetworkSamplingTimeout(); break; + } } } } @@ -4418,8 +4436,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { // If provisioning network handle as a special case, // otherwise launch browser with the intent directly. NetworkInfo ni = getProvisioningNetworkInfo(); - if ((ni != null) && ni.getDetailedState() == - NetworkInfo.DetailedState.CONNECTED_TO_PROVISIONING_NETWORK) { + if ((ni != null) && ni.isConnectedToProvisioningNetwork()) { if (DBG) log("handleMobileProvisioningAction: on provisioning network"); MobileDataStateTracker mdst = (MobileDataStateTracker) mNetTrackers[ConnectivityManager.TYPE_MOBILE]; @@ -4775,4 +4792,3 @@ public class ConnectivityService extends IConnectivityManager.Stub { mAlarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, wakeupTime, intent); } } - diff --git a/services/java/com/android/server/CountryDetectorService.java b/services/java/com/android/server/CountryDetectorService.java index 4956dd5..a478b2f 100644 --- a/services/java/com/android/server/CountryDetectorService.java +++ b/services/java/com/android/server/CountryDetectorService.java @@ -97,11 +97,12 @@ public class CountryDetectorService extends ICountryDetector.Stub implements Run } @Override - public Country detectCountry() throws RemoteException { + public Country detectCountry() { if (!mSystemReady) { - throw new RemoteException(); + return null; // server not yet active + } else { + return mCountryDetector.detectCountry(); } - return mCountryDetector.detectCountry(); } /** diff --git a/services/java/com/android/server/NetworkManagementService.java b/services/java/com/android/server/NetworkManagementService.java index dfcab29..82cc540 100644 --- a/services/java/com/android/server/NetworkManagementService.java +++ b/services/java/com/android/server/NetworkManagementService.java @@ -838,6 +838,18 @@ public class NetworkManagementService extends INetworkManagementService.Stub } @Override + public void setMtu(String iface, int mtu) { + mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); + + final NativeDaemonEvent event; + try { + event = mConnector.execute("interface", "setmtu", iface, mtu); + } catch (NativeDaemonConnectorException e) { + throw e.rethrowAsParcelableException(); + } + } + + @Override public void shutdown() { // TODO: remove from aidl if nobody calls externally mContext.enforceCallingOrSelfPermission(SHUTDOWN, TAG); diff --git a/services/java/com/android/server/Watchdog.java b/services/java/com/android/server/Watchdog.java index ec573f9..616090e 100644 --- a/services/java/com/android/server/Watchdog.java +++ b/services/java/com/android/server/Watchdog.java @@ -129,7 +129,12 @@ public class Watchdog extends Thread { } public String describeBlockedStateLocked() { - return mCurrentMonitor == null ? mName : mCurrentMonitor.getClass().getName(); + if (mCurrentMonitor == null) { + return "Blocked in handler on " + mName + " (" + getThread().getName() + ")"; + } else { + return "Blocked in monitor " + mCurrentMonitor.getClass().getName() + + " on " + mName + " (" + getThread().getName() + ")"; + } } @Override @@ -291,7 +296,7 @@ public class Watchdog extends Thread { boolean waitedHalf = false; while (true) { final ArrayList<HandlerChecker> blockedCheckers; - final String name; + final String subject; final boolean allowRestart; synchronized (this) { long timeout = TIME_TO_WAIT; @@ -336,14 +341,14 @@ public class Watchdog extends Thread { } blockedCheckers = getBlockedCheckersLocked(); - name = describeCheckersLocked(blockedCheckers); + subject = describeCheckersLocked(blockedCheckers); allowRestart = mAllowRestart; } // If we got here, that means that the system is most likely hung. // First collect stack traces from all threads of the system process. // Then kill this process so that the system will restart. - EventLog.writeEvent(EventLogTags.WATCHDOG, name); + EventLog.writeEvent(EventLogTags.WATCHDOG, subject); ArrayList<Integer> pids = new ArrayList<Integer>(); pids.add(Process.myPid()); @@ -379,7 +384,7 @@ public class Watchdog extends Thread { public void run() { mActivity.addErrorToDropBox( "watchdog", null, "system_server", null, null, - name, null, stack, null); + subject, null, stack, null); } }; dropboxThread.start(); @@ -396,7 +401,7 @@ public class Watchdog extends Thread { try { Binder.setDumpDisabled("Service dumps disabled due to hung system process."); // 1 = keep waiting, -1 = kill system - int res = controller.systemNotResponding(name); + int res = controller.systemNotResponding(subject); if (res >= 0) { Slog.i(TAG, "Activity controller requested to coninue to wait"); waitedHalf = false; @@ -412,7 +417,7 @@ public class Watchdog extends Thread { } else if (!allowRestart) { Slog.w(TAG, "Restart not allowed: Watchdog is *not* killing the system process"); } else { - Slog.w(TAG, "*** WATCHDOG KILLING SYSTEM PROCESS: " + name); + Slog.w(TAG, "*** WATCHDOG KILLING SYSTEM PROCESS: " + subject); for (int i=0; i<blockedCheckers.size(); i++) { Slog.w(TAG, blockedCheckers.get(i).getName() + " stack trace:"); StackTraceElement[] stackTrace diff --git a/services/java/com/android/server/am/ProcessStatsService.java b/services/java/com/android/server/am/ProcessStatsService.java index 55409c2..43ae46f 100644 --- a/services/java/com/android/server/am/ProcessStatsService.java +++ b/services/java/com/android/server/am/ProcessStatsService.java @@ -413,6 +413,7 @@ public final class ProcessStatsService extends IProcessStats.Stub { mWriteLock.lock(); try { synchronized (mAm) { + mProcessStats.mTimePeriodEndRealtime = SystemClock.elapsedRealtime(); mProcessStats.writeToParcel(current, 0); } if (historic != null) { diff --git a/services/java/com/android/server/power/ElectronBeam.java b/services/java/com/android/server/power/ElectronBeam.java index 379e704..0d92f66 100644 --- a/services/java/com/android/server/power/ElectronBeam.java +++ b/services/java/com/android/server/power/ElectronBeam.java @@ -319,10 +319,10 @@ final class ElectronBeam { /** * Draws a frame where the electron beam has been stretched out into - * a thin white horizontal line that fades as it expands outwards. + * a thin white horizontal line that fades as it collapses inwards. * - * @param stretch The stretch factor. 0.0 is no stretch / no fade, - * 1.0 is maximum stretch / maximum fade. + * @param stretch The stretch factor. 0.0 is maximum stretch / no fade, + * 1.0 is collapsed / maximum fade. */ private void drawHStretch(float stretch) { // compute interpolation scale factor @@ -338,7 +338,7 @@ final class ElectronBeam { // draw narrow fading white line setHStretchQuad(mVertexBuffer, mDisplayWidth, mDisplayHeight, ag); - GLES10.glColor4f(1.0f - ag, 1.0f - ag, 1.0f - ag, 1.0f); + GLES10.glColor4f(1.0f - ag*0.75f, 1.0f - ag*0.75f, 1.0f - ag*0.75f, 1.0f); GLES10.glDrawArrays(GLES10.GL_TRIANGLE_FAN, 0, 4); // clean up @@ -355,7 +355,7 @@ final class ElectronBeam { } private static void setHStretchQuad(FloatBuffer vtx, float dw, float dh, float a) { - final float w = dw + (dw * a); + final float w = 2 * dw * (1.0f - a); final float h = 1.0f; final float x = (dw - w) * 0.5f; final float y = (dh - h) * 0.5f; diff --git a/wifi/java/android/net/wifi/WifiConfigStore.java b/wifi/java/android/net/wifi/WifiConfigStore.java index 4baab1f..ea7904c 100644 --- a/wifi/java/android/net/wifi/WifiConfigStore.java +++ b/wifi/java/android/net/wifi/WifiConfigStore.java @@ -680,9 +680,15 @@ class WifiConfigStore { } config.ipAssignment = IpAssignment.DHCP; config.proxySettings = ProxySettings.NONE; - mConfiguredNetworks.put(config.networkId, config); - mNetworkIds.put(configKey(config), config.networkId); - localLog("loaded configured network", config.networkId); + + if (mNetworkIds.containsKey(configKey(config))) { + // That SSID is already known, just ignore this duplicate entry + localLog("discarded duplicate network", config.networkId); + } else { + mConfiguredNetworks.put(config.networkId, config); + mNetworkIds.put(configKey(config), config.networkId); + localLog("loaded configured network", config.networkId); + } } readIpAndProxyConfigurations(); diff --git a/wifi/java/android/net/wifi/WifiNative.java b/wifi/java/android/net/wifi/WifiNative.java index f86a51c9..83789e2 100644 --- a/wifi/java/android/net/wifi/WifiNative.java +++ b/wifi/java/android/net/wifi/WifiNative.java @@ -500,7 +500,7 @@ public class WifiNative { } public void bssFlush() { - doBooleanCommand("BSS_FLUSH"); + doBooleanCommand("BSS_FLUSH 0"); } public boolean startWpsPbc(String bssid) { |