├── .github ├── CONTRIBUTING.md └── ISSUE_TEMPLATE.md ├── .gitignore ├── README.md ├── Screenshots ├── App_1.png ├── App_2.png ├── App_3.png ├── App_4.png ├── App_5.png ├── Notifications_1.png ├── Notifications_2.png ├── Recents_1.png ├── Recents_2.png ├── Settings_1.png ├── Settings_2.png └── StatusBarHeader_1.png ├── app ├── .gitignore ├── build.gradle ├── libs-provide │ └── android_hidden_api_23.jar ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── assets │ ├── assistant_hooks │ └── xposed_init │ ├── java │ ├── com │ │ └── android │ │ │ └── egg │ │ │ └── neko │ │ │ ├── Cat.java │ │ │ ├── Food.java │ │ │ ├── FoodSelectionActivity.java │ │ │ ├── NekoDialog.java │ │ │ ├── NekoLand.java │ │ │ ├── NekoLockedActivity.java │ │ │ ├── NekoService.java │ │ │ └── PrefState.java │ ├── net │ │ └── margaritov │ │ │ └── preference │ │ │ └── colorpicker │ │ │ ├── AlphaPatternDrawable.java │ │ │ ├── ColorPickerDialog.java │ │ │ ├── ColorPickerPanelView.java │ │ │ ├── ColorPickerPreference.java │ │ │ └── ColorPickerView.java │ └── tk │ │ └── wasdennnoch │ │ └── androidn_ify │ │ ├── PreferenceProvider.java │ │ ├── XposedHook.java │ │ ├── android │ │ └── AndroidHooks.java │ │ ├── extracted │ │ ├── android │ │ │ └── pm │ │ │ │ └── PackageManager.java │ │ ├── settingslib │ │ │ ├── BatteryInfo.java │ │ │ ├── CircleFramedDrawable.java │ │ │ ├── UsageGraph.java │ │ │ ├── UsageView.java │ │ │ └── Utils.java │ │ └── systemui │ │ │ ├── AlphaOptimizedButton.java │ │ │ ├── AlphaOptimizedFrameLayout.java │ │ │ ├── AlphaOptimizedImageView.java │ │ │ ├── ExpandableIndicator.java │ │ │ ├── FakeShadowView.java │ │ │ ├── Interpolators.java │ │ │ ├── MobileDataController.java │ │ │ ├── NonInterceptingScrollView.java │ │ │ ├── NotificationActionListLayout.java │ │ │ ├── NotificationUtils.java │ │ │ ├── PathInterpolatorBuilder.java │ │ │ ├── RemoteInputView.java │ │ │ ├── ResizingSpace.java │ │ │ ├── ScreenshotSelectorView.java │ │ │ └── qs │ │ │ ├── PageIndicator.java │ │ │ ├── PagedTileLayout.java │ │ │ ├── QSAnimator.java │ │ │ ├── QSDetail.java │ │ │ ├── QSDetailClipper.java │ │ │ ├── QuickQSPanel.java │ │ │ ├── TileLayout.java │ │ │ └── TouchAnimator.java │ │ ├── google │ │ └── AssistantHooks.java │ │ ├── misc │ │ ├── SafeOnClickListener.java │ │ ├── SafeOnLongClickListener.java │ │ ├── SafeOnPreDrawListener.java │ │ └── SafeRunnable.java │ │ ├── packageinstaller │ │ └── PackageInstallerHooks.java │ │ ├── phone │ │ └── emergency │ │ │ ├── EmergencyButtonWrapper.java │ │ │ └── EmergencyHooks.java │ │ ├── settings │ │ ├── SettingsDashboardHooks.java │ │ ├── SettingsDrawerHooks.java │ │ ├── SettingsHooks.java │ │ ├── misc │ │ │ ├── DashboardOverlay.java │ │ │ ├── SettingsActivityHelper.java │ │ │ └── SettingsDrawerAdapter.java │ │ └── summaries │ │ │ ├── SummaryTweaks.java │ │ │ └── categories │ │ │ ├── DeviceTweaks.java │ │ │ ├── PersonalTweaks.java │ │ │ ├── RomTweaks.java │ │ │ ├── SystemTweaks.java │ │ │ └── WirelessAndNetworksTweaks.java │ │ ├── systemui │ │ ├── SystemUIHooks.java │ │ ├── notifications │ │ │ ├── ActivatableNotificationViewHooks.java │ │ │ ├── ExpandableOutlineViewHelper.java │ │ │ ├── NotificationHeaderView.java │ │ │ ├── NotificationHooks.java │ │ │ ├── NotificationPanelHooks.java │ │ │ ├── NotificationPanelViewHooks.java │ │ │ ├── RelativeDateTimeView.java │ │ │ ├── ScrimHelper.java │ │ │ ├── ScrimHooks.java │ │ │ ├── SensitiveNotificationFilter.java │ │ │ ├── SensitiveNotificationRow.java │ │ │ ├── StatusBarHeaderHooks.java │ │ │ ├── stack │ │ │ │ ├── NotificationStackScrollLayoutHooks.java │ │ │ │ └── StackScrollAlgorithmHooks.java │ │ │ └── views │ │ │ │ ├── MediaNotificationView.java │ │ │ │ ├── RemoteInputHelper.java │ │ │ │ └── SensitiveFilterButton.java │ │ ├── qs │ │ │ ├── AvailableTileAdapter.java │ │ │ ├── CMQuickSettingsHooks.java │ │ │ ├── DetailViewManager.java │ │ │ ├── KeyguardMonitor.java │ │ │ ├── QSContainerHelper.java │ │ │ ├── QSTileHostHooks.java │ │ │ ├── QuickSettingsHooks.java │ │ │ ├── TileAdapter.java │ │ │ ├── TilesManager.java │ │ │ ├── customize │ │ │ │ └── QSCustomizer.java │ │ │ └── tiles │ │ │ │ ├── AOSPTile.java │ │ │ │ ├── AndroidN_ifyTile.java │ │ │ │ ├── BaseTile.java │ │ │ │ ├── BatteryTile.java │ │ │ │ ├── LiveDisplayTile.java │ │ │ │ ├── NekoTile.java │ │ │ │ ├── PartialScreenshotTile.java │ │ │ │ ├── QSTile.java │ │ │ │ ├── hooks │ │ │ │ ├── BluetoothTileHook.java │ │ │ │ ├── CellularTileHook.java │ │ │ │ ├── QSTileHook.java │ │ │ │ └── WifiTileHook.java │ │ │ │ └── misc │ │ │ │ ├── BatteryInfoManager.java │ │ │ │ ├── BatteryMeterDrawable.java │ │ │ │ ├── FakeQSTileView.java │ │ │ │ └── LiveDisplayObserver.java │ │ ├── recents │ │ │ ├── doubletap │ │ │ │ ├── DoubleTapBase.java │ │ │ │ ├── DoubleTapHwKeys.java │ │ │ │ └── DoubleTapSwKeys.java │ │ │ ├── navigate │ │ │ │ └── RecentsNavigation.java │ │ │ └── stack │ │ │ │ └── RecentsStackHooks.java │ │ ├── screenshot │ │ │ └── ScreenshotHooks.java │ │ └── statusbar │ │ │ ├── LollipopStatusBarHooks.java │ │ │ └── StatusBarHooks.java │ │ ├── ui │ │ ├── AboutActivity.java │ │ ├── AddTileActivity.java │ │ ├── AppListActivity.java │ │ ├── BlacklistAppActivity.java │ │ ├── LoadAppInfoTask.java │ │ ├── PlatLogoActivity.java │ │ ├── SettingsActivity.java │ │ ├── emergency │ │ │ ├── EmergencyContactManager.java │ │ │ ├── EmergencyTabActivity.java │ │ │ ├── PreferenceKeys.java │ │ │ ├── ReloadablePreferenceInterface.java │ │ │ ├── edit │ │ │ │ ├── EditEmergencyContactsFragment.java │ │ │ │ ├── EditEmergencyInfoFragment.java │ │ │ │ ├── EditInfoActivity.java │ │ │ │ └── LaunchEditInfoActivity.java │ │ │ ├── preferences │ │ │ │ ├── AutoCompleteEditTextPreference.java │ │ │ │ ├── ContactPreference.java │ │ │ │ ├── EmergencyContactsPreference.java │ │ │ │ ├── EmergencyEditTextPreference.java │ │ │ │ ├── EmergencyListPreference.java │ │ │ │ ├── NameAutoCompletePreference.java │ │ │ │ └── ViewEmergencyContactsPreference.java │ │ │ └── view │ │ │ │ ├── ViewEmergencyContactsFragment.java │ │ │ │ ├── ViewEmergencyInfoFragment.java │ │ │ │ └── ViewInfoActivity.java │ │ ├── misc │ │ │ ├── AppsAdapter.java │ │ │ ├── CachedResolveInfo.java │ │ │ ├── DownloadService.java │ │ │ ├── OnUpdateReceiver.java │ │ │ └── UpdateWarningService.java │ │ └── preference │ │ │ ├── DropDownPreference.java │ │ │ ├── SeekBarPreference.java │ │ │ └── SubPreference.java │ │ └── utils │ │ ├── ColorUtils.java │ │ ├── ConfigUtils.java │ │ ├── MarginSpan.java │ │ ├── MiscUtils.java │ │ ├── NotificationColorUtil.java │ │ ├── PermissionGranter.java │ │ ├── PreferenceService.java │ │ ├── RemoteLpTextView.java │ │ ├── RemoteMarginLinearLayout.java │ │ ├── ResourceUtils.java │ │ ├── RomUtils.java │ │ ├── SettingsUtils.java │ │ ├── TestUtils.java │ │ ├── UpdateUtils.java │ │ └── ViewUtils.java │ └── res │ ├── anim │ ├── ic_volume_collapse_chevron_02_animation.xml │ ├── ic_volume_collapse_rectangle_1_animation.xml │ ├── ic_volume_collapse_rectangle_2_animation.xml │ ├── ic_volume_expand_chevron_01_animation.xml │ ├── ic_volume_expand_rectangle_3_animation.xml │ ├── ic_volume_expand_rectangle_4_animation.xml │ ├── major_a_b_dot_01_animation.xml │ ├── major_a_b_dot_animation.xml │ ├── major_b_a_dot_01_animation.xml │ ├── major_b_a_dot_animation.xml │ ├── major_b_c_dot_01_animation.xml │ ├── major_b_c_dot_animation.xml │ ├── major_c_b_dot_01_animation.xml │ ├── major_c_b_dot_animation.xml │ ├── minor_a_b_dot_02_animation.xml │ ├── minor_b_a_dot_02_animation.xml │ ├── minor_b_c_dot_02_animation.xml │ └── minor_c_b_dot_02_animation.xml │ ├── animator │ ├── fade_in.xml │ ├── fade_out.xml │ ├── fly_in.xml │ └── fly_out.xml │ ├── color │ ├── remote_input_send.xml │ └── remote_input_text.xml │ ├── drawable-nodpi │ └── ic_namey_mcnameface.png │ ├── drawable-xhdpi │ ├── arrow_down_alpha.png │ └── arrow_up_alpha.png │ ├── drawable │ ├── arrow_down.xml │ ├── arrow_up.xml │ ├── back.xml │ ├── belly.xml │ ├── body.xml │ ├── bowtie.xml │ ├── cap.xml │ ├── collar.xml │ ├── face_spot.xml │ ├── food_bits.xml │ ├── food_chicken.xml │ ├── food_dish.xml │ ├── food_donut.xml │ ├── food_sysuituna.xml │ ├── foot1.xml │ ├── foot2.xml │ ├── foot3.xml │ ├── foot4.xml │ ├── head.xml │ ├── header_dot.xml │ ├── home.xml │ ├── ic_about.xml │ ├── ic_account_circle.xml │ ├── ic_add.xml │ ├── ic_add_24dp.xml │ ├── ic_address_black_24dp.xml │ ├── ic_allergies_black_24dp.xml │ ├── ic_android_92.xml │ ├── ic_bloodtype_black_24dp.xml │ ├── ic_clear_24dp.xml │ ├── ic_close.xml │ ├── ic_collapse_notification.xml │ ├── ic_crop.xml │ ├── ic_done_92.xml │ ├── ic_expand_notification.xml │ ├── ic_github.xml │ ├── ic_heart_black_24dp.xml │ ├── ic_livedisplay_auto.xml │ ├── ic_livedisplay_day.xml │ ├── ic_livedisplay_night.xml │ ├── ic_livedisplay_off.xml │ ├── ic_livedisplay_outdoor.xml │ ├── ic_lock.xml │ ├── ic_lock_open.xml │ ├── ic_medication_24dp.xml │ ├── ic_menu.xml │ ├── ic_mode_edit.xml │ ├── ic_mode_edit_24dp.xml │ ├── ic_notes_black_24dp.xml │ ├── ic_person_black_24dp.xml │ ├── ic_qs_data_disabled.xml │ ├── ic_refresh.xml │ ├── ic_report_problem_92.xml │ ├── ic_send_24dp.xml │ ├── ic_settings_20dp.xml │ ├── ic_share.xml │ ├── ic_stat_n.xml │ ├── ic_volume_collapse.xml │ ├── ic_volume_collapse_animation.xml │ ├── ic_volume_expand.xml │ ├── ic_volume_expand_animation.xml │ ├── ic_xda.xml │ ├── icon.xml │ ├── left_ear.xml │ ├── left_ear_inside.xml │ ├── left_eye.xml │ ├── leg1.xml │ ├── leg2.xml │ ├── leg2_shadow.xml │ ├── leg3.xml │ ├── leg4.xml │ ├── major_a_b.xml │ ├── major_a_b_animation.xml │ ├── major_b_a.xml │ ├── major_b_a_animation.xml │ ├── major_b_c.xml │ ├── major_b_c_animation.xml │ ├── major_c_b.xml │ ├── major_c_b_animation.xml │ ├── minor_a_b.xml │ ├── minor_a_b_animation.xml │ ├── minor_b_a.xml │ ├── minor_b_a_animation.xml │ ├── minor_b_c.xml │ ├── minor_b_c_animation.xml │ ├── minor_c_b.xml │ ├── minor_c_b_animation.xml │ ├── mouth.xml │ ├── nose.xml │ ├── notification_material_media_action_background.xml │ ├── platlogo.xml │ ├── qs_btn_borderless_rect.xml │ ├── recents_empty.xml │ ├── remote_input_cursor.xml │ ├── right_ear.xml │ ├── right_ear_inside.xml │ ├── right_eye.xml │ ├── ripple_dismiss_all.xml │ ├── ripple_drawable.xml │ ├── stat_icon.xml │ ├── stat_sys_data_disabled.xml │ ├── tail.xml │ ├── tail_cap.xml │ ├── tail_shadow.xml │ └── view_contact_divider.xml │ ├── interpolator │ ├── ic_volume_collapse_animation_interpolator_0.xml │ └── ic_volume_expand_animation_interpolator_0.xml │ ├── layout-land │ └── dialog_color_picker.xml │ ├── layout │ ├── activity_about.xml │ ├── activity_add_tile.xml │ ├── activity_app_list.xml │ ├── activity_emergency_info.xml │ ├── activity_settings.xml │ ├── app_row.xml │ ├── battery_detail.xml │ ├── battery_usage_graph.xml │ ├── cat_view.xml │ ├── custom_action_bar.xml │ ├── custom_preference_category_layout.xml │ ├── dialog_color_picker.xml │ ├── drawer_category.xml │ ├── drawer_item.xml │ ├── drawer_spacer.xml │ ├── edit_activity_layout.xml │ ├── edit_text.xml │ ├── emergency_button.xml │ ├── emergency_view_activity_layout.xml │ ├── food_layout.xml │ ├── neko_activity.xml │ ├── notification_filter_button.xml │ ├── notification_template_header.xml │ ├── notification_template_part_chronometer.xml │ ├── preference_dialog_autocomplete_edittext.xml │ ├── preference_user_delete_widget.xml │ ├── qs_customize_divider.xml │ ├── qs_customize_panel_content.xml │ ├── qs_detail.xml │ ├── qs_right_button.xml │ ├── qs_up_button.xml │ ├── recents_empty.xml │ ├── remote_input.xml │ ├── settings_with_drawer.xml │ ├── slider_preference.xml │ ├── tabs.xml │ ├── usage_side_label.xml │ └── usage_view.xml │ ├── menu │ ├── edit_info_menu.xml │ ├── menu_app_list.xml │ ├── menu_settings.xml │ └── view_info_menu.xml │ ├── mipmap-hdpi │ ├── ic_launcher.png │ └── ic_launcher_settings.png │ ├── mipmap-mdpi │ ├── ic_launcher.png │ └── ic_launcher_settings.png │ ├── mipmap-xhdpi │ ├── ic_launcher.png │ └── ic_launcher_settings.png │ ├── mipmap-xxhdpi │ ├── ic_launcher.png │ └── ic_launcher_settings.png │ ├── mipmap-xxxhdpi │ └── ic_launcher_settings.png │ ├── values-ar-rSA │ └── strings.xml │ ├── values-bn-rBD │ └── strings.xml │ ├── values-bs-rBA │ └── strings.xml │ ├── values-cs-rCZ │ └── strings.xml │ ├── values-da-rDK │ └── strings.xml │ ├── values-de-rDE │ └── strings.xml │ ├── values-el-rGR │ └── strings.xml │ ├── values-es-rES │ └── strings.xml │ ├── values-fa-rIR │ └── strings.xml │ ├── values-fr-rFR │ └── strings.xml │ ├── values-hi-rIN │ └── strings.xml │ ├── values-hu-rHU │ └── strings.xml │ ├── values-in-rID │ └── strings.xml │ ├── values-it-rIT │ └── strings.xml │ ├── values-iw-rIL │ └── strings.xml │ ├── values-ja-rJP │ └── strings.xml │ ├── values-ko-rKR │ └── strings.xml │ ├── values-land │ ├── config.xml │ └── dimens.xml │ ├── values-nl-rNL │ └── strings.xml │ ├── values-pl-rPL │ └── strings.xml │ ├── values-pt-rBR │ └── strings.xml │ ├── values-pt-rPT │ └── strings.xml │ ├── values-ro-rRO │ └── strings.xml │ ├── values-ru-rRU │ └── strings.xml │ ├── values-sk-rSK │ └── strings.xml │ ├── values-sr-rSP │ └── strings.xml │ ├── values-sw410dp │ └── config.xml │ ├── values-sw540dp │ └── config.xml │ ├── values-sw600dp-land │ └── config.xml │ ├── values-th-rTH │ └── strings.xml │ ├── values-tr-rTR │ └── strings.xml │ ├── values-uk-rUA │ └── strings.xml │ ├── values-v21 │ └── styles.xml │ ├── values-vi-rVN │ └── strings.xml │ ├── values-w550dp-land │ ├── config.xml │ └── dimens.xml │ ├── values-zh-rCN │ └── strings.xml │ ├── values-zh-rTW │ └── strings.xml │ ├── values │ ├── arrays.xml │ ├── attrs.xml │ ├── colors.xml │ ├── config.xml │ ├── dimens.xml │ ├── donottranslate.xml │ ├── ids.xml │ ├── integers.xml │ └── strings.xml │ └── xml │ ├── edit_emergency_contacts.xml │ ├── edit_emergency_info.xml │ ├── experimental_prefs.xml │ ├── hide_header_icons_prefs.xml │ ├── lockscreen_prefs.xml │ ├── notifications_prefs.xml │ ├── other_prefs.xml │ ├── preferences.xml │ ├── qs_prefs.xml │ ├── recent_prefs.xml │ ├── settings_prefs.xml │ ├── view_emergency_contacts.xml │ └── view_emergency_info.xml ├── banner.png ├── build.gradle ├── changelog.md ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── ic_launcher_big.png └── settings.gradle /.github/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ## Issue guidelines 2 | 3 | Hey there! You found a problem with the module and found your way here to report it? Great! But there are some things you have to keep in mind before submitting a new issue: 4 | 5 | * **Check for duplicates**. Use the search function to search for keywords matching your issue. If there already is one which sounds similar to your one, please reply there instead of opening a new issue. Only exception are SystemUI crashes as they can be caused by various reasons. If any contributor finds a duplicate (or the same crash) he will close it. 6 | 7 | * **Always attach your Xposed log**. If an app crashes though you'll have to add a logcat. Use Google to learn how to capture a logcat. 8 | 9 | * If you are using a stable version from the Xposed repository, **install a snapshot build** to see if the issue is already fixed. You can find these snapshot in the readme. 10 | 11 | * If the issue is new and not yet fixed in the snapshot builds go ahead and **describe your issue as precise as possible**, add screenshots or videos if necessary. 12 | 13 | Note that there is no time limit in which the issue will be adressed. Some get fixed quickly, others take some time. Don't open a new issue because you think we forgot about the old one - we don't "forget" issues. 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Generated files 2 | *build/ 3 | 4 | # Local configuration file (sdk path, etc) 5 | local.properties 6 | 7 | # Intellij project files 8 | *.iml 9 | *.ipr 10 | *.iws 11 | .idea/ 12 | 13 | # Gradle 14 | /.gradle/ 15 | 16 | # Gedit save files 17 | *.*~ 18 | 19 | # Other 20 | .DS_Store 21 | /captures 22 | /app/app-release.apk 23 | 24 | AndroidNify.jks 25 | key.properties 26 | -------------------------------------------------------------------------------- /Screenshots/App_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasdennnoch/AndroidN-ify/7fd4fe402e935ad6d421d0b1ad1a0619d0f327c4/Screenshots/App_1.png -------------------------------------------------------------------------------- /Screenshots/App_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasdennnoch/AndroidN-ify/7fd4fe402e935ad6d421d0b1ad1a0619d0f327c4/Screenshots/App_2.png -------------------------------------------------------------------------------- /Screenshots/App_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasdennnoch/AndroidN-ify/7fd4fe402e935ad6d421d0b1ad1a0619d0f327c4/Screenshots/App_3.png -------------------------------------------------------------------------------- /Screenshots/App_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasdennnoch/AndroidN-ify/7fd4fe402e935ad6d421d0b1ad1a0619d0f327c4/Screenshots/App_4.png -------------------------------------------------------------------------------- /Screenshots/App_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasdennnoch/AndroidN-ify/7fd4fe402e935ad6d421d0b1ad1a0619d0f327c4/Screenshots/App_5.png -------------------------------------------------------------------------------- /Screenshots/Notifications_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasdennnoch/AndroidN-ify/7fd4fe402e935ad6d421d0b1ad1a0619d0f327c4/Screenshots/Notifications_1.png -------------------------------------------------------------------------------- /Screenshots/Notifications_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasdennnoch/AndroidN-ify/7fd4fe402e935ad6d421d0b1ad1a0619d0f327c4/Screenshots/Notifications_2.png -------------------------------------------------------------------------------- /Screenshots/Recents_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasdennnoch/AndroidN-ify/7fd4fe402e935ad6d421d0b1ad1a0619d0f327c4/Screenshots/Recents_1.png -------------------------------------------------------------------------------- /Screenshots/Recents_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasdennnoch/AndroidN-ify/7fd4fe402e935ad6d421d0b1ad1a0619d0f327c4/Screenshots/Recents_2.png -------------------------------------------------------------------------------- /Screenshots/Settings_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasdennnoch/AndroidN-ify/7fd4fe402e935ad6d421d0b1ad1a0619d0f327c4/Screenshots/Settings_1.png -------------------------------------------------------------------------------- /Screenshots/Settings_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasdennnoch/AndroidN-ify/7fd4fe402e935ad6d421d0b1ad1a0619d0f327c4/Screenshots/Settings_2.png -------------------------------------------------------------------------------- /Screenshots/StatusBarHeader_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasdennnoch/AndroidN-ify/7fd4fe402e935ad6d421d0b1ad1a0619d0f327c4/Screenshots/StatusBarHeader_1.png -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/libs-provide/android_hidden_api_23.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasdennnoch/AndroidN-ify/7fd4fe402e935ad6d421d0b1ad1a0619d0f327c4/app/libs-provide/android_hidden_api_23.jar -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in C:\Program Files\Android\android-sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -keep class tk.wasdennnoch.androidn_ify.XposedHook 19 | -keep class tk.wasdennnoch.androidn_ify.ui.SettingsActivity 20 | -------------------------------------------------------------------------------- /app/src/main/assets/assistant_hooks: -------------------------------------------------------------------------------- 1 | [ 2 | 12, 3 | { 4 | "version": "6\\.11\\.2[0-9]\\.21\\.[a-z]+[0-9]*", 5 | "assistant_class": ".shared.h", 6 | "prefs": "bBc", 7 | "set_prefs": "aT", 8 | "fake_config": "sc", 9 | "fake_config_two": "se", 10 | "enable_langs": "sf" 11 | } 12 | ] 13 | -------------------------------------------------------------------------------- /app/src/main/assets/xposed_init: -------------------------------------------------------------------------------- 1 | tk.wasdennnoch.androidn_ify.XposedHook -------------------------------------------------------------------------------- /app/src/main/java/com/android/egg/neko/FoodSelectionActivity.java: -------------------------------------------------------------------------------- 1 | package com.android.egg.neko; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | 6 | public class FoodSelectionActivity extends Activity { 7 | 8 | @Override 9 | protected void onCreate(Bundle savedInstanceState) { 10 | super.onCreate(savedInstanceState); 11 | new NekoDialog(this).show(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/tk/wasdennnoch/androidn_ify/PreferenceProvider.java: -------------------------------------------------------------------------------- 1 | package tk.wasdennnoch.androidn_ify; 2 | 3 | import com.crossbowffs.remotepreferences.RemotePreferenceProvider; 4 | 5 | public class PreferenceProvider extends RemotePreferenceProvider { 6 | 7 | public static final String AUTHORITY = "tk.wasdennnoch.androidn_ify.PREFERENCES"; 8 | public static final String PREF_NAME = "tk.wasdennnoch.androidn_ify_preferences"; 9 | 10 | public PreferenceProvider() { 11 | super(AUTHORITY, new String[]{PREF_NAME}); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /app/src/main/java/tk/wasdennnoch/androidn_ify/extracted/systemui/AlphaOptimizedButton.java: -------------------------------------------------------------------------------- 1 | package tk.wasdennnoch.androidn_ify.extracted.systemui; 2 | 3 | import android.content.Context; 4 | import android.widget.Button; 5 | 6 | public class AlphaOptimizedButton extends Button { 7 | 8 | public AlphaOptimizedButton(Context context) { 9 | super(context); 10 | } 11 | 12 | @Override 13 | public boolean hasOverlappingRendering() { 14 | return false; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/tk/wasdennnoch/androidn_ify/misc/SafeOnClickListener.java: -------------------------------------------------------------------------------- 1 | package tk.wasdennnoch.androidn_ify.misc; 2 | 3 | import android.view.View; 4 | 5 | import tk.wasdennnoch.androidn_ify.XposedHook; 6 | 7 | /** 8 | * An implementation of {@link View.OnClickListener} which catches 9 | * any exception thrown in {@link #onClickSafe(View)}. 10 | */ 11 | @SuppressWarnings("WeakerAccess") 12 | public abstract class SafeOnClickListener implements View.OnClickListener { 13 | 14 | private String mLogTag; 15 | private String mLogMessage; 16 | 17 | /** 18 | * Constructs a {@code SafeOnClickListener} which eats any Throwable without logging it. 19 | */ 20 | public SafeOnClickListener() { 21 | } 22 | 23 | /** 24 | * Constructs a {@code SafeOnClickListener} which logs thrown Throwables. 25 | * 26 | * @param logTag The tag used to log 27 | * @param logMessage The message to log before the stack trace 28 | */ 29 | public SafeOnClickListener(String logTag, String logMessage) { 30 | mLogTag = logTag; 31 | mLogMessage = logMessage; 32 | } 33 | 34 | /** 35 | * Override this method instead of {@link #onClick(View)} to have a crash protection. 36 | */ 37 | public abstract void onClickSafe(View v); 38 | 39 | /** 40 | * DON'T OVERRIDE THIS! Override {@link #onClickSafe(View)} instead. 41 | */ 42 | @Override 43 | public void onClick(View v) { 44 | try { 45 | onClickSafe(v); 46 | } catch (Throwable t) { 47 | if (mLogTag != null) XposedHook.logE(mLogTag, mLogMessage, t); 48 | } 49 | } 50 | 51 | } 52 | -------------------------------------------------------------------------------- /app/src/main/java/tk/wasdennnoch/androidn_ify/misc/SafeRunnable.java: -------------------------------------------------------------------------------- 1 | package tk.wasdennnoch.androidn_ify.misc; 2 | 3 | import tk.wasdennnoch.androidn_ify.XposedHook; 4 | 5 | /** 6 | * An implementation of {@link Runnable} which catches any exception thrown 7 | * in {@link #runSafe()}. Useful in handlers to avoid crashing an app. 8 | */ 9 | @SuppressWarnings("WeakerAccess") 10 | public abstract class SafeRunnable implements Runnable { 11 | 12 | private String mLogTag; 13 | private String mLogMessage; 14 | 15 | /** 16 | * Constructs a {@code SafeRunnable} which eats any Throwable without logging it. 17 | */ 18 | public SafeRunnable() { 19 | } 20 | 21 | /** 22 | * Constructs a {@code SafeRunnable} which logs thrown Throwables. 23 | * 24 | * @param logTag The tag used to log 25 | * @param logMessage The message to log before the stack trace 26 | */ 27 | public SafeRunnable(String logTag, String logMessage) { 28 | mLogTag = logTag; 29 | mLogMessage = logMessage; 30 | } 31 | 32 | /** 33 | * Override this method instead of {@link #run()} to have a crash protection. 34 | */ 35 | public abstract void runSafe(); 36 | 37 | /** 38 | * DON'T OVERRIDE THIS! Override {@link #runSafe()} instead. 39 | */ 40 | @Override 41 | public void run() { 42 | try { 43 | runSafe(); 44 | } catch (Throwable t) { 45 | if (mLogTag != null) XposedHook.logE(mLogTag, mLogMessage, t); 46 | } 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /app/src/main/java/tk/wasdennnoch/androidn_ify/settings/summaries/categories/PersonalTweaks.java: -------------------------------------------------------------------------------- 1 | package tk.wasdennnoch.androidn_ify.settings.summaries.categories; 2 | 3 | import android.content.Context; 4 | import android.location.LocationManager; 5 | 6 | import java.util.Locale; 7 | 8 | import de.robv.android.xposed.XposedHelpers; 9 | import tk.wasdennnoch.androidn_ify.R; 10 | import tk.wasdennnoch.androidn_ify.utils.ResourceUtils; 11 | 12 | public class PersonalTweaks { 13 | 14 | public static void hookLocationTile(Object tile, Context context) { 15 | String summary; 16 | LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); 17 | boolean gps_enabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER); 18 | boolean network_enabled = lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER); 19 | if (!gps_enabled && !network_enabled) { 20 | summary = ResourceUtils.getInstance().getString(R.string.disabled); 21 | } else if (gps_enabled && network_enabled) { 22 | summary = ResourceUtils.getInstance().getString(R.string.location_on_high); 23 | } else if (gps_enabled) { 24 | summary = ResourceUtils.getInstance().getString(R.string.location_on_device); 25 | } else { 26 | summary = ResourceUtils.getInstance().getString(R.string.location_on_power); 27 | } 28 | 29 | XposedHelpers.setObjectField(tile, "summary", summary); 30 | } 31 | 32 | public static void hookLanguageTile(Object tile) { 33 | XposedHelpers.setObjectField(tile, "summary", Locale.getDefault().getDisplayName()); 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /app/src/main/java/tk/wasdennnoch/androidn_ify/settings/summaries/categories/RomTweaks.java: -------------------------------------------------------------------------------- 1 | package tk.wasdennnoch.androidn_ify.settings.summaries.categories; 2 | 3 | import android.content.Context; 4 | 5 | public class RomTweaks { 6 | 7 | public static void hookDisplayAndLightsTile(Object tile, Context context) { 8 | DeviceTweaks.hookDisplayTile(tile, context); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/java/tk/wasdennnoch/androidn_ify/systemui/notifications/SensitiveNotificationRow.java: -------------------------------------------------------------------------------- 1 | package tk.wasdennnoch.androidn_ify.systemui.notifications; 2 | 3 | import android.app.Notification; 4 | 5 | import de.robv.android.xposed.XposedHelpers; 6 | 7 | public class SensitiveNotificationRow implements SensitiveNotificationFilter.SensitiveFilterListener { 8 | 9 | private String mPackageName; 10 | private Object mRow; 11 | 12 | private boolean mSensitive; 13 | private boolean mEnabled; 14 | private boolean mPrivate; 15 | 16 | public SensitiveNotificationRow(SensitiveNotificationFilter sensitiveFilter, Object row, Object sbn) { 17 | mPackageName = (String) XposedHelpers.getObjectField(sbn, "pkg"); 18 | mRow = row; 19 | mEnabled = sensitiveFilter.isEnabled(mPackageName); 20 | 21 | Notification notification = (Notification) XposedHelpers.getObjectField(sbn, "notification"); 22 | mPrivate = notification.visibility == Notification.VISIBILITY_PRIVATE; 23 | 24 | sensitiveFilter.addListener(this, mPackageName); 25 | } 26 | 27 | @Override 28 | public void onPackageChanged(String pkg, boolean enabled) { 29 | if (!pkg.equals(mPackageName)) return; 30 | mEnabled = enabled; 31 | updateSensitive(); 32 | } 33 | 34 | public void setSensitive(boolean sensitive) { 35 | mSensitive = sensitive; 36 | updateSensitive(); 37 | } 38 | 39 | private void updateSensitive() { 40 | XposedHelpers.setBooleanField(mRow, "mSensitive", (mEnabled && mPrivate) || mSensitive); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /app/src/main/java/tk/wasdennnoch/androidn_ify/systemui/qs/CMQuickSettingsHooks.java: -------------------------------------------------------------------------------- 1 | package tk.wasdennnoch.androidn_ify.systemui.qs; 2 | 3 | import android.view.View; 4 | import android.view.ViewGroup; 5 | 6 | import de.robv.android.xposed.XC_MethodHook; 7 | import de.robv.android.xposed.XposedHelpers; 8 | 9 | class CMQuickSettingsHooks extends QuickSettingsHooks { 10 | CMQuickSettingsHooks(ClassLoader classLoader) { 11 | super(classLoader); 12 | } 13 | 14 | @Override 15 | protected void hookConstructor() { 16 | XposedHelpers.findAndHookMethod(mHookClass, "setupViews", new XC_MethodHook() { 17 | @Override 18 | protected void afterHookedMethod(MethodHookParam param) throws Throwable { 19 | mQsPanel = (ViewGroup) param.thisObject; 20 | mContext = mQsPanel.getContext(); 21 | mBrightnessView = (View) XposedHelpers.getObjectField(param.thisObject, "mQsPanelTop"); 22 | mFooter = XposedHelpers.getObjectField(param.thisObject, "mFooter"); 23 | mDetail = (View) XposedHelpers.getObjectField(param.thisObject, "mDetail"); 24 | setupTileLayout(); 25 | } 26 | }); 27 | } 28 | 29 | @Override 30 | protected String getHookClass() { 31 | return CLASS_QS_DRAG_PANEL; 32 | } 33 | 34 | @Override 35 | protected String getSecondHookClass() { 36 | return CLASS_QS_PANEL; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/src/main/java/tk/wasdennnoch/androidn_ify/systemui/qs/tiles/AndroidN_ifyTile.java: -------------------------------------------------------------------------------- 1 | package tk.wasdennnoch.androidn_ify.systemui.qs.tiles; 2 | 3 | import android.content.Intent; 4 | import android.graphics.drawable.Drawable; 5 | 6 | import tk.wasdennnoch.androidn_ify.R; 7 | import tk.wasdennnoch.androidn_ify.systemui.qs.TilesManager; 8 | import tk.wasdennnoch.androidn_ify.ui.SettingsActivity; 9 | 10 | public class AndroidN_ifyTile extends QSTile { 11 | 12 | public static final String TILE_SPEC = "androidn_ify"; 13 | private final Drawable mIcon; 14 | private final String mLabel; 15 | 16 | public AndroidN_ifyTile(TilesManager tilesManager, Object host, String key) { 17 | super(tilesManager, host, key); 18 | mIcon = mResUtils.getDrawable(R.drawable.ic_stat_n); 19 | mLabel = mResUtils.getString(R.string.app_name); 20 | } 21 | 22 | @Override 23 | public void handleUpdateState(Object state, Object arg) { 24 | mState.icon = mIcon; 25 | mState.label = mLabel; 26 | super.handleUpdateState(state, arg); 27 | } 28 | 29 | @Override 30 | public void handleClick() { 31 | handleLongClick(); 32 | } 33 | 34 | @Override 35 | public void handleLongClick() { 36 | Intent intent = new Intent(Intent.ACTION_MAIN); 37 | intent.setClassName("tk.wasdennnoch.androidn_ify", SettingsActivity.class.getName()); 38 | startActivityDismissingKeyguard(intent); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /app/src/main/java/tk/wasdennnoch/androidn_ify/ui/BlacklistAppActivity.java: -------------------------------------------------------------------------------- 1 | package tk.wasdennnoch.androidn_ify.ui; 2 | 3 | public class BlacklistAppActivity extends AppListActivity { 4 | @Override 5 | protected String getKey() { 6 | return "notification_blacklist_apps"; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /app/src/main/java/tk/wasdennnoch/androidn_ify/ui/emergency/ReloadablePreferenceInterface.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package tk.wasdennnoch.androidn_ify.ui.emergency; 17 | /** 18 | * Provides common methods to be called when reloading a preference. 19 | */ 20 | public interface ReloadablePreferenceInterface { 21 | /** Reloads the value from the preference and updates the summary with that value. */ 22 | void reloadFromPreference(); 23 | /** 24 | * Returns whether the persisted string is empty or set to the default value, i.e. the user 25 | * didn't set it. 26 | */ 27 | boolean isNotSet(); 28 | } -------------------------------------------------------------------------------- /app/src/main/java/tk/wasdennnoch/androidn_ify/ui/misc/CachedResolveInfo.java: -------------------------------------------------------------------------------- 1 | package tk.wasdennnoch.androidn_ify.ui.misc; 2 | 3 | import android.content.pm.ResolveInfo; 4 | import android.graphics.drawable.Drawable; 5 | 6 | @SuppressWarnings("WeakerAccess") 7 | public class CachedResolveInfo { 8 | 9 | private CharSequence label; 10 | private Drawable icon; 11 | private int color; 12 | public ResolveInfo resolveInfo; 13 | 14 | private String labelSearch; 15 | private String packageNameSearch; 16 | 17 | public void setLabel(CharSequence label) { 18 | this.label = label; 19 | this.labelSearch = label.toString().toLowerCase(); 20 | } 21 | 22 | public void setIcon(Drawable icon) { 23 | this.icon = icon; 24 | } 25 | 26 | public void setColor(int color) { 27 | this.color = color; 28 | } 29 | 30 | public CharSequence getLabel() { 31 | return label; 32 | } 33 | 34 | public Drawable getIcon() { 35 | return icon; 36 | } 37 | 38 | public int getColor() { 39 | return color; 40 | } 41 | 42 | public void setResolveInfo(ResolveInfo resolveInfo) { 43 | this.resolveInfo = resolveInfo; 44 | this.packageNameSearch = resolveInfo.activityInfo.packageName.toLowerCase(); 45 | } 46 | 47 | public String getPackageName() { 48 | return resolveInfo.activityInfo.packageName; 49 | } 50 | 51 | public boolean search(String query) { 52 | return labelSearch.contains(query) || packageNameSearch.contains(query); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /app/src/main/java/tk/wasdennnoch/androidn_ify/ui/misc/OnUpdateReceiver.java: -------------------------------------------------------------------------------- 1 | package tk.wasdennnoch.androidn_ify.ui.misc; 2 | 3 | import android.annotation.SuppressLint; 4 | import android.content.BroadcastReceiver; 5 | import android.content.Context; 6 | import android.content.Intent; 7 | 8 | import tk.wasdennnoch.androidn_ify.ui.SettingsActivity; 9 | 10 | public class OnUpdateReceiver extends BroadcastReceiver { 11 | 12 | @SuppressWarnings("ConstantConditions") 13 | @SuppressLint("UnsafeProtectedBroadcastReceiver") 14 | @Override 15 | public void onReceive(Context context, Intent intent) { 16 | if (SettingsActivity.isActivated()) { 17 | context.startService(new Intent(context, UpdateWarningService.class)); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/tk/wasdennnoch/androidn_ify/ui/misc/UpdateWarningService.java: -------------------------------------------------------------------------------- 1 | package tk.wasdennnoch.androidn_ify.ui.misc; 2 | 3 | import android.app.Notification; 4 | import android.app.Service; 5 | import android.content.Intent; 6 | import android.os.IBinder; 7 | 8 | import tk.wasdennnoch.androidn_ify.R; 9 | import tk.wasdennnoch.androidn_ify.XposedHook; 10 | 11 | @SuppressWarnings("deprecation") 12 | public class UpdateWarningService extends Service { 13 | 14 | @Override 15 | public IBinder onBind(Intent intent) { 16 | // TODO: Return the communication channel to the service. 17 | throw new UnsupportedOperationException("Not yet implemented"); 18 | } 19 | 20 | @Override 21 | public int onStartCommand(Intent intent, int flags, int startId) { 22 | return START_STICKY; 23 | } 24 | 25 | @Override 26 | public void onCreate() { 27 | Notification.Builder builder = new Notification.Builder(this) 28 | .setSmallIcon(R.drawable.ic_stat_n) 29 | .setContentTitle(getString(R.string.update_warning)) 30 | .setContentText(getString(R.string.update_warning_details)) 31 | .setStyle(new Notification.BigTextStyle().bigText(getString(R.string.update_warning_details))) 32 | .setPriority(Notification.PRIORITY_MAX) 33 | .setColor(getResources().getColor(R.color.colorAccent)); 34 | startForeground(10, builder.build()); 35 | sendBroadcast(new Intent(XposedHook.ACTION_MARK_UNSTABLE).setPackage(XposedHook.PACKAGE_SYSTEMUI)); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /app/src/main/java/tk/wasdennnoch/androidn_ify/ui/preference/SubPreference.java: -------------------------------------------------------------------------------- 1 | package tk.wasdennnoch.androidn_ify.ui.preference; 2 | 3 | import android.content.Context; 4 | import android.content.res.TypedArray; 5 | import android.preference.Preference; 6 | import android.util.AttributeSet; 7 | 8 | import tk.wasdennnoch.androidn_ify.R; 9 | 10 | public class SubPreference extends Preference { 11 | 12 | private int mContent; 13 | 14 | public SubPreference(Context context, AttributeSet attrs) { 15 | super(context, attrs); 16 | init(context, attrs); 17 | } 18 | 19 | private void init(Context context, AttributeSet attrs) { 20 | TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SubPreference); 21 | for (int i = a.getIndexCount() - 1; i >= 0; i--) { 22 | int attr = a.getIndex(i); 23 | switch (attr) { 24 | case R.styleable.SubPreference_content: 25 | mContent = a.getResourceId(attr, 0); 26 | break; 27 | } 28 | } 29 | a.recycle(); 30 | setFragment(""); 31 | } 32 | 33 | public int getContent() { 34 | return mContent; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/src/main/java/tk/wasdennnoch/androidn_ify/utils/ColorUtils.java: -------------------------------------------------------------------------------- 1 | package tk.wasdennnoch.androidn_ify.utils; 2 | 3 | import android.graphics.Bitmap; 4 | import android.graphics.Canvas; 5 | import android.graphics.drawable.Drawable; 6 | import android.support.v7.graphics.Palette; 7 | 8 | public class ColorUtils { 9 | 10 | public static int generateColor(Drawable drawable, int defaultColor) { 11 | Palette palette = Palette.from(convertToBitmap(drawable, 128, 128)).generate(); 12 | int color = palette.getVibrantColor(defaultColor); 13 | if (color != defaultColor) return color; 14 | color = palette.getLightVibrantColor(defaultColor); 15 | if (color != defaultColor) return color; 16 | color = palette.getDarkMutedColor(defaultColor); 17 | if (color != defaultColor) return color; 18 | color = palette.getLightMutedColor(defaultColor); 19 | return color; 20 | } 21 | 22 | private static Bitmap convertToBitmap(Drawable drawable, int widthPixels, int heightPixels) { 23 | Bitmap bitmap = Bitmap.createBitmap(widthPixels, heightPixels, Bitmap.Config.ARGB_8888); 24 | Canvas canvas = new Canvas(bitmap); 25 | drawable.setBounds(0, 0, widthPixels, heightPixels); 26 | drawable.draw(canvas); 27 | return bitmap; 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/tk/wasdennnoch/androidn_ify/utils/MarginSpan.java: -------------------------------------------------------------------------------- 1 | package tk.wasdennnoch.androidn_ify.utils; 2 | 3 | import android.graphics.Canvas; 4 | import android.graphics.Paint; 5 | import android.text.Layout; 6 | import android.text.style.LeadingMarginSpan; 7 | 8 | public class MarginSpan implements LeadingMarginSpan.LeadingMarginSpan2 { 9 | private int margin; 10 | private int lines; 11 | 12 | public MarginSpan(int lines, int margin) { 13 | this.margin = margin; 14 | this.lines = lines; 15 | } 16 | 17 | @Override 18 | public int getLeadingMargin(boolean first) { 19 | if (first) { 20 | return margin; 21 | } else { 22 | return 0; 23 | } 24 | } 25 | 26 | @Override 27 | public void drawLeadingMargin(Canvas c, Paint p, int x, int dir, 28 | int top, int baseline, int bottom, CharSequence text, 29 | int start, int end, boolean first, Layout layout) {} 30 | 31 | @Override 32 | public int getLeadingMarginLineCount() { 33 | return lines; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/src/main/java/tk/wasdennnoch/androidn_ify/utils/MiscUtils.java: -------------------------------------------------------------------------------- 1 | package tk.wasdennnoch.androidn_ify.utils; 2 | 3 | import android.content.Context; 4 | import android.content.pm.PackageManager; 5 | 6 | import org.json.JSONArray; 7 | import org.json.JSONException; 8 | 9 | import java.io.BufferedReader; 10 | import java.io.IOException; 11 | import java.io.InputStream; 12 | import java.io.InputStreamReader; 13 | 14 | public class MiscUtils { 15 | 16 | public static boolean isGBInstalled(Context context) { 17 | try { 18 | context.getPackageManager().getPackageInfo(ConfigUtils.M ? "com.ceco.marshmallow.gravitybox" : "com.ceco.lollipop.gravitybox", 0); 19 | return true; 20 | } catch (PackageManager.NameNotFoundException e) { 21 | return false; 22 | } 23 | } 24 | 25 | public static String readInputStream(InputStream stream) throws IOException { 26 | StringBuilder result = new StringBuilder(); 27 | BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); 28 | String line; 29 | while ((line = reader.readLine()) != null) { 30 | result.append(line); 31 | } 32 | return result.toString(); 33 | } 34 | 35 | public static JSONArray checkValidJSONArray(String json) throws JSONException { 36 | return new JSONArray(json.replace(" ", "")); 37 | } 38 | } -------------------------------------------------------------------------------- /app/src/main/java/tk/wasdennnoch/androidn_ify/utils/RemoteLpTextView.java: -------------------------------------------------------------------------------- 1 | package tk.wasdennnoch.androidn_ify.utils; 2 | 3 | import android.content.Context; 4 | import android.support.annotation.Nullable; 5 | import android.util.AttributeSet; 6 | import android.view.RemotableViewMethod; 7 | import android.widget.TextView; 8 | 9 | public class RemoteLpTextView extends TextView { 10 | 11 | public RemoteLpTextView(Context context) { 12 | super(context); 13 | } 14 | 15 | public RemoteLpTextView(Context context, @Nullable AttributeSet attrs) { 16 | super(context, attrs); 17 | } 18 | 19 | public RemoteLpTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { 20 | super(context, attrs, defStyleAttr); 21 | } 22 | 23 | public RemoteLpTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { 24 | super(context, attrs, defStyleAttr, defStyleRes); 25 | } 26 | 27 | @RemotableViewMethod 28 | public void setWidth(int width) { 29 | ViewUtils.setWidth(this, width); 30 | } 31 | 32 | @RemotableViewMethod 33 | public void setHeight(int height) { 34 | ViewUtils.setHeight(this, height); 35 | } 36 | 37 | @RemotableViewMethod 38 | public void setMarginEnd(int margin) { 39 | ResourceUtils res = ResourceUtils.getInstance(getContext()); 40 | ViewUtils.setMarginEnd(this, margin); 41 | } 42 | 43 | @RemotableViewMethod 44 | public void setMarginBottom(int margin) { 45 | ResourceUtils res = ResourceUtils.getInstance(getContext()); 46 | ViewUtils.setMarginBottom(this, margin); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /app/src/main/java/tk/wasdennnoch/androidn_ify/utils/RemoteMarginLinearLayout.java: -------------------------------------------------------------------------------- 1 | package tk.wasdennnoch.androidn_ify.utils; 2 | 3 | import android.content.Context; 4 | import android.view.RemotableViewMethod; 5 | import android.widget.LinearLayout; 6 | 7 | public class RemoteMarginLinearLayout extends LinearLayout { 8 | 9 | public RemoteMarginLinearLayout(Context context) { 10 | super(context); 11 | } 12 | 13 | @RemotableViewMethod 14 | public void setMarginEnd(int margin) { 15 | ResourceUtils res = ResourceUtils.getInstance(getContext()); 16 | ViewUtils.setMarginEnd(this, res.getDimensionPixelSize(margin)); 17 | } 18 | 19 | @RemotableViewMethod 20 | public void setMarginBottom(int margin) { 21 | ResourceUtils res = ResourceUtils.getInstance(getContext()); 22 | ViewUtils.setMarginBottom(this, res.getDimensionPixelSize(margin)); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/src/main/java/tk/wasdennnoch/androidn_ify/utils/TestUtils.java: -------------------------------------------------------------------------------- 1 | package tk.wasdennnoch.androidn_ify.utils; 2 | 3 | import java.lang.reflect.Method; 4 | import java.lang.reflect.Modifier; 5 | 6 | import de.robv.android.xposed.XposedBridge; 7 | import tk.wasdennnoch.androidn_ify.XposedHook; 8 | 9 | @SuppressWarnings("unused") 10 | public class TestUtils { 11 | 12 | private static final String TAG = "TestUtils"; 13 | 14 | public static void logMethods(Class clazz) { 15 | XposedHook.logI(TAG, "LOGGING ALL METHODS OF CLASS " + clazz.getSimpleName()); 16 | Method[] methods = clazz.getDeclaredMethods(); 17 | for (int i = 0; i < methods.length; i++) { 18 | Method m = methods[i]; 19 | String log = " " + (i + 1) + ". - " + 20 | Modifier.toString(m.getModifiers()) + " " + 21 | m.getReturnType().getSimpleName() + " " + 22 | m.getName() + "("; 23 | Class[] parameters = m.getParameterTypes(); 24 | for (int j = 0; j < parameters.length; j++) { 25 | log += parameters[j].getSimpleName(); 26 | if (j != parameters.length - 1) 27 | log += ", "; 28 | } 29 | log += ");"; 30 | XposedBridge.log(log); 31 | } 32 | XposedHook.logI(TAG, "METHOD LOG END"); 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /app/src/main/res/anim/ic_volume_collapse_chevron_02_animation.xml: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | 16 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/anim/ic_volume_collapse_rectangle_1_animation.xml: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | 16 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/anim/ic_volume_collapse_rectangle_2_animation.xml: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | 16 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/anim/ic_volume_expand_chevron_01_animation.xml: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | 16 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/anim/ic_volume_expand_rectangle_3_animation.xml: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | 16 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/anim/ic_volume_expand_rectangle_4_animation.xml: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | 16 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/anim/major_a_b_dot_01_animation.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 20 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/anim/major_b_a_dot_01_animation.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 20 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/anim/major_b_c_dot_01_animation.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 20 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/anim/major_c_b_dot_01_animation.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 20 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/anim/minor_a_b_dot_02_animation.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 20 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/anim/minor_b_a_dot_02_animation.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 20 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/anim/minor_b_c_dot_02_animation.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 20 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/anim/minor_c_b_dot_02_animation.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 20 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/animator/fade_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/animator/fade_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/animator/fly_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/animator/fly_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/color/remote_input_send.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/color/remote_input_text.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-nodpi/ic_namey_mcnameface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasdennnoch/AndroidN-ify/7fd4fe402e935ad6d421d0b1ad1a0619d0f327c4/app/src/main/res/drawable-nodpi/ic_namey_mcnameface.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/arrow_down_alpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasdennnoch/AndroidN-ify/7fd4fe402e935ad6d421d0b1ad1a0619d0f327c4/app/src/main/res/drawable-xhdpi/arrow_down_alpha.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/arrow_up_alpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasdennnoch/AndroidN-ify/7fd4fe402e935ad6d421d0b1ad1a0619d0f327c4/app/src/main/res/drawable-xhdpi/arrow_up_alpha.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/arrow_down.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/arrow_up.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/back.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/belly.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/body.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bowtie.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/cap.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/collar.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/face_spot.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/food_dish.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/food_sysuituna.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/foot1.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/foot2.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/foot3.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/foot4.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/head.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/header_dot.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/home.xml: -------------------------------------------------------------------------------- 1 | 16 | 22 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_about.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_account_circle.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 22 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_add.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_add_24dp.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 22 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_address_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 22 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_allergies_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 22 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_bloodtype_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 22 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_clear_24dp.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 22 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_close.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_collapse_notification.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 22 | 25 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_crop.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_done_92.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 22 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_expand_notification.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 22 | 25 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_github.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_heart_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 22 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_livedisplay_auto.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 22 | 23 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_livedisplay_day.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 22 | 23 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_livedisplay_night.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 22 | 23 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_livedisplay_off.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 22 | 23 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_livedisplay_outdoor.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 22 | 23 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_lock.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_lock_open.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_medication_24dp.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 22 | 25 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_menu.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_mode_edit.xml: -------------------------------------------------------------------------------- 1 | 16 | 22 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_mode_edit_24dp.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 23 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_notes_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 22 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_person_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 22 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_qs_data_disabled.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_refresh.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_report_problem_92.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 22 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_send_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_share.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_stat_n.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 24 | 27 | 30 | 33 | 36 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_volume_collapse_animation.xml: -------------------------------------------------------------------------------- 1 | 13 | 15 | 16 | 19 | 22 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_volume_expand_animation.xml: -------------------------------------------------------------------------------- 1 | 13 | 15 | 16 | 19 | 22 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_xda.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/icon.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 24 | 27 | 30 | 33 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/left_ear.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/left_ear_inside.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/left_eye.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/leg1.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/leg2.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/leg2_shadow.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/leg3.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/leg4.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/major_a_b.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 24 | 28 | 30 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/major_a_b_animation.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 20 | 23 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/major_b_a.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 24 | 28 | 30 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/major_b_a_animation.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 20 | 23 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/major_b_c.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 24 | 28 | 30 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/major_b_c_animation.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 20 | 23 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/major_c_b.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 24 | 28 | 30 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/major_c_b_animation.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 20 | 23 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/minor_a_b.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 24 | 28 | 30 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/minor_a_b_animation.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 20 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/minor_b_a.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 24 | 28 | 30 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/minor_b_a_animation.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 20 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/minor_b_c.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 24 | 28 | 30 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/minor_b_c_animation.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 20 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/minor_c_b.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 24 | 28 | 30 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/minor_c_b_animation.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 20 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/mouth.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/nose.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/notification_material_media_action_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/platlogo.xml: -------------------------------------------------------------------------------- 1 | 13 | 18 | 21 | 24 | 27 | 30 | 33 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/qs_btn_borderless_rect.xml: -------------------------------------------------------------------------------- 1 | 16 | 20 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/recents_empty.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/remote_input_cursor.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/right_ear.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/right_ear_inside.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/right_eye.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ripple_dismiss_all.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ripple_drawable.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/stat_sys_data_disabled.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/tail.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/tail_cap.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/tail_shadow.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/view_contact_divider.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 20 | 21 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/interpolator/ic_volume_collapse_animation_interpolator_0.xml: -------------------------------------------------------------------------------- 1 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/interpolator/ic_volume_expand_animation_interpolator_0.xml: -------------------------------------------------------------------------------- 1 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_app_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 14 | 15 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_emergency_info.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | 17 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/layout/custom_action_bar.xml: -------------------------------------------------------------------------------- 1 | 2 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/layout/custom_preference_category_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 13 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/layout/drawer_category.xml: -------------------------------------------------------------------------------- 1 | 16 | 22 | 23 | 27 | 28 | 37 | 38 | -------------------------------------------------------------------------------- /app/src/main/res/layout/drawer_spacer.xml: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/layout/edit_activity_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 13 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/layout/edit_text.xml: -------------------------------------------------------------------------------- 1 | 2 | 15 | 16 | 23 | 24 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/layout/food_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 15 | 16 | 23 | 28 | 31 | 32 | -------------------------------------------------------------------------------- /app/src/main/res/layout/neko_activity.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 20 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/layout/notification_filter_button.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/notification_template_part_chronometer.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/layout/preference_dialog_autocomplete_edittext.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 23 | 24 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /app/src/main/res/layout/preference_user_delete_widget.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 21 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/layout/qs_customize_divider.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/qs_detail.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 26 | 27 | 32 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /app/src/main/res/layout/qs_right_button.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/qs_up_button.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/recents_empty.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 18 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/layout/tabs.xml: -------------------------------------------------------------------------------- 1 | 2 | 13 | 18 | 25 | 29 | 33 | -------------------------------------------------------------------------------- /app/src/main/res/layout/usage_side_label.xml: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/menu/edit_info_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_app_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | 13 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/menu/view_info_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasdennnoch/AndroidN-ify/7fd4fe402e935ad6d421d0b1ad1a0619d0f327c4/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasdennnoch/AndroidN-ify/7fd4fe402e935ad6d421d0b1ad1a0619d0f327c4/app/src/main/res/mipmap-hdpi/ic_launcher_settings.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasdennnoch/AndroidN-ify/7fd4fe402e935ad6d421d0b1ad1a0619d0f327c4/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasdennnoch/AndroidN-ify/7fd4fe402e935ad6d421d0b1ad1a0619d0f327c4/app/src/main/res/mipmap-mdpi/ic_launcher_settings.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasdennnoch/AndroidN-ify/7fd4fe402e935ad6d421d0b1ad1a0619d0f327c4/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasdennnoch/AndroidN-ify/7fd4fe402e935ad6d421d0b1ad1a0619d0f327c4/app/src/main/res/mipmap-xhdpi/ic_launcher_settings.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasdennnoch/AndroidN-ify/7fd4fe402e935ad6d421d0b1ad1a0619d0f327c4/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasdennnoch/AndroidN-ify/7fd4fe402e935ad6d421d0b1ad1a0619d0f327c4/app/src/main/res/mipmap-xxhdpi/ic_launcher_settings.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasdennnoch/AndroidN-ify/7fd4fe402e935ad6d421d0b1ad1a0619d0f327c4/app/src/main/res/mipmap-xxxhdpi/ic_launcher_settings.png -------------------------------------------------------------------------------- /app/src/main/res/values-land/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | true 4 | 2 5 | 4 6 | -------------------------------------------------------------------------------- /app/src/main/res/values-land/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 2dp 4 | 0dp 5 | 6 | 0dp 7 | 8 | 9dp 9 | 9dp 10 | -------------------------------------------------------------------------------- /app/src/main/res/values-sw410dp/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | true 4 | -------------------------------------------------------------------------------- /app/src/main/res/values-sw540dp/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 3 4 | -------------------------------------------------------------------------------- /app/src/main/res/values-sw600dp-land/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | 3 5 | -------------------------------------------------------------------------------- /app/src/main/res/values-w550dp-land/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | true 4 | 4 5 | -------------------------------------------------------------------------------- /app/src/main/res/values-w550dp-land/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 544dp 4 | -------------------------------------------------------------------------------- /app/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/values/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | 3 5 | 1 6 | false 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/integers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 200 4 | 200 5 | -------------------------------------------------------------------------------- /app/src/main/res/xml/edit_emergency_contacts.xml: -------------------------------------------------------------------------------- 1 | 2 | 13 | 14 | 17 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/xml/hide_header_icons_prefs.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | 10 | 15 | 16 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/xml/lockscreen_prefs.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 10 | 11 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/xml/settings_prefs.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 10 | 11 | 17 | 18 | 23 | 24 | 28 | 29 | 34 | 35 | -------------------------------------------------------------------------------- /app/src/main/res/xml/view_emergency_contacts.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 20 | -------------------------------------------------------------------------------- /banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasdennnoch/AndroidN-ify/7fd4fe402e935ad6d421d0b1ad1a0619d0f327c4/banner.png -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | jcenter() 6 | } 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:2.3.1' 9 | 10 | // NOTE: Do not place your application dependencies here; they belong 11 | // in the individual module build.gradle files 12 | } 13 | } 14 | 15 | allprojects { 16 | repositories { 17 | jcenter() 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /changelog.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ### Next version (v0.3.0): 4 | 5 | - Code improvements based on Nougat source 6 | - Emergency info 7 | - QS transition 8 | - QS editor 9 | - QS pages 10 | - Battery tile 11 | - New QS tile click behaviour 12 | - Neko (Nougat Easter Egg) 13 | - App install source in App info screen 14 | - "Namey McNameface" icon in easter egg 15 | - Option to keep header and QS panel background (theming) 16 | - Improved compatibility with PA and OOS 17 | - Fix preferences not readable 18 | - Many other fixes and improvements 19 | - Many new translations 20 | 21 | ### v0.2.0 (5): 22 | 23 | - New notification design 24 | - New status bar header design 25 | - New Recents design 26 | - More double-tap fixes 27 | - Use recents button to 28 | - return to last app 29 | - return to current app 30 | - navigate through recents 31 | - Option to restart SystemUI 32 | - App theme switch 33 | - About screen in app 34 | - Option to force english app language 35 | - Dutch, Farsi, French, Korean, Polish, Russian, Thai, Turkish, Ukrainian and Vietnamese translation 36 | 37 | 38 | ### v0.1.2 (3): 39 | 40 | - Fixed double-tap recents - again. 41 | - Fixed settings tile fix 42 | - Removed print tile summary (was huge performance issue) 43 | - Romanian translation 44 | 45 | 46 | ### v0.1.1 (2): 47 | 48 | - App icon 49 | - Settings UI 50 | - Options to disable tweaks 51 | - Debug log option 52 | - Double-tapping recents should now be working 53 | - Fix for combined "Sounds & notifications" tile 54 | - Moved strings to proper strings.xml files 55 | - Italian, Slovak, German, Chinese, Portugese, Spanish translations 56 | 57 | 58 | ### v0.1.0 (1): 59 | 60 | - Initial release 61 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m 13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 14 | 15 | # When configured, Gradle will run in incubating parallel mode. 16 | # This option should only be used with decoupled projects. More details, visit 17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 18 | # org.gradle.parallel=true 19 | 20 | org.gradle.jvmargs=-Xmx1536m -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasdennnoch/AndroidN-ify/7fd4fe402e935ad6d421d0b1ad1a0619d0f327c4/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Mar 06 18:15:34 CET 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip 7 | -------------------------------------------------------------------------------- /ic_launcher_big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasdennnoch/AndroidN-ify/7fd4fe402e935ad6d421d0b1ad1a0619d0f327c4/ic_launcher_big.png -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | --------------------------------------------------------------------------------