Loading core/java/android/hardware/camera2/extension/CameraOutputConfig.aidl +2 −2 Original line number Diff line number Diff line Loading @@ -15,8 +15,8 @@ */ package android.hardware.camera2.extension; import android.hardware.camera2.extension.Size; import android.hardware.camera2.extension.OutputConfigId; import android.hardware.camera2.extension.Size; import android.view.Surface; /** @hide */ Loading @@ -35,5 +35,5 @@ parcelable CameraOutputConfig OutputConfigId outputId; int surfaceGroupId; String physicalCameraId; List<OutputConfigId> surfaceSharingOutputConfigs; List<CameraOutputConfig> sharedSurfaceConfigs; } core/java/android/hardware/camera2/impl/CameraAdvancedExtensionSessionImpl.java +46 −48 Original line number Diff line number Diff line Loading @@ -217,60 +217,30 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes CameraSessionConfig sessionConfig = mSessionProcessor.initSession(mCameraDevice.getId(), previewSurface, captureSurface); List<CameraOutputConfig> outputConfigs = sessionConfig.outputConfigs; // map camera output ids to output configurations HashMap<Integer, OutputConfiguration> cameraOutputs = new HashMap<>(); ArrayList<OutputConfiguration> outputList = new ArrayList<>(); for (CameraOutputConfig output : outputConfigs) { OutputConfiguration cameraOutput = null; switch(output.type) { case CameraOutputConfig.TYPE_SURFACE: if (output.surface == null) { Log.w(TAG, "Unsupported client output id: " + output.outputId.id + ", skipping!"); continue; } cameraOutput = new OutputConfiguration(output.surfaceGroupId, output.surface); break; case CameraOutputConfig.TYPE_IMAGEREADER: if ((output.imageFormat == ImageFormat.UNKNOWN) || (output.size.width <= 0) || (output.size.height <= 0)) { Log.w(TAG, "Unsupported client output id: " + output.outputId.id + ", skipping!"); Surface outputSurface = initializeSurfrace(output); if (outputSurface == null) { continue; } ImageReader reader = ImageReader.newInstance(output.size.width, output.size.height, output.imageFormat, output.capacity); mReaderMap.put(output.outputId.id, reader); cameraOutput = new OutputConfiguration(output.surfaceGroupId, reader.getSurface()); break; case CameraOutputConfig.TYPE_MULTIRES_IMAGEREADER: // Support for multi-resolution outputs to be added in future releases default: throw new IllegalArgumentException("Unsupported output config type: " + output.type); } cameraOutput.setPhysicalCameraId(output.physicalCameraId); cameraOutputs.put(output.outputId.id, cameraOutput); } OutputConfiguration cameraOutput = new OutputConfiguration(output.surfaceGroupId, outputSurface); ArrayList<OutputConfiguration> outputList = new ArrayList<>(); for (CameraOutputConfig output : outputConfigs) { if (!cameraOutputs.containsKey(output.outputId.id)) { // Shared surface already removed by a previous iteration if ((output.sharedSurfaceConfigs != null) && !output.sharedSurfaceConfigs.isEmpty()) { cameraOutput.enableSurfaceSharing(); for (CameraOutputConfig sharedOutputConfig : output.sharedSurfaceConfigs) { Surface sharedSurface = initializeSurfrace(sharedOutputConfig); if (sharedSurface == null) { continue; } OutputConfiguration outConfig = cameraOutputs.get(output.outputId.id); if ((output.surfaceSharingOutputConfigs != null) && !output.surfaceSharingOutputConfigs.isEmpty()) { outConfig.enableSurfaceSharing(); for (OutputConfigId outputId : output.surfaceSharingOutputConfigs) { outConfig.addSurface(cameraOutputs.get(outputId.id).getSurface()); cameraOutputs.remove(outputId.id); cameraOutput.addSurface(sharedSurface); mCameraConfigMap.put(sharedSurface, sharedOutputConfig); } } outputList.add(outConfig); mCameraConfigMap.put(outConfig.getSurface(), output); cameraOutput.setPhysicalCameraId(output.physicalCameraId); outputList.add(cameraOutput); mCameraConfigMap.put(cameraOutput.getSurface(), output); } SessionConfiguration sessionConfiguration = new SessionConfiguration( Loading Loading @@ -995,4 +965,32 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes CameraMetadataNative.update(ret.getNativeMetadata(), request.parameters); return ret; } private Surface initializeSurfrace(CameraOutputConfig output) { switch(output.type) { case CameraOutputConfig.TYPE_SURFACE: if (output.surface == null) { Log.w(TAG, "Unsupported client output id: " + output.outputId.id + ", skipping!"); return null; } return output.surface; case CameraOutputConfig.TYPE_IMAGEREADER: if ((output.imageFormat == ImageFormat.UNKNOWN) || (output.size.width <= 0) || (output.size.height <= 0)) { Log.w(TAG, "Unsupported client output id: " + output.outputId.id + ", skipping!"); return null; } ImageReader reader = ImageReader.newInstance(output.size.width, output.size.height, output.imageFormat, output.capacity); mReaderMap.put(output.outputId.id, reader); return reader.getSurface(); case CameraOutputConfig.TYPE_MULTIRES_IMAGEREADER: // Support for multi-resolution outputs to be added in future releases default: throw new IllegalArgumentException("Unsupported output config type: " + output.type); } } } core/java/android/hardware/display/DisplayManager.java +13 −1 Original line number Diff line number Diff line Loading @@ -108,6 +108,17 @@ public final class DisplayManager { public static final String DISPLAY_CATEGORY_PRESENTATION = "android.hardware.display.category.PRESENTATION"; /** * Display category: All displays, including disabled displays. * <p> * This returns all displays, including currently disabled and inaccessible displays. * * @see #getDisplays(String) * @hide */ public static final String DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED = "android.hardware.display.category.ALL_INCLUDING_DISABLED"; /** @hide **/ @IntDef(prefix = "VIRTUAL_DISPLAY_FLAG_", flag = true, value = { VIRTUAL_DISPLAY_FLAG_PUBLIC, Loading Loading @@ -552,7 +563,8 @@ public final class DisplayManager { final int[] displayIds = mGlobal.getDisplayIds(); synchronized (mLock) { try { if (category == null) { if (category == null || DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED.equals(category)) { addAllDisplaysLocked(mTempDisplays, displayIds); } else if (category.equals(DISPLAY_CATEGORY_PRESENTATION)) { addPresentationDisplaysLocked(mTempDisplays, displayIds, Display.TYPE_WIFI); Loading core/java/android/view/autofill/AutofillManager.java +8 −0 Original line number Diff line number Diff line Loading @@ -506,6 +506,14 @@ public final class AutofillManager { public static final String DEVICE_CONFIG_AUTOFILL_DIALOG_HINTS = "autofill_dialog_hints"; /** * Sets a value of delay time to show up the inline tooltip view. * * @hide */ public static final String DEVICE_CONFIG_AUTOFILL_TOOLTIP_SHOW_UP_DELAY = "autofill_inline_tooltip_first_show_delay"; private static final String DIALOG_HINTS_DELIMITER = ":"; /** @hide */ Loading core/java/com/android/internal/app/ChooserActivity.java +17 −0 Original line number Diff line number Diff line Loading @@ -1002,6 +1002,7 @@ public class ChooserActivity extends ResolverActivity implements mMaxTargetsPerRow = getResources().getInteger(R.integer.config_chooser_max_targets_per_row); adjustPreviewWidth(newConfig.orientation, null); updateStickyContentPreview(); updateTabPadding(); } private boolean shouldDisplayLandscape(int orientation) { Loading @@ -1024,6 +1025,20 @@ public class ChooserActivity extends ResolverActivity implements updateLayoutWidth(R.id.content_preview_file_layout, width, parent); } private void updateTabPadding() { if (shouldShowTabs()) { View tabs = findViewById(R.id.tabs); float iconSize = getResources().getDimension(R.dimen.chooser_icon_size); // The entire width consists of icons or padding. Divide the item padding in half to get // paddingHorizontal. float padding = (tabs.getWidth() - mMaxTargetsPerRow * iconSize) / mMaxTargetsPerRow / 2; // Subtract the margin the buttons already have. padding -= getResources().getDimension(R.dimen.resolver_profile_tab_margin); tabs.setPadding((int) padding, 0, (int) padding, 0); } } private void updateLayoutWidth(int layoutResourceId, int width, View parent) { View view = parent.findViewById(layoutResourceId); if (view != null && view.getLayoutParams() != null) { Loading Loading @@ -2480,6 +2495,8 @@ public class ChooserActivity extends ResolverActivity implements recyclerView.setAdapter(gridAdapter); ((GridLayoutManager) recyclerView.getLayoutManager()).setSpanCount( mMaxTargetsPerRow); updateTabPadding(); } UserHandle currentUserHandle = mChooserMultiProfilePagerAdapter.getCurrentUserHandle(); Loading Loading
core/java/android/hardware/camera2/extension/CameraOutputConfig.aidl +2 −2 Original line number Diff line number Diff line Loading @@ -15,8 +15,8 @@ */ package android.hardware.camera2.extension; import android.hardware.camera2.extension.Size; import android.hardware.camera2.extension.OutputConfigId; import android.hardware.camera2.extension.Size; import android.view.Surface; /** @hide */ Loading @@ -35,5 +35,5 @@ parcelable CameraOutputConfig OutputConfigId outputId; int surfaceGroupId; String physicalCameraId; List<OutputConfigId> surfaceSharingOutputConfigs; List<CameraOutputConfig> sharedSurfaceConfigs; }
core/java/android/hardware/camera2/impl/CameraAdvancedExtensionSessionImpl.java +46 −48 Original line number Diff line number Diff line Loading @@ -217,60 +217,30 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes CameraSessionConfig sessionConfig = mSessionProcessor.initSession(mCameraDevice.getId(), previewSurface, captureSurface); List<CameraOutputConfig> outputConfigs = sessionConfig.outputConfigs; // map camera output ids to output configurations HashMap<Integer, OutputConfiguration> cameraOutputs = new HashMap<>(); ArrayList<OutputConfiguration> outputList = new ArrayList<>(); for (CameraOutputConfig output : outputConfigs) { OutputConfiguration cameraOutput = null; switch(output.type) { case CameraOutputConfig.TYPE_SURFACE: if (output.surface == null) { Log.w(TAG, "Unsupported client output id: " + output.outputId.id + ", skipping!"); continue; } cameraOutput = new OutputConfiguration(output.surfaceGroupId, output.surface); break; case CameraOutputConfig.TYPE_IMAGEREADER: if ((output.imageFormat == ImageFormat.UNKNOWN) || (output.size.width <= 0) || (output.size.height <= 0)) { Log.w(TAG, "Unsupported client output id: " + output.outputId.id + ", skipping!"); Surface outputSurface = initializeSurfrace(output); if (outputSurface == null) { continue; } ImageReader reader = ImageReader.newInstance(output.size.width, output.size.height, output.imageFormat, output.capacity); mReaderMap.put(output.outputId.id, reader); cameraOutput = new OutputConfiguration(output.surfaceGroupId, reader.getSurface()); break; case CameraOutputConfig.TYPE_MULTIRES_IMAGEREADER: // Support for multi-resolution outputs to be added in future releases default: throw new IllegalArgumentException("Unsupported output config type: " + output.type); } cameraOutput.setPhysicalCameraId(output.physicalCameraId); cameraOutputs.put(output.outputId.id, cameraOutput); } OutputConfiguration cameraOutput = new OutputConfiguration(output.surfaceGroupId, outputSurface); ArrayList<OutputConfiguration> outputList = new ArrayList<>(); for (CameraOutputConfig output : outputConfigs) { if (!cameraOutputs.containsKey(output.outputId.id)) { // Shared surface already removed by a previous iteration if ((output.sharedSurfaceConfigs != null) && !output.sharedSurfaceConfigs.isEmpty()) { cameraOutput.enableSurfaceSharing(); for (CameraOutputConfig sharedOutputConfig : output.sharedSurfaceConfigs) { Surface sharedSurface = initializeSurfrace(sharedOutputConfig); if (sharedSurface == null) { continue; } OutputConfiguration outConfig = cameraOutputs.get(output.outputId.id); if ((output.surfaceSharingOutputConfigs != null) && !output.surfaceSharingOutputConfigs.isEmpty()) { outConfig.enableSurfaceSharing(); for (OutputConfigId outputId : output.surfaceSharingOutputConfigs) { outConfig.addSurface(cameraOutputs.get(outputId.id).getSurface()); cameraOutputs.remove(outputId.id); cameraOutput.addSurface(sharedSurface); mCameraConfigMap.put(sharedSurface, sharedOutputConfig); } } outputList.add(outConfig); mCameraConfigMap.put(outConfig.getSurface(), output); cameraOutput.setPhysicalCameraId(output.physicalCameraId); outputList.add(cameraOutput); mCameraConfigMap.put(cameraOutput.getSurface(), output); } SessionConfiguration sessionConfiguration = new SessionConfiguration( Loading Loading @@ -995,4 +965,32 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes CameraMetadataNative.update(ret.getNativeMetadata(), request.parameters); return ret; } private Surface initializeSurfrace(CameraOutputConfig output) { switch(output.type) { case CameraOutputConfig.TYPE_SURFACE: if (output.surface == null) { Log.w(TAG, "Unsupported client output id: " + output.outputId.id + ", skipping!"); return null; } return output.surface; case CameraOutputConfig.TYPE_IMAGEREADER: if ((output.imageFormat == ImageFormat.UNKNOWN) || (output.size.width <= 0) || (output.size.height <= 0)) { Log.w(TAG, "Unsupported client output id: " + output.outputId.id + ", skipping!"); return null; } ImageReader reader = ImageReader.newInstance(output.size.width, output.size.height, output.imageFormat, output.capacity); mReaderMap.put(output.outputId.id, reader); return reader.getSurface(); case CameraOutputConfig.TYPE_MULTIRES_IMAGEREADER: // Support for multi-resolution outputs to be added in future releases default: throw new IllegalArgumentException("Unsupported output config type: " + output.type); } } }
core/java/android/hardware/display/DisplayManager.java +13 −1 Original line number Diff line number Diff line Loading @@ -108,6 +108,17 @@ public final class DisplayManager { public static final String DISPLAY_CATEGORY_PRESENTATION = "android.hardware.display.category.PRESENTATION"; /** * Display category: All displays, including disabled displays. * <p> * This returns all displays, including currently disabled and inaccessible displays. * * @see #getDisplays(String) * @hide */ public static final String DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED = "android.hardware.display.category.ALL_INCLUDING_DISABLED"; /** @hide **/ @IntDef(prefix = "VIRTUAL_DISPLAY_FLAG_", flag = true, value = { VIRTUAL_DISPLAY_FLAG_PUBLIC, Loading Loading @@ -552,7 +563,8 @@ public final class DisplayManager { final int[] displayIds = mGlobal.getDisplayIds(); synchronized (mLock) { try { if (category == null) { if (category == null || DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED.equals(category)) { addAllDisplaysLocked(mTempDisplays, displayIds); } else if (category.equals(DISPLAY_CATEGORY_PRESENTATION)) { addPresentationDisplaysLocked(mTempDisplays, displayIds, Display.TYPE_WIFI); Loading
core/java/android/view/autofill/AutofillManager.java +8 −0 Original line number Diff line number Diff line Loading @@ -506,6 +506,14 @@ public final class AutofillManager { public static final String DEVICE_CONFIG_AUTOFILL_DIALOG_HINTS = "autofill_dialog_hints"; /** * Sets a value of delay time to show up the inline tooltip view. * * @hide */ public static final String DEVICE_CONFIG_AUTOFILL_TOOLTIP_SHOW_UP_DELAY = "autofill_inline_tooltip_first_show_delay"; private static final String DIALOG_HINTS_DELIMITER = ":"; /** @hide */ Loading
core/java/com/android/internal/app/ChooserActivity.java +17 −0 Original line number Diff line number Diff line Loading @@ -1002,6 +1002,7 @@ public class ChooserActivity extends ResolverActivity implements mMaxTargetsPerRow = getResources().getInteger(R.integer.config_chooser_max_targets_per_row); adjustPreviewWidth(newConfig.orientation, null); updateStickyContentPreview(); updateTabPadding(); } private boolean shouldDisplayLandscape(int orientation) { Loading @@ -1024,6 +1025,20 @@ public class ChooserActivity extends ResolverActivity implements updateLayoutWidth(R.id.content_preview_file_layout, width, parent); } private void updateTabPadding() { if (shouldShowTabs()) { View tabs = findViewById(R.id.tabs); float iconSize = getResources().getDimension(R.dimen.chooser_icon_size); // The entire width consists of icons or padding. Divide the item padding in half to get // paddingHorizontal. float padding = (tabs.getWidth() - mMaxTargetsPerRow * iconSize) / mMaxTargetsPerRow / 2; // Subtract the margin the buttons already have. padding -= getResources().getDimension(R.dimen.resolver_profile_tab_margin); tabs.setPadding((int) padding, 0, (int) padding, 0); } } private void updateLayoutWidth(int layoutResourceId, int width, View parent) { View view = parent.findViewById(layoutResourceId); if (view != null && view.getLayoutParams() != null) { Loading Loading @@ -2480,6 +2495,8 @@ public class ChooserActivity extends ResolverActivity implements recyclerView.setAdapter(gridAdapter); ((GridLayoutManager) recyclerView.getLayoutManager()).setSpanCount( mMaxTargetsPerRow); updateTabPadding(); } UserHandle currentUserHandle = mChooserMultiProfilePagerAdapter.getCurrentUserHandle(); Loading