diff options
8 files changed, 60 insertions, 33 deletions
diff --git a/core/java/android/hardware/camera2/CaptureRequest.java b/core/java/android/hardware/camera2/CaptureRequest.java index 0849df8..b417496 100644 --- a/core/java/android/hardware/camera2/CaptureRequest.java +++ b/core/java/android/hardware/camera2/CaptureRequest.java @@ -867,9 +867,9 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * metering sequence when it processes this request.</p> * <p>This entry is normally set to IDLE, or is not * included at all in the request settings. When included and - * set to START, the camera device will trigger the autoexposure + * set to START, the camera device will trigger the auto-exposure (AE) * precapture metering sequence.</p> - * <p>The precapture sequence should triggered before starting a + * <p>The precapture sequence should be triggered before starting a * high-quality still capture for final metering decisions to * be made, and for firing pre-capture flash pulses to estimate * scene brightness and required final capture flash power, when @@ -877,6 +877,14 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * <p>Normally, this entry should be set to START for only a * single request, and the application should wait until the * sequence completes before starting a new one.</p> + * <p>When a precapture metering sequence is finished, the camera device + * may lock the auto-exposure routine internally to be able to accurately expose the + * subsequent still capture image (<code>{@link CaptureRequest#CONTROL_CAPTURE_INTENT android.control.captureIntent} == STILL_CAPTURE</code>). + * For this case, the AE may not resume normal scan if no subsequent still capture is + * submitted. To ensure that the AE routine restarts normal scan, the application should + * submit a request with <code>{@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} == true</code>, followed by a request + * with <code>{@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} == false</code>, if the application decides not to submit a + * still capture request after the precapture sequence completes.</p> * <p>The exact effect of auto-exposure (AE) precapture trigger * depends on the current AE mode and state; see * {@link CaptureResult#CONTROL_AE_STATE android.control.aeState} for AE precapture state transition @@ -895,7 +903,9 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CaptureRequest#CONTROL_AE_LOCK * @see CaptureResult#CONTROL_AE_STATE + * @see CaptureRequest#CONTROL_CAPTURE_INTENT * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see #CONTROL_AE_PRECAPTURE_TRIGGER_IDLE * @see #CONTROL_AE_PRECAPTURE_TRIGGER_START diff --git a/core/java/android/hardware/camera2/CaptureResult.java b/core/java/android/hardware/camera2/CaptureResult.java index 1396940..f17100d 100644 --- a/core/java/android/hardware/camera2/CaptureResult.java +++ b/core/java/android/hardware/camera2/CaptureResult.java @@ -718,9 +718,9 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * metering sequence when it processes this request.</p> * <p>This entry is normally set to IDLE, or is not * included at all in the request settings. When included and - * set to START, the camera device will trigger the autoexposure + * set to START, the camera device will trigger the auto-exposure (AE) * precapture metering sequence.</p> - * <p>The precapture sequence should triggered before starting a + * <p>The precapture sequence should be triggered before starting a * high-quality still capture for final metering decisions to * be made, and for firing pre-capture flash pulses to estimate * scene brightness and required final capture flash power, when @@ -728,6 +728,14 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p>Normally, this entry should be set to START for only a * single request, and the application should wait until the * sequence completes before starting a new one.</p> + * <p>When a precapture metering sequence is finished, the camera device + * may lock the auto-exposure routine internally to be able to accurately expose the + * subsequent still capture image (<code>{@link CaptureRequest#CONTROL_CAPTURE_INTENT android.control.captureIntent} == STILL_CAPTURE</code>). + * For this case, the AE may not resume normal scan if no subsequent still capture is + * submitted. To ensure that the AE routine restarts normal scan, the application should + * submit a request with <code>{@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} == true</code>, followed by a request + * with <code>{@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} == false</code>, if the application decides not to submit a + * still capture request after the precapture sequence completes.</p> * <p>The exact effect of auto-exposure (AE) precapture trigger * depends on the current AE mode and state; see * {@link CaptureResult#CONTROL_AE_STATE android.control.aeState} for AE precapture state transition @@ -746,7 +754,9 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CaptureRequest#CONTROL_AE_LOCK * @see CaptureResult#CONTROL_AE_STATE + * @see CaptureRequest#CONTROL_CAPTURE_INTENT * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see #CONTROL_AE_PRECAPTURE_TRIGGER_IDLE * @see #CONTROL_AE_PRECAPTURE_TRIGGER_START diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index e4a8978..3c05872 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -8440,8 +8440,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, // If the event should be handled by accessibility focus first. if (event.isTargetAccessibilityFocus()) { // We don't have focus or no virtual descendant has it, do not handle the event. - if (!isAccessibilityFocused() && !(getViewRootImpl() != null && getViewRootImpl() - .getAccessibilityFocusedHost() == this)) { + if (!isAccessibilityFocusedViewOrHost()) { return false; } // We have focus and got the event, then use normal event dispatch. @@ -8490,6 +8489,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback, return result; } + boolean isAccessibilityFocusedViewOrHost() { + return isAccessibilityFocused() || (getViewRootImpl() != null && getViewRootImpl() + .getAccessibilityFocusedHost() == this); + } + /** * Filter the touch event to apply security policies. * diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index fd50c4d..7a36eb6 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -1934,6 +1934,12 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager // Whether this event should be handled by the accessibility focus first. final boolean targetAccessibilityFocus = ev.isTargetAccessibilityFocus(); + // If the event targets the accessibility focused view and this is it, start + // normal event dispatch. Maybe a descendant is what will handle the click. + if (targetAccessibilityFocus && isAccessibilityFocusedViewOrHost()) { + ev.setTargetAccessibilityFocus(false); + } + boolean handled = false; if (onFilterTouchEventForSecurity(ev)) { final int action = ev.getAction(); @@ -2681,6 +2687,9 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager @Override void onInitializeAccessibilityNodeInfoInternal(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfoInternal(info); + if (getAccessibilityNodeProvider() != null) { + return; + } if (mAttachInfo != null) { final ArrayList<View> childrenForAccessibility = mAttachInfo.mTempArrayList; childrenForAccessibility.clear(); diff --git a/docs/html/tools/support-library/features.jd b/docs/html/tools/support-library/features.jd index 079dd71..0f0a0c0 100644 --- a/docs/html/tools/support-library/features.jd +++ b/docs/html/tools/support-library/features.jd @@ -143,10 +143,9 @@ numbers, can cause unexpected version updates and regression incompatibilities.< <p>The Gradle build script dependency identifier for this library is as follows:</p> <pre> -com.android.support:support-v4:21.0.+ +com.android.support:support-v4:21.0.0 </pre> -<p>This dependency notation specifies the latest release version with the 21.0 prefix.</p> <h2 id="multidex">Multidex Support Library</h2> @@ -171,10 +170,9 @@ com.android.support:support-v4:21.0.+ </p> <pre> -com.android.support:multidex:1.0.+ +com.android.support:multidex:1.0.0 </pre> -<p>This dependency notation specifies the latest release version with the 1.0 prefix.</p> <h2 id="v7">v7 Support Libraries</h2> @@ -226,10 +224,9 @@ com.android.support:multidex:1.0.+ <p>The Gradle build script dependency identifier for this library is as follows:</p> <pre> -com.android.support:appcompat-v7:21.0.+ +com.android.support:appcompat-v7:21.0.0 </pre> -<p>This dependency notation specifies the latest release version with the 21.0 prefix.</p> <h3 id="v7-cardview">v7 cardview library</h3> @@ -249,10 +246,9 @@ libraries with resources</a>.</p> <p>The Gradle build script dependency identifier for this library is as follows:</p> <pre> -com.android.support:cardview-v7:21.0.+ +com.android.support:cardview-v7:21.0.0 </pre> -<p>This dependency notation specifies the latest release version with the 21.0 prefix.</p> <h3 id="v7-gridlayout">v7 gridlayout library</h3> @@ -271,10 +267,9 @@ com.android.support:cardview-v7:21.0.+ <p>The Gradle build script dependency identifier for this library is as follows:</p> <pre> -com.android.support:gridlayout-v7:21.0.+ +com.android.support:gridlayout-v7:21.0.0 </pre> -<p>This dependency notation specifies the latest release version with the 21.0 prefix.</p> <h3 id="v7-mediarouter">v7 mediarouter library</h3> @@ -308,7 +303,7 @@ script dependency identifier <code>com.android.support:support-v7-mediarouter:&l where "<revision>" is the minimum revision at which the library is available. For example:</p> <pre> -com.android.support:mediarouter-v7:21.0.+ +com.android.support:mediarouter-v7:21.0.0 </pre> <p class="caution">The v7 mediarouter library APIs introduced in Support Library @@ -335,11 +330,9 @@ title card.</p> <p>The Gradle build script dependency identifier for this library is as follows:</p> <pre> -com.android.support:palette-v7:21.0.+ +com.android.support:palette-v7:21.0.0 </pre> -<p>This dependency notation specifies the latest release version with the 21.0 prefix.</p> - <h3 id="v7-recyclerview">v7 recyclerview library</h3> @@ -360,11 +353,9 @@ libraries with resources</a>.</p> <p>The Gradle build script dependency identifier for this library is as follows:</p> <pre> -com.android.support:recyclerview-v7:21.0.+ +com.android.support:recyclerview-v7:21.0.0 </pre> -<p>This dependency notation specifies the latest release version with the 21.0 prefix.</p> - <h2 id="v8">v8 Support Library</h2> @@ -405,11 +396,9 @@ com.android.support:recyclerview-v7:21.0.+ <p>The Gradle build script dependency identifier for this library is as follows:</p> <pre> -com.android.support:support-v13:18.0.+ +com.android.support:support-v13:18.0.0 </pre> -<p>This dependency notation specifies the latest release version with the 18.0 prefix.</p> - <h2 id="v17-leanback">v17 Leanback Library</h2> @@ -448,9 +437,8 @@ with resources</a>. </p> <p>The Gradle build script dependency identifier for this library is as follows:</p> <pre> -com.android.support:leanback-v17:21.0.+ +com.android.support:leanback-v17:21.0.0 </pre> -<p>This dependency notation specifies the latest release version with the 21.0 prefix.</p> diff --git a/docs/html/training/material/drawables.jd b/docs/html/training/material/drawables.jd index 820a004..a2de8e9 100644 --- a/docs/html/training/material/drawables.jd +++ b/docs/html/training/material/drawables.jd @@ -73,7 +73,7 @@ app's module:</p> <pre> dependencies { ... - compile 'com.android.support:palette-v7:21.0.+' + compile 'com.android.support:palette-v7:21.0.0' } </pre> diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardPasswordView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardPasswordView.java index dfea166..845d53a 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardPasswordView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardPasswordView.java @@ -90,9 +90,11 @@ public class KeyguardPasswordView extends KeyguardAbsKeyInputView post(new Runnable() { @Override public void run() { - mPasswordEntry.requestFocus(); - if (reason != KeyguardSecurityView.SCREEN_ON || mShowImeAtScreenOn) { - mImm.showSoftInput(mPasswordEntry, InputMethodManager.SHOW_IMPLICIT); + if (isShown()) { + mPasswordEntry.requestFocus(); + if (reason != KeyguardSecurityView.SCREEN_ON || mShowImeAtScreenOn) { + mImm.showSoftInput(mPasswordEntry, InputMethodManager.SHOW_IMPLICIT); + } } } }); diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 5b17eaa..cc0a30a 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -8636,7 +8636,11 @@ public class PackageManagerService extends IPackageManager.Stub { if (DEBUG_INSTALL) Log.v(TAG, "token " + token + " to BM for possible restore"); try { - bm.restoreAtInstall(res.pkg.applicationInfo.packageName, token); + if (bm.isBackupServiceActive(UserHandle.USER_OWNER)) { + bm.restoreAtInstall(res.pkg.applicationInfo.packageName, token); + } else { + doRestore = false; + } } catch (RemoteException e) { // can't happen; the backup manager is local } catch (Exception e) { |
