Status Update
Comments
as...@gmail.com <as...@gmail.com> #2
Running into a similar issue, any update on this?
cm...@google.com <cm...@google.com>
ko...@gmail.com <ko...@gmail.com> #3
This is a platform behavior change.
lf...@google.com <lf...@google.com> #4
ga...@gmail.com <ga...@gmail.com> #5
be...@microsoft.com <be...@microsoft.com> #6
Any progress?
ma...@gmail.com <ma...@gmail.com> #7
bo...@google.com <bo...@google.com>
sh...@squareup.com <sh...@squareup.com> #9
re...@gmail.com <re...@gmail.com> #10
This issue is also stopping us from being able to support edge-to-edge in Android 15. Given it's a enforced requirement for targeting Android 15, couldn't this be prioritised higher? Companies like us have hundreds of screens to fix so waiting until 2025 for a workaround is going to be tough work.
ma...@gmail.com <ma...@gmail.com> #11
Maybe you can create a static method, com.your.company.ViewGroupCompat#installCompatInsetsDispatch
, like this:
After creating the method, you need to call ViewGroupCompat.installCompatInsetsDispatch(getWindow().getDecorView())
in onCreate()
of your activity to make the behavior compatible with API 30+.
When the new library with the API is released, you can replace com.your.company.ViewGroupCompat
with androidx.core.view.ViewGroupCompat
.
ga...@gmail.com <ga...@gmail.com> #12
Wow quick response, thanks! I just tried applying that workaround to our root view and can confirm it fixes the issue. (Also FYI there's a typo in the PR; "comsumed")
li...@gmail.com <li...@gmail.com> #13
I'm getting a crash when using new version of ktx-core 1.16.0-alpha01
with fixed ViewCompat and ViewGroupCompat on API < 30. This is related to FragmentContainerView
:
java.lang.NullPointerException: Parameter specified as non-null is null: method androidx.fragment.app.FragmentContainerView.setOnApplyWindowInsetsListener, parameter listener
at androidx.fragment.app.FragmentContainerView.setOnApplyWindowInsetsListener(Unknown Source:2)
at androidx.core.view.ViewGroupCompat.dispatchApplyWindowInsets(ViewGroupCompat.java:255)
at androidx.core.view.ViewGroupCompat.dispatchApplyWindowInsets(ViewGroupCompat.java:264)
at androidx.core.view.ViewGroupCompat.dispatchApplyWindowInsets(ViewGroupCompat.java:264)
at androidx.core.view.ViewGroupCompat.dispatchApplyWindowInsets(ViewGroupCompat.java:264)
at androidx.core.view.ViewGroupCompat.dispatchApplyWindowInsets(ViewGroupCompat.java:264)
at androidx.core.view.ViewGroupCompat.dispatchApplyWindowInsets(ViewGroupCompat.java:264)
at androidx.core.view.ViewGroupCompat.dispatchApplyWindowInsets(ViewGroupCompat.java:264)
at androidx.core.view.ViewGroupCompat.lambda$installCompatInsetsDispatch$0(ViewGroupCompat.java:218)
at androidx.core.view.ViewGroupCompat$$ExternalSyntheticLambda1.onApplyWindowInsets(D8$$SyntheticClass:0)
at android.view.View.dispatchApplyWindowInsets(View.java:10499)
at android.view.ViewGroup.dispatchApplyWindowInsets(ViewGroup.java:7191)
at android.view.ViewRootImpl.dispatchApplyInsets(ViewRootImpl.java:1925)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2030)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1721)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7598)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:966)
at android.view.Choreographer.doCallbacks(Choreographer.java:790)
at android.view.Choreographer.doFrame(Choreographer.java:725)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:951)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
sv...@whisp.de <sv...@whisp.de> #14
Re
I think the @NonNull
annotation of androidx.fragment.app.FragmentContainerView.setOnApplyWindowInsetsListener
has been removed since
Do you mind upgrading your androidx.fragment version to 1.4.0-alpha09 or above? The latest version is
ma...@gmail.com <ma...@gmail.com> #17
Ah, you are right. It still requires a non-null object since the required type is not OnApplyWindowInsetsListener?
but OnApplyWindowInsetsListener
.
public override fun setOnApplyWindowInsetsListener(listener: OnApplyWindowInsetsListener) {
applyWindowInsetsListener = listener
}
Hi Jeremy,
Do you mind checking why androidx.fragment.app.FragmentContainerView.setOnApplyWindowInsetsListener
requires a non-null parameter? The restriction was added in
rk...@google.com <rk...@google.com> #18
Project: platform/frameworks/support
Branch: androidx-main
Author: Jeremy Woods <
Link:
Change the nullability of setOnApplyWindowInsetsListener
Expand for full commit details
Change the nullability of setOnApplyWindowInsetsListener
Since setOnApplyWindowInsetsListener overrides a method from the View
class which is in java and has no nullability, we did not know the
proper nullability.
It seems there are cases when the inset listener could indeed be null,
so we can make that nullable now.
RelNote: "FragmentContainerView's `setOnApplyWindowInsetsListener`
override now takes a null listener."
Test: All tests pass
Bug: 282790626
Change-Id: I575f0b5da72d096b14393afd9819ab66e061b002
Files:
- M
fragment/fragment/src/main/java/androidx/fragment/app/FragmentContainerView.kt
Hash: 415aeef3c0a44db3b614b717a65f8f028feef165
Date: Wed Jan 08 18:27:20 2025
ma...@gmail.com <ma...@gmail.com> #19
Hey Tiger,
I made it nullable again. We will release this in the next couple of weeks or so.
rk...@google.com <rk...@google.com> #20
Thank you Jeremy.
Since androidx.core
as mentioned at
If the issue mentioned at
rk...@google.com <rk...@google.com> #21
Any update on this to fix the crashing? Also does this new API will also fix the callback not being triggered after configuration change (orientation) for Android Tablet running on Android 21? We noticed another fragmented behavior between phone at tablet size devices where the setOnApplyWindowInsetsListener
callback is not being triggered in Fragments after configuration change.
Activity (callback is being triggered on both phone and tablet after configuration change)
ViewCompat.setOnApplyWindowInsetsListener(root) { _: View, insets: WindowInsetsCompat ->
// Return WindowInsetsCompat.CONSUMED if you don't want the window insets to keep passing down
// to descendant views including all views of Fragment(s) under this Activity
insets
}
Fragment with Jetpack Navigation (callback is being triggered regardless of Android version on phone size device after configuration change, but not on tablet running on Android 21)
ViewCompat.setOnApplyWindowInsetsListener(root) { _: View, insets: WindowInsetsCompat ->
// Return WindowInsetsCompat.CONSUMED if you don't want the window insets to keep passing down
// to descendant views including all views of Fragment(s) under this Activity
WindowInsetsCompat.CONSUMED
}
Also hoping
ma...@gmail.com <ma...@gmail.com> #22
Any chance this issue gets higher priority? It's a shame that Google is forcing developers to migrate to Android 15 and setup edge-to-edge while still having critical compatibility issues with older Android versions even in apps with relatively modern stack (Fragment + Compose)
rk...@google.com <rk...@google.com> #23
ma...@gmail.com <ma...@gmail.com> #24
Hi Jeremy,
Do you have any update about the new release?
rk...@google.com <rk...@google.com> #25
Build cut is this Wednesday and it will be released next week as part of Fragment 1.8.6
.
ad...@linkedin.com <ad...@linkedin.com> #26
rk...@google.com <rk...@google.com> #27
ad...@linkedin.com <ad...@linkedin.com> #28
rk...@google.com <rk...@google.com> #29
a short term fix while you are looking for a better solution?
I'll talk about it on our weekly meeting on Tuesday.
dm...@gmail.com <dm...@gmail.com> #30
ad...@linkedin.com <ad...@linkedin.com> #31
rk...@google.com <rk...@google.com> #32
rk...@google.com <rk...@google.com> #33
I figured out how to pass runtime values into virtio-snd
and hda-duplex
, we should be able to avoid opening the microphone in those devices. When I tried the same with goldfish_audio
, the QEMU says -device goldfish_audio,debug=42: Parameter 'driver' expects pluggable device type
. We probably want to retire (not sure if we can just disable it) this device instead of hacking it further.
rk...@google.com <rk...@google.com> #34
I merged a
ma...@gmail.com <ma...@gmail.com> #35
"Sounds like" (pun intended) a very good improvement!
BTW: What decides which audio driver to use (I mean with which logic virtio-snd
or hda-duplex
or goldfish_audio
is used) ?
be...@gmail.com <be...@gmail.com> #36
rk...@google.com <rk...@google.com> #37
What decides which audio driver to use?
virtio-snd is a drop-in replacement for Intel HDA, but the linux driver is required. If
if this fix will apply to me (I'm using an M1 mac) and
Yes, it will apply for Apple M1.
when the fix will go out?
I still need to figure out what to do with goldfish_audio if our leads will not buy my change to disable the microphone permanently on goldfish_audio. One everything is merged, we should release the changes into the canary channel in weeks.
ma...@gmail.com <ma...@gmail.com> #38
Cool thanks!
If the system image says it has the driver, then we use the virtio-snd device
Do you know from which API do system images ship with the linux virtio driver?
rk...@google.com <rk...@google.com> #39
T is the first system image with virtio-snd drivers.
ma...@gmail.com <ma...@gmail.com> #40
Super! To sum it up: with any emu image with at least api26 the mic will obey the hw.audioInput
setting in the .ini file otherwise (for older emu images) the mic will always be disabled. Correct?
rk...@google.com <rk...@google.com> #41
Unfortunately we create the goldfish_audio device unconditionally, it is not even a sound card from the qemu point of view, it just happens to call the audio API. I disabled the microphone in goldfish_audio
rk...@google.com <rk...@google.com> #42
All changes are merged and available in the 8513367 emulator build. I checked our system images, on x86 the microphone issue should be fixed on API23 and later, on arm ones - API29 and later. We will see if we can fix our older arm system images (API28 and older).
rk...@google.com <rk...@google.com> #43
To disable the microphone you want to add hw.audioInput=no
to config.ini
in the AVD folder.
ji...@gmail.com <ji...@gmail.com> #44
Following along from #43, I figured I should mention I recently opensourced the tool I built to quickly enable and disable the hw.audio*
(and other) settings on the various emulators I use for day to day development:
A checkbox just makes life a bit easier than constantly going in and hand editing .ini files.
Thanks for your work on this ticket and #37095756 over the last couple of years, appreciate it.
ma...@gmail.com <ma...@gmail.com> #45
All changes are merged and available in the 8513367 emulator build.
Is this build downloadable somewhere?
Is there a target version in which we can expect this fix to land in (I'm currently using emulator v 31.3.2)?
rk...@google.com <rk...@google.com> #46
Is this build downloadable somewhere?
While there is nothing secret there, I am not sure how to share it with you until we release the usual way.
Is there a target version
I don't know yet. Our emulator version is something like 31.3.7-8408431
, the build number is after the dash.
rk...@google.com <rk...@google.com>
ma...@gmail.com <ma...@gmail.com> #48
Thank you, I was able to access a build and I could verify on my machine that the issue has been resolved. thank you very much everyone again for listening to our comments until here!
ma...@gmail.com <ma...@gmail.com> #49
Hello,
emulator 31.3.8 build 8598121 just landed in the canary channel.
Can you please check if it includes this fix?
Writing hw.audioInput=no
in config.ini
and using an API32 image still produces the BT audio switch when launching the emu.
rk...@google.com <rk...@google.com> #50
Got log says 31.3.8 should include my change to fix this issue. Unfortunately I am out of the office and cannot check this.
rk...@google.com <rk...@google.com> #51
I confirm, 8513367
does not affect BT audio quality, while 8598121
does affect.
rk...@google.com <rk...@google.com> #52
rk...@google.com <rk...@google.com> #53
Here is what happened: the last time we cut a new release was April, 4. Since then we have been doing cherry-picks which I have not requested before. With the cherry-picks requested this fix is available in 31.3.9 which should be published by the end of this week or the next week.
rk...@google.com <rk...@google.com> #54
Ranjit, could you please confirm this fix is available in 31.3.9?
You need bluetooth headphones for it.
- Connect the headphones to the host.
- Start some audio on the host (e.g. a youtube video with good audio quality).
- Coldboot an emulator (you can use any system image, e.g. S), notice host's audio quality drops when the emulator starts.
- Add
hw.audioInput=no
to the AVD'sconfig.ini
. - Coldboot the emulator again, check if host's audio quality is unaffected.
ra...@google.com <ra...@google.com> #55
I verified with steps mentioned on #54 on Mac Intel(macOS Monterey with Version 12.4) and Mac M1(macOS Big Sur with Version 11.6.6)
With hw.audioInput=yes observed the following issues on both Mac machines.
1) When I cold boot AVD the audio on the host stops for a bit and then continues. There is a change in audio quality.
2) When I do wipe data on the AVD the audio on the host breaks for a bit.
After updating hw.audioInput=no to the AVD's config.ini the issues are resolved. I neither see change in the audio quality nor the audio breaks on the host machine.
ma...@gmail.com <ma...@gmail.com> #57
I can confirm 31.3.9 is now available from the canary channel and that it includes this fix. Thanks a lot for making this happen!
bo...@gmail.com <bo...@gmail.com> #58
rk...@google.com <rk...@google.com> #59
The fix should be available on M1 as well, it is in the 31.3.9 version. What is your emulator version?
ma...@gmail.com <ma...@gmail.com> #60
I confirm I've tested it with 31.3.9 on M1 processor and it's working.
ja...@edg.com.au <ja...@edg.com.au> #61
ma...@gmail.com <ma...@gmail.com> #62
Did you tweak the .ini file as it was explained in this long thread?
rk...@google.com <rk...@google.com> #63
Hi Jamie, it should be fixed, please add hw.audioInput=no
to AVD's config.ini
file for API32 and below. It is not required for API33 and above. There are some other quirks there (in API33) as I am learning about QEMU audio API behavior (the QEMU and kernel disagree on how audio is consumed).
sh...@gmail.com <sh...@gmail.com> #64
It is not required for API33 and above
Using API 33 but the sound quality still drops
rk...@google.com <rk...@google.com> #65
shalva258, could you please elaborate? I just created API30 and API33 on Mac and I can hear that API30 affects audio in my bt headphones when the emulator starts and API33 does not. Maybe update the emulator? I tried on 32.1.3.
sh...@gmail.com <sh...@gmail.com> #66
sh...@gmail.com <sh...@gmail.com> #67
rk...@google.com <rk...@google.com> #68
Try installing
> Is not this the version that should have fixed this?
You want at least 31.3.9.
[Deleted User] <[Deleted User]> #69
[Deleted User] <[Deleted User]> #70
حذف الكل
pa...@outlook.com <pa...@outlook.com> #71
It's freaking 2024, the original issue from 2016 that was marked as fixed was definitely not fixed, this one wasn't either. Windows 10, using emulator 34.2.14-11834374 and this beyond intrusive problem is still there. Good luck trying to share your emulator screen on a meeting and keep your audio and mic working without problems, you won't because this insanely dumb bug is still present to this day and it takes over your audio input forcing hour headset into hands-free mode when you don't want to.
rk...@google.com <rk...@google.com> #72
Hi particlecore,
It's freaking 2024, the original issue from 2016 that was marked as fixed
The original issue is fixed.
Good luck trying to share your emulator screen on a meeting and keep your audio and mic working without problems
This is a separate problem which we have never heard before. Please file a new bug (specify which meeting software you use).
Description
OS: macOS 11.2.3 Emulator version: 30.5.3 Image: x86_64 with play store
I use a tool that monitors audio devices activity. I see that it notifies me about my microphone is active
Steps to Reproduce:
Please check the attachments.