Status Update
Comments
wu...@google.com <wu...@google.com>
ch...@google.com <ch...@google.com> #2
Branch: androidx-master-dev
commit c60f33e229e31ab328ef6b59dab63b264954831c
Author: Alexandre Elias <aelias@google.com>
Date: Fri Jul 10 16:23:09 2020
Semantics no-op cleanups
Partly in response to lmr's broad code review, I did a pass of
superficial API/implementation cleanup. The main changes are:
- I changed each Boolean SemanticsProperty where false is equivalent to
not being present to take "Unit" instead. This is conceptually
clearer: it avoids questions like "can I cancel out a semantics from a
merged child by setting it to false?" Because "property = Unit" looks
weird, I also changed the style of these to "property()".
- I moved the Semantics id generator closer to where it's used, in
SemanticsModifierCore. I made it internal and an AtomicInt.
(Note that integer ids are heavily used in the Android
AccessibilityNodeInfo APIs so I can't simply remove them entirely.)
- I deleted dead code. Some examples include SemanticsHintOverrides,
a public API not connected to anything, and SemanticsPropertyKey
merge() open method which is never called. (In both cases I have
a different plan in mind for accessibility.)
Fixes: 145951226
Fixes: 145955412
Test: existing tests
Relnote: "Single-value semantics properties now use a calling style.
For example, 'semantics { hidden = true }' is now written as:
'semantics { hidden() }'."
Change-Id: Ic1afd12ea22c926babc9662f1804d80b33aa0cfc
M ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/LayoutNodeModifierBenchmark.kt
M ui/ui-core/api/0.1.0-dev15.txt
M ui/ui-core/api/current.txt
M ui/ui-core/api/public_plus_experimental_0.1.0-dev15.txt
M ui/ui-core/api/public_plus_experimental_current.txt
M ui/ui-core/api/restricted_0.1.0-dev15.txt
M ui/ui-core/api/restricted_current.txt
M ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/graphics/vector/VectorTest.kt
M ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/semantics/SemanticsTests.kt
M ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidActuals.kt
M ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidComposeView.kt
M ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidComposeViewAccessibilityDelegateCompat.kt
M ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidPopup.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/core/Expect.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/core/semantics/SemanticsConfiguration.kt
D ui/ui-core/src/commonMain/kotlin/androidx/ui/core/semantics/SemanticsHintOverrides.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/core/semantics/SemanticsModifier.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/core/semantics/SemanticsNode.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/core/semantics/SemanticsOwner.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/core/semantics/SemanticsWrapper.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/semantics/SemanticsProperties.kt
M ui/ui-foundation/api/0.1.0-dev15.txt
M ui/ui-foundation/api/current.txt
M ui/ui-foundation/api/public_plus_experimental_0.1.0-dev15.txt
M ui/ui-foundation/api/public_plus_experimental_current.txt
M ui/ui-foundation/api/restricted_0.1.0-dev15.txt
M ui/ui-foundation/api/restricted_current.txt
M ui/ui-foundation/src/main/java/androidx/ui/foundation/Clickable.kt
M ui/ui-foundation/src/main/java/androidx/ui/foundation/Dialog.kt
M ui/ui-foundation/src/main/java/androidx/ui/foundation/Scroller.kt
M ui/ui-foundation/src/main/java/androidx/ui/foundation/selection/Selectable.kt
M ui/ui-foundation/src/main/java/androidx/ui/foundation/selection/Toggleable.kt
M ui/ui-foundation/src/main/java/androidx/ui/foundation/semantics/FoundationSemanticsProperties.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/ButtonTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/CardTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/CheckboxScreenshotTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/RadioButtonScreenshotTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/ScaffoldTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/SnackbarTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/SurfaceTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/ripple/RippleIndicationTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/textfield/TextFieldScreenshotTest.kt
M ui/ui-material/src/main/java/androidx/ui/material/AppBar.kt
M ui/ui-material/src/main/java/androidx/ui/material/TextFieldImpl.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/AssertsTest.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/CallSemanticsActionTest.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/ErrorMessagesTest.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/FindersTest.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/PrintToStringTest.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/ScrollToTest.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/TextActionsTest.kt
M ui/ui-test/src/main/java/androidx/ui/test/Actions.kt
M ui/ui-test/src/main/java/androidx/ui/test/Filters.kt
M ui/ui-text/api/0.1.0-dev15.txt
M ui/ui-text/api/current.txt
M ui/ui-text/api/public_plus_experimental_0.1.0-dev15.txt
M ui/ui-text/api/public_plus_experimental_current.txt
M ui/ui-text/api/restricted_0.1.0-dev15.txt
M ui/ui-text/api/restricted_current.txt
M ui/ui-text/src/commonMain/kotlin/androidx/ui/text/CoreTextField.kt
M ui/ui-text/src/commonMain/kotlin/androidx/ui/text/TextSemanticsProperties.kt
ma...@gmail.com <ma...@gmail.com> #3
This is an SM-X200 (Samsung Galaxy Tab A8, 2022)
ma...@gmail.com <ma...@gmail.com>
ch...@google.com <ch...@google.com> #4
Thanks. We'll try to get one device and will update our analyzing results after obtaining the device.
ch...@google.com <ch...@google.com> #5
Hi,
We have obtained a Galaxy Tab A8 device. I tested the photo-taking function by the
- RP1A.200720.012.X200XXU1AVG1
- SP1A.210812.016.X200XXU1BVK1
- TP1A.220624.014.X200XXU1CVL5
- UP1A.231005.007.X200XXU3DXB3 (exactly the same as the version mentioned in
)comment#1
Could you try the attached apk to see whether the issue can be reproduced?
In
If it is still a 100% issue on your app but can't be reproduced by the attached apk, could you provide us a minimal project sample code that can reproduce the issue? Thanks.
ma...@gmail.com <ma...@gmail.com> #6
Yes, this occurrs immediately after reboot.
I got approval to make the reproducer, it will take it a bit of time to extract it out from our app.
ma...@gmail.com <ma...@gmail.com> #7
On the A8, it when you hit the button, it starts the capture, but never finishes.
ma...@gmail.com <ma...@gmail.com>
ch...@google.com <ch...@google.com> #8
Thanks for providing the sample project. I can reproduce the issue now.
After some testing, this should be a device-specific issue that we have observed the similar issue on some other devices. The root cause is unclear, but we have a
I found that the issue occurs when ImageCapture use 1920x1080 resolution under the Preview + VideoCapture + ImageCapture UseCase combination. I didn't check all supported output sizes, but maybe you can try either of the following approaches to workaround this issue in your side before the new CameraX library with the solution is released.
Option 1: Force ImageCapture to use other resolution. For example, you can refer the following code to force select 2560x1440 for ImageCapture.
// ImageCapture
imageCapture = ImageCapture.Builder()
.setCaptureMode(ImageCapture.CAPTURE_MODE_MINIMIZE_LATENCY)
.apply {
if (camera?.cameraInfo?.hasFlashUnit() == true) {
setFlashMode(viewModel.flashStatus.value)
}
}
// Force select 2560x1440
.setResolutionSelector(
ResolutionSelector.Builder()
.setResolutionStrategy(
ResolutionStrategy(
Size(2560, 1440),
ResolutionStrategy.FALLBACK_RULE_NONE
)
)
.setAspectRatioStrategy(AspectRatioStrategy.RATIO_16_9_FALLBACK_AUTO_STRATEGY)
.build()
)
// Set initial target rotation, we will have to call this again if rotation changes
// during the lifecycle of this use case
// Set initial target rotation
.setTargetRotation(
(_fragmentCameraBinding?.viewFinder?.display?.rotation
?: viewModel.orientation.value)
)
.build()
Option 2: Use hidden API to force enable surface processing mode for VideoCapture
@SuppressLint("RestrictedApi")
videoCapture = VideoCapture.Builder<Recorder>(recorder)
.setSurfaceProcessingForceEnabled()
.build().apply {
setTargetRotation((_fragmentCameraBinding?.viewFinder?.display?.rotation ?: viewModel.orientation.value))
}
Note: please apply the workaround only for Galaxy Tab A8 to avoid unexpected results
ap...@google.com <ap...@google.com> #9
Branch: androidx-main
commit fbeb8430ee66e8bf1a6df102efc30c0fbe0596c7
Author: CharcoalChen <charcoalchen@google.com>
Date: Tue May 21 17:36:54 2024
Apply ImageCaptureFailedWhenVideoCaptureIsBoundQuirk for Samsung Tab A8
On Samsung Tab A8, apps can't take pictures successfully when ImageCapture selects 1920x1080 under Preview + VideoCapture + ImageCapture UseCase combination.
Relnote: "Fixed the issue that apps can't take pictures successfully on Samsung Tab A8 when ImageCapture selects 1920x1080 under Preview + VideoCapture + ImageCapture UseCase combination."
Bug: 336925549
Test: manual test on real device
Change-Id: I5a463a7d42f5adda71c5ce34e934b93fa9969764
M camera/camera-video/src/main/java/androidx/camera/video/internal/compat/quirk/ImageCaptureFailedWhenVideoCaptureIsBoundQuirk.java
ch...@google.com <ch...@google.com> #10
The CL has been merged. Please wait for the next release which will include the workaround. Thanks.
pr...@google.com <pr...@google.com> #11
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.camera:camera-video:1.4.0-beta02
Description
CAMERAX VERSION: 1.4.0-alpha02 - 1.4.0-alpha05
CAMERA APPLICATION NAME AND VERSION: custom app
ANDROID OS BUILD NUMBER: Android 14, UP1A.231005.007.X200XXU3DXB3
DEVICE NAME: Samsung Galaxy Tab A8
DESCRIPTION:
When calling
imageCapture.takePicture
with anImageCapture.onImageSavedCallback
, the onCaptureStarted method is called, but none of the other methods are ever called.Opening the camera and issuing the first imageCapture has logs like this:
Further interactions add the following:
LIST ANY EXPERIMENTAL FEATURES: NONE
STEPS TO REPRODUCE:
OBSERVED RESULTS: takePicture is called, but never returns anything, not even an error.
EXPECTED RESULTS: some kind of return
REPRODUCIBILITY: (5 of 5, 1 of 100, etc) 100% on this device. Exact same code works on other devices (Pixel 7, Samsung Galaxy S24 Ultra, Pixel 3a)
ADDITIONAL INFORMATION:
CODE FRAGMENTS (this will help us troubleshoot your issues):