[Android Software Development] noname81:
LMT is a tool for Android (tested already on multiple devices but should run on nearly all) that launches a command when perform single touch or multitouch gestures on the screen (In any app/screen/etc.). You can connect basic and advanced commands to any gesture LMT supports. In addition to the gestures you can activate a system-wide PieControl for navigation like the feature in the ICS stock browser (touch the side of the screen to activate it).

See also:

http://www.droid-life.com/2013/01/23/lmt-launcher-brings-pie-goodness-without-the-custom-rom/

Installation

Download the latest apk, copy it to your phone and install it via file explorer. For the pie just start LMT, set actions to the different pie slices and start the TouchService. If you want to use gestures and/or ISAS first try to use the auto configuration feature. If gestures and ISAS are not working correctly afterwards, set the specified input device for your phone and for ISAS set the proper touchscreen to screen factors manually (see Troubleshooting section for details).

Gestures

Square (start gesture top left cw)

Diamond (start gesture at the bottom cw)

Delete (start gesture top left)

SwipeRightDouble

SwipeLeftDouble

SwipeUpDouble

SwipeDownDouble

SwipeRightLeftDouble

SwipeLeftRightDouble

SwipeUpDownDouble

SwipeDownUpDouble

QuestionmarkDouble

SquareDouble

DiamondDouble

Commands

None -> Trigger no command

App -> Trigger an arbitrary app

Home -> Switch to home screen

HomeLongpress -> Trigger the TaskManager

Menu -> Trigger the menu key

Back -> Trigger the back key

Search -> Activate search

SearchLongpress -> Activate voice search

NextApp -> Switch to the next running app

PrevApp -> Switch to the previous running app

LastApp-> Switch to the last opened app

OpenNotificationBar-> Open the notification bar

OpenQuickSettings-> Open the quick settings

OpenKeyboard-> Open the soft keyboard

OpenPowermenu -> Open the power menu

Wifi -> Toggle the Wifi mode

Data -> Toggle the data mode

Bluetooth -> Toggle the Bluetooth mode

GPS -> Open the GPS mode

Key -> Trigger an arbitrary key (e.g. "3" for the HOME key - see http://developer.android.com/reference/android/view/KeyEvent.html for keycodes)

Activity -> Trigger an arbitrary activity (e.g. "com.android.lmt.InfoActivity" for the LMT info page)

WebPage -> Open an arbitry webpage (e.g. "http://xdaforums.com")

Script -> Open an arbitrary script (e.g. "/mnt/sdcard/sendevent.sh" for Home Longpress - see attached script sendevent.sh)

KillApp -> Kill the current foreground app and switch to home screen

KillAllApps -> Kill all apps and switch to home screen

TaskerTask -> Start a predefined tasker task (You should avoid spaces in your task name)

Shortcut -> Start a system shortcut

Screenshot -> Take a screenshot

PiePointer -> Activate the pie pointer feature (only for pie actions)

ISAS

The ISAS (invisible swipe areas) can be used to swipe with one finger from the sides to to center of the screen (like you would bring up the pie) to trigger actions. E.g. you could use the 3 ISAS at the bottom of the screen to trigger back, home and recents with just swipes when the navbar is hidden. Those swipes are as fast and reliable as normal button presses. In order to make the ISAS work you have to do the following setup:

activate gestures via setMode (because ISAS are being recognized via the internal gesture engine)

Configure min bbox size. Actually this is the length in pixel the swipe must be long, so that the corresponding action for the ISA is being triggered.

Configure activation area size. This is the height (for bottom/top ISAS) or the width (for left/right ISAS) of the area, where the swipe must be started in. So the lower the value, the more precise you have to start the swipe at the side of the screen

Last but not least the touchscreen to screen factors: As for some devices the touchscreen uses a different coordinate system as the screen, you have to adjust here the values for x and y. For the Nexus devices I added those values already to the OP and in later versions I'll introduce a kind of auto calibrate. But for now it is a little bit of testing...

Once the setup is complete you can assign your actions to the 12 available ISAS!

Troubleshooting

For gestures and ISAS you need to set the proper input device and for ISAS the proper touchscreen to screen factors. If your device is not on the list, you can find them out doing the following steps:

Download a terminal (e.g. terminal emulator) from the market

Enter "su" and then "getevent -p" in the terminal

Search your touchscreen device and use the given event number as input device in LMT (e.g. /dev/input/event2 -> 2)

Check the touchscreen max values for event 35/36 and divide these by your screen resolution x and y values. This will give you the touchscreen to screen factors you have to set for the ISAS.

If you still have issues please create a logcat:

Install e.g. catlog from the market

Record with catlog the following procedure:

Start LMT

Set input device to x from first procedure

Set vibration time to 777

Start the TouchService

Do the double swipe up gesture on the screen

Stop the TouchService

Send me the logcat or post it here in the thread...

FAQ

Setting key actions:

With LMT's key action you can not only send simple key presses, but also simultaneous presses, long presses and key chains. See the following examples:

"keycode" -> Just a simple key press and release

"500+keycode" or "1000+keycode" or "2000+keycode" -> press and hold the key for 100ms/600ms/1000ms and then release it

"keycode1 keycode2 keycode3" -> Execute keycode1, then keycode2, then keycode3

"keycode1,keycode2" -> press and release keycode1 and keycode2 simultaneously

"keycode1,keycode2 keycode3" -> press and release keycode1 and keycode2 simultaneously and afterwards keycode3

"2000+keycode1,keycode2 keycode3" -> press and hold keycode1 and keycode2 simultaneously for 1000ms and afterwards press and release keycode3

A good example is how you can go via key presses from Chrome main screen into the bookmarks. You do it by pressing "menu", then 4 times "keypad down", then "enter". A small wait is added to the menu key (100ms), so that the chrome options menu gets time to show before going on: "582 20 20 20 20 66".

Setting the pie color:

The format is just ARGB8888 in hex (8 bit for alpha and every color). So just use #xx where xx is alpha starting from 00 to ff and add the desired color afterwards. Have a look here for different colors but keep in mind that in these examples the alpha value is missing: http://www.javascripter.net/faq/rgbtohex.htm So if you have the color "rgb(124,252,0) #7CFC00" it will be #FF7CFC00 for an opaque pie and e.g. #807CFC00 for a half transparent pie...

Adding custom icons for pie items:

To have custom icons for the pie items create the following folder structure and put your own png images into it: "/sdcard/Android/data/com.noname81.lmt/files/". The default icons have the size 60x60px but other image sizes should also work (they will be resized to the configured size). You can define custom icons for every pie item and/or for every action (LMT first tries to load the icon for the pie pos, then the custom icon for the action and will use the default action icon if no other icon is defined). To set custom pie pos icons name the png pie[0-19].png where e.g. "pie0.png" will be the icon for pie item level1, item1, shorpress and "pie1.png" will be the icon for level1, icon1, longpress. To set custom action icons just name the png [actioname].png (see command section in the OP for action names; use lowercase, e.g. back.png). Please restart the TouchService after you changed the icons, so that LMT can recreate the pie.

Creating a screenshot via action:

See this post: http://xdaforums.com/showpost.php?p=37823525&postcount=3328

Changelog

3.2 -> Added quick settings tile to activate/deactivate LMT; Removed expiry date; Several fixes to make LMT more stable

3.1 -> Add pie pointer edge activation again; Support Android 10; Fix pie activation on devices with notch;Limit pie pointer on screen edges; Fix gesture auto configuration on devices with notch; Fix root actions being stuck sometimes; Set new default pie color and activation area thickness; Set exclusion rects for system wide Android 10 gestures; Bump expiration date

2.9 -> Support Android P; Add support for PiePointer on non root devices; Add pie recent apps feature. Recent apps will be shown in a separate pie once this new action is activated; Show apps with all uids in app/activity selection lists; Add runtime permission infos to info page; Remove Pie pointer edge activation (activation is only possible via action now); Fix killApp and killAllApps on KitKat phones; Fix some issues with app starting code; Change default pie color; Add immersive mode toggle action; Fix app icons on Android O; Support all Android ABIs (also x86* and mips*); Add new LMT icon with adapted icon support in Oreo (Thanks to Kaemo for the icon!); Fixed multitouch gestures on newer devices (e.g. Pixel 2); Fixed tasker tasks with spaces

2.8 -> Made user icons for pie action configurable via GUI. Just press on an action icon in the pie list and configure a new icon; Introduced asynchronous icon loading in list screens to improve scrolling performance; Fixed prev/next/last app actions on Android N; Fixed gesture auto configuration on some devices and made 20 gesture input devices configurable; Fixed gestures and ISAS on 64 bit devices; Add Google Pixel Icons as alternative navigation button icons; Add Google assistant and Android N splitscreen actions

2.7 -> Made pie on lock screen configurable; Changed expiration date to end of 2018

2.6 beta7 -> Changed pie pointer warp factor from factor to percent to have more fine-grained configuration possibilities; Activated pie on lockscreen

2.6 beta6 -> Fixed pie area behind keyboard bug; Fixed root on Android 5.*

2.6 beta5 -> Added initial support for Android N; Removed android.permission.ACCESS_SUPERUSER from manifest

2.6 beta4 -> Changed way how to toggle data. Now via "svc data"; Prefer accessibility handler for actions instead of root if user has root & activated LMT in the accessibility settings

2.6 beta3 -> Fixed SELinux handling on some devices

2.6 beta2 -> Fixed wrong longpress home icon; Reworked permission handling and introduced permission check for external storage; Added again old option "Keyboard state listener" (only for pie) as "Activation area behind keyboard" option

2.6 beta1 -> Updated SDK to Android M; Since Android M you need to give LMT permission to draw over other apps. LMT will open the permission screen automatically; Since Android M you need to give LMT permission to issue phone calls. LMT will open the permission screen automatically; Android M's app settings cloud backup is working now with LMT. All LMT settings will be saved automatically and restored, when the app is installed again; renamed LMT's package name to com.noname81.lmt since using com.android.lmt revealed some flaws! I knew this would happen at some point in time :D You have to reconfigure your settings once!; Added offset to pie activation area when gravity is set to bottom or top; Fixed crash in AccessibilityHandler; Fixed gestures auto configuration on some devices; Removed KeyboardStatListener since it was broken since several Android versions now

2.5 beta4 -> Added action to unpin a pinned app; Added action to show Google Assist ("Now on tap"); Added "Expand trigger area" pie configuration option

2.5 beta3 -> Added support for Android M

2.5 beta2 -> Fixed problems with LMY48I factory images and latest 5.1.1 ROM nightlies, where killApp, killAllApps and blacklists were not working anymore

2.5 beta1 -> Fixed security problems with SELinux

2.4 -> Fixed root action lockup; Fixed search icon for KitKat style; Fixed activating pie pointer via pie longpress action; Added gesture recognition auto configuration feature; Added pie action area "bottom (not centered)"; Made pie vibration time configurable, Made pie pointer warp factor configurable

2.3 -> Changed pie size handling; Made pie start gap configurable; Introduced 7 items for second pie ring; Fixed data toggle on Lollipop; Fixed deadlock after starting apps like Chrome; Added support for Android 15 (4.0.3) again; Made expire date visible in info fragment; Fixed blacklist on Android < Lollipop; Fixed layout problems on Android 4.0.x; Introduced trigger action for pie pointer feature; Fixed image filtering problem; Introduced nav buttons styles (KitKat and Lollipop for now); Implemented context sensitive GUI; Implemented back key for non root users; Added action "PowerMenu" (root/non root)

2.2 -> Changed LMT icon to new design; Removed ActionBarSherlock to be prepared for material design; Removed compatibility to Android 2.x and 3.x; Changed pie style to material design; Adapted root handling to SELinux in Android 5.0; Fixed last/prev/next app in Android 5.0; Fixed killApp/killAllApps

2.1 -> Added Android L icon set and rescaled all other icons; Prepared LMT for Android Wear and Android L (not finished yet!)

2.0 -> Added ART (Android runtime) support

2.0 RC7 -> Fixed apps sometimes not opening when they were already running; Changed pie longpress bahavior as requested by users; Added screenshot action; Fixed start delay for activity action; Limited pie pointer to screen; Fixed date when set to regional setting; Added possibility to change user image search path and gave LMT permissions to read from sdcard; Added call_phone permission so that direct call shortcuts are working

2.0 RC6 -> Fine tuned pie pointer and introduced configurable color; Fixed "recent apps not coming up after home" bug; Enhanced color dialog; Introduced chained key command feature (e.g. "582 20 20 20 66" to open Chrome bookmarks); Fixed Pie status info notification clock format; Changed pie status info mem usage from kernel info to VM stats; Added Android 4.4 support; Fixed pie popup in the middle problem; Fixed crashes for non root users; Added shortcuts as action support; Reduced memory footprint and improved performance; Decoupled pie status info from animation time; Added shift effect for pie (test e.g. 3-5 pixel); Added app drawer shortcuts for Nova, Apex and Holo Launcher; Added pie pointer feature to be able to reach whole content via pie; Fixed gestures and ISAS for all screen orientations

1.912 -> Hide service notification icon on Android 4.3

1.911 -> Added Android 4.3 support

1.910 -> Added preview of configured actions; Some GUI changes in settings; Added some more pie area positions; Added superuser permission; Fixed GPS toggle and added mobile data toggle

1.99 -> Made pie outline size configurable; Excluded home from pre/next/lastApp actions

1.98 -> Fixed TouchService crash on devices < JB

1.97 -> Resorted actions so please reconfigure them!; Optimized app launch action; Fixed crash with new injection method on older devices; 2000 + key is now longpress key with longer wait; Added new longpress key and lastApp action; Added pie bottom not centered option; Added new default animation for pie status info (old animation when animation time > 80); Added auto calibration of ISAS's touchscreen to screen factors. Just swipe (with gestures activated) multiple times in the lower right corner up; Made pie font size configurable

1.96 -> Made back, menu and keyevent actions faster; Made app/activity start actions faster; Optimized prev/next app actions; Added new pie color options for gradients; Added longpress keys support (Action key with 1000+keycode); Added notification support for < ICS

1.91 -> Adapted date style based on system settings; Added pie font configuration; Added pie status info dim color configuration

1.9 -> Redesigned UI a little bit; New color picker; Added support for non armv7 devices; Fixed tasker task; Fixed script action; Fixed 24h clock

1.86 -> Added 24h clock support; Fixed wrong Wifi level; Fixed wrong CPU cores; Improved notification handling; Introduced option to deactivate color filter for pie images

1.85 -> Added pie sensor navigation support (Show pie status info = 2): Shake your device left/right to delete a notification and go to the next one. Shake your device up/down to go to straight text mode and back; Fixed pie status info for older devices; Centered pie at the bottom; Added pie outline support; Added system status info (CPU, Mem); Fixed clock format; Fixed pie not firing action; Fixed pie on the left wrong order

Exchanged some pie icons

1.8 -> First version of status infos on pie. Status info shows clock, additional infos and notifications. In order to get notifications on the pie you must activate LMT as accessibility service in the android settings. Swiping on the status info will pause the animation, swiping back on the pie will restart it. Releasing finger on the notification will start the corresponding application. Releasing finger on the clock will open the notification panel and releasing on additional infos will open quick settings panel; Added full color support for pie (normal, select, icon and status info). Set #ARGB,#ARGB,#ARGB,#ARGB or Android color constants e.g. "gray,yellow,black,yellow". Also app/user icons are colored now; Added new default pie color 5; New default TouchService mode is pie only since gestures are confusing for new users; Fixed exception in load icon code; Fixed icon size in app selection dialog; Changed some UI strings; Added new action OpenQuickSettings; Exchange some pie images; Cleaned up permissions

1.7 -> Added pie from the bottom; added bigger activation area for pie items inspired by Paranoid Android pie

1.67 -> Added scaling for pie user icons (new settings entry); fixed persistency bug for last 2 isas

1.66 -> Fixed missing "OpenNotificationBar" action icon for pie; Fixed crash when using image overlays and isas

1.65 -> Fixed crash in isa code; fixed bug in "open notification bar" action

1.6 -> Added Isas (Invisible swipe areas). Define action being triggered when swiping from the sides of the screen (new configuration values "single swipes bbox" for min bbox to trigger the swipe, "single swipes activation area" for the width of the area the swipe must be started in and "touchscreen to screen factor X/Y" for these devices, where the touchscreen values have a different resolution compared to the screen - e.g. X=160%, Y=200% for the Nexus7 and X=200%, Y=100% for the HTC Sensation); Resolved pie activation area interfering with the keyboard: The area is now moved upwards when keyboard is open; Block single touch gestures/swipes when keyboard is open; Improved speed of gesture engine; Changed some default configuration values; Deactivated tap and hold gestures (they didn't work anyway); Added support for app icons on the pie; Added Tasker Action; Added new styles for the pie; Updated input device list; Improved security

1.5 -> Refactored whole GUI to match ICS/JB/Holo style with swiping tabs; Fixed small bug with pie debug activation area; Added pie animation from JellyBean pie in browser (only >= Honeycomb); Made pie animation time configurable; Changed code for home command to make it faster; Updated PayPal link for English website; Updated input device list

1.4 -> JellyBean bugfix release; Fixed disappearing pie when rotating the screen in jb; Adapted pie outer radius to fit new jb style (80)

1.3 -> Fixed pie firing commands even if fg app was blacklisted; Changed behavior for command killApp to really force stop the app; Added again vibrate on shortpress as an option for the pie feedback style; Fixed startup delay affecting all other starting apps; Fixed bug where pie icons disappeared when using them for short- and longpress commands; Improved pie icon size handling for user defined icons (they will have a constant size now)

1.2 -> Fixed run on startup problems on GNex; Added separate blacklist for pie; Changed pie feedback style shortpress to fire; Change to proper pie icons on longpress; Made pie icons configurable (Path: "/sdcard/Android/data/com.android.lmt/files/", Files: pie[0-19].png or [actioname].png); Fixed rotation bug where pie showed up even if it was disabled; Added multi command feature for pie (swipe onto one pie item n times to fire the command n times)

1.1 -> Added blacklist support for pie; Fixed bug where pie didn't come up with the first try; Added show pie activation area debug feature (area is shown when you change area settings); Added vertical gravity setting for the pie activation area; Fixed too small x activation area for the pie; Fixed wrong positioned pie icons when pie is on left side; Included system apps in app/activity command dialog (e.g. choose com.android.settings to show the settings menu); Fixed pie crash when rotating the screen; Pie longpress timer is now handled for every pie item; Added root context reinit in case of a crash

Fixed crash when selecting an app without activities

1.0 -> Refactored pie code and fixed crash related to pie; Added fully customizable pie feature; Fixed multiple action after gesture recognition; Added customizable vibration time; Added "no pie vibration" to options

0.97 -> Fixed root permissions for some usecases

0.96 -> Fixed crash when setting wrong values for pie radius; Fixed pie rotation bug bug

0.95 -> Made pie color fully configurable; Added haptic feedback for the pie; Made pie size configurable; Fixed pie rotation bug

0.9 -> Fixed Galaxy S ICS support; Added support for PieControl on both sides; Added 2 new commands: KillApp and KillAllApps; Added longpress support for PieControl: Back->KillApp, Home->PowerOff, Recent->KillAllApps, Menu->Settings and Search->VoiceSearch

0.85 -> Implemented ICS recent apps (finally...)

0.8 -> Added a first version of the PieControl with predefined actions

0.75 -> Fixed gesture recognition problem on GSN; Refactored TouchService code; optimized recognition performance/speed; refined compiler settings

0.7 -> Fixed launch app delay; Fixed autostart problem on ICS; Implemented ActivitySelect feature; Added blacklist support to exclude apps from gesture recognition; Added new TaskSwitcher commands

0.6 -> Fixed TouchService restart bug; Sorted app list alphabetically; Automatically restart TouchService when switching input device; Adapted superuser rights to ICS; Changed HOME_LONGPRESS to KEYEVENT_APP_SWITCH (187); Added Galaxy Nexus support; Refactored TouchService

0.5 -> Show current settings in input dialogs; Show TouchService state toaster; added known devices in input list; added autostart after startup feature

0.4 -> Improved touchservice code; added app select list for app action; added activity action

0.35 -> LMT is now rotation aware; added tactile feedback for gesture recognition; corrected some strings

0.3 -> Omit overlay when no command given; add more gesture recognition settings; add new toggle commands for Wifi, BT and GPS

0.25 -> Fixed HD2 TouchService code; Corrected logcat output for HD2

0.2 -> Added HTC Sensation support

0.1 -> First release

Donations

If you like my work, please consider a donation!