I proudly present, my first Xposed module: True Silent Mode for Lollipop :fingers-crossed:
This module will restore the good old silent mode from Kitkat where you can press VolDown another time after reaching vibration mode. New notifications won't make a sound or vibrate but still show the LED.
Ever since the release of Android 5.0 I've been terribly annoyed by the lack of a true silent mode in Lollipop. And it seems I'm not the only one, users are raging here at xda, at reddit, at Google's AOSP issue tracker and on various other places of the web.
Quite quickly after the 5.0 release rumors started spreading that Google will bring back the silent mode for Android 5.1. As always Google didn't comment on them, but it seemed plausible after all that demand. But with the launch of Xposed for Lollipop thanks to the fabulous @rovo89 and new rumors that 5.1 will not include the new (or should I say old?) silent mode I decided to take things into my own hands now.
This is my first Xposed module and in my tests everything works as intended on my Nexus 5 with the Stock 5.0.1 ROM, but I'll flag it as beta for now. If you encounter any bug attach a logcat to your bugreport or there is nothing I can do for you.
Attention: I wrote this module for AOSP-based ROMs, it should work on all Nexus devices and Google Play Edition phones. There's a good chance that it breaks if some vendors or did change basic internal android functions (Samsung, LG etc.). Additionally it could conflict with custom roms like Cyanogenmod or ParanoidAndroid, but here I could check the source to make it compatible quite easily.
Please note that there isn't a statusbar symbol to indicate the silent mode, yet. Currently the only visible indication will be that the volume slider is in disabled state for silent mode (see screenshot). This is based on Google's design: Volume: Remove silent mode icon I'm planning to add some more graphical visualizations in future versions, for now I wanted to focus on a quick release so other people can take advantage of the functionality rather than having to wait for some eye candy to arrive.
hi Today I update my Mircomax a1 on lollipop 5.1(indonesia stock rom) then I try to install xposed framework on it
I go into recovery I try in all three recovery (cwm, philz and twrp) but same error "E: Error in /external_sd/xposed-arm-2015213b_2.zip (status 1)" also in pics as u can see pls some one help me
I once installed xposed on LG G3 via recovery before the updated version.
it was working, but only when i changed to permissive.
now with the updated xposed, when i try to install from the app itsef it says my phone not compatible.
"Xposed is not (yet) compatible with android SDK version 21 or your preccessor architecture (armeabi - v7a)
CANNOT LINK EXECUTABLE: could not load library "libdvm.so" needed by "/data/data/de.robv.android.xposed.installer/chache/app_proccess"; caused by library "libdvm.so" not found"
i saw other writing about their d855.. it means the problem is on my phone?
This is an xposed module that enables the wallpaper service on the amazon firetv.
It is based on the findings of @schybiorz, so many thanks to him! You will also need to sideload following apk files from his thread's download: com.android.wallpaper.apk com.android.wallpaper.livepicker.apk
At the moment I can report that the wallpaper service is running and live wallpapers work fine. I am having troubles setting image wallpapers, but its too late to look into this further tonight, but we should be able to fix this.
I just flashed arhd 90.1 on my one and xposed is not working, some other apps that require root access are also giving errors along the lines of "Couldnt start service , do you have root?" What can I do to fix this?
I have some questions about Xposed on CM12. Actually... Did someone managed to get it working ?
I have SELinux Mode Changer app (set to permissive), but everytime, after a soft reboot, I lost all my cellular network... Also tried with terminal emulator ("su" then "setenforce permissive") -> same problem.
I tried soft reboot with advanced reboot menu AND through Xposed app -> not any luck. Xposed works with soft reboot and SELinux set to permissive, but it's a pretty big problem to lose network...
I've heard some users with same problem on Z3 devices, but as far as I know, issue is still here without any fix.
In a more desperated way, can someone tell me how to compile cm12 kernel with SELinux set to permissive ? (Or, if it's not a big deal, do it for users...).
I'm looking for help in development, not general chitchat. If you don't know anything about coding or have anything new to add to this thread please do not post at all! Thanks for your cooperation!
Hello alltogether
I digged into the Lollipop code to look for a solution to restore the old Kitkat silent mode in Lollipop with Xposed.
- Don't allow volume changes to set ringer mode silent.
They introduced a new variable:
Code:
/** Allow volume changes to set ringer mode to silent? */ private static final boolean VOLUME_SETS_RINGER_MODE_SILENT = false;
There are only 3 results regarding this on Google, so I guess I'm the first to find it :D
My first attempt thus was to change this with Xposed. Unfortunately the variable is final and gets inclinded so you can't just hook and replace the ressource with Xposed. So I'm attempting to replace the methods in question.
Here is my current work-in-progress code. It does seem to work to some extent, after going to the vibrate mode another Vol- press does... something. Unfortunately it activates the priority mode (and breaks the interface a bit) rather than the silent mode.
public class TrueSilentMode implements IXposedHookLoadPackage { private static final String TAG = "TrueSilentMoe"; private static final boolean DEBUG = true; public int mPrevVolDirection;
//int result = XposedHelpers.getIntField(param.thisObject, "FLAG_ADJUST_VOLUME"); final int FLAG_ADJUST_VOLUME = 1; int result = FLAG_ADJUST_VOLUME; int FLAG_SHOW_SILENT_HINT = 1 << 7; //copied from android.media.Audiosystem
switch (ringerMode) { case RINGER_MODE_NORMAL: if (direction == AudioManager.ADJUST_LOWER) { if (mHasVibrator) { // "step" is the delta in internal index units corresponding to a // change of 1 in UI index units. // Because of rounding when rescaling from one stream index range to its alias // index range, we cannot simply test oldIndex == step: // (step <= oldIndex < 2 * step) is equivalent to: (old UI index == 1) if (step <= oldIndex && oldIndex < 2 * step) { ringerMode = RINGER_MODE_VIBRATE; } } else { // (oldIndex < step) is equivalent to (old UI index == 0) if ((oldIndex < step) && mPrevVolDirection != AudioManager.ADJUST_LOWER) { ringerMode = RINGER_MODE_SILENT; } } } break; case RINGER_MODE_VIBRATE: if (!mHasVibrator) { log("checkForRingerModeChange() current ringer mode is vibrate but no vibrator is present"); break; } if ((direction == AudioManager.ADJUST_LOWER)) { if (mPrevVolDirection != AudioManager.ADJUST_LOWER) { if (DEBUG) log("ringMode = RINGER_MODE_SILENT"); ringerMode = RINGER_MODE_SILENT; } } else if (direction == AudioManager.ADJUST_RAISE) { ringerMode = RINGER_MODE_NORMAL; } result &= ~FLAG_ADJUST_VOLUME; break; case RINGER_MODE_SILENT: if (direction == AudioManager.ADJUST_RAISE) { if (XposedHelpers.getBooleanField(param.thisObject, "PREVENT_VOLUME_ADJUSTMENT_IF_SILENT")) { result |= FLAG_SHOW_SILENT_HINT; //AudioManager.FLAG_SHOW_SILENT_HINT doesn't resolve for some reason } else { if (mHasVibrator) { ringerMode = RINGER_MODE_VIBRATE; } else { ringerMode = RINGER_MODE_NORMAL; } } } result &= ~FLAG_ADJUST_VOLUME; break; default: log("checkForRingerModeChange() wrong ringer mode: " + ringerMode); break; } XposedHelpers.callMethod(param.thisObject, "setRingerMode", ringerMode, false); mPrevVolDirection = direction;
return result; } });
} }
Now I'm wondering if there's a problem in my code - this is the first time I'm using Xposed, just studied the documentation a couple hours ago, so it is quite possible.
If not.. then my attempt does seem to be wrong. By now I've tried a couple other things like hooking the ZenModeHelper, messing with the vibration status and a couple others, but so far this didn't lead me anywhere.
The AudioManager code is quite complex, maybe I'm missing the needle in a haystackand someone can tell me a better place to archive what I'm intending?
Some additional information regarding silent mode:
No, the new "none" or "priority" modes are not substitutes. None: When you activate None you're alarms are turned off and your LED won't display anything. Priority: When you activate the priority mode without any priority interruptions you a) still won't have any LED notifications and b) totally loose on the real intention of the priority mode to actually let some notifications pass (like calls) - but not all.
There is a bug which you can use to actually activate the silent mode on the Nexus 5 (and possibly other devices): Bring your volume all the way down (= set it to vibrate only), then press VolUp once. Now reboot, voila you're in silent mode. Unfortunately you need to repear the reboot everytime you changed the notification volume. And funny incident, after my tests with Xposed this doesn't seem to work anymore, I will try with a full wipe again later on.
Afaik tablets do NOT have this restriction and can use the silent mode. Any confirmations? If yes, does this apply for both Wifi and LTE tablets? This actually is strange as I couldn't find any differences in the code for tablets - except maybe regarding the getMasterStreamType (that's why I'm asking about LTE/wifi)
I'm on OnePlus One CM12 Nightlies. I'm finding that, as of now (and totally understandably; it's an alpha release) the phone is overall less responsive and laggy after flashing the Xposed framework installer.
will dirty-flashing a nightly effectively remove the framework completely? If not, what's the simplest way to remove it? Clean flashing? Wiping /system?
Guys I am currently working on a university project in Android.The objective is to create a rudimentary timesharing implementation on Android platform.The basic idea is to create multiple user accounts using the Kitkat API and switch them when their alloted timeslice expires.Creating user accounts may not be difficult but I have no clue as to how to switch them.I'm pretty much a noob in Xposed programming ,so any help is appreciated.
Hi, I'm new to all customizations and things similar on Android. I have been using Xposed on Kitkat without any issues on my Nexus 4. I recently installed xposed alpha for lollipop (waited so long for that). However, not all modules recognize xposed framework. I have installed GravityBo[LP] and working perfectly fine, but there are modules like BootManager and XPrivacy which says that the module is not activated. Attached are the screenshots. Please advise.
Tired of installing the launchers just for changing the ICONS, which eat your memory ?
Presenting you the Unicon APP 4+, which needs Xposed. You can also install ICON pack from different themes on your stock launcher. I know its a old one and I'm not the developer of this MOD. I'm just sharing it.
Install the Xposed Install the Unicon app Activate, reboot and change the icons(you need to restart the launcher)
Has anyone tried the new xposed for LP alpha on 1st gen Moto X running 4.4.4 and ART? Wondering if it was worth a shot to try it with GravityBox for LP or just wait until official update arrives for the phone.
I tried to configure my unique phrase on Moto Voice app and it was impossible. The app couldn't even listen to my voice. So I thought it was because I'm using Xposed Framework (alpha version) for Lollipop. Am I right at guessing this? If anyone has got something similar let me know please.