Version: iManager 0.09.03b
Desc: Fast and tiny tap-oriented task manager.
Last update: 25.02.2011
Attention. Some people say that device works slower when iManager is in background. If you noticed that on your device please write about it with bug reports.
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Video, illustrating its functionality:
System requirements:
1. WM >= 5.0 (not tested on WM7 yet)
2. Does not require .NET at all.
Usage:
1. Launch exe file or use your hardware button to activate it
2. Move finger to switch the tasks
3. Move window left or right to close it
4. Tap and hold your finger longer than 2 seconds to exit the app.
Memory usage:
1 MB per each window task for 16 bit devices and 480x800 resolution
Changes since 0.09.02b
Changes since 0.09.00b
Version 0.09.00b
Changes since 0.05.00a
Changes since 0.04.00a
Changes since 0.03.05.02a
Changes since 0.03.04.04a
Changes since 0.03.04a
Changes since 0.03.03a
Changes since 0.03.02a
Changes since 0.03.01a
Changes since 0.03.00a
Changes since 0.02.04.01a
Changes since 0.02.03.01a
Changes since 0.02.02a
INI-file description:
[Config]
BackSkin=Off - { Off | image.jpg } - background image, Off or filename without path. Location of image - the same that iManager.exe has.
BackSkinOpacity = 50 - (0-100) background screenshot opacity percent. It is layered above background image.
CloseOnDeactivate = Off - close iManager on the first app activation
HideWhileInactive = Off - hide iManager when in background mode
HighPriority = Off - { Off | On } when "On", iManager has high priority while active
Multithread = On - { On | Off } - toggle multithread Direct3D render
Render = OpenGL - { D3D | OpenGL | GDI | Realtime } - choose render engine
ScreenSkin = Off - { Off | image.jpg} window image, Off or filename without path. Location of image - the same that iManager.exe has.
ScreenSkinOpacity = 50 - (0-100) window screenshot opacity percent. It is layered about window image (image.jpg)
ShowProcInfo = Off - { Off | On } - show process info in window screenshot (window name, executable name, memory usage)
UpdateTime = 0 - (0-...) - texture update frequency in background mode in seconds (0 - disable)
NotifyUpdate = Off - { Off | On } - enable or disable offline screenshots capture when applications switch
VibroNum = 1 - vibration port number
RemoveClones = None - { None, SameWindowName, SameProcessName, SameWindowAndProcessName } - remove window clones (see description)
[Control]
RemoveSpeed = 700 - window speed while removing from list (pixels per second)
ScrollSpeed = 1200 - scroll speed (pixels per second)
[Debug]
Enum=Off - toggle advanced debug information while windows enumeration
KineticTest = Off - if kinetics don't work for you then switch KineticTest=On and Log=On and send me bug report
Log = Off - { Off | On } - toggle bug report creation
Profile = Off - { Off | On } - toggle profile creation (profile is used to test program performance)
Render=Off - toggle advanced debug information while render
[Exclude windows]
desktop = Exclude - exclude window "desktop" from the list (not case sencitive)
[Exclude executables]
shell32.exe = Exclude - exclude window of process "shell32.exe" from the list (not case sencitive)
[GDI]
BPP = Default - { Default | 16 | 24 | 32 } GDI screenshots bit depth. Default is bit depth default to your device
[On Remove] - action when remove program from list
manila.exe = No Action - no action. for example manila can't be deleted, so no action
shell32.exe = Hide - hide window instead of closing it, for example, shell32.exe soft resets the device when I try to close it
[Remove Action] - see this for more info
Left = Remove - { Remove | Close | Hide | No Action } - action to perform while sliding the screenshot to the left
Right = Remove - --"-- to the right
[Render]
Alpha = On - { On | Off } - toggle alpha transparency
BackColor = #80202020 - background rectangle color #AARRGGBB (AA - alpha in hex, RR - red, GG - green, BB - blue. (AA = 00 - disable)
BackTexture = On - { On | Off } - toggle background texture
BilinearFiltering = On - { On | Off } - toggle texture bilinear filtration
Opacity = 90 - (0-100) - window screenshots opacity percent
TextureHalf = On - { On | Off } - toggle half sized textures
[Scroll]
ZoomTime = 200 - zooming time in milliseconds
Type = Snap - { Snap | Kinetic | Continuous | KineticSnap } - scrolling type
Vibrate = 0 - (0-...) vibrate when window is near center (0 - disable), milliseconds
Freeze = 0 - (0-...) time to freeze scrolling when window is near center (0 - disable), milliseconds
SnapSpeed = 10 - Scroll speed in snap mode
[StartUp]
AutoStartUp = On - start iManager on Windows start. Start/restart iManager to take effect.
WaitApps = On - wait for apps from [WaitApps] list to start. Then start iManager
WaitAppsNum = 0 - find [WaitApps] apps in memory attempts count (0 - infinite)
WaitTimeout = 2 - program start timeout
[WaitApps]
manila.exe = Wait - exe file name (not case sensitive)
Performance tips:
1. Switch background texture off. More textures - more often texture switches while render - perfomance reduce. (BackTexture = Off)
2. Switch both BackSkin and ScreenSkin off.
3. Switch half sized textures on (reduce videomemory and processor consumption) (TextureHalf = On)
4. Switch logging off (Log = Off)
5. Switch profile off (Profile = Off)
Donate me at moneybookers.com, [email protected]
Installing now. Just to confirm for install on HD2 do I just create a folder (iManager) in Program Files and put the exe in there then shortcut, etc?
Also what software do you recommend for reassigning hardware buttons?
If you want to assign the program to hardware button you should put shortcut to the \Windows\Main menu\Programs folder
UPD: The folder for the program itself is on your own choice.
OK, so I've got it installed and shortcut made, etc. Does it automatically hijack the start menu hardkey? I pressed that hardkey to launch WinStart and it launched OK, then iManager launched over the top of it. Once open it is not showing images of all open screens, just dark grey panels, and is running painfully slow (doesn't scroll at all to touch, catches up eventually - 10-20 seconds later). I'm running the latest Elegancia ROM with Chainfire 3D so driver's are all good. Anything I can check?
antru said:
If you want to assign the program to hardware button you should put shortcut to the \Windows\Main menu\Programs folder
UPD: The folder for the program itself is on your own choice.
Click to expand...
Click to collapse
Yes, I've done that but in WinMo Settings>Personal>Buttons it is only possible to assign to Long Press Send Key and nothing else.
Anything I can check?
Click to expand...
Click to collapse
Can you attach report files from the program folder? Thanks.
UPD: If noone attach report files I will not understand the problem. Report files are common text file and does not contain any private data. You can make sure of it by opening them.
well...
ko on my sgh-i900, french ROM WM6.1
bythe way, this hasn't a 3D accelerator, so maybe...
in attachment the file.
failure on the hd2
here are my attempts to run imanager on my hd2 (ROM in my sig), tmous variety.
unzipped imanager.exe and put in a folder called imanager. Put the imanager folder in Device/Windows/Programs
Set it to long press of my send key (only setable button on hd2).
Pressed it several times, imanager appeared in the top left of my task mgr, but never opened to anything.
Here are the logs (4 attempts). I don't think I need any 3d drivers, pretty sure I already have them.
edit: I didn't have dunc's problem of it trying to open on top on WinStart. Dunc, did you download beta2?
tried after soft reset, still no dice. It pops up in my taskbar like it's opening, then nothing.
Corwin9S said:
well...
ko on my sgh-i900, french ROM WM6.1
bythe way, this hasn't a 3D accelerator, so maybe...
in attachment the file.
Click to expand...
Click to collapse
Thanks great for the report. The problem is not quite clear to me but I'll try to fix this situation.
nrfitchett4 said:
here are my attempts to run imanager on my hd2 (ROM in my sig), tmous variety.
unzipped imanager.exe and put in a folder called imanager. Put the imanager folder in Device/Windows/Programs
Set it to long press of my send key (only setable button on hd2).
Pressed it several times, imanager appeared in the top left of my task mgr, but never opened to anything.
Here are the logs (4 attempts). I don't think I need any 3d drivers, pretty sure I already have them.
edit: I didn't have dunc's problem of it trying to open on top on WinStart. Dunc, did you download beta2?
Click to expand...
Click to collapse
I've understood the problem with HD2. It has 32bit color and offscreen surface is 16 bit so thats the problem and I'll try to fix it soon.
antru said:
I've understood the problem with HD2. It has 32bit color and offscreen surface is 16 bit so thats the problem and I'll try to fix it soon.
Click to expand...
Click to collapse
no problem. Definitely willing to donate if you get this working for the hd2. Great program.
nrfitchett4 said:
no problem. Definitely willing to donate if you get this working for the hd2. Great program.
Click to expand...
Click to collapse
Thanks.
It's strange because HD2 devices in Russia have 16 bit screen mode.
antru said:
Thanks.
It's strange because HD2 devices in Russia have 16 bit screen mode.
Click to expand...
Click to collapse
ahh, interesting factoid I didn't know. I'll keep an eye on it.
nrfitchett4 said:
ahh, interesting factoid I didn't know. I'll keep an eye on it.
Click to expand...
Click to collapse
maybe not all of them, but only specific ROM versions (I don't have such information)
At first use on a TP2 (Rhodium), works pretty well!!
No lag at all for me.
In fact it almost scrolls tooo fast.
Some screen images did not show, or just displayed the open applications icon on a white screen.
But mostly for a first release Beta, it is working well on my device.
Just thought I would give my first impression, especially since others with devices no better then mine were reporting lag.
I also did not use any of the add on files, just the .exe
I can and will report back again with more detail at some point and upload logs for you as well.
Thanks for your efforts so far.
I don't know whether XPERIA X1 meets the requirements or not but when I run iManager, the screen is flipped vertical. Moreover, when I touch, the program moved opposite direct.
Thank you for your program :x.
Hope I can use this with my X1
OK, so figured out why I was getting a 'clash' with Winstart and I'm happy to report it was a false alarm and nothing to do with iManager! Basically in Winstart the shortcut for iManager and the shortcut for Settings folder were somehow in the same screen position so when I clicked on the settings icon it not only opened the Settings folder but also started iManager - sorted the layout issue in Winstart and now this is all OK.
Waiting for the 32 bit fix so I can see it working properly now! Like Santod I did notice that on the odd occasion that I did get any image at all on any of the scrolling panels all that showed was just the app shortcut icon right in the middle of the panel and nothing else.
Keep going - really looking forward to this
picionevn said:
I don't know whether XPERIA X1 meets the requirements or not but when I run iManager, the screen is flipped vertical. Moreover, when I touch, the program moved opposite direct.
Thank you for your program :x.
Hope I can use this with my X1
Click to expand...
Click to collapse
Thanks for testing. It would be very great to receive some reports from your device.
santod040 said:
At first use on a TP2 (Rhodium), works pretty well!!
No lag at all for me.
In fact it almost scrolls tooo fast.
Click to expand...
Click to collapse
Thanks for the testing results. Fast scroll is because I don't use timer for scroll yet, I developed it firstly for my device (Max 4G) and some things such as scrolling, tap sensivity, etc. are results of testing on it. I'll turn on timer in future and it will scroll on all devices at the same speed.
Your device is new to me and it would be very interesting to look reports from it. They contain Direct3D device information that I want to see. Thanks.
Related
Hi all,
it's time to release the new version of TouchWatch2.
Requirements:
WM5 or WM6 (tested on WM6.1 & WM6.5)
.NET Compact Framework 3.5
2.5MB free RAM
Features:
up to 6 timers or stopwatches
works with all screen resolutions (VGA,QVGA,WVGA etc.)
multilanguage (English, German, Spanish, Italian, Dansk, French, Greek, Czech, Polish, Hungarian, Russian, Lithuanian).
landscape support / sensor support with auto rotation
d-pad support
AppToDate support (download AppToDate here)
use your own notifications sounds (WAV only)
use your own icons (PNG only)
you can change graphics and colors (registry only HKLM\Software\M_G\TouchWatch2\)
Usage:
The usage is very simple. Just use fingertips to start or stop a timer (or press d-pad action). If you want to reset a timer, hold down your finger for 500ms (or press d-pad action for 500ms). To modify the settings of a timer, tab on the left side icon and the settings will open (or press d-pad left).
Installation:
Copy and run the CAB file on your device. You will find a shortcut to TouchWatch2 in your programs startmenu.
Screenshots:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Tweaks
You can find some more settings in your registry. HKLM\Software\M_G\TouchWatch2
S2U Users:
If you are using Slide2Unlock there might be a problem if you switch off the device while a timer is running. S2U forces the device to suspend, but the device have to be in unattended mode to work properly.
Take one of this possibilities:
1. Uninstall S2U.
2. or Never switch off the device while a timer is running.
3. or Try to configure S2U like this (settings taken from G-Alarm Homepage):
* Lock when screen is blank > off
* Lock when backlight turns off > off
* Power off in > off
* But blank screen only > off
* Blank screen on talk > off
* Please check those settings on both "On battery power" and "On external power"
Version History:
2.4.4:
* Added icons for timer/stopwatch
* Added sensor support for auto rotation
* Added darker color for disabled timer/stopwatch
* Added lithuanian translation (many thanks to cukierkas)
2.4.3:
* Fixed polish translation errors
* Added russian translation (many thanks to Ethermind)
2.4.2:
* Added polish translation (many thanks to billyJ)
* Added hungarian translation (many thanks to gidano)
2.4:
* Added greek translation (many thanks to dancer_69)
* Added czech translation (many thanks to Dr.Hadr)
* Fixed AppToDate problem
* Fixed landscape view
* Changed default elapsed alarm cycles to 20 instead of 5
* Added the ability to change LED ID for vibration via registry
* Added clock (on last timer item if no timer is set)
* Added some new sounds
* Device isn't vibrating anymore at startup, if you deactivate vibrating response in the settings
2.34:
* Increased graphics performance by 50%! Milliseconds updating faster now.
* Slightly lower battery usage
* Fixed a bug noticed by trids. If you long-click ("reset") on a timer that is not yet defined, then the app don't crashes anymore.
2.33:
* Added AppToDate support.
* Fixed font problem. Digital font was displaying in google maps and some other programs. This is a strange behavior of some programs which don't have set a explizit font for usage.
2.32:
* Fixed WVGA fitting.
* Added support for switching the device off while timer/stopwatch is running
* Added S2U2 detection and automatic exception creation.
2.3:
* Hopefully fixed screen fitting for WVGA devices
2.2:
* Overall user interface speed and battery consumption is improved.
* Added multilanguage support (English, German, Spanish, Italian, Dansk, French).
* Added the possibility to change the timers description (like "Eggs" or "raise pot").
* Added the possibility to change a timers value by keyboard.
* Added a button to mute the elapsed alarm and let timer run.
* Added easy access to the main features.
* Hiding TouchWatch is now working correctly. If an alarm is playing, TouchWatch will come to front automatically.
* Color change (and other tweaks) possible with registry editor (HKLM\Software\M_G\TouchWatch\).
* Fixed sound bugs.
* Removed custom taskbar. The windows default taskbar will do the job.
2.01b:
* Added an option to select between application- or standard taskbar.
* Fixed bug: Font directory not found at startup (DirectoryNotFoundException).
2.0b:
* First beta release.
Support me with a donation for future developments:
Thank you!
No donations received so far.
.
Download:
You can update TouchWatch2 with AppToDate.
TouchWatch2 v2.4.4 - CAB Installer
Translation:
If you are interested to make a translation for TouchWatch, translate the following words please. Also corrections are welcome! I will then release it in one of the next version. Thank you very much.
Code:
OK
Click
Elapsed alarm - audio
Elapsed alarm - vibrate
Elapsed
Hide
Set alarm volume to maximum
Remove
Click response - audio
Click response - vibrate
Font was installed. Please restart TouchWatch.
Slide2Unlock was found on your device. This program is known for causing timer problems. TouchWatch is now trying to adjust settings from S2U.
Settings
Stopwatch
Timer
Homepage
.
nice!
great app and nice look! thanks! but i miss that feature of changing the background image.
I'm running it on a Samsung Omnia (i900) and here are some of my observations:
1. In portrait mode, the application is a little short of the 400 height
2. When I try to draw a line from the top down, the application throws out a "NotSupportedException" error message.
Otherwise, very practical application!
We've written a post about it: http://www.careace.net/2009/05/26/control-stopwatch-and-timer-on-the-touch/
what an awesome app, I was looking for something like this because I coach soccer. Thank you very much
looks good but gwatch works perfect for me already
hi
Just a note to let you know that this does not fill the screen on my HD it just treats it like VGA
Good ! Thks for sharing this tool !
will test it right now, as i'm always looking for ONE tool to be a timer and a counter !
(Today, i run with 2 separates tools... )
mrwangkai said:
I'm running it on a Samsung Omnia (i900) and here are some of my observations:
1. In portrait mode, the application is a little short of the 400 height
2. When I try to draw a line from the top down, the application throws out a "NotSupportedException" error message.
Otherwise, very practical application!
We've written a post about it: http://www.careace.net/2009/05/26/control-stopwatch-and-timer-on-the-touch/
Click to expand...
Click to collapse
Thank you for the review.
What happens if you click on "Minimize" in the bottom menu?
machmandp said:
hi
Just a note to let you know that this does not fill the screen on my HD it just treats it like VGA
Click to expand...
Click to collapse
Is it the same as shown on this screenshots?
http://www.careace.net/2009/05/26/control-stopwatch-and-timer-on-the-touch/
Damn, testet it on Touch and Diamond. Don't know why this happens. I wish I had an Touch HD to test it. Will try to fix it.
Thanks for all the feedback
Hi all,
I have tried to fix the WVGA fitting. Give it a try and test the 2.3 version please. I can't test it because I only have a Diamond.
Thank you very much.
Get it here.
I really like this program but unfortunately when i turn off the screen on my HTC Touch (CDMA), the timer stops working until I turn the screen back on and return to the program. It's like it stalls in the background and stops counting down. I installed it to my storage card rather than main memory. Could this be the problem?
Update: I uninstalled it and reinstalled it to the main memory, soft reset and tried it again. Now once I start the timer and turn the screen off, it makes one short vibration, no sound, no screen turning on, and the timer starts counting upward when the timer reaches zero. Once I manually turn the device on I can see the timer counting upwards and then it starts to vibrate and make sound normally while the timer continues counting upward... really weird. I want this program to work. I really like it. Hope you can reproduce the bug and figure it out.
bytes2bits said:
I really like this program but unfortunately when i turn off the screen on my HTC Touch (CDMA), the timer stops working until I turn the screen back on and return to the program. It's like it stalls in the background and stops counting down. I installed it to my storage card rather than main memory. Could this be the problem?
Update: I uninstalled it and reinstalled it to the main memory, soft reset and tried it again. Now once I start the timer and turn the screen off, it makes one short vibration, no sound, no screen turning on, and the timer starts counting upward when the timer reaches zero. Once I manually turn the device on I can see the timer counting upwards and then it starts to vibrate and make sound normally while the timer continues counting upward... really weird. I want this program to work. I really like it. Hope you can reproduce the bug and figure it out.
Click to expand...
Click to collapse
Hi,
the windows mobile design don't allow to run timers when the device is switched off. There are some workarounds for this (like using alarms), but this isn't a good idea for timers or stopwatches.
You can switch off the screen if you want (there are some tools out there which can do this), but if oyu switch of the device, all timers or stopwatches will stop.
I have noticed that there is a way to run applications in an unattended mode. MAybe this will work. I'll try it.
lopez1_de said:
Hi,
I have noticed that there is a way to run applications in an unattended mode. MAybe this will work. I'll try it.
Click to expand...
Click to collapse
Ok, found a way that you are able to suspend the device via power button. But the device will not be suspended really. Only the screen and lights are switched off. Timers will run in background and switch on the screen if timer is elapsed.
Will release it soon..
Nice work lopez1_de - this has real promise.
I don't know whether the various reports of issues with the screen sizing on WVGA pre- or post-date your release in whivh you thought WVGA was fixed, but it appears not to be. The screen still comes up with a 'gap' at the bottom.
Keep up the good work though!
Gustopher said:
Nice work lopez1_de - this has real promise.
I don't know whether the various reports of issues with the screen sizing on WVGA pre- or post-date your release in whivh you thought WVGA was fixed, but it appears not to be. The screen still comes up with a 'gap' at the bottom.
Keep up the good work though!
Click to expand...
Click to collapse
Hi Gustopher,
thank you for testing.
Damn, how to get the proper screen dimensions on WVGA devices. C#.NET does not give the correct values for Client.Height I think. I googled so long to find the answer. No luck until now. ...
lopez1_de said:
Hi,
the windows mobile design don't allow to run timers when the device is switched off. There are some workarounds for this (like using alarms), but this isn't a good idea for timers or stopwatches.
You can switch off the screen if you want (there are some tools out there which can do this), but if oyu switch of the device, all timers or stopwatches will stop.
I have noticed that there is a way to run applications in an unattended mode. MAybe this will work. I'll try it.
Click to expand...
Click to collapse
Yes, I did notice that with some programs. I do however use a timer program called simple timer which allows me to turn off the screen and then lights up and alerts me when the timer is up. Your program is much cooler looking though. Thanks for keeping at it.
OK, finally fixed the WVGA screen fitting. Many thanks goes to Gustopher for testing it.
For all developers:
And here the trick which allow to run things in background while device is "switched off". You have to set the power management of the device to unattended mode. If the user is pressing the power button, the device will not be suspended, it will be in unattended mode. You have to deactivate the unattended mode manually!
Code:
private const int PPN_UNATTENDEDMODE = 0x0003;
[System.Runtime.InteropServices.DllImport("coredll.dll")]
private static extern bool PowerPolicyNotify(int dwMessage, bool dwData);
I will release a new version very soon.
New release!
Version History:
2.32:
* Fixed WVGA fitting.
* Added support for switching the device off while timer/stopwatch is running
* Added S2U2 detection and automatic exception creation.
Get it here http://forum.xda-developers.com/showthread.php?p=3837186#post3837186
i really love your app.
can you add support for AppToDate?
p-de-geus said:
i really love your app.
can you add support for AppToDate?
Click to expand...
Click to collapse
thanks!
Woooh nice idea with AppToDate. And easy to implement. I definitifly will add support for AppToDate.
This is working perfectly now. Thanks for a great app... my new favorite timer
NEW! Showcase Suite for WM6.5.x (BUILD 23045+)
Sept 18 2009 - Click Here
Click to expand...
Click to collapse
TEST FILE Aug 19 2009 - Click Here
Click to expand...
Click to collapse
e-Natives Showcase
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Version 1.0.1b
( July 18, 2009 )
DOWNLOAD IT HERE
Installation:
(1) UNINSTALL THE PREVIOUS VERSION THEN REBOOT
(2) INSTALL NEW VERSION ( REBOOT RECOMMENDED )
FOR SOMEONE WHO DON'T WANT TO REPLACE THE HTC TASKMANAGER
READ THIS POST
Click to expand...
Click to collapse
AND HERE THE KITCHEN PACKAGE DOWNLOAD
Version 1.0.1b
Don't Let your smile go away when you play around in this thread
Showcase?
e-Natives Showcase is Free Finger Friendly and Resource Friendly Task Manager With Professional Skinning and Easy to Use.
Developed by Ahmad Amarullah (e-Natives Technology)
CHANGELOG
Code:
[B]1.0.1b[/B] - ( 7/18/2009 )
- Fix OK Button in Office Mobile
[B]1.0.1[/B] - ( 7/18/2009 )
- Fix OK Button, add OK Button On X Enhancement
- DesProc has been removed (unused)
- Add Start/Stop X Enhancment on Settings
- Add Support Square and Landscape Screen on Settings
- Fix Scrolling in Showcase Task Switcher
- Fix Push Draw in Showcase Task Switcher
- Improved performance when single tapping X button
- Change Home Icon resource. ( Home Icon & Showcase Button Icon is different now ).
- [B]ADD Color Skinning Support in Registry[/B]
* BGR Format = DWORD
* 0x00FF0000 = Blue, 0x0000FF00 = Green, 0x000000FF = Red
[B]1.0.0[/B] - ( 7/10/2009 )
- Add Showcase Settings/Configuration
- Tweak Showcase Task Switcher for faster start.
- Add Home Icon
- Minimalizing memory usage ;)
- Removing unused resources in Showcase.exe and Showcase_X.exe
- Add smaller icon for Showcase_X, now even smaller exe size
- Stable Testing, and fixing possibility memory leaks...
[B]RC3[/B]
- Add Showcase X Enhancement into Package
- Showcase X Enhancement run on startup, [ to disable it, delete the ShowcaseXLauncher.lnk file on \Windows\StartUp ]
- Add change HTC TaskManager Registry to disable it.
[B]RC2[/B]
- Add support resolution for WQVGA/WQVGA Landscape and QVGA SQUARE.
[B]RC1[/B]
- Add support resolution for WVGA/WVGA Landscape/QVGA/QVGA Landscape
- Skin File now in external file
- Add Icons
- Now as CAB, you just Install it and enjoy it.
[B]BETA-2[/B]:
- Add Used Memory/RAM percentage - tap it will take you into system memory info just like HTC Task Manager
- Remove Switch Button. Now you only need to select the list
- Add pushed close button
- Compress PNG files into 8 bit - Look at previous file size with this new one
- Add support for VGA Landscape (WVGA Cooming soon)
OLD FILES:
1.0.0 - ( July 10, 2009 )
DOWNLOAD Showcase Ver.1.0.0
RC03
DOWNLOAD RC3 + X Enhancement + HTC TaskManager Disabler HERE
RC02
DOWNLOAD RC2 HERE - SUPPORT ALL DISPLAY RESOLUTIONS
Click to expand...
Click to collapse
THIS IS FREEWARE... USE IT IS YOUR OWN RISK
THIS Apps is now on First Stable State
( Possibility minor bugs is only around Appearance )
^--- And Yes... it will never brick your phone.
MORE INFO
After stable I will also introduce it on my website http://www.e-natives.com/.
FREE TO USE
But Please add credit to me "amarullz and e-Natives Technology with link to www.e-natives.com or into this thread" If you Cook it into your ROM.
I am happy if You like this Application,
And more happy if you also give me some donation:
Click to expand...
Click to collapse
Showcase X Enhancement
Version 1.0.0 Already Include This Addon in it's Package
OK... HERE THE X MAP FOR SHOWCASE
Showcase X Enhancement
THIS IS FREEWARE... USE IT IS YOUR OWN RISK
What is X Enhancement?
Showcase X Enhancement is e-Natives Showcase Addon that change the native Windows Mobile's X button behavior into the useful and FingerFriendly Task Tool... [ ups... I don't know what is the best words for this addon ].
In the fact this Addon is standalone proccess which run in background and only eat 1kb memory
Click to expand...
Click to collapse
FILES IN THIS POST WAS TEST BUILD ONLY
FILES TO DOWNLOAD
2009-07-15 [ DOWNLOAD HERE ]
New Showcase X Enhancement with OK Button fix, and Improved performance when you do the single tap... ( v1.0.1 Candidate )
Click to expand...
Click to collapse
Showcase Suite 1.1.0
Showcase Suite 1.1.0
Showcase for New WM6.5.x BUILD 23045+
Enhancement your new Windows Mobile
e-Natives Showcase Suite is Free Finger Friendly and Resource Friendly Task Manager With Professional Skinning and Easy to Use for New Build(s) of Windows Mobile 6.5.x (BUILD 23045+).
ShowcaseSuite replace Showcase_X function and implemented into new usage for new Windows Mobile User Interface.
What's New?
- Add vibrate when you tap/hold your close/win buttons on softkey (configurable via registry)
- Tap And Hold X Button to Exit Current Application (tap/hold are configurable via registry)
- Tap And Hold Win Button to Launch Showcase or Another Task Manager (Program Path are configurable via registry)
- Integrating PositionFix (configurable via registry, QVGA/Others Resolutions supported with change the registry values)
- Mapable default Win Button into Manila Start Menu (configurable via registry)
Click to expand...
Click to collapse
What's Gone?
* There is no Showcase Settings program (yet), old Settings program will not supported for new
Showcase Suite, you must edit the Registry manually, but I will explain what the regs value for.
* There is no Showcase_X because it replaced by ShowcaseSuite
* There is no Warranty , oh sorry.. it's not gone, but it's never existed..
Click to expand...
Click to collapse
QVGA/WQVGA (96dpi) PositionFix?
Change this registry values:
Code:
REGEDIT4
[HKEY_CURRENT_USER\Software\e-Natives Technology\Showcase]
"SUITE_NewTaskbarSize"=dword:00000012
"SUITE_OldTaskbarSize"=dword:0000001A
DOWNLOAD?
NOTE: Remove PositionFix or ManilaPositionFix before you use this Program
DOWNLOAD CAB or DOWNLOAD OEM
CAB FOR QVGA/WQVGA 96dpi by kane159
Click to expand...
Click to collapse
REGISTRIES VALUES:
Code:
"ExcludeProc"
Type: String
Description: Excluded Processes
Value: use ";" as separator
Default: "MobileShell.exe;manila.exe;Manila2D.exe;repllog.exe;ilock2.exe;palringo.exe"
"clListBack", "clListTitle", "clListProc",
"clListTitle_selected", "clListProc_selected"
Type: DWORD
Description: Custom Colors
Value: BGR Hex, 0x00ffffff = White, 0x00ff0000 = Blue, etc...
"use_custom_color"
Type: DWORD
Description: Use Custom Colors
Value: 1 = enabled, 0 = disabled
Default: 1
"SUITE_CloseOnTap"
Type: DWORD
Description: Default tap on X Button will terminated process, Tap and Hold will minimize. If disabled it will reversed
Value: 1 = enabled, 0 = disabled
Default: 0
"SUITE_ManilaLaunchFix"
Type: DWORD
Description: Will tap the taskbar when ShowcaseSuite start (it will forcing TF3D2 to launch, but will showing Notification Enhancement)
Value: 1 = enabled, 0 = disabled
Default: 0
"SUITE_ManilaStartMenu"
Type: DWORD
Description: Will launch Manila Start Menu instead Default Windows Mobile's Start Menu
Value: 1 = enabled, 0 = disabled
Default: 0
"SUITE_NewTaskbarSize"
Type: DWORD
Description: New WM6.5.x Taskbar size, for 192dpi the value was 36px, you can change it for matching your resolution
Value: pixel size
Default: HEX = 0x24, DEC = 36
"SUITE_OldTaskbarSize"
Type: DWORD
Description: Old WM6.5/6.1/5 Taskbar size, for 192dpi the value was 52px, 96dpi was 27px, you can change it for matching your resolution
Value: pixel size
Default: HEX = 0x34, DEC = 52
"SUITE_PositionFix_WinClasses"
Type: String
Description: Window Classes that will force to fix the position
Value: use ";" as separator
Default: "Manila;RESCO_EXPLORER_CLASS"
"SUITE_TaskManager_Path"
Type: String
Description: Path to the program that will launch when you tap&hold the win button
Value: Empty for Showcase, Path Name for another program
Default: Empty
"SUITE_VibrateHold"
Type: DWORD
Description: Vibrate device when you tap&hold Win/Close Buttons on softkey
Value: x milliseconds, 0 = disabled
Default: Hex = 0x1e, Dec = 30 ms
"SUITE_VibrateTap"
Type: DWORD
Description: Vibrate device when you tap Win/Close Buttons on softkey
Value: x milliseconds, 0 = disabled
Default: Hex = 0xf, Dec = 15 ms
Hope it useful for you...
Sorry for my aliens language
Congratulations, looks really nice but doesn't work on my device
edit: wrong link, but managed to find it. Beautiful
Link is pointing to smarttoolkit download.
giboks20 said:
Link is pointing to smarttoolkit download.
Click to expand...
Click to collapse
Right I followed the link in the signature and it works, now I'll have to figure how to make it work from the taskbar instead of Htc task manager
UPPPPSSSSSS SORRY... I fix it...
Showcase
SmartToolkit
^--- Almost same name in same folder .... I didn't check it before...
I am so sorry....
Great App! What about the ability to start it with x-button? The same as launcher would be great!
tito12 said:
now I'll have to figure how to make it work from the taskbar instead of Htc task manager
Click to expand...
Click to collapse
+1
I manage my run programs only by Showcase, it's terrible !
doesn't work on my omnia,just a blank screen Or is wqvga not supported yet?
hi
great app but the icons for the running programs is painted a little strangely on my device. I get 4 icons painted 2x2 for every program icon. I have an ipaq 210 and changed dpi with realvga, otherwise works great...
thanks.
//gunnar
rc2 fixed the graphic issue, great!
inCuRable said:
doesn't work on my omnia,just a blank screen Or is wqvga not supported yet?
Click to expand...
Click to collapse
yes wqvga not supported yet.
what resolution is wqvga? 240x480 or 320x480 ?... I will try to design it, I don't have wqvga emulator currently...
edit: Ok, I had wm6.5 emulator. WQVGA is 240x400, so I need to create one new image for skin with width 400, just wait a couple hours....
GunnarKarlsson said:
hi
great app but the icons for the running programs is painted a little strangely on my device. I get 4 icons painted 2x2 for every program icon. I have an ipaq 210 and changed dpi with realvga, otherwise works great...
thanks.
//gunnar
Click to expand...
Click to collapse
Yes that was the problem, the Icon size in GetSystemMetric will also changed if you change the dpi.. try to change it into 192dpi it should be ok...
EDIT: You can try RC2
one thing missing from most task managers is listing all running processes, can you please add this?
atzaus said:
one thing missing from most task managers is listing all running processes, can you please add this?
Click to expand...
Click to collapse
Sorry, I can't fulfill your request, because main goal of Showcase is not to become Full Features Task Manager. Showcase act as Task Switcher just Like HTC Task Manager.
It's not every time you need to check the process. Another Task Manager like FdcSoft Task Manager is more capable to do something like this. Just Install both Task Manager. Showcase for switching, FdcSoft for controlling.
What a nice Task manager!!
I just tried in my device but it doesn't work, surely for the 320x320 resolution.
Hope you'll release a skin also for square screen, soon or late.
Good work!!
Can you make open this program when you hold the x/ok button?
it will be more fast, on htc touch we dont have hardware button....
Ok RC2 Is Out... Support all resolution. WQVGA/WQVGA Landscape and QVGA Square.
- HAHAHAA 1 Day 3 releases....
About X Button I will try to code it now.. but it will on another process..
MarkRain said:
What a nice Task manager!!
I just tried in my device but it doesn't work, surely for the 320x320 resolution.
Hope you'll release a skin also for square screen, soon or late.
Good work!!
Click to expand...
Click to collapse
Try RC2 it now support your device...
Nice app, it is what I was looking for. Just simple finger friendly task switcher. Just maybe if you can add some exception list in the future (for example I don't want to see Active Sync on task list).
Anyway thank you for this app
Hi,
This is my first real Windows Mobile application.
Website:
Mwunderground on SourceForge
Description:
This is a weather application. It uses data from Weather Underground to show current weather conditions, forecast and weather alerts.
Features:
- Weather Underground data for Current Conditions, Forecast, Radar and Alerts
- Can use Personal Weather Station (PWS) as well as Airport station data
- Tower and GPS location
- Working version for VGA, WVGA, WQVGA, QVGA phones
- Sense Look and Feel for settings (thanks to SenseSDK)
- Free and Open-Source (developer contributions encouraged)
- S2U2 support with wildcards (see 2nd post)
License:
LGPL
Tested on:
HTC Raphael (Touch Pro, Fuze)
Screenshots:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
TODO/Known Issues:
- Show All Data (to show both metric and standard units)
- Language Support
- CHT weather support
- Multiple Locations
- Color customizations
- More optimizations (especially xml parsing)
- Port to Android and maybe Windows Phone 7
- Others (suggestions welcome)?
Changelog:
v0.4: Added radar for US Cities (landscape mode using internal browser), customizable in registry (see 2nd post). Moved Settings button on top next to newly added Exit button. Displaying 5 days of forecast instead of 6 with slightly bigger text. Improved QVGA/WVGA support (bigger buttons for WVGA, fixed missing text for QVGA/WQVGA). Many bug fixes (value checking in forecast, GPS thread termination, station re-searching, duplicate location station search). Removed Exit button from Settings as now there is a main Exit button on top right.
v0.3: More error checking (locations and stations). Better resource management on exit. Moved Tower and GPS finding to a timed thread (timer is customizable in registry, see 2nd post). Fixed small bug with showing high and lows of today's rather than tomorrow's forecast. S2U2 support with wildcards in registry (see 2nd post). Better support for browser link (when clicking on logo). Changed chance of rain to chance of precipitation (moved some things around). Enabled stations picking when using GPS.
v0.2.3: Better error handling (more messages, more checks). Faster connection checking. Some Bug fixes (alerts on startup, lows and humidity on non-metric).
v0.2.2: Better error messages. Connection checking. Some GPS fixes. Exit button added on Settings.
v0.2.1: Fixed a bug with startup registry keys
v0.2: Added support for QVGA and WVGA devices
v0.1: Initial release
[size=+1]Download (cab):[/size]
v0.4
v0.3
v0.2.3
v0.2.2
v0.2.1
v0.2
v0.1
Latest Build (cab):
Here. Click download on latest revision.
Credits:
Weather Underground, Inc. (permission to use data)
eboelzner (SenseSDK)
OpenNetCF (Smart Device Framework - Community Edition)
Acoustic (at CodeProject, author of DeepCast)
Any feedback/suggestions very much appreciated.
Reserved
Hints:
- To update the data, either click on the button that is highlighted (i.e. if you are viewing Current data, click on the Current button again to update, etc.), or go to Settings and click Save Settings.
- For using GPS Location, when you enable the option on the settings, it will first try to find your location based on tower information (i.e. you cell provider towers). This does not block the system. Mine takes about 2-3 seconds. If it finds your location, it will show something like: Approx. Location: 37.861111,23.759126. Regardless of finding an approx location, the app will continue on to find your GPS location, based on your GPS receiver. This could take a while but it also does not block the system. Mine (with latest quick gps data) takes another 2-3 seconds. If it finds a GPS location, it will show something like: GPS Location: 37.861123,23.759145. GPS location obviously overwrites Approx Location. You could wait or save settings and come back to settings again later to check if the GPS location is found, at which point you can do save settings again to update with your exact location weather data. By default the app takes 60 seconds to look for a tower location and a GPS position. You can change the timeout in the registry (see Customizations).
Customizations:
Most of the settings data are stored in the registry key (HKCU) HKEY_CURRENT_USER\Software\Mwunderground. You can use Total Commander or Registry Editor to modify these values. Only do so if you know what you are doing. If something is broken, just reinstall the cab (which uninstalls first and clears the registry).
Radar Customization
To modify the Radar, you can edit the registry key HKEY_CURRENT_USER\Software\Mwunderground\RadarURL. The current value is:
Code:
http://radblast-mi.wunderground.com/cgi-bin/radar/WUNIDS_map?station=*RADARID*&brand=manmade&num=6&delay=50&type=N0R&frame=0&scale=1.000&noclutter=0&t=1297546449&lat=*LAT*&lon=*LON*&label=you&showstorms=10&map.x=400&map.y=240¢erx=400¢ery=240&transx=0&transy=0&showlabels=1&severe=1&rainsnow=0&lightning=0&smooth=1
The *RADARID* will be replaced in the application by the proper RadarId based on your location, *LAT* and *LON*, Latitude and Longitude, which are replaced by the station's Latitude and Longitude location. You can modify the remainder of the values. For example, to change the speed of the animation, modify delay=50, to delay=75 (will slow it down by 25%), or to not show labels, set showlabels=1 to showlabels=0.
Tower and GPS connection timeout
To modify the Tower and GPS connection timeout, you can edit the registry key HKEY_CURRENT_USER\Software\Mwunderground\GPSTimer to the number of seconds you'd like. Default is 60.
SU2U Wildcards
To modify the S2U2 format, you can edit the registry key HKEY_CURRENT_USER\Software\Mwunderground\S2U2Format.
Code:
Possible S2U2 formats:
ICONS=S, P, W, C
If icon is S, P, W, format is for example: S|*NUMBER*|High|Low
If icon is C, format is: C|*NUMBER*|MESSAGE
*NUMBER* will be replaced by the appropriate icon number based on the ORIGINAL S2U2 icon numbers
Weather Underground icon to S2U2 icon matching:
clear=32(Day)/31(Night), cloudy=26/27, flurries=13, fog=20, hazy=21, mostlycloudy=28/27,
mostlysunny=30/29, partlycloudy=30/29, partlysunny=28/27, rain=12/45, sleet=7,
snow=16/46, sunny=32/31, tstorms=3/47, unknown=0
MESSAGE= can be anything and you can use the following wildcards
*TEMP_C* is replaced by the current temperature in C
*TEMP_F* is replaced by the current temperature in F
*TEMP* is replaced by the current temperature based on your selection in settings (will append °C or °F)
*HIGH_C* is replaced by High temperature in C
*LOW_C* is replaced by Low temperature in C
*HIGH* is replaced by High temperature with units based on your selection in settings (will append °C or °F)
*LOW* is replaced by Low temperature with units based on your selection in settings(will append °C or °F)
*DAY_0_HIGH_C* is replaced by High temperature in C for day 0 (today) of forecast (same as *HIGH_C*)
*DAY_0_LOW_C* is replaced by Low temperature in C for day 0 (today) of forecast (same as *LOW_C*)
*DAY_1_HIGH_C* is replaced by High temperature in C for day 1 (tomorrow) of forecast
...
*DAY_5_LOW_C* is replaced by Low temperature in C for day 5 of forecast
*DAY_0_HIGH* is replaced by High temperature with units based on your selection in settings for day 0 (today) of forecast (same as *HIGH*) (will append °C or °F)
*DAY_0_LOW* is replaced by Low temperature with units based on your selection in settings for day 0 (today) of forecast (same as *LOW*) (will append °C or °F)
*HIGH_F* ...
*LOW_F* ...
*DAY_0_HIGH_F* is replaced by High temperature in F for day 0 (today) of forecast (same as *HIGH_F*)
*DAY_0_LOW_F* is replaced by Low temperature in F for day 0 (today) of forecast (same as *LOW_F*)
...
*DAY_5_LOW_F* is replaced by Low temperature in F for day 5 of forecast
*DAY_5_LOW* is replaced by Low temperature with units based on your selection in settings for day 5 of forecast (will append °C or °F)
*WEATHER* is replaced by the weather message (i.e. Clear, Heavy Thunderstorms and Snow, etc.)
*WEATHER_ICON* is replaced by the text for the weather icon (i.e. clear, mostlycloudy, etc.)
EXAMPLES=
C|*NUMBER*|*HIGH*/*LOW*
will display the icon with 12°C/6°C underneath (default)
C|*NUMBER*|*HIGH_C*°C/*LOW_C*°C
will display the icon with 12°C/6°C underneath
C|*NUMBER*|H:*HIGH_F*°F/L:*LOW_F*°F
will display the icon with H:65°F / L:45°F underneath
C|*NUMBER*|*WEATHER* (*HIGH_F*°F/*LOW_F*°F)
will display the icon with Clear (65°F/45°F) underneath
C|*NUMBER*|*DAY_0_HIGH_C*°C/*DAY_0_LOW_C*°C - *DAY_1_HIGH_C*°C/*DAY_1_LOW_C*°C - *DAY_2_HIGH_C*°C/*DAY_2_LOW_C*°C
will display the icon with 65°F/45°F - 75°F/55°F - 85°F/65°F underneath
Go crazy!
No QVGA support?
glaucos said:
No QVGA support?
Click to expand...
Click to collapse
Once I get in the mode of changing things for WVGA, it'll probably not be too hard to make a QVGA one as well.
very nice interface... will give it a shot
i_konst said:
Once I get in the mode of changing things for WVGA, it'll probably not be too hard to make a QVGA one as well.
Click to expand...
Click to collapse
QVGA support added.
Just grab the v0.2 cab.
doesnt work on my fuze
tried both cab files
after install i soft reset and try to run program but it crashes
before it even starts
Kameirus said:
doesnt work on my fuze
tried both cab files
after install i soft reset and try to run program but it crashes
before it even starts
Click to expand...
Click to collapse
Strange. Does it give you any errors? Data plan/wifi working? .NET framework 3.5 installed? I'll do more investigating tomorrow based on your ROM.
Wow, I love munder weather...thanks bro, will give this a whirl...
Won't work on my Topaz (WVGA). Not sure if its the screen size not being supported or something else. .Net 3.5 is installed and i tried both CABs and same result.
A screenshot of the message I'm getting. thanks for the effort tho- I look foward to this program!
It looks really interersting application!
I would love to have it in other languages too (e.g. Greek )
Kameirus said:
doesnt work on my fuze
tried both cab files
after install i soft reset and try to run program but it crashes
before it even starts
Click to expand...
Click to collapse
Bug fixed. Should work fine now. Sorry for the mishap.
ottoman96 said:
Won't work on my Topaz (WVGA). Not sure if its the screen size not being supported or something else. .Net 3.5 is installed and i tried both CABs and same result.
View attachment 496711
A screenshot of the message I'm getting. thanks for the effort tho- I look foward to this program!
Click to expand...
Click to collapse
Thanks for the image and everything.
Bug fixed. Should work fine now. Sorry for the mishap.
Get latest version of course.
i_konst said:
Bug fixed. Should work fine now. Sorry for the mishap.
Click to expand...
Click to collapse
that did it works great
thanks
a couple suggestions
1. have a close button ...as now i have to close it thru task manager
2. have the option to manuel update and auto update and maybe an update button
i_konst said:
Once I get in the mode of changing things for WVGA, it'll probably not be too hard to make a QVGA one as well.
Click to expand...
Click to collapse
i_konst said:
QVGA support added.
Just grab the v0.2 cab.
Click to expand...
Click to collapse
Thanx, I'll test it in the next days
hi you all. first, big thanks for this software. it's amazing, I was hesitating to buy this of ageye, but as I've found yours...
just to say that it's working very very good on my i900, winmo 6.1 swiss-french rom, installed on besides memory (Ma mémoire), screen res 240x400.
Only the texts are pretty small in forecast, but... PERFECT !
a simple big Thanks !!
works fine on my fuze
Kameirus said:
a couple suggestions
1. have a close button ...as now i have to close it thru task manager
2. have the option to manuel update and auto update and maybe an update button
Click to expand...
Click to collapse
Thanks a lot for the suggestions!
1. Added on version 0.2.2. Thanks for the suggestion.
2. For manual update, check the 2nd post. I posted a hint. For automatic updates, this is a much bigger task because querying for xml data in windows mobile is quite slow. When I work on optimizing the xml parsing code (3rd iteration!) I'll look at how feasible this is. But it's a big task.
Got this error when changing the settings:
Mwunderground.exe
NullReferenceException
bij Mwunderground.MainForm.FillForecastData(ForecastData forecastData, CurrentData currentData, SettingsData settingsData)
bij Mwunderground.MainForm.RetrieveAndFillData()
bij Mwunderground.MainForm.itmSave_OnClick(Object Sender)
bij StedySoft.SenseSDK.SensePanelButtonItem._notifyClick()
bij StedySoft.SenseSDK.SensePanelButtonItem.OnMouseUp(Int32 x, Int32 y)
bij StedySoft.SenseSDK.SenseListControl.OnMouseUp(MouseEventArgs e)
bij System.Windows.Forms.Control.WnProc(WM wm, Int32 wParam, Int32 lParam)
bij System.Windows.Forms.Control._InternalWnProc(WM wm, Int32 wParam, Int32 lParam)
bij Microsoft.AGL.Forms.EVL.EnterMainLoop(IntPtr hwnMain)
bij System.Windows.Forms.Application.Run(Form fm)
bij Mwunderground.Program.Main()
This error occured after I changed the current location. Now I can not restart the app. I get the same error message every time I restart the app. I can not even get into the start screen.
How can I fix this, besides a reinstall of the cab file?
Another idea I would like to see is support for the CHT 2.0 weather widget.
Can also weather stations from other countries be used. I keep getting a list from Greece.
Post-edit:
I think I have found the issue. I keep getting an error message when changing the weather location based on search option for cell towers/gps option. Somehow this function is causing the app to work incorrectly, perhaps due to interference with the option of a manual search of the location search. The error occurs only after I save the settings. Can you see if this can be fixed?
I would like to develop and app, which has the main functionality to show a 2D chart. There are others and settings, but this is the main.
Existing similar applications aren't using technologies as how it should and they are releasing apps with to few features or they are draining battery like crazy. This I would like to improve it.
This is for web / desktop
View attachment 2397770
Here are a few sentences from my experience, please correct me if I am wrong!
Many-many of implementations are using SDK and 2D graphics. They draw the whole screen every time. Just sere how your battery drained in 1-2 hours! - some really bad implementation they can drain in 3 minutes, I will show later. One exception is: Metatrader 4: it use NDK and OpenGL, Hey pay me, because I am advertising you!
I think the SDK code (.class files) it need to e compiled at runtime execution by virtual machine, which takes CPU usage.
NDK is compiled only one => will use less CPU => will drain less batter as the SDK version.
If this is correct, than it should move more code to NDK if is possible. Not sure about JNI calls overhead!
NDK huuuuge advantage: it will allow to use the phone max available memory ( 1.5GB was last time) instead of SDK max allowed value: 256MB ( in my case, but some devices allow only 24Mb for SDK apps)
If you don't touch this chart than nothing changes, if you set the "Live" option, than the last "candle" will change. The candles are those Red & Green rectangles with the line in upper side and down side with meaning of the open, high, low, close prices. - it is related to business logic, but this special bars can have those 2 lines, which are important. The border of the 1pixel black around the red-green rectangles are for visual effects only. To save battery can be omitted.
(The background text and logos are just for advertisements, nobody cares, not really needed for the user for his actions)
As you can see there is a toolbar, and there are maybe other components too, but when the user want to see highest amount of data than will rotate to landscape and there should be given a Full Screen (in portrait not by default)
I have started the development with a component for rendering with OpenGL ES 2.0.
The UI is in SDK , the renderer there is called, but the method implementation calls the native methods via JNI. The business logic, rendering implementation are all in NDK, which is a native shared library.
Not sure why I started with OpenGL, to have some cool effects, who want to drain his battery faster? or I tough if is faster than will consume less battery? - maybe faster drains, but more: 100 mA from GPU for 0.01 seconds rendering is the same as 10 mA for 0.1 rendering at CPU.
Here I am not sure if I am saving energy. Tell me your opinion!
So I have started learning OpenGL ES 2.0 and all what I saw in tutorials it was triangle triangle triangle, but in this chart there is no triangle, but rectangle, or rectangle+lines or just lines with set width or many triangles?
Here is a cool candle, I would like to see this, but I know the gradients will burn battery.
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Here is a bit magnified and you can see how I am thinking:
but can't decide. Because I haven't enough experience, don't know the benchmark results. I would like to see a tear down and expected results:
GL_Lines + glLineWidth
GL_triangles
GL_triangle_strip
As the first option with GL_lines:
A candle would be 1x small line from the Low and High price drawn first. Lets say with 5 pixel width to have room for gradient too, if needed. In worse case only 1 pixel, as how they are using others now.
The candle body: the red/green rectangle with has the info of Open/Close price can be another GL_Lines with 50 pixel width - for example.
Will be gradient or not that would depends on user settings. Not sure how is possible to draw black 1-2 pixel of border for candle body in this case - if the user has that settings.
Seconds option with triangles:
2x triangle can make a square.
There is a square as the small line and there is another one the larger square : the candle body.
The triangle strip case:
if only one GL_triangle_strip:
bottomline: 4 vertices
body other 4
upper line 4 vertices
or small line 4x vertices
+
other 4x vertices , so 2x GL_triangle_strip
I made this:
The first thing it was:
Code:
setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY)
It is a rectangle with 2x triangle and a line with width.
The line has less vertices of course, but in this chart is expected to have 50- 200 bars maximum. Minimum 10-20.
What is needed is that cross at mouse location: that dashed line and the numbers ( price ) on the right and some other texts in bottom. X, Y coordinates in text.
Please post your experience, benchmarks, opinion.
Hi matheszabi,
ok, your question was rather compheresive . So right way to find solution is rather complicated too.
I woudn't choose solution according to differences between JDK / NDK to same function calls of OpenGL ES 2.0
According to my experience, performance (and power consumption) is almost the same.
GLOBAL aproach: I suggest
1) you create your application in Java - use JDK versions - creating native function for just few draw calls is, imho, hard compared what you get
2) if your application is NativeActivity
- use direct calls - be prepared for differences between devices, proper creation of surface, .... but it's faster
- subclass Native Activity and use JAVA as well
3) not using OpenGL ES directly at all - i suggest trying layout and buttons / images inside of it, i saw 200 control buttons on 1 screen and it ran perfectly. And layout is movable by 1 command - offset. I suppose, this is completely written in native code anyway. You just get drawing interface in JAVA.
Now, to OPENGL ES itself (JAVA or NDK)
cons:
- OPENGL is 3D interface so pixel perfect drawing is something which is not supported by itself. (note: opengl has pixel / texel center at 0.5 not at 0.0/1.0)
- you need pixel perfect draw - boxes you draw must be perfectly aligned to screen pixels - othewise you get blurry results
- you might not need texturing - thats PLUS, otherwise drawing pixel perfect opengl suraces is "pain in the ..." - viz. texel interpolation and drawing a pixel checker aligned with screen pixels is real nightmare and it differs on each device (I tried )
- pixel perfect with mipmaps - awful again
- alpha blending (when you have something which is transparent) - you will need sorting to draw it properly
- will you need font ? oh my ...
- NO EMULATOR - will need to test each device if it's working properly (not every, at least each vendor)
to consider:
writing vertex/fragment shader in a world with 3500 (number of opengles 2.0 devices according google) suitable devices/compilers/android versions ... ehm
pluses:
- you draw exactly what you want
- use of fragment shader (alhough i suggest using gradient textures instead)
- i suggest draw primitives in vertex buffers (indexed triangles or triangle strips). Not one box by one - compose all in one array and draw it by one draw call. Doubling points in strips can help you
- instancing is not supported) but there is way surpassing this (preparing buffers with)
- i don't recommend using lines with width definition - each implementation draws this differently - and it's equal to drawing lit cylinder
- in native activity loop - handling if you need redraw - it's difficult
I would try normal android GUI first
pluses:
- you get pixel perfect draw, with / without bitmaps, images, gradients ....
- i suppose its fast enough
- no sorting needed
- redraws will be invoked when something changes
- translation / clipping will be handled internally
- no need to care about device !!! that's big plus
cons:
- zoom will be problematic
- rotations as well (but i suppose you don't need them)
note to power consupmption - both OpenGL :
just swaping screen buffers 30 per sec will deplete most of devices within 2-3 hours. But of course, doing it so only when needed is doable
But I might be wrong so best way is to decide by yourself and, of course, try it and see.
If you have qustions about drawing through ES, i'll post some samples of pixel perfect draw (from my gui)
Good luck, post your decision, and if you have some results, post them too! will be very interesting.
PS.
Petr Sovis said:
Hi matheszabi,
ok, your question was rather compheresive . So right way to find solution is rather complicated too.
I woudn't choose solution according to differences between JDK / NDK to same function calls of OpenGL ES 2.0
According to my experience, performance (and power consumption) is almost the same.
GLOBAL aproach: I suggest
1) you create your application in Java - use JDK versions - creating native function for just few draw calls is, imho, hard compared what you get
2) if your application is NativeActivity
- use direct calls - be prepared for differences between devices, proper creation of surface, .... but it's faster
- subclass Native Activity and use JAVA as well
3) not using OpenGL ES directly at all - i suggest trying layout and buttons / images inside of it, i saw 200 control buttons on 1 screen and it ran perfectly. And layout is movable by 1 command - offset. I suppose, this is completely written in native code anyway. You just get drawing interface in JAVA.
Now, to OPENGL ES itself (JAVA or NDK)
cons:
- OPENGL is 3D interface so pixel perfect drawing is something which is not supported by itself. (note: opengl has pixel / texel center at 0.5 not at 0.0/1.0)
- you need pixel perfect draw - boxes you draw must be perfectly aligned to screen pixels - othewise you get blurry results
- you might not need texturing - thats PLUS, otherwise drawing pixel perfect opengl suraces is "pain in the ..." - viz. texel interpolation and drawing a pixel checker aligned with screen pixels is real nightmare and it differs on each device (I tried )
- pixel perfect with mipmaps - awful again
- alpha blending (when you have something which is transparent) - you will need sorting to draw it properly
- will you need font ? oh my ...
- NO EMULATOR - will need to test each device if it's working properly (not every, at least each vendor)
to consider:
writing vertex/fragment shader in a world with 3500 (number of opengles 2.0 devices according google) suitable devices/compilers/android versions ... ehm
pluses:
- you draw exactly what you want
- use of fragment shader (alhough i suggest using gradient textures instead)
- i suggest draw primitives in vertex buffers (indexed triangles or triangle strips). Not one box by one - compose all in one array and draw it by one draw call. Doubling points in strips can help you
- instancing is not supported) but there is way surpassing this (preparing buffers with)
- i don't recommend using lines with width definition - each implementation draws this differently - and it's equal to drawing lit cylinder
- in native activity loop - handling if you need redraw - it's difficult
I would try normal android GUI first
pluses:
- you get pixel perfect draw, with / without bitmaps, images, gradients ....
- i suppose its fast enough
- no sorting needed
- redraws will be invoked when something changes
- translation / clipping will be handled internally
- no need to care about device !!! that's big plus
cons:
- zoom will be problematic
- rotations as well (but i suppose you don't need them)
note to power consupmption - both OpenGL :
just swaping screen buffers 30 per sec will deplete most of devices within 2-3 hours. But of course, doing it so only when needed is doable
But I might be wrong so best way is to decide by yourself and, of course, try it and see.
If you have qustions about drawing through ES, i'll post some samples of pixel perfect draw (from my gui)
Good luck, post your decision, and if you have some results, post them too! will be very interesting.
PS.
Click to expand...
Click to collapse
Hello thanks for sharing your idea experience.
I have asked in other forum a similar question.
It was a response than the GPU has optimised methods so it will have less power consumption
Also he likes to draw the whole frame not only a part - I'm case of my optimisation
Also I have asked an opengl expert and he told me to use the ortho instead of perspective projection. He has right.
Now I don't have bliry results anymore but is pixel perfect!
For benchmark I made 100 candles : 100 line + 200 triangles.
I have calculated how much is the wigth and the height for the surface => how much space can have a candle and used the matrix transformations and render it.
A nice surprise the fist time it took 18 milliseconds but after that only took 5-6 millisec the. Sdk->ndk->opengl-> SDK steps.
That is very good result on MY trash device. But I think it has a trick: the ndk gives order to render to GPU and it will return. So in those 5-6 milliseconds will start to work the GPU for who knows how much....
Note: audio , video , sensor intensive projects should be developed on real devices not at emulators.
With my method the problem is starting with text drawing and leak of knowledge.
Vbo or texture... Not sure which one but if a native 2D can do it than I can me too.
Cairo as rendering 2d engine is a bit big to include in android.
I still think the ndk is the correct place. Also is isn't so easy to watch the engine code as a decompiled SDK code
Ok! you chose your path - good for you!
18/5-6 ms is just for draw (200 triangles+100 lines) ?, or whole frame time ? Can you tell me the the device you are testing your app on ?
Note: Ortho, i didn't mean to advice perspective transform, ortho is still 3d, and pixel perfect - wait for texturing/text drawing, but you'll manage!
Just few tips to font rendering:
bitmap fonts: I can't add links so google: angelcode bmfont
font bitmap creator: google: angelcode bmfont
+ sample: google: nehe 2d_texture_font
freetype implementation - it's possible to compile it with ndk - i use it and it's simple
google: freetype
and code for starters: google: nehe freetype_fonts_in_opengl
Cheers
P.
Petr Sovis said:
Ok! you chose your path - good for you!
18/5-6 ms is just for draw (200 triangles+100 lines) ?, or whole frame time ? Can you tell me the the device you are testing your app on ?
Note: Ortho, i didn't mean to advice perspective transform, ortho is still 3d, and pixel perfect - wait for texturing/text drawing, but you'll manage!
Just few tips to font rendering:
bitmap fonts: I can't add links so google: angelcode bmfont
font bitmap creator: google: angelcode bmfont
+ sample: google: nehe 2d_texture_font
freetype implementation - it's possible to compile it with ndk - i use it and it's simple
google: freetype
and code for starters: google: nehe freetype_fonts_in_opengl
Cheers
P.
Click to expand...
Click to collapse
My phone is a THL W8S. has FHD resolution
It had a mixed layout, but better I show you:
I have misscalculated the lines positions but for now doesn't matter.
The GLSurface takes a considerable amount of the screen space and that is counted.
On a Samsung Note 10" - at least 1 year old device, lower resolution, but better CPU + GPU it is a lot less this numbers.
My device is a trash (by far not for gamming), I told you:
Hi,
ok, as I understand, the time is just for drawing 200 tris + 100 lines - ok that seems a "little to much" for that.
Besides, your device is not trash at all
I don't know if I can share my examples - but scene from app I released week ago draws 50KTris per frame with some heavy shaders (normal mapping + specular ligting from 2 light sources) and draws text over it + particles + GUI (my ndk gles2.0 engine) and I suppose it will run over 30 FPS on your device (its PoverVR 540 or something) (google play: "Asteroid Hunters" by me)
So, can you post fragment of your drawing code ? maybe there something not really right ?
P
Petr Sovis said:
So, can you post fragment of your drawing code ? maybe there something not really right ?
P
Click to expand...
Click to collapse
I will post, but for me this is good enough others are drawing in 200-2000 milliseconds
The SDK part:
Code:
@Override
public void onDrawFrame(GL10 gl) {
long start = System.currentTimeMillis();
LibJNIWrapper.rendererOnDrawFrame();
long end = System.currentTimeMillis();
//Log.e("Renderer", "onDrawFrame() took: "+ (end-start)+" millisec (1e-6)");
}
The related NDK part:
Code:
void renderer_on_draw_frame() //4
{
LOGE("renderer_on_draw_frame");
//copy
static float grey;
grey += 0.01f;
if (grey > 1.0f) {
grey = 0.0f;
}
glClearColor(grey, grey, grey, 1.0f);
checkGlError("glClearColor");
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
checkGlError("glClear");
int i;
for (i = 0; i < CANDLES_COUNT; i++) {
//LOGE("chartengine rendering i= %d",i);
renderLine((candles[i].coloredSingleLine));
renderRectangle((candles[i].coloredSingleRectangle));
}
glFlush();
}
line rendering:
Code:
void renderLine(ColoredSingleLine* pColoredSingleLine) {
if (pColoredSingleLine == NULL) {
return;
}
//matrixTranslateM(mvpMatrix, rndX, rndY, 0);
//LOGE("###renderLine pColoredSingleLine %p\n",pColoredSingleLine);
glUseProgram(pColoredSingleLine->programColoredLine.program);
checkGlError("Line: glUseProgram");
// Enable a handle to the triangle vertices
glEnableVertexAttribArray(pColoredSingleLine->programColoredLine.a_position_location);
checkGlError("Line: glEnableVertexAttribArray");
// Prepare the triangle coordinate data
glVertexAttribPointer(pColoredSingleLine->programColoredLine.a_position_location, pColoredSingleLine->lineData.COORDS_PER_VERTEX_LINE, GL_FLOAT, GL_FALSE,
pColoredSingleLine->lineData.vertexStride, pColoredSingleLine->lineData.vertices);
checkGlError("Line: glVertexAttribPointer");
// Set color for drawing the triangles
glUniform4fv(pColoredSingleLine->programColoredLine.u_color_location, 1, pColoredSingleLine->lineData.color_rgba);
checkGlError("Line: glUniform4fv");
// Apply the projection and view transformation
glUniformMatrix4fv(pColoredSingleLine->programColoredLine.u_mvp_matrix_location, 1, GL_FALSE, pColoredSingleLine->lineData.mvpMatrix);
checkGlError("Line: glUniformMatrix4fv");
glLineWidth(pColoredSingleLine->lineData.lineWidth);
// Draw the line
glDrawArrays(GL_LINES, 0, pColoredSingleLine->lineData.vertexCount); // (GLenum mode, GLint first, GLsizei count);
checkGlError("Line: glDrawArrays"); // GL_INVALID_ENUM
//GL_INVALID_ENUM is generated if mode is not an accepted value.
//GL_INVALID_ENUM is generated if type is not GL_UNSIGNED_BYTE or GL_UNSIGNED_SHORT.
GLint error = glGetError();
if (error == GL_OUT_OF_MEMORY) {
LOGE("Out of Video memory error...congrats...is your device a stone ?");
}
// Disable vertex array
glDisableVertexAttribArray(pColoredSingleLine->programColoredLine.a_position_location);
}
and the rectangle:
Code:
void renderRectangle(ColoredSingleRectangle* pColoredSingleRectangle) {
if (pColoredSingleRectangle == NULL) {
return;
}
//matrixTranslateM(mvpMatrix, rndX, rndY, 0);
glUseProgram(pColoredSingleRectangle->programColoredRectangle.program);
checkGlError("Rectangle: glUseProgram");
// Enable a handle to the triangle vertices
glEnableVertexAttribArray(pColoredSingleRectangle->programColoredRectangle.a_position_location);
checkGlError("Rectangle: glEnableVertexAttribArray");
// Prepare the triangle coordinate data
glVertexAttribPointer(pColoredSingleRectangle->programColoredRectangle.a_position_location, pColoredSingleRectangle->rectangleData.COORDS_PER_VERTEX_RECTANGLE, GL_FLOAT, GL_FALSE,
pColoredSingleRectangle->rectangleData.vertexStride, pColoredSingleRectangle->rectangleData.vertices);
checkGlError("Rectangle: glVertexAttribPointer");
// Set color for drawing the triangles
glUniform4fv(pColoredSingleRectangle->programColoredRectangle.u_color_location, 1, pColoredSingleRectangle->rectangleData.color_rgba);
checkGlError("Rectangle: glUniform4fv");
// Apply the projection and view transformation
glUniformMatrix4fv(pColoredSingleRectangle->programColoredRectangle.u_mvp_matrix_location, 1, GL_FALSE, pColoredSingleRectangle->rectangleData.mvpMatrix);
checkGlError("Rectangle: glUniformMatrix4fv");
// Draw the square
glDrawElements(GL_TRIANGLES, NELEMS(pColoredSingleRectangle->rectangleData.drawOrder), GL_UNSIGNED_SHORT, pColoredSingleRectangle->rectangleData.drawOrder); // GL_INVALID_ENUM on Galaxy note
checkGlError("Rectangle: glDrawElements"); // GL_INVALID_ENUM
//GL_INVALID_ENUM is generated if mode is not an accepted value.
//GL_INVALID_ENUM is generated if type is not GL_UNSIGNED_BYTE or GL_UNSIGNED_SHORT.
GLint error = glGetError();
if (error == GL_OUT_OF_MEMORY) {
LOGE("Out of Video memory error...congrats...is your device a stone ?");
}
// Disable vertex array
glDisableVertexAttribArray(pColoredSingleRectangle->programColoredRectangle.a_position_location);
}
At any benchmarks my fps is bellow 12, while other devices has 30 or 50 fps. Believe me not my device has the best CPU + GPU by far:
some output from on old code:
Code:
printGLString("Version", GL_VERSION);
printGLString("Vendor", GL_VENDOR);
printGLString("Renderer", GL_RENDERER);
printGLString("Extensions", GL_EXTENSIONS);
....
void printGLString(const char *name, GLenum s) {
const char *v = (const char *) glGetString(s);
LOGE("GL %s = %s\n", name, v);
}
// ### GT-N8000 ### Galaxy note 10" - GL Renderer = Mali-400 MP
// GL_EXT_debug_marker
// GL_OES_texture_npot
// GL_OES_compressed_ETC1_RGB8_texture
// GL_OES_standard_derivatives
// GL_OES_EGL_image
// GL_OES_depth24
// GL_ARM_rgba8
// GL_ARM_mali_shader_binary
// GL_OES_depth_texture
// GL_OES_packed_depth_stencil
// GL_EXT_texture_format_BGRA8888
// GL_EXT_blend_minmax
// GL_OES_EGL_image_external
// GL_OES_EGL_sync
// GL_OES_rgb8_rgba8
// GL_EXT_multisampled_render_to_texture
// GL_EXT_discard_framebuffer
// ### THL V8S - GL Renderer = PowerVR SGX 544MP
// GL_EXT_debug_marker
// GL_OES_rgb8_rgba8
// GL_OES_depth24
// GL_OES_vertex_half_float
// GL_OES_texture_float
// GL_OES_texture_half_float
// GL_OES_element_index_uint
// GL_OES_mapbuffer
// GL_OES_fragment_precision_high
// GL_OES_compressed_ETC1_RGB8_texture
// GL_OES_EGL_image
// GL_OES_EGL_image_external
// GL_OES_required_internalformat
// GL_OES_depth_texture
// GL_OES_get_program_binary
// GL_OES_packed_depth_stencil
// GL_OES_standard_derivatives
// GL_OES_vertex_array_object
// GL_OES_egl_sync
// GL_OES_texture_npot
// GL_EXT_multi_draw_arrays
// GL_EXT_texture_format_BGRA8888
// GL_EXT_discard_framebuffer
// GL_EXT_shader_texture_lod
// GL_IMG_shader_binary
// GL_IMG_texture_compression_pvrtc
// GL_IMG_texture_compression_pvrtc2
// GL_IMG_texture_npot
// GL_IMG_texture_format_BGRA8888
// GL_IMG_read_format
// GL_IMG_program_binary
// GL_IMG_uniform_buffer_object
// GL_IMG_multisampled_render_to_texture
materials
OK!
i know why it's so slow, you practically draw something 300x per frame and it doesn't really matter if it has 2 trinagles or 300 per one call.
300x setup shader per frame is almost a limit for slower(not slow) devices.
Main issues:
1) do not ever call glGetError when not debugging/running debug build - it makes pipeline stall (pipeline stops and waits until all commands are executed)
2) since you have 100 lines - and using for all of them same program, why not to group them in one array ?
2 solutions
-----------------
A)
= you are not using vertex buffers - so
1) create temporary memory and pre-transform all lines/triangles into one array - will be much faster
2) setup shader once + set uniforms
3) setup attributes - start of temporary array you created (every call - believe me, it will be faster, good practice is create array on stack, but beware of overflow - but for 300 lines is practically impossible)
3) call one draw call for all lines/triangles at once
B) even faster solution (fake instancing) - this is really fast
= create vertex buffer with data (and now create this as real VBO !)
- and not with only 1 instance of line, but with reasonable count - for instance 300 (fake instancing) - 300x line data repeated,
- in tex.x,y (for instance) - set index 0.299 -> x = (float(index % 256) / 256.0f ) y = ( (index & (~255)) / 256.0 ) - using lowp vec2 inTex; attribute
= in shader:
- create uniform array with coordinates for instance uniform mediump vec3 positions[300];
- in vertex part - something like this
gl_Position.xyz = inPosition.xyz + positions[(int) ((inTex.x * 256.0) + (inTex.y * 65536.0)) ];
1) use shader
2) fill array with positions and set it to uniform
3) set attributes
4) draw - and according to situation change count of elements drawn
if you need draw more than 300 lines, enlarge array OR just do more calls this time this is getting efficient
But i suppose 1st solution will be more than enough.
Cheers.
P.
Petr Sovis said:
OK!
i know why it's so slow, you practically draw something 300x per frame and it doesn't really matter if it has 2 trinagles or 300 per one call.
300x setup shader per frame is almost a limit for slower(not slow) devices.
Main issues:
1) do not ever call glGetError when not debugging/running debug build - it makes pipeline stall (pipeline stops and waits until all commands are executed)
2) since you have 100 lines - and using for all of them same program, why not to group them in one array ?
2 solutions
-----------------
A)
= you are not using vertex buffers - so
1) create temporary memory and pre-transform all lines/triangles into one array - will be much faster
2) setup shader once + set uniforms
3) setup attributes - start of temporary array you created (every call - believe me, it will be faster, good practice is create array on stack, but beware of overflow - but for 300 lines is practically impossible)
3) call one draw call for all lines/triangles at once
B) even faster solution (fake instancing) - this is really fast
= create vertex buffer with data (and now create this as real VBO !)
- and not with only 1 instance of line, but with reasonable count - for instance 300 (fake instancing) - 300x line data repeated,
- in tex.x,y (for instance) - set index 0.299 -> x = (float(index % 256) / 256.0f ) y = ( (index & (~255)) / 256.0 ) - using lowp vec2 inTex; attribute
= in shader:
- create uniform array with coordinates for instance uniform mediump vec3 positions[300];
- in vertex part - something like this
gl_Position.xyz = inPosition.xyz + positions[(int) ((inTex.x * 256.0) + (inTex.y * 65536.0)) ];
1) use shader
2) fill array with positions and set it to uniform
3) set attributes
4) draw - and according to situation change count of elements drawn
if you need draw more than 300 lines, enlarge array OR just do more calls this time this is getting efficient
But i suppose 1st solution will be more than enough.
Cheers.
P.
Click to expand...
Click to collapse
Thanks
When I wrote I saw the glerror maybe it will slow down a bit.
Since I am coming from an object oriented development environment it was designed on that way...
The candle: line + triangle can have other data too. Maybe need to keep elsewhere the data...
The last candle line and rectangle and his color can change almost at each draw method: just 1 of the 4 params will nort change.
When the last candle is closed a new one need to be staeted
In this case needs to. Shift to left all other candles. Maybe for this I am keeping in separate methods.
I thought the shader setup is done in other part at least there I am getting the pointer to they. On surface changed/ created - I am not at PC now.
Text with price + time scale should be with a texture to a rectangle?
I will reply inline:
matheszabi said:
Thanks
When I wrote I saw the glerror maybe it will slow down a bit.
Since I am coming from an object oriented development environment it was designed on that way...
Click to expand...
Click to collapse
Object development has nothing to do with this , glGetError is NOT a function to retrieve error status from GL functions, its for debugging purposes only. Its commonly used as: (simple form)
#ifdef _DEBUG
#define CHECKGL(x) x; assert(glGetError() == GL_NO_ERROR)
#else
#define CHECKGL(x) x
#endif
CHECKGL( glUniform4f(.... .) );
or still very fast
#define CHECKGL(x) x; if (globalDebugGL) { assert(glGetError() == GL_NO_ERROR); }
matheszabi said:
Thanks
The candle: line + triangle can have other data too. Maybe need to keep elsewhere the data...
The last candle line and rectangle and his color can change almost at each draw method: just 1 of the 4 params will nort change.
When the last candle is closed a new one need to be staeted
In this case needs to. Shift to left all other candles. Maybe for this I am keeping in separate methods.
Click to expand...
Click to collapse
Again - preparing something to vertex buffer is 100x faster than calling gluseProgram, gluniform and then draw call.
Different values per "candle": you can change (per candle) color, position, tex coords, and another values - to max 16 vec4 attributes per vertex in vertex buffer.
just for your imagination what does exactly glUniform: it recompiles and rebuilds shader with new values. It's not fast at all. So drawing 2 triangles with new shader setup (different uniform values) is not very smart. You have only 800-1000 such operations per frame tops. New card can handle much more. Look for term "draw call batching" to learn more. Unity's main feature.
Just imagine, even chip in your phone can easily draw 20 textured MTris per sec and you draw just few thousands and it's sweating.
Very nice article about GLES 2.0 from apple - google for "OpenGL ES Design Guidelines" most of it is true on android as well
matheszabi said:
Thanks
I thought the shader setup is done in other part at least there I am getting the pointer to they. On surface changed/ created - I am not at PC now.
Text with price + time scale should be with a texture to a rectangle?
Click to expand...
Click to collapse
That differs according to your situation.
- Is price/time always same ? (texture)
- it's changing per frame, (prerender texture)
- it's changing per "candle" ? - I posted articles about text in gl apps in the last post.
I thing you can choose your way !
Cheers
P.
Thanks for answer.
Petr Sovis said:
That differs according to your situation.
- Is price/time always same ? (texture)
- it's changing per frame, (prerender texture)
- it's changing per "candle" ? - I posted articles about text in gl apps in the last post.
Click to expand...
Click to collapse
Price/time is the same until: the user press a button, than will change the time ( From To values) and collecting data will result a min price and a max price. So the price probably will change at that button event, but not all the time.
Also the last candle price value is "moving" at least the close value, but an move the min or max value too, which can be the min or the max of the whole chart, on those rare situations need to change the coordinate system too. Can be used here a trick as it is changing and it will add +20% so what not need to change on each tick (frame)
233528246055
matheszabi said:
Thanks for answer.
Price/time is the same until: the user press a button, than will change the time ( From To values) and collecting data will result a min price and a max price. So the price probably will change at that button event, but not all the time.
Also the last candle price value is "moving" at least the close value, but an move the min or max value too, which can be the min or the max of the whole chart, on those rare situations need to change the coordinate system too. Can be used here a trick as it is changing and it will add +20% so what not need to change on each tick (frame)
Click to expand...
Click to collapse
I would definitely use rendering text technique I already posted. Its very fast (when implemented properly) and you can "print" whatever you want.
One of the following
bitmap fonts: (more content preparations - you need to prepare texture for each font)
-------------------
font bitmap creator: google: angelcode bmfont
+ sample: google: "nehe 2d_texture_font"
freetype implementation: (easier use - free type can generate font you want - also very fast)
-------------------------------------
it's possible to compile it with ndk - i use it and it's simple
google: freetype
and code for starters: google: "nehe freetype_fonts_in_opengl"
Cheers
P.
EDIT: 11/15/2014
This post features version 2.x.x. It is a complete rewrite using Android Studio because importing the project from Eclipse didn't go too well.
For information on version 1.x.x , go to post #28
Downloads for both versions are at the bottom of this page.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
ZTORCH Features:
The goal of ZTorch is to be a extremely quick and lightweight app that does one thing and does it well without extra bloat or ridiculous permissions. ZTorch can vary the brightness of your phones LED and allow you to set brightness levels higher than possible anywhere else.
The Galaxy S4 is capable of 16 different levels of brightness (0-15). Compared to other Apps:
The stock "Assistive Light" that is featured with the phone only sets the level to 1.
The brightest AppStore Apps, such as TeslaLED, are able to set the brightness to a little less than half brightness, level 6.
Typically, flashlight apps take about a second to switch on the LED
ZTorch can adjust the LED in mere milliseconds.
ZTorch stays on when the screen is off and doesn't flicker when the screen switches off.
ZTorch works with the camera. Ever wanted to use the flashlight LED while recording a video or taking a picture? Now you can.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
ZTorch should work across all phones with root if the proper system file is on the phone. ZTorch scans for the following binaries below. If your device isn't supported and you know the path to the proper file, you can set that path in the apps preferences. This app has only ever been tested on the Galaxy S4, if you try it on a different phone, PLEASE let me know how it is!
Code:
"/sys/class/camera/flash/rear_flash", - For Galaxy s4
"/sys/class/camera/rear/rear_flash", - For Galaxy Note and maybe s3
"/sys/class/leds/flashlight/brightness," - HTC devices
"/sys/devices/platform/flashlight.0/leds/flashlight/brightness" - HTC devices
" /sys/class/leds/spotlight/brightness" - Motorolla Droid Devices
"/sys/class/leds/torch-flash/flash_light" - Motorolla Droid 2
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Screenshots from ZTORCH-beta-2.0.0.26.apk:
Main Activity as popup with widget shown in background.
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Notification:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Permissions:
ACCESS_SUPERUSER - To set the LED
RECEIVE_BOOT_COMPLETED - Sets LED to 0, allows for persistent notification, notification on bootup.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Version Information:
Download attached at bottom of post.
LATEST: Version 2.0.3.50: (Feb 24, 2015)
Notification now appears on boot if that setting is enabled
Separated BootReceiver from main broadcast receiver so disabling the boot receiver won't break the rest of the app.
Notification icon changed to support Lollipop.
Renamed some app refs.
Somehow cut 50kb from the app, it's now 100.6Kb. Considering the Icons take up 89.5Kb I'm kinda amazed.
I haven't got around to making an actual Settings activity. So features are the same from prior version.
Version 1.2.2: (Mar 3, 2014) All the features work but is less refined.
Version 1.3.0: (June 16,2014) Added TorchPlayer to act similar to PWM. All Features work.
Version 1.4.0 (June 20,2014) Switching speed was the priority in this version; the brightness can be changed in <3ms. I abandoned the very comprehensive and powerful Stericson RootTools library in favor of a purpose built class that toggles the flashlight. Warning: The notification doesn't work on API-19 Android 4.4+. Clicking it does nothing. I need to build a new version sometime.
For more info on version 1.x.x such as the screenshots, see post #28
ZTORCH-beta-2.0.0.28: (November 15,2014) Beta version does not yet have a settings or preference activity implemented as well as other nonessentials. To change settings in this version, see below. Changes include:
Entirely new MainActivity that's now in a Popup window
Entirely New and Fully Working Notification
Widget now fills the entire 1x1 grid. (Let me know if there's problems, I set the left and right margins to -23dp to do this)
Added Warn feature and Torch Fireball icon for when the brightness is higher than the Warn value.
Slider no longer lags while trying to effectively "make a strobe light" by not sending broadcasts, updating views, or saving the brightness until after you take your finger off.
Slider changes color based on level.
ZTORCH-beta-2.0.0.33optimized: Technically should be: 2.0.2.33(November 16,2014) Changes:
Adds RECEIVE_BOOT_COMPLETE permission.
Ongoing Notification is available in AppPrefs.xml
TapGuard enabled by default. (Widget ignores first tap to prevent accidental taps)
ZTORCH-optimizedbeta-2.0.3.41: (November 17,2014) Changes:
New Notification AppPrefs.
ongoingNotif (Can't swipe away, Persistent).
onPriority and offPriority (levels: -2, -1, 0, 1, 2 where 2 is PRIORITY_MAX)
Shell Command Text and Toggle Button updated instantly while slider moves.
ZTorchReceiver enables you to send commands from other apps such as Tasker. Available broadcasts listed further down.
Fixed Force Close if the Main Toggle button is pressed and root was denied or the device is unsupported. (Not like you can use the app like this anyway, but still)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
BETA Version Settings
I'm still trying to figure out how android implements preferences and preference fragments. So in the beta, there is none! To change a setting, get a file browser with root access such as ES File Explorer, then navigate to the location below and edit the file "LEDPrefs.xml"
Code:
/data/data/derekziemba.ztorch/shared_prefs/
Additionally there is another file, "AppPrefs.xml" where you will find app specific settings and be able to configure the Notification.
"LEDPrefs.xml" will look like this on ZTORCH-beta-2.0.0.28. Later versions will be slightly different. I recommend uninstalling the app before installing a new beta.
default - The value the torch will turn on at when Toggled or Enabled.
inc - increment. Value the notifications "+" and "-" will increase or decrease by and the Widget will increase at if multitap = true;
multitap - If true, on successive widget taps the brightness will increase by the inc value. If false, brightness will toggle to default value;
wait - For multitap and tapguard. Time in milliseconds between successive widget taps to increase brightness. If more time than this has passed, the LED will shut off.
tapguard - To prevent accidental widget taps turning on the LED. If true, the widget ignores the first tap and waits for a second tap, unless the LED is already on.
min - just leave at 0, this is the "off" value, it is here in case some phones are reversed
max - maximum value on slider and the max value you can increment to. Only the first 3 digits of this will ever be used, giving a max possible value of 999.
warn - value at which the torch turns from yellow to a fireball and the slider begins changing colors from blue to yellow to red.
lvl - Current Brightness. There is no way to retrieve the current LED level, so the last value is stored here
sys - the system binary that controls the LED;
mask - bitmask. The brightness level is bitwise AND'ed with this value before executing the shell command to prevent invalid values. If you need help configuring this, use windows calculator and set it to programmer mode on Integer then click the bits you want to use, then use the integer value given.
"AppPrefs.xml" settings:
enableTorchOnAppLaunch - If true, opening the app will automatically set the brightness to the default value listed in "LEDPrefs.xml". Default is "false"
persistentNotif - If true, the notification will be persistent and it cannot be swiped away. Default is "false"
showNotifOnBootComplete - Posts the notification when BOOT_COMPLETE is received for easy access. Use with persistentNotif to prevent swiping away. Default is "true"
Notification Priorities. There are 5: MIN(-2), LOW(-1), DEFAULT(0), HIGH(1), and MAX(2). More info here: http://developer.android.com/design/patterns/notifications.html#guidelines
notifPriorityTorchON - Notification Priority when the LED is on. Default is "2"
notifPriorityTorchOFF - Notification Priority when the LED is off. Default is "-1". Versions before 2.0.3.41 including 1.x.x are hardcoded at "-2"
Important: Before changing any settings, be sure to kill ZTorch with a task manager. Otherwise the settings will not take effect and they will be overwritten when the app gets sent to the background.
If you mess up the settings ZTorch will force close on launch. Delete the XML file to restore defaults.
Strobe Light:
You can get some pretty cool stobbing effects by changing the "mask" and "max" settings.
If you set the "max" value to something like 200 with the mask set to 15 (0000-1111), when sliding the slidebar from 0 to 200, the actual brightness set will repeat 0-15 over and over.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Setting Brightness from other apps such as Tasker, using ZTorch's BroadcastReceiver
I still have to test if this works, but in theory it should. The ZTorchReceiver supports the actions below.
Code:
"derekziemba.ztorch.UPDATE_LEVEL"; //Service will check for extra Integer under the key "lvl" and set that brightness if it is valid.
"derekziemba.ztorch.WIDGET_TAP"; //Behave as if the widget was just tapped. MultiTap, TapGuard, and Wait apply.
"derekziemba.ztorch.STEP_UP"; //Increment Brightness by increment value
"derekziemba.ztorch.STEP_DOWN"; //Decrement Brightness by increment value
"derekziemba.ztorch.INCREASE"; //Increase Brightness by 1
"derekziemba.ztorch.DECREASE"; //Decrease Brightness by 1
"derekziemba.ztorch.ENABLE"; //Turn on torch at default level
"derekziemba.ztorch.DISABLE"; //Turn off torch
"derekziemba.ztorch.TOGGLE"; //Toggle the torch opposite its current state.
---------------------------------Internal---------------------------
"derekziemba.ztorch.UPDATE_FROM_MAIN"; //From main activity, prevents service from broadcasting UPDATE_FROM_SERVICE and cause an endless loop. Contains extra Integer under key "lvl"
"derekziemba.ztorch.UPDATE_FROM_SERVICE"; //Sent from the Service to Main, this one is Unregistered when Main is not visible. It is still sent by the service.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Important Note Regarding Brightness:
For default settings I have the max LED value set to 13 because I've experienced flicker. Values higher than 10 change the color of the slider to red and the widget and notification flame from yellow to fireball. Flicker occurs when your battery voltage is to low to support the current level of brightness.
To avoid LED flicker:
>3800+mV or ~50% is needed for Levels >=13.
> 3750mV or ~30% is needed for Levels > 9.
> 3600mV or ~10% is needed for Levels > 7.
I have used my app to work several hours in an attic at brightness 11. I used my phone because it's actually significantly brighter than every flashlight I own. That includes a flashlight with a 6V cell, a 3 LED headlamp, and a 4 battery AAA LED flashlight. My only light that beat it was my spotlight, but the spotlight's beam is too focused whereas the phone lights up everything.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Note: Android displays the build version as 1 higher than the file name. So Android will show version 2.0.3.41 as 2.0.3.42. This is caused by some Gradle Build Config bug.
I use the torch a lot so I just downloaded this and I'll definitely let you know how it goes. Thanks!
Verizon S4
Liquid Smooth 4.4
Sprint S4
Negalite 4.4
Great app. Been using it for a few days with no issues. Love the incremental increases/decreases.
Anyway to get this to stay in the notification drop down?
Sent from my SCH-I545 using Tapatalk 2
rahilkalim said:
Great app. Been using it for a few days with no issues. Love the incremental increases/decreases.
Anyway to get this to stay in the notification drop down?
Sent from my SCH-I545 using Tapatalk 2
Click to expand...
Click to collapse
I might be able to implement that as a setting quick when I get home. And maybe add an option to make it half height too if it's going to be persistent.
DerekZ10 said:
I might be able to implement that as a setting quick when I get home. And maybe add an option to make it half height too if it's going to be persistent.
Click to expand...
Click to collapse
That would be great. Thanks.
Sent from my SCH-I545 using Tapatalk 2
rahilkalim said:
That would be great. Thanks.
Sent from my SCH-I545 using Tapatalk 2
Click to expand...
Click to collapse
Just updated it. Here's what's new:
Settings Activity has had a makeover. The question mark on the side will explain what the settings do. The image on the left shows what it looks like if the Persistent Notification and the Minimizing Notification toggles are enabled. The right shows what it looks like with the Minimizing Notification toggle off. Notice that when the Minimizing Notification toggle is disabled, zTorch's icon is in the notification bar.
Here is what zTorch looks like in the notification drop down with minimization enabled. The left screenshot is with zTorch minimized. In this state the icon is not in the notification bar. The screenshot ion the right shows the notification expanded with the minimize option enabled, In this state the icon will show up in the notification bar.
Disabling Notification minimization but keeping Persistent notification enabled will cause the notification to appear like the left and middle screenshots. When the Torch is off, only an Activate LED button is present. If there are a large number of other notification, the notification will shrink up. With the Torch on more buttons become available as seen in the middle screenshot. The rightmost screenshot is the notification with both the persistent notification and notification minimization disabled.
Note: This version 1.2.0 has some rough edges. I'll polish it when I have more time. In the future the Settings activity will also be changed to an actual Android Settings layout instead of a generic layout.
EDIT: Version 1.2.1 rounds out those edges.
Now that school is out, I'll be updating and posting the source code on github soon
DerekZ10 said:
Now that school is out, I'll be updating and posting the source code on github soon
Click to expand...
Click to collapse
Great job, works great!
This looks great. Do you have any plans to update this for nc5 4.4.2 compatibility?
Sent from my SCH-I545 using Tapatalk
klabit87 said:
This looks great. Do you have any plans to update this for nc5 4.4.2 compatibility?
Sent from my SCH-I545 using Tapatalk
Click to expand...
Click to collapse
This is why I wanna get the source code up. So others can compile it for their versions. I'm running Android 4.2.2 Eclipse 2.0 Rom. It's all customized and set up the way I like, and it's been very reliable. I'm not sure when I will get around to upgrading. Every rom I have tried as a replacement has had problems.
I haven't got around to posting the source code because there was suddenly some issues with the build? I opened the project the other day and was told I needed to upgrade things, I did and now every object and include directive is underlined in red. I looked at it for about a minute before deciding I'll figure it out some other day. Haven't got around to it since.
Oh ok. I was just wondering. Looking forward to the source so we can have it work for updated android versions someday.
Thanks.
Sent from my SCH-I545 using Tapatalk
klabit87 said:
Oh ok. I was just wondering. Looking forward to the source so we can have it work for updated android versions someday.
Thanks.
Sent from my SCH-I545 using Tapatalk
Click to expand...
Click to collapse
Here's the Source Code Everyone, Good Luck! Everything for the project should be on GitHub including external libraries and the .psd files for the icons.
https://github.com/DerekZiemba/zTorch
I haven't been able to build this or other projects since upgrading the SDK and the Eclipse ADT. I'm not getting any errors, I just get "export build failed." Not sure what to do, maybe reinstall everything. Hopefully someone here can get it working. I just really don't have enough time. In fact the whole project was born out of procrastinating a huge report I didn't want to do for school.
I have everything working again and the source code should build the most stable recent version. The 1.3 beta version is on my dropbox now. This version is a work in progress and the new TorchPlayer feature is not in a working state, but everything else works as usual.
I'm releasing this build before this new feature is working so people with newer versions of android can use the apps pre-existing features.
Here is basically what TorchPlayer is and how it will effect the app in future versions:
Once working properly it will be used to define increment steps for things such as rapid-tap and consecutive-tap (currently double-tap). The time element of these steps will define the max time the LED will stay lit before (likely) dropping down a step. It will be a way to prevent the LED being lit in your pocket all day and limiting the max LED brightness to a defined time.
TorchPlayer will eventually allow you to name and save sequences and have a repeat mode so you can use it as a strobe light. I'm not sure yet how fast the LED can be switched on and off. I might also look into having the sequence controlled by Morse code using dots and dashes.
For this to work I have to figure out, basically, multi-threading(handlers, runnables, threads) and a few other things such as Gson or SQLite.
NOTE: Installing this version messed up my widget. If it happens to you just delete it and re add it to fix.
Shown below is version 1.3 beta 4. I've found that I can strobe the led light ridiculously fast. I haven't encountered the limit yet at even the 5 millisecond intervals. At 5millis the LED is flashing so fast that it is almost becoming steady. With this it may be possible to set custom "LightTones" for certain things like you do with ring tones.
EDIT:
Beta 5 added ability to duplicate several values to save on typing as seen below: Also note, the parenthesis and spaces don't actually matter and are only there to make it easier on me to read. The input is sanitized using: String scheme = behavior.replaceAll("[^0-9/sm,.*&]+",""); So only numbers, the letters s and m, and the symbols / , . * & matter. If a brightness value is out of range that command is ignored.
Here is a video of what the above TorchPlayer string yields.
https://www.youtube.com/watch?v=c1lwTHZwr-M&feature=youtu.be
DerekZ10 said:
I have everything working again and the source code should build the most stable recent version. The 1.3 beta version is on my dropbox now. This version is a work in progress and the new TorchPlayer feature is not in a working state, but everything else works as usual.
I'm releasing this build before this new feature is working so people with newer versions of android can use the apps pre-existing features.
Here is basically what TorchPlayer is and how it will effect the app in future versions:
Once working properly it will be used to define increment steps for things such as rapid-tap and consecutive-tap (currently double-tap). The time element of these steps will define the max time the LED will stay lit before (likely) dropping down a step. It will be a way to prevent the LED being lit in your pocket all day and limiting the max LED brightness to a defined time.
TorchPlayer will eventually allow you to name and save sequences and have a repeat mode so you can use it as a strobe light. I'm not sure yet how fast the LED can be switched on and off. I might also look into having the sequence controlled by Morse code using dots and dashes.
For this to work I have to figure out, basically, multi-threading(handlers, runnables, threads) and a few other things such as Gson or SQLite.
NOTE: Installing this version messed up my widget. If it happens to you just delete it and re add it to fix.
Click to expand...
Click to collapse
For some reason the toggle doesn't show in my drop down now, any ideas?
shindiggity said:
For some reason the toggle doesn't show in my drop down now, any ideas?
Click to expand...
Click to collapse
Just confirmed it is a bug. To get the notification to show you need to switch the torch on once. It'll stay in the dropdown after.
I'll try to get a new build together soon. I learned a few things about Android the other day that made me realize my code was overly complicated and difficult to work with, much more so than it ever needed to be. So I actually started a total rewrite since that version that I want to get perfect.
The new version is a different app all together, the system and launcher will see it as zTorch-L. The L stands for it really being the "Lite" version, in app it will refer to it self as zTorch-Lightning. I decided that the TorchPlayer feature went against the whole purpose of making my own app in the first place. I created it to be fast, simple, no-bs or bugs, do one thing and do it well. What I wanted out of TorchPlayer would cause the app to loose focus of its goal, so I started this new version that would be just that.
Because I want it to be totally finished before releasing, I'm not going to post a link to it here. The code wouldn't even compile if I tried. But if you really rely on the notification being in the dropdown PM me. I have an alpha version I compiled before going to far in to rewriting the code. Everything works great AFTER some tweaking first.
Initially it is inoperable unless, starting from the root directory, you navigate to the following file:
Code:
/data/data/derekziemba.ztorchL/shared_prefs/derekziemba.ztorchL_preferences.xml
Open it, delete what ever is in it, then paste the below text :
Code:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<int name="flash_current_value" value="0" />
<int name="tap_time" value="900" />
<int name="brightness_increment_steps" value="3" />
<int name="default_value" value="8" />
<int name="flash_limit_value" value="13" />
<boolean name="rapid_tap" value="true" />
<boolean name="persistent_notif" value="true" />
<boolean name="mini_notif" value="true" />
</map>
I sent you a PM, be happy too.
DerekZ10 said:
Just confirmed it is a bug. To get the notification to show you need to switch the torch on once. It'll stay in the dropdown after.
I'll try to get a new build together soon. I learned a few things about Android the other day that made me realize my code was overly complicated and difficult to work with, much more so than it ever needed to be. So I actually started a total rewrite since that version that I want to get perfect.
The new version is a different app all together, the system and launcher will see it as zTorch-L. The L stands for it really being the "Lite" version, in app it will refer to it self as zTorch-Lightning. I decided that the TorchPlayer feature went against the whole purpose of making my own app in the first place. I created it to be fast, simple, no-bs or bugs, do one thing and do it well. What I wanted out of TorchPlayer would cause the app to loose focus of its goal, so I started this new version that would be just that.
Because I want it to be totally finished before releasing, I'm not going to post a link to it here. The code wouldn't even compile if I tried. But if you really rely on the notification being in the dropdown PM me. I have an alpha version I compiled before going to far in to rewriting the code. Everything works great AFTER some tweaking first.
Initially it is inoperable unless, starting from the root directory, you navigate to the following file:
Code:
/data/data/derekziemba.ztorchL/shared_prefs/derekziemba.ztorchL_preferences.xml
Open it, delete what ever is in it, then paste the below text :
Code:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<int name="flash_current_value" value="0" />
<int name="tap_time" value="900" />
<int name="brightness_increment_steps" value="3" />
<int name="default_value" value="8" />
<int name="flash_limit_value" value="13" />
<boolean name="rapid_tap" value="true" />
<boolean name="persistent_notif" value="true" />
<boolean name="mini_notif" value="true" />
</map>
Click to expand...
Click to collapse
shindiggity said:
I sent you a PM, be happy too.
Click to expand...
Click to collapse
So you guys don't have to keep using that version if you don't want to, try the zTorch-Lightning_v1.Alpha2 . There's a lot of stuff to do yet, but all the basics are working.
You'll notice the notification is way more responsive and that it no longer does that thing "refresh flash" when switching to different notification styles. It responds instantly to setting changes now too.
When tapping the 1x1 incremental widget, the LED is now set to turn on before the system broadcast and before the on screen widget lights up instead of the other way around.
http://db.orangedox.com/FBzt4wNNfVu1xIMc0W/zTorch-Lightning_v1.Alpha2.apk
This is just what i have been looking for!! So what kind of licensing is your code on git under?
Adjustable flash brightness is just what i want to look adding to my Camera app. I need something lower intensity than the stock.
Unfortunately, I am unable to test this app as my rooted devices don't have flash.
hotspot_volcano said:
This is just what i have been looking for!! So what kind of licensing is your code on git under?
Adjustable flash brightness is just what i want to look adding to my Camera app. I need something lower intensity than the stock.
Unfortunately, I am unable to test this app as my rooted devices don't have flash.
Click to expand...
Click to collapse
Free to use as long as you don't repackage it as is but with ads or put a price on the app. However if you are creating your own app and just want to use the flashlight feature, you can use the below code however you want. I think the git code is way out of date, I worked on it a bit a while ago and I don't think I comited it. I've gotten busy and haven't had a chance to work on it in months.
Here is the code for directly changing the brightness. Free to Use however you wish.
Here is the Shell Class. The Static Methods create and maintain the superuser shell. Therefor a command can be executed app wide on a single shell instead of creating multiple Shell instances.
Code:
package derekziemba.misc;
import java.io.*;
public class Shell {
private static Shell rootShell = null;
private final Process proc;
private final OutputStreamWriter writer;
private Shell() throws IOException {//Open with Root Privileges
this.proc = new ProcessBuilder("su").redirectErrorStream(true).start();
this.writer = new OutputStreamWriter(this.proc.getOutputStream(), "UTF-8");
}
private void cmd(String command) {
try{ writer.write(command+'\n'); writer.flush();}
catch(IOException e) { }
}
public void close() {
try {
if (writer != null) { writer.close();
if(proc != null) { proc.destroy(); }
}
} catch (IOException ignore) {}
}
public static void exec(String command) { Shell.get().cmd(command); }
public static Shell get() {
if (rootShell == null) {
while (rootShell == null) {
try { rootShell = new Shell(); }
catch (IOException e) { }
}
}
return rootShell;
}
}
}
Here is what is used for setting the flash brightness. I stripped out all the app logic. SetLevelCovertly is the actual method used for setting the brightness. It is what the TorchPlayer uses to directly change the brightness in just milliseconds. The stripped away normal SetLevel method records the brightness, triggers the broadcasts, sets the widgets, and fires the notification. There is no way of getting the current flashlevel brightness since my Shell implementation is just for blasting commands at the terminal. Anything more will slow it down.
The listOfFlashFiles is a bunch of different files different phones may use. I've only ever tested the samsung file.
Code:
import java.io.File;
import derekziemba.misc.Shell;
public class Torch
{
private static String FLASH_FILE = null;
private static final String[] listOfFlashFiles = {
"/sys/class/camera/flash/rear_flash",
"/sys/class/camera/rear/rear_flash",
"/sys/class/leds/flashlight/brightness",
"/sys/devices/platform/flashlight.0/leds/flashlight/brightness",
"/sys/class/leds/spotlight/brightness",
"/sys/class/leds/torch-flash/flash_light"
};
/**
* Bypasses all checks and settings and just sets the value. The app will not know what the level is because it is not recorded.
* Will not trigger broadcast, widget views, notification
*/
public static void setLevelCovertly(int value) { Shell.exec("echo " + value + " > "+ getSysFsFile()); }
public static String getSysFsFile() {
if (FLASH_FILE != null) return FLASH_FILE;
for (String filePath : listOfFlashFiles) {
File flashFile = new File(filePath);
if (flashFile.exists()) { FLASH_FILE = filePath; }
}
return FLASH_FILE;
}