• Introducing XDA Computing: Discussion zones for Hardware, Software, and more!    Check it out!

[APP][ROOT][11+][29/Oct] Classic Power Menu - Power Menu Replacement w/ Wallet, Controls on Android 11, 12+

Search This thread

Quinny899

Recognized Developer / Recognized Contributor
Jan 26, 2011
8,648
7,919
24
Salford, Greater Manchester, UK
quinny898.co.uk
DonYhMA.png


Classic Power Menu is a Power Menu Replacement for Android 11+, with the main aim being restoring power menu options (Device Controls & Quick Access Wallet) on Android 12.

Classic Power Menu Requires root access to function, it is not possible without root

Please read the FAQ before downloading or replying with an issue


Features​

  • Up to 7 power options in the Power Menu, including the non-stock options of Screenshot, Reboot Recovery and Reboot Bootloader
    • Fully customisable, including rearranging and hiding buttons you don't use
  • Quick Access Wallet in the Power Menu, accessible while locked or unlocked
    • Optional blurring of card numbers while locked
    • Optional showing of loyalty cards, restoring a previous feature from Android 10 which was removed. Loyalty cards' codes can be shown while locked and without needing to open Google Pay, if you wish.
  • Device Controls in the Power Menu, accessible while locked or unlocked
    • Optional ability to interact with controls while locked, without requiring authentication
  • Material You inspired theme, using Monet colours and background blur on the Power Menu
  • Xposed is not required, interception of the power button is done via Accessibility Service, with only normal root required
    • An optional Xposed module is included, which can react quicker than the Accessibility Service

Screenshots​




Download​

Download the latest release from the GitHub Releases page

Changelog​

1.3
  • Fixed background blur on Android 12
  • Added toggles for auto rotation & full sensor rotation (including upside down). Rotation is enabled by default, full sensor is not.

Content Creators​

If you are making a video or article about Classic Power Menu, you will want to hide your card numbers. Enable the developer options in Classic Power Menu by triple tapping the "About" option, and enable Content Creator Mode. This will always blur your card numbers and will show a fake QR code for loyalty cards, keeping your data safe.
 
Last edited:

pbanj

Senior Member
Dec 22, 2011
975
453
it works pretty good, but i noticed that with lsposed it still asks for you to activate the accessibility service during setup.
also it seems after a reboot the first time you open the power menu it is using the stock power menu. but only that 1 time, every time after it's the one from this. it's probably something android related and out of your control, but i figured i would let you know anyways.
not sure if this is a bug or a design choice but the menu is transparent other than the power/reboot area, it would be nice if it wasnt transparent at all or at least a toggle for it


pixel 5a, rooted stock.
1632702610266.png
 
  • Like
Reactions: andybones

Quinny899

Recognized Developer / Recognized Contributor
Jan 26, 2011
8,648
7,919
24
Salford, Greater Manchester, UK
quinny898.co.uk
it works pretty good, but i noticed that with lsposed it still asks for you to activate the accessibility service during setup.
also it seems after a reboot the first time you open the power menu it is using the stock power menu. but only that 1 time, every time after it's the one from this. it's probably something android related and out of your control, but i figured i would let you know anyways.
not sure if this is a bug or a design choice but the menu is transparent other than the power/reboot area, it would be nice if it wasnt transparent at all or at least a toggle for it


pixel 5a, rooted stock.
View attachment 5419701
You need to reboot after enabling the module, then it will detect during the setup and not ask to enable accessibility.

The background is supposed to be blurred. What Android version are you on?
 

pbanj

Senior Member
Dec 22, 2011
975
453
You need to reboot after enabling the module, then it will detect during the setup and not ask to enable accessibility.

The background is supposed to be blurred. What Android version are you on?
i've rebooted multiple times and it still shows the screen asking to enable the accessibility service. thats why i mentioned it.

andorid 11 the September update
 

Quinny899

Recognized Developer / Recognized Contributor
Jan 26, 2011
8,648
7,919
24
Salford, Greater Manchester, UK
quinny898.co.uk
Version 1.1 now available with some bug fixes:

  • Fixed background blur check, added workaround info to faq for enabling it on 11
  • Fixed crash when wallpaper changes sometimes
  • Fixed crash when updating sometimes
  • Added option to skip accessibility page during setup for Xposed users with broken self-hooking
Download on GitHub, or in the app. You may see a crash when opening with the update, if this happens just go to the GitHub and download the update manually, it's fixed in this update for next time.

@pbanj and anyone else with blur issues, you need to run the shell commands in the FAQ to enable blur across the system for it to work. Note that doing so will also apply blur to other parts of SystemUI, so obviously don't do this if you don't want it. Classic Power Menu will use a solid background if blurs aren't supported now.
 

Enddo

Senior Member
Oct 31, 2013
2,020
862
Atlanta, Ga.
www.AndroidExplained.com
If it's crashing, send a logcat. If it's just straight up not working, it's probably MIUI's customisation and not a lot can be done.

I'm not seeing any specific app crash popups. But if you think a logcat taken after pressing the power button will help, I'll be happy to send one along.

I just see the usual MIUI power menu appear when long pressing the power button (after granting root and enabling the accessibility service)
 

Attachments

  • Screenshot_2021-09-27-15-36-44-460_com.android.settings.jpg
    Screenshot_2021-09-27-15-36-44-460_com.android.settings.jpg
    97.5 KB · Views: 62
  • Screenshot_2021-09-27-15-36-50-182_com.android.settings.jpg
    Screenshot_2021-09-27-15-36-50-182_com.android.settings.jpg
    118.3 KB · Views: 61

pbanj

Senior Member
Dec 22, 2011
975
453
Version 1.1 now available with some bug fixes:


Download on GitHub, or in the app. You may see a crash when opening with the update, if this happens just go to the GitHub and download the update manually, it's fixed in this update for next time.

@pbanj and anyone else with blur issues, you need to run the shell commands in the FAQ to enable blur across the system for it to work. Note that doing so will also apply blur to other parts of SystemUI, so obviously don't do this if you don't want it. Classic Power Menu will use a solid background if blurs aren't supported now.

Works, thanks for the fast fix.
 

Attachments

  • Screenshot_20210927-155609.png
    Screenshot_20210927-155609.png
    129.6 KB · Views: 69

PritamGhosh8009

New member
Jun 3, 2017
3
0
Nothing is working... I have enabled both xposed module on lsposed and accessibility and rebooted multiple times... Still stock power menu appears

Using app version 1.1 on pixel 3a android 12 beta 5 gsi on Redmi S2

Edit: Working after system reinstalled
 
Last edited:

pbanj

Senior Member
Dec 22, 2011
975
453
I'm not seeing any specific app crash popups. But if you think a logcat taken after pressing the power button will help, I'll be happy to send one along.

I just see the usual MIUI power menu appear when long pressing the power button (after granting root and enabling the accessibility service)

Give that a try. It works great for catching logs for app crashes
 
  • Like
Reactions: Enddo and Quinny899

Jiggs82

Senior Member
Dec 22, 2010
5,868
2,761
The Bronx, NY
Hey flashed latest v1.1 and still not seeing blur background, it's just transparent. Pixel 5 Android 12 beta 5. By the way can you add an option for black/dark grey/opaque background ?

Thanks
 

Enddo

Senior Member
Oct 31, 2013
2,020
862
Atlanta, Ga.
www.AndroidExplained.com

AyHenry

Member
Apr 7, 2020
30
6
Google Pixel 2 XL
FATAL EXCEPTION: main
Process: com.kieronquinn.app.classicpowermenu, PID: 14525
java.lang.NullPointerException: isAccessibilityServiceEnabled$default must not be null
at com.kieronquinn.app.classicpowermenu.utils.extensions.Extensions_AccessibilityServiceKt.isAccessibilityServiceEnabled$default(Extensions+AccessibilityService.kt:12)
at com.kieronquinn.app.classicpowermenu.ui.screens.setup.rootcheck.SetupRootCheckViewModelImpl$showNext$1.invokeSuspend(SetupRootCheckViewModel.kt:50)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith(DispatchedContinuation.kt:377)
at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable(Cancellable.kt:30)
at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable$default(Cancellable.kt:25)
at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:110)
at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56)
at kotlinx.coroutines.BuildersKt.launch(Unknown Source:1)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch$default(Builders.common.kt:47)
at kotlinx.coroutines.BuildersKt.launch$default(Unknown Source:1)
at com.kieronquinn.app.classicpowermenu.ui.screens.setup.rootcheck.SetupRootCheckViewModelImpl.showNext(SetupRootCheckViewModel.kt:49)
at com.kieronquinn.app.classicpowermenu.ui.screens.setup.rootcheck.SetupRootCheckFragment.handleState(SetupRootCheckFragment.kt:38)
at com.kieronquinn.app.classicpowermenu.ui.screens.setup.rootcheck.SetupRootCheckFragment.access$handleState(SetupRootCheckFragment.kt:12)
at com.kieronquinn.app.classicpowermenu.ui.screens.setup.rootcheck.SetupRootCheckFragment$setupState$1$invokeSuspend$$inlined$collect$1.emit(Collect.kt:135)
at kotlinx.coroutines.flow.FlowKt__ChannelsKt.emitAllImpl$FlowKt__ChannelsKt(Channels.kt:62)
at kotlinx.coroutines.flow.FlowKt__ChannelsKt.access$emitAllImpl(Channels.kt:1)
at kotlinx.coroutines.flow.FlowKt__ChannelsKt$emitAllImpl$1.invokeSuspend(Unknown Source:13)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at androidx.lifecycle.DispatchQueue.drainQueue(DispatchQueue.kt:75)
at androidx.lifecycle.DispatchQueue.enqueue(DispatchQueue.kt:112)
at androidx.lifecycle.DispatchQueue.access$enqueue(DispatchQueue.kt:31)
at androidx.lifecycle.DispatchQueue$dispatchAndEnqueue$1$1.run(DispatchQueue.kt:100)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7842)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
 

AyHenry

Member
Apr 7, 2020
30
6
Google Pixel 2 XL
FATAL EXCEPTION: main
Process: com.kieronquinn.app.classicpowermenu, PID: 14525
java.lang.NullPointerException: isAccessibilityServiceEnabled$default must not be null
at com.kieronquinn.app.classicpowermenu.utils.extensions.Extensions_AccessibilityServiceKt.isAccessibilityServiceEnabled$default(Extensions+AccessibilityService.kt:12)
at com.kieronquinn.app.classicpowermenu.ui.screens.setup.rootcheck.SetupRootCheckViewModelImpl$showNext$1.invokeSuspend(SetupRootCheckViewModel.kt:50)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith(DispatchedContinuation.kt:377)
at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable(Cancellable.kt:30)
at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable$default(Cancellable.kt:25)
at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:110)
at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56)
at kotlinx.coroutines.BuildersKt.launch(Unknown Source:1)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch$default(Builders.common.kt:47)
at kotlinx.coroutines.BuildersKt.launch$default(Unknown Source:1)
at com.kieronquinn.app.classicpowermenu.ui.screens.setup.rootcheck.SetupRootCheckViewModelImpl.showNext(SetupRootCheckViewModel.kt:49)
at com.kieronquinn.app.classicpowermenu.ui.screens.setup.rootcheck.SetupRootCheckFragment.handleState(SetupRootCheckFragment.kt:38)
at com.kieronquinn.app.classicpowermenu.ui.screens.setup.rootcheck.SetupRootCheckFragment.access$handleState(SetupRootCheckFragment.kt:12)
at com.kieronquinn.app.classicpowermenu.ui.screens.setup.rootcheck.SetupRootCheckFragment$setupState$1$invokeSuspend$$inlined$collect$1.emit(Collect.kt:135)
at kotlinx.coroutines.flow.FlowKt__ChannelsKt.emitAllImpl$FlowKt__ChannelsKt(Channels.kt:62)
at kotlinx.coroutines.flow.FlowKt__ChannelsKt.access$emitAllImpl(Channels.kt:1)
at kotlinx.coroutines.flow.FlowKt__ChannelsKt$emitAllImpl$1.invokeSuspend(Unknown Source:13)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at androidx.lifecycle.DispatchQueue.drainQueue(DispatchQueue.kt:75)
at androidx.lifecycle.DispatchQueue.enqueue(DispatchQueue.kt:112)
at androidx.lifecycle.DispatchQueue.access$enqueue(DispatchQueue.kt:31)
at androidx.lifecycle.DispatchQueue$dispatchAndEnqueue$1$1.run(DispatchQueue.kt:100)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7842)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
From scoop app.
V1.1 crashing on my pixel 3a xl running android 12 beta 5
 

Top Liked Posts

  • 1
    @Quinny899 thanks for this. Anyone, I feel stupid. Where is this optional Xposed module included with the app? I've looked on GitHub, read the FAQ, I've tried looking at the modules listed in Xposed, I tried looking for it in Fox's Mmm, I tried Googling for it, I searched this thread for every instance of the word Xposed, I looked around on my internal storage.

    Like I said, I feel like an idiot. Other than that, it works perfectly, other than the minor thing due to using the Accessibility service in the meantime.

    TIA
    It's part of the app, just install the app as normal and enable it in Xposed, nothing else needed.
    1
    Maybe it makes a difference, I'm running the latest Magisk Canary (23015) because I have to on the Pixel 6 Pro / Android 12, at least to have everything including SafetyNet etc working. Maybe that's the disconnect. There are no disabled modules in my Xposed, and the only ones there are the ones I loaded from storage manually.

    rUOxZkMr5VPewco__VIZHsWyM40S3gSRHYtckwnCV-oHJ3Hlu8fi69CLq6kRKMfgcDesUlN17lomD35zMB7G640UTjZ6x1WeibMorugY77qnShec_mLD5ecXjYYh2IniSwt8nkD_KYVo2v23gcsHkktevXZSpe-7F6hWH-EwofYhUg9W6KQbOhzatm6HnuSB6mP_BYZeymWNVlhH03bPLVimrjoDZFw_NZowo1UyUYwoObxjmZFVglG52hIToGAjAfcN1ynqBC0jVK3Kw8P-kfN8uJ8vPjaJAGnV3ngpLp_4psEsNryi6xCJdz4n739sj2_9_UkKCS80v4EyOe9ylf_Z6kwARU7299u4TxxuXwjsIcRJUfOdvyS0J4yMoZPQ4b2ysYHyt7qpPKcwroi7iKdZbT2lJ2HyCYwChOyh22-qjgNdvotofFW0AHIOVOU_xdK01C-70ChlJBcPwfgoGOf1KTjkbqQKmwo87BgYiw0tokVlcOOQsHXo0mccCuwhHfehiZuPLG82Wkk2f6zRDQut9JXEGnV7HUdFe1et0qCbd2Ri4JWXWuBFckKM950_eJGmTKHMewlIrSLRLdOevWuSJF8tLqu10rnXo-C2hs_f8ez7rDThMRbJNIZyQe-Ozan1r5RH6WUJhIzBd7g9BLRjrwYJRsYPiAFqYCltV_y5-EzpwrGzwW4AnS6BolK_PdWchHTMmCM9b2PhNdhTlWoUXg=w480-h1858-no
    That's Magisk, not Xposed. You don't have Xposed installed, you will need to install LSposed from their GitHub, which has its own manager.
  • 1
    @Quinny899
    Thank you for the great app.
    I know this is in the FAQ but I'll ask anyway as I think it'll be very useful addition...
    Could you add "Soft Restart" button? On Android 12 I run this command:
    Code:
    setprop ctl.restart zygote
    which restarts Android.
    1
    Yes it is. Restarts Android OS only instantly without reloading kernel and reinitializing hardware.
    1
    works as it should. great app. just wanted to know if we can make the background dark black like in a11 or can this be added in the future ?
    1
    @Quinny899 thanks for this. Anyone, I feel stupid. Where is this optional Xposed module included with the app? I've looked on GitHub, read the FAQ, I've tried looking at the modules listed in Xposed, I tried looking for it in Fox's Mmm, I tried Googling for it, I searched this thread for every instance of the word Xposed, I looked around on my internal storage.

    Like I said, I feel like an idiot. Other than that, it works perfectly, other than the minor thing due to using the Accessibility service in the meantime.

    TIA
    It's part of the app, just install the app as normal and enable it in Xposed, nothing else needed.
    1
    Maybe it makes a difference, I'm running the latest Magisk Canary (23015) because I have to on the Pixel 6 Pro / Android 12, at least to have everything including SafetyNet etc working. Maybe that's the disconnect. There are no disabled modules in my Xposed, and the only ones there are the ones I loaded from storage manually.

    rUOxZkMr5VPewco__VIZHsWyM40S3gSRHYtckwnCV-oHJ3Hlu8fi69CLq6kRKMfgcDesUlN17lomD35zMB7G640UTjZ6x1WeibMorugY77qnShec_mLD5ecXjYYh2IniSwt8nkD_KYVo2v23gcsHkktevXZSpe-7F6hWH-EwofYhUg9W6KQbOhzatm6HnuSB6mP_BYZeymWNVlhH03bPLVimrjoDZFw_NZowo1UyUYwoObxjmZFVglG52hIToGAjAfcN1ynqBC0jVK3Kw8P-kfN8uJ8vPjaJAGnV3ngpLp_4psEsNryi6xCJdz4n739sj2_9_UkKCS80v4EyOe9ylf_Z6kwARU7299u4TxxuXwjsIcRJUfOdvyS0J4yMoZPQ4b2ysYHyt7qpPKcwroi7iKdZbT2lJ2HyCYwChOyh22-qjgNdvotofFW0AHIOVOU_xdK01C-70ChlJBcPwfgoGOf1KTjkbqQKmwo87BgYiw0tokVlcOOQsHXo0mccCuwhHfehiZuPLG82Wkk2f6zRDQut9JXEGnV7HUdFe1et0qCbd2Ri4JWXWuBFckKM950_eJGmTKHMewlIrSLRLdOevWuSJF8tLqu10rnXo-C2hs_f8ez7rDThMRbJNIZyQe-Ozan1r5RH6WUJhIzBd7g9BLRjrwYJRsYPiAFqYCltV_y5-EzpwrGzwW4AnS6BolK_PdWchHTMmCM9b2PhNdhTlWoUXg=w480-h1858-no
    That's Magisk, not Xposed. You don't have Xposed installed, you will need to install LSposed from their GitHub, which has its own manager.
  • 11
    DonYhMA.png


    Classic Power Menu is a Power Menu Replacement for Android 11+, with the main aim being restoring power menu options (Device Controls & Quick Access Wallet) on Android 12.

    Classic Power Menu Requires root access to function, it is not possible without root

    Please read the FAQ before downloading or replying with an issue


    Features​

    • Up to 7 power options in the Power Menu, including the non-stock options of Screenshot, Reboot Recovery and Reboot Bootloader
      • Fully customisable, including rearranging and hiding buttons you don't use
    • Quick Access Wallet in the Power Menu, accessible while locked or unlocked
      • Optional blurring of card numbers while locked
      • Optional showing of loyalty cards, restoring a previous feature from Android 10 which was removed. Loyalty cards' codes can be shown while locked and without needing to open Google Pay, if you wish.
    • Device Controls in the Power Menu, accessible while locked or unlocked
      • Optional ability to interact with controls while locked, without requiring authentication
    • Material You inspired theme, using Monet colours and background blur on the Power Menu
    • Xposed is not required, interception of the power button is done via Accessibility Service, with only normal root required
      • An optional Xposed module is included, which can react quicker than the Accessibility Service

    Screenshots​




    Download​

    Download the latest release from the GitHub Releases page

    Changelog​

    1.3
    • Fixed background blur on Android 12
    • Added toggles for auto rotation & full sensor rotation (including upside down). Rotation is enabled by default, full sensor is not.

    Content Creators​

    If you are making a video or article about Classic Power Menu, you will want to hide your card numbers. Enable the developer options in Classic Power Menu by triple tapping the "About" option, and enable Content Creator Mode. This will always blur your card numbers and will show a fake QR code for loyalty cards, keeping your data safe.
    3
    New version 1.2:

    • Fixed reported crashes
    • Added support for Android 12 with the Xposed module
    • Merged in support for MIUI with the Xposed module (Thanks Ketal!)
    • Improved reboot action support
    • Better support for notches and punch holes
    • Allow full screen rotation on power menu
    Download on GitHub releases
    2
    Version 1.3 now available on GitHub:

    • Fixed background blur on Android 12
    • Added toggles for auto rotation & full sensor rotation (including upside down). Rotation is enabled by default, full sensor is not.
    2
    I'm not seeing any specific app crash popups. But if you think a logcat taken after pressing the power button will help, I'll be happy to send one along.

    I just see the usual MIUI power menu appear when long pressing the power button (after granting root and enabling the accessibility service)

    Give that a try. It works great for catching logs for app crashes
    2
    How is that normal? Isn't the gesture bar supposed to be hidden in the Always On Display? On what device does it show up there?
    The Power Menu is meant to be an overlay, it cannot be with a custom app. Therefore the system thinks there's an app open, and keeps the bar there.