Hi
New around these forums..
I've posted a in-progress of a project I'm working on. It's a kinetic scroller (you know that flick scroll effect). Remember this is a demo it doesn't actually do anything useful apart from amuse me!
Not as fluid/cool as iContact, but it's my first PPC application. The grand plan is to turn it into a library based MP3 player with a decent looking interface.
It's written in CF .NET so if you really need the source reflection is your friend.
Tested on a WM6 blueangel device @ 400Mhz. Runs in the WM2003 emulator
----
I've updated with source. No license, do whatever you want with it. Although a mention somewhere would be nice
Chad get this media player out the door now!
-------
New optimized demo released, source now updated.
Removing old source as the file name is confusing.
Thanks for all the comments.
-------------------------------------------------
**************************************
UPDATE:
gingercat has done some fantastic work loosely based on the original source and created a user control. Unlike my old code it doesn't use one big bitmap and just better written in every aspect. I'll leave my old source up just for reference as to how /not/ to write a kinetic scroller
I can't try it right now because I don't have my device, but it's nice to know that at least a few people still support WM2003/SE...
jackbnymbl said:
I can't try it right now because I don't have my device, but it's nice to know that at least a few people still support WM2003/SE...
Click to expand...
Click to collapse
...especially on wizard..
LOVELY! Why don't we work together to bring your scrolling routine, into my existing mp3 player "Melody". I've got playback and that sort of thing sorted out. Please PM me if you're interested.
anyone care to post a vid plz
slow scrolling and not as responsive as other scrolling software out there... but the idea is there ... i would also love to see smtg similar implemented in chad's media player (just my simple opinion)...
thundershadow14 said:
LOVELY! Why don't we work together to bring your scrolling routine, into my existing mp3 player "Melody". I've got playback and that sort of thing sorted out. Please PM me if you're interested.
Click to expand...
Click to collapse
Thanks for the offer! This is a hobby project and I'd like to work on my own.
However I'm now going to release the source so you can use it..
Kinetic scroller, officially a part of Melody.:
http://forum.xda-developers.com/showthread.php?t=325223
Development
Hi
I was just wondering, how long will it take for you to make your product compatible to play Mp3 Songs, because I'm tierd of waiting for a Music Player, which is easy to use and fast. And by the way, I think your player is so far the best, it just has to get a litle better UI!!!
Well, here I am with release 002 of my kinetic scroller demo.
I've added alot of optimizations and its silky smooth on my 400Mhz device! It even runs great underclocked at 200Mhz.
Source to follow (once its cleaned up, probably tommorrow)
Thanks for this! Once again shows how it just takes one person to come up with a great idea (apple (or whoever initially came up with smooth scrolling)) then we all wonder how we lived without it!
I've just been reflecting over it and note that you are relying on .NET garbage collection to clean up e.g. all the graphics and brush objects you create - you need to be careful about this because this isn't deterministic and you can quickly run out of resources before it gets round to cleaning up. I know you say you're going to clean up the code anyway, but just thought I'd add my tip!
The holy grail would be if we can figure out how to hook mouse events, because then mouse movement can be processed independently of the form (and any other items on it). Unfortunately, CE doesn't support this (that I know of). The form approach only works if everything is semi-custom drawn.
This new version scrolls as good as or better than iContact, so you can remove that message on the first post.
on the other hand, the version currently implemented in melody v0.6 doesn't seem as good as this one.
btw, once you upload the new source, i'll see if i can make it stop selecting the first touched item when you are trying to scroll.
when thundershadow and i were making our own one we found the way to do this was to do something like listbox1.selectedindex = -1
it should be pretty easy to do.
also, something like this instead of the random number generator could get a list of the files in the current dir:
Code:
string[] r = System.IO.Directory.GetFiles(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase),".mp3");
klist = new KList(0, 20, screenX, screenY, "All Tracks");
for (int i = 0; i < r.Length; i++)
{
KItem ki = new KItem(i + ". " + r[i] + ".mp3");
klist.addItem(ki);
}
dunno if that is accurate or not.. haven't used c# that much.. but it should be easy todo.
Source is now up.
I've starting playing around with MP3 playback but please ignore it (Using the FMODCE .NET wrapper)
dosfan said:
Source is now up.
I've starting playing around with MP3 playback but please ignore it (Using the FMODCE .NET wrapper)
Click to expand...
Click to collapse
if you're intending on making it a practical-use app,
probably the best way to go about it is using the shell execute function to open the mp3's in whatever player they associated mp3's to (cos people will want features they prefer than other media players).
and then later on you can add an option to customize the command so the user can use it with a different media player without changing the associations.
so they'd have to make something like: "\SD Card\TCPMP\player.exe /open %mp3path%".
then the app just has to replace "%mp3path%" with the variable for the path to the selected mp3, and launch everything before it to shell.
you'd also need to add something like the code in my last post to get a list of the mp3's (tried it on my ppc and it doesn't work, so it needs to be fixed up though).
chrismrulz said:
if you're intending on making it a practical-use app,
probably the best way to go about it is using the shell execute function to open the mp3's in whatever player they associated mp3's to (cos people will want features they prefer than other media players).
and then later on you can add an option to customize the command so the user can use it with a different media player without changing the associations.
so they'd have to make something like: "\SD Card\TCPMP\player.exe /open %mp3path%".
then the app just has to replace "%mp3path%" with the variable for the path to the selected mp3, and launch everything before it to shell.
you'd also need to add something like the code in my last post to get a list of the mp3's (tried it on my ppc and it doesn't work, so it needs to be fixed up though).
Click to expand...
Click to collapse
Yes, that something I was already considering.
To be honest, I'm not impressed with FMOD's performance. Even just initalizing the library is causing performance issues (without even playing a MP3, does fmod.init() spawn a thread or something???)
I'm looking for a port of MAD that I could interop with. If anyone knows of a libmad.dll for ARM WINCE point me in the direction!
dosfan said:
Yes, that something I was already considering.
To be honest, I'm not impressed with FMOD's performance. Even just initalizing the library is causing performance issues (without even playing a MP3, does fmod.init() spawn a thread or something???)
I'm looking for a port of MAD that I could interop with. If anyone knows of a libmad.dll for ARM WINCE point me in the direction!
Click to expand...
Click to collapse
afaik, performance-wise fmod would be the best library to use.
but the problem is that most people would rather use their own player like tcpmp or wmp that does what they want,
rather than just a basic player with a third-party library in .net cf.
New UserControl version
Hi dosfan,
I have modified the source to create a new KListControl which is a UserControl you can add to any .NET form. All the scroll functionality required is all contained within the new control.
This control doesn't pre-render everything up-front, so should be less memory hungry (especially with long lists) at the slight expense of some speed (runs fine on my hermes).
Each item is now custom drawn, and only needs to support an IKListItem interface - this enables each item to draw whatever it wants, whenever it wants (well, by nicely asking its parent to invalidate it when visible). I have created a basic KListItem object that supports string name, object value (and has the same functionality you provided).
I also updated the project to still compile with the new source, so (if you like the changes) you can continue work from there.
Updates I will still make are:
Better use of statics incase multiple lists are used (currently the background selection image is static)
Common timer between multiple instances of the control (for performance).
Hope you don't mind my changes!
Chris.
i've just modified gingercat's version to launch the selected mp3 using the windows shell.
to test it out you need to create a directory called "\\SD Card\\My Music", or change the variables in form1 and the klistcontrol to where your music dir is.
if the directory doesn't exist it will browse for mp3 files in the app's directory, then grab the folder of the one selected.
this is not a practical idea, and it won't change the variable in the klistcontrol,
so it wont be able to launch it through shell if you use the browsing method.
a better way would be to make it a folderbrowser dialog instead of a file one,
then make the folder variable in form1 a global variable, and the klistcontrol just grabs it from form1.
that still wouldn't work for subdirectories though.
for that you'd need to tag each klistitem with it's full file path or directory when it's being added.
also it should be pointed out that gingercat's version scrolls a bit too fast.
it's smooth so there aren't any performance issues.
it just goes too far with the tiniest tap up or down.
is there any way to capture all mouse events of the system?
Related
I have a little project in mind, but would like some input from the pros to cut research time:
Is it possible to "wrap" a Today plugin dll with another, providing a "pass through" for operations (such as screen taps, etc)?
What I'm trying to accomplish is this: Add selectability and other one-handed d-pad operation to an older plugin that is not selectable.
What do you think?
it's possible but the problem is that the plugin have to keep track on what plugins it include and which handles it have to pass to them
could end up big and slow
Rudegar said:
it's possible but the problem is that the plugin have to keep track on what plugins it include and which handles it have to pass to them
could end up big and slow
Click to expand...
Click to collapse
This is specific to a single plugin - it would only keep track of one.
Perhaps plan B would be easier - a plugin that manipulates another plugin. Such that it would "appear" the older plugin was selected, etc. I guess I'd better go study some more...
Actually its really simple.
Any plug-in DLL exports a function called InitCustomItem. In this function the plug-in does all its initialization, and creates its window. The return value is the handle to this window which you can subclass to add functionality.
as for selection, there is a value in the registry for each plug-in (HKLM\Software\Microsoft\Today\Items) which controls whether the system passes selection events to the plug-in or not.
it has three settings:
0 - non selectable, item will be skipped by the system.
1 - Automatic, the system will paint the item and handle selection on / off
2 - Manual, the system will pass the selection event to the item and the item will take care of the rest. In this mode the return value of the WM_ACTION determines whether the selection is moving on. This is good for multiline plug-ins that don't want to give up focus when arrow keys are pressed.
levenum said:
Actually its really simple.
Any plug-in DLL exports a function called InitCustomItem. In this function the plug-in does all its initialization, and creates its window. The return value is the handle to this window which you can subclass to add functionality.
as for selection, there is a value in the registry for each plug-in (HKLM\Software\Microsoft\Today\Items) which controls whether the system passes selection events to the plug-in or not.
it has three settings:
0 - non selectable, item will be skipped by the system.
1 - Automatic, the system will paint the item and handle selection on / off
2 - Manual, the system will pass the selection event to the item and the item will take care of the rest. In this mode the return value of the WM_ACTION determines whether the selection is moving on. This is good for multiline plug-ins that don't want to give up focus when arrow keys are pressed.
Click to expand...
Click to collapse
Hey, thanks for the response! I've set the Selectability registry item for the older plugin, and it's ignoring it - that's what started me on this little project.
I'm a software developer by trade, but not with C++, so I don't want to waste people's time here asking a lot of dumb questions. If you could point me in the right direction on a couple of things, I'll go off and learn:
1. If all I have is a dll and nothing else (no .defs, etc), can I determine all of the functions it exports (other than InitCustomItem)?
2. Process check: My custom plugin's InitCustomItem would call old-plugin's InitCustomItem, snagging old-plug's hwnd. New-plugin would then initialize it's own window - transparent(?) and pass that hwnd back to windows. Also, my custom plugin would pass all messages to old-plugin, etc. Theoretically, old-plug would look and operate like normal?
If this is already written, just sent me the code!
Well I am afraid it will be difficult to do all this without C++. As far as WM based devices are concerned you need to use something that translates in to native code to create system components like the plugins son ,no .NET languages, and embedded VB doesn't do well on anything never that WM 2003 (not even SE), plus I am not sure if you can make DLLs with it at all.
To your questions:
1) There is a tool which comes with VS 6 called Dependency Walker. It shows you what functions a given DLL exports, what it imports from other DLLs and what DLLs it is link to. Woks on EXE files as well.
If you can't get that, download a demo of IDA 5. It's the most powerful disassembler for WM devices out there.
2) Not sure, I never tried anything like that. The thing is, the system resizes the plugins, on initialization (it controls height) and when screen rotation changes so if you pass back HWND for a window other than the one visible, it might cause some problems.
I think what you should do is learn about subclassing. It's when you replace the procedure of an existing window with your own (just replace the function, not create new window). You then get all the messages for that window, you can do what you want and call the original function when you done.
By the way, if you want to learn about writing plugins there is an article with code samples on this site: www.pocketpcdn.com and a lot of other interesting stuff.
Good luck.
What plugin is it? It might be easiest just to rewrite the plugin if you've got the code.
V
levenum said:
Well I am afraid it will be difficult to do all this without C++.
Click to expand...
Click to collapse
I should have been more clear - I am using C++, I'm just have to learn how to program with it first!
vijay555 said:
What plugin is it? It might be easiest just to rewrite the plugin if you've got the code.
V
Click to expand...
Click to collapse
I don't have the old-plugin source code. My little project is to add some sort of d-pad operation to the WeatherPanel plugin, which you're probably familiar with.
Progress: I've written and deployed my first little plugin - based on the source code samples available in the internet.
Next step: In my InitializeCustomItem, I thought I'd try to call WeatherPanel's InitializeCustomItem (instead of creating my own window). Thing is, I don't yet know how to properly link the WeatherPanel dll to my project. As expected, it only exports two functions: InitializeCustomItem and CustomItemOptionsDlgProc (I used dumpbin.exe)
I'll keep plugging away - any input would be appreciated.
Thanks for your help!
It's real easy:
Use LoadLibrary and GetProcAddress functions to call functions in other DLLs without linking them.
levenum said:
It's real easy:
Use LoadLibrary and GetProcAddress functions to call functions in other DLLs without linking them.
Click to expand...
Click to collapse
What a coincidence! My studying led me to the same functions.
From within my plugin's InitializeCustomItem, I was able to successfully load the dll with LoadLibrayl, GepProcAddress of its InitializeCustomeItem (at ordinal 240) and call it. But it whacks the Today screen so that none of the plugins load.
Next I thought I'd try FindWindow and EnumChildWindows to find it and all it's children. Then manipulate them by sending messages...
storyr said:
What a coincidence! My studying led me to the same functions.
From within my plugin's InitializeCustomItem, I was able to successfully load the dll with LoadLibrayl, GepProcAddress of its InitializeCustomeItem (at ordinal 240) and call it. But it whacks the Today screen so that none of the plugins load.
Next I thought I'd try FindWindow and EnumChildWindows to find it and all it's children. Then manipulate them by sending messages...
Click to expand...
Click to collapse
Update: So far, so good. As it turns out, EnumChildWindows doesn't work on the PPC, so I used GetWindow to find the plugin's handle. I can successfully send messages to it and initiate various actions.
Question: I'd like to visually indicate (on the old-plugin) what's being clicked (such as drawing a box around it). Is it possible to draw things outside of my own window?
It is, but it's tricky.
You can always use the GetDC function to retrieve the DC for another window and paint on it, but the problem is that unless you subclass the window you have no way of knowing when it repaints it self and all your changes are erased.
levenum said:
It is, but it's tricky.
You can always use the GetDC function to retrieve the DC for another window and paint on it, but the problem is that unless you subclass the window you have no way of knowing when it repaints it self and all your changes are erased.
Click to expand...
Click to collapse
I tried that exact thing (GetDC) and drew a rectangle in it, but it didn't do anything. I realized the reason was the WM_Paint event wasn't firing on old-plugin, and when it did, my stuff was erased (just like you said).
Next idea - open my own dialog window than overlays old-plug. The entire window needs to be transparent - except for the visual indicators that I position where I want. When the user ok's, I close the window and send the click to old-plugin...
Thanks again for keeping tabs on my progress..
No offence, but with all these rather advanced programming tricks you are attempting just to "sup up" an old weather plugin it looks to me like you would be better off just writing the whole thing from scratch.
It you are familiar with WinInet and / or sockets this should be pretty easy and it will look and work much better than the hack you are attempting now.
Plus you can make it exactly the way you like.
levenum said:
No offence, but with all these rather advanced programming tricks you are attempting just to "sup up" an old weather plugin it looks to me like you would be better off just writing the whole thing from scratch.
It you are familiar with WinInet and / or sockets this should be pretty easy and it will look and work much better than the hack you are attempting now.
Plus you can make it exactly the way you like.
Click to expand...
Click to collapse
No offence taken. I thought of that, but I figured this would be a good way to cut my teeth a little. Once I complete this little project, I may pursue that route...
Question: Do you have a favorite forum (or forums) besides this site that you use for your research/programming questions?
This is my favorite forum
But here are couple more sites I found very valuable:
www.pocketpcdn.com - They have tips and tricks with code examples arranged in categories like how to make MFC dialogs not full screen or the one I used in LVMTime to put the clock back on the taskbar.
www.codeproject.com - It's not specific to WM development but has tons of interesting stuff including entire sources.
You should also check out www.buzdev.net If you're not familiar with the great work of buzz_lightyear you should see some of the stuff he did for this forum like grab_it - the invisible ROM dumper.
OT
Just a quick OT question:
If I would move some of the plugin-dll's from \Windows to \Storage Card, would it be enough to change the adress within the corresponding item in the registry entry HKLM/Software/Microsoft/Today/Items ?
Of course I'm not talking about plugins like tasks a.s.o but rather third party plugins
Cheers
hrb
It won't work.
The problem is that the SD card is mounted too late so if you put the plugins on it they will not be loaded when device boots up.
You can move them to the extended ROM this way or to a folder other than windows but there is no way to move start-up stuff to SD.
Thanks for the help with this "little" project. After many hours, the product is out for beta testing. When it's released, I'll post more info...
Finished!
It's finished. The app is called WP-Pilot and it provides one-handed operation of WeatherPanel. If anyone's interested, it can be found here. Here's how it ended up:
There's a plugin (WP-PilotPlugin.dll) with an options dialog, and an executable (WP-Pilot.exe).
When the plugin gets selected, it looks for Weatherpanel. If it finds it, it fires off WP-Pilot.exe
WP-Pilot.exe opens. It does this stuff:
Look for WeatherPanel, and get it's screen coordinates.
Read the registry and determine which layout file WeatherPanel is using.
Open the layout file and read it: Record the coordinates of each "clickable" item found. This was a real PITA because of Unicode.
Sort the coordinates for left-to-right, top-to-bottom order.
Select the first coordinate and position a tiny window (10x10) at that x-y position.
Draw a "pointer" in the window (the type and color depends on what's selected in the options).
Show the window and process input:
[*]Left/right pressed - selected the next/previous coordinate and move the window to that location.
[*]Up/down pressed - close WP-Pilot and tell the plugin we're done.
[*]Center button pushed:
[*]Send a mouse click to the WeatherPanel plugin at the coordinates
[*]Close WP-Pilot and tell the plugin we're done.
Thanks again for your help!
Just in case you didn't notice:
There are new betas for MortPlayer (3.31b69, also RC) and MortScript (4.11b2).
The new MortPlayer beta fixes a lot of bugs, only the phone call pause still seems to cause troubles on some devices. But I'm afraid there's no way to avoid that without causing troubles on other devices (buggy manufacturer implementations of a crappy MS concept...).
It also includes some new features, like more finger support (list scrolling, finger gestures for track/Favorite change) or defining the upcoming track (select track and tap "Next track:" info). Configuration has been made a bit more easy, too, esp. by a simplyfied Favorite configuration dialog. For Skins, there are some new options, like defining the height or a separating line for list entries or switching back to previous screen, which are also used in the new default skin (MortVista).
MortScript doesn't offer many changes so far, but some might still be interesting, e.g. a SendKeys that should work faster and more reliable, an Include command (include Subs defined in other files), or line number in error messages.
Oh, and since it seems so commonplace here to beg for donations - I won't deny them either... (PayPal button below menu on my site..)
Hi,
this is my report of new MortPlayer Version:
Menus are very clear
integration of good tips
easy to use, even without Stylus
good energy saving options
what I miss:
fade in and out at play and stop
fade to next title
wfg
Starbase64
Player Not Exiting
Even when using the exit button on the menu I cannot get the latest Player to exit. It sits there eating valuable memory when I am not using it. Any ideas ?
I am using an I-Mate K-Jam/ HTC Wizard
cornelha said:
Even when using the exit button on the menu I cannot get the latest Player to exit. It sits there eating valuable memory when I am not using it. Any ideas?
Click to expand...
Click to collapse
Never heard of such a thing before...
What exactly happens when you do what? If I got it right, you select "Menu" - "Exit program", and then it stays still active?
Playlist navigation via D-Pad
Hi,
I do not know if it is possible, but I would like to be able to scroll and select a song from the playlist using D-Pad's up/down and select buttons. If I use these buttons in the playlist now they rise/lower volume and play/pause the playback.
Thanks,
Fran
Mort said:
Just in case you didn't notice:
There are new betas for MortPlayer (3.31b69, also RC) and MortScript (4.11b2).
The new MortPlayer beta fixes a lot of bugs, only the phone call pause still seems to cause troubles on some devices. But I'm afraid there's no way to avoid that without causing troubles on other devices (buggy manufacturer implementations of a crappy MS concept...).
It also includes some new features, like more finger support (list scrolling, finger gestures for track/Favorite change) or defining the upcoming track (select track and tap "Next track:" info). Configuration has been made a bit more easy, too, esp. by a simplyfied Favorite configuration dialog. For Skins, there are some new options, like defining the height or a separating line for list entries or switching back to previous screen, which are also used in the new default skin (MortVista).
MortScript doesn't offer many changes so far, but some might still be interesting, e.g. a SendKeys that should work faster and more reliable, an Include command (include Subs defined in other files), or line number in error messages.
Oh, and since it seems so commonplace here to beg for donations - I won't deny them either... (PayPal button below menu on my site..)
Click to expand...
Click to collapse
great news!
(BTW, feel free to CC your announcements privately to me, particularly now that I'm working on the Multimedia Bible, so that I can report on the latest developments of your excellent apps)
franjorge said:
I do not know if it is possible, but I would like to be able to scroll and select a song from the playlist using D-Pad's up/down and select buttons. If I use these buttons in the playlist now they rise/lower volume and play/pause the playback.
Click to expand...
Click to collapse
You can assign up/down button to "Move selection". However, they won't have any action in any other screen.
So far, MortPlayer hasn't the concept of a focused element, so there's no difference whether you're "in the playlist" or not.
In most cases, that's also better that way on PPCs, because you'd rather have e.g. left/right skip the track instead of selecting another element (like in usual dialogs). Only the playlist is an exception I didn't find a really good solution... To simply redefine the up/down behaviour might be unexpected/-wanted, too (i.e., I could get mails the volume up/down - or whatever's assigned to DPad up/down - "doesn't work").
@Menneisyys: I don't plan to include much in MortPlayer until the release, though I've still lots on my "to do" list. But it's about time there's finally a new release version, esp. if you consider most beta versions were more stable than 3.3...
I just have to fight procrastinating all the work that's related with a release, like writing a new manual (about 60% done), recollect all changes (lost my old changelog...), fill the homepage description (another thing lost due to server troubles...), and so on.
Well, and then there's the upcoming MortButtons update - which doesn't offer that much new functionality (mostly animations and a simple Today plugin), but oviously peoply like to show off with eye candy since the iPhone.
(And I'm still suprised about all that fuzz over Cube, Spb Menu, and the like, since MortButtons had a similar concent for ages - and even combining it with an HButton like "one button" selection...)
Mort yeah the only way I can close it is to kill the player. I must add that I use the wizard reTOUCHED rom. Everything else works perfectly. I just cannot close the app.
Mort said:
@Menneisyys: I don't plan to include much in MortPlayer until the release, though I've still lots on my "to do" list. But it's about time there's finally a new release version, esp. if you consider most beta versions were more stable than 3.3...
I just have to fight procrastinating all the work that's related with a release, like writing a new manual (about 60% done), recollect all changes (lost my old changelog...), fill the homepage description (another thing lost due to server troubles...), and so on.
Click to expand...
Click to collapse
Ionly plan to finish / publish the Multimedia Bible in late February the earliest (I've decided to wait for the 1.2 release of CorePlayer in order to avoid the Bible getting outdated in a few weeks), so, you have plenty of time to get into the Bible with your latest-and-greatest features
Updated to TNT 1933 and the mortplayer works perfectly. Awesome player dude
album cover
ouch, How comes the album cover is so small? would have looked soooo much better bigger. everything else is great though. but the cover is just a blur
thanks this is really the best music player great work!
Djay64 said:
ouch, How comes the album cover is so small? would have looked soooo much better bigger. everything else is great though. but the cover is just a blur
Click to expand...
Click to collapse
That's up to the skin...
Ah mort i found out why the player doesnt want to exit .. or maybe when . Its when it is installed to the SD Card and i use a skin like the myPod skin. When using the default it refuses to exit. Hope this helps
I'll see what I can do about it... It's a very strange behaviour...
And now for something completely different: The current MortScript betas has some nice enhancements, esp. a status window that allows user feedback without interrupting the execution of the script.
MortPlayer 3.31b69 sound quality
Have been using MortPlayer 3.31b34 for what seems like ever (great player)
I thought I would install the latest beta (b69) to try out the finger gestures & hopefully benefit from other improvements.
All works great except the sound quality is not quite as good, less bass & harsher high tones/vocals ! All the settings are exactly the same.
Have swapped between the two versions & can distinguish the difference easily.
Any idea what changes have implemented this !
m4a
will mortplayer ever play m4a?
Mister B said:
Any idea what changes have implemented this !
Click to expand...
Click to collapse
There are only two changes regarding the sound system: MAD has been updated (usually it causes better quality for most MP3s) and the default volume has been reduced to 80% (like in WMP).
c-pimp said:
will mortplayer ever play m4a?
Click to expand...
Click to collapse
The current beta includes the corresponding GSPlayer plugin. However, it seems like it doesn't work on all devices...
Dude, mort-tools are awesome. I'm using MortPlayer and Mortscript. Keep up the good work.
One issue with the MortPlayer : I use the latest Beta with IMort Skin (really great with finger gesture and covers ) but when i minimize the Programm and start for e.g. Excel or a JavaGame the sound stopps.
There are a lot of clock area today screen apps out there, from the simple such as PDClock, through mid-level stuff like HTC home, up to the fully customizable rlToday.
Few of these seem to be a good all-round solution though, except maybe rlToday, but I am having issues with the rlToday / Sys-to-Reg / Mortscript combo, both in terms of features (ie no support for "on" or "off" images), stability, and ease-of install (S2R seems a bugger to set up right, especially for the less technically inclined user), and the whole rlToday / S2R / Mortscript combo is hardly a turnkey one-install solution.
So to that end, I decided to try my hand at crafting a solution more appropriate to my needs.
Now, until this point I have never coded for C++ or windows mobile. I am not even a professional coder, far from it, but I do have a knack for designing good solutions, so I thought I would start teaching myself native C++ and see what I could come up with. Ultimately, my goal is to release as open source, I am hoping to maybe start a sourceforge project at some point...
I am making this post because I am now starting to get past the proof-of-concept stage and am coming up with some working code. I am tackling the various hurdles one by one and learning as I go, but it is starting to look promising.
This thread is to serve two purposes:
1) Gather my thoughts on how things are going to work so potential users can chime in on possible tweaks or changes to the features and how they should work.
2) Serve as a rallying call for any (preferably more experienced) coders who wish to get involved. I will post up any problems that I am having surmounting various issues, please feel free to help out on those. If an experienced coder liked the project that much and wanted to take the lead, I have no issues with that, as long as it remained open source.
So, with that out the way, here is what I am thinking so far:
Overall idea is pretty similar to rlToday - a script (ie a .INI or .XML file) which lists Widgets is processed and the result is drawn on the screen.
For example, here is an example INI file for a background (say transparent) PNG with a clock overlaid in the middle of the PNG, that has different layouts / images for portrait and landscape mode on a qVGA device.
Code:
;ini profile for qVGA (240 width and 320 width)
;PORTRAIT
[PortBG]
width=240
widget=image
clickable=0;
image="bgport.png"
x=0
y=0
[PortClock]
width=240
widget=text
subwidget=clock
clickable=1
clicktype=exe
clickstring="<exe to launch calendar>"
dateformat = "dddd MMMM d"
x=120
y=25
origin="cc"
;LANDSCAPE
[LandBG]
width=320
widget=image
clickable=0
image="bgland.png"
x=0
y=0
[LandClock]
width=320
widget=text
subwidget=clock
clickable=1
clicktype=exe
clickstring="<exe to launch calendar>"
dateformat = "dddd MMMM d"
x=160
y=25
origin="cc"
The [Name] of each section actually does nothing, but it will be useful in debugging / error messages ("Image for [PortBG] not found!").
Widget = choses which kind of widget it is (eg Image, Text)
subwidget = choses the subtype of widget (eg clock is a subtype of text)
The Width= entry is an idea I came up with to handle multiple screen orientations and resolutions within one profile. Basically, as this is not intended to be a full-screen app, the only relevant dimension is the screen width. Each widget therefore has an associated width. When the screen is rendered, it will check what the current width is and only render widgets that match that width. Furthermore, if a script has entries for resolutions not supported by your device, these will be ignored. Profiles are likely to be a directory with one .INI file and assorted images. Images can be in subdirectories, say grouped by width (ie a "240" dir and a "320" dir for qVGA) - that way you could release a skin as one zipped dir that supported all devices and resolutions, and you would not need to upload the "480" and "640" dirs to a qVGA device, thus saving storage space.
Each widget also has x/y coords, which usually refer to the top left, but the origin entry can change that (eg cc would be centre horizontally and vertically)
Each widget will also be able to be specified as clickable, with options as to what to do when it is clicked.
With this system it should be possible to create most things, however, here is what I am currently NOT planning on doing:
I am not aiming at offering tabbed pages of widgets, or an easy way to change widgets without writing a new script. This is aimed at a companion to something like UltimateLaunch for handling the top of the screen - a Clock, SMS / Missed Calls / VM messages, BT / WiFi status and toggles etc.
I am currently using VS2005 and the WM5 SDK, but the app is still so simple that this could probably be changed. I would like to support as much as possible, but am not overly worried about providing backwards compatibility beyond WM5. I am using Native Win32 - I want to avoid as much bloat as I can.
Planned features:
Per-pixel Alpha PNGs - IMPLIMENTED
Widgets parsed from INI - IMPLIMENTED
Parse only items from INI that match screen caps - IMPLIMENTED
Display only items that match current screen width - IMPLIMENTED (Effectively switch profile on screen orientation change)
Options screen to set current profile
Widgets
======
Text Type: - IMPLIMENTED
Source: String in INI - IMPLIMENTED
Source: String in Registry
Source: Date from format string - IMPLIMENTED
Image type: - IMPLIMENTED
Plain image - IMPLIMENTED
Status Image - Registry value
Toggles - BlueTooth / WiFi / Phone etc
Other features
===========
Multiple screen resolutions supported per INI - IMPLIMENTED
Detect Power but no Activesync - Allow enabling of BlueTooth for automatic pairing with in-car BT handsfree.
Current questions and stumbling blocks:
Having issues finding a lightweight way of displaying per-pixel alpha PNGs. Current thinking is that AlphaBlend is perfectly capable of doing the blending, it is just SHLoadImageFile that is stripping the alpha info.
See threads here and here
Not sure how I am going to handle toggling of BT / WiFi. Could use VJ's tool, but I would rather do it in my code. Any pointers on how to do it and maintain maximum WM5 / WM6 compatibility would be appreciated - VJ's tool will not toggle WiFi on my Kaiser anyway...
Could do with decent chop and chomp routines (split by char and remove leading / trailing whitespace) - does anyone know an easy way to do this in native code?
Need to work out how to find the size of a text string in pixels *before* it gets drawn to the screen with ExtTextOut
Need to impliment a date format string to text string converter that can handle date and time objects in the same string
Currently I use a bit of code to look at the string and pass it to either GetDateFormat or GetTimeFormat, but not split the string and pass relevant bits to relevant routine, then reassemble.
Need to make whole thing a today item, but delaying doing this as it seems that debugging will be harder? I also guess this would be quite easy, so I am planning on leaving this until near the end. Any advice on this subject would be appreciated.
I am interested in this. I don't know C++, but I have experience coding with other computer languages. I'll definitely be following this thread and watching for updates.
iContact source contains some pretty lightweight INI library. It isn't written by me, and it's called SimpleIni. Everything is contained in one .h file and it's very easy to use.
good luck,
larna
larna said:
iContact source contains some pretty lightweight INI library. It isn't written by me, and it's called SimpleIni. Everything is contained in one .h file and it's very easy to use.
good luck,
larna
Click to expand...
Click to collapse
Nice one, thanks
I got simpleini in and working - you were right larna, it was really easy and pain-free. Thanks!
Update:
I have a working prototype.
All basic functionality coded - text and image widget types, orientation switching, ini parsing...
Currently still not a today item, and there is loads to do in terms of error checking and freeing up memory etc, but it parses INI files OK
Once I have done some tidying up, I will release some source and maybe a demo EXE.
Hey!!
I'm already developing an application which load and extends rlToday Themes!
sources will be released soon!
The app is XIAMultitheme:
Done:
- fully working rltoday themes on a HWND
- done today plugin
- loading external dll
- all widgets are external dll
To do:
- avoid image loading via ImageFactory due to memory leak on wm6x
- port to CxImage to load PNG
- use AAROT to free rotate images (analog clock)
- today plugin does not load the engine yet
http://www.xiaprojects.com/?section=All&project=XIAMultiTheme
what do you think? mail me on priv (stefano) on xiaprojects.com
stefanux said:
Hey!!
I'm already developing an application which load and extends rlToday Themes!
sources will be released soon!
The app is XIAMultitheme:
Done:
- fully working rltoday themes on a HWND
- done today plugin
- loading external dll
- all widgets are external dll
To do:
- avoid image loading via ImageFactory due to memory leak on wm6x
- port to CxImage to load PNG
- use AAROT to free rotate images (analog clock)
- today plugin does not load the engine yet
http://www.xiaprojects.com/?section=All&project=XIAMultiTheme
what do you think? mail me on priv (stefano) on xiaprojects.com
Click to expand...
Click to collapse
hi stefano
i see nothing on your web site , nor screenshots nothing in download binaries
Why ???
evilc said:
Update:
I have a working prototype.
All basic functionality coded - text and image widget types, orientation switching, ini parsing...
Currently still not a today item, and there is loads to do in terms of error checking and freeing up memory etc, but it parses INI files OK
Once I have done some tidying up, I will release some source and maybe a demo EXE.
Click to expand...
Click to collapse
can you upload here the demo program ?
Sounds pretty neat!
I don't understand some of the terminology you use, but I think you may be talking about a feature I had an idea for:
profiles (XML files) can be associated with a today plugin such that you can make a profile appear in the today plugins list for each skin (XML file) you have installed - thus making each XML profile behave like it was a today plugin in it's own right.
Is that what you are talking about?
brunoisa10 said:
can you upload here the demo program ?
Click to expand...
Click to collapse
Demo uploaded to first post. Unzip it to \Storage Card\shared on your device and run.
BE AWARE, there is very little error checking when parsing the INI.
If you omit a horizres line for any widget, for example, the program will crash.
Well I checked out XIAMultiTheme and it looks promising.
I was not aware that there was a memory leak bug in IImagefactory, I wasn't planning on using it in the final version anyway, so no biggie.
If XIAMultiTheme is capable of doing what I had envisaged for openClock, I will probably stop development, as you obviously know what you are doing much more than I do
However, a couple of points:
1) Size.
XIAMultiTheme seems to be a lot bigger and requires .NET - This seems to mainly be to do with the CxImage library - just PNG support seems to add more size than my entire app is! I am flabberghasted that supporting per-pixel Alpha PNGs takes this much, an alphablend routine can be done in a K or two, hundreds seems overkill. Apart from the requirement for rotation (for analogue clocks) I do not see why a full image lib is needed. Just a load and alpha blit.
2) Orientation awareness.
As in I don't see any in XIAMultiTheme. I am really happy with the way I have handled this in openClock - each item in the INI (XML in your case) has a "horizres" value associated with it. At render time, current screen width is compared to each item's horizres and if it matches, the item is drawn, if it doesn't then it isn't shown.
This provides a nice way to combine portrait, landscape and multi-res capabilities into one theme. And as long as you allow relative paths in the theme(eg 320\320bg.png, 240\240bg.png, common\common.png) then you can have a theme which supports all resolutions and orientations, and allow the user to store what they want on their PPC (eg if their device is qVGA, they know they do not need to put the 640 and 480 dirs on their PPC for a given theme, as they won't be used)
3) Stateful buttons.
Items like a voicemail button / wifi button etc should probably have two images associated with them - one for "no messages", one for "have messages". I was planning on putting something in openClock along the lines of specifying a reg key, an operator and an image.
eg:
regkey=HKEY_LOCAL_MACHINE\...
on=thisimage.png, gt, 0
off=thatimage.png
To set to thisimage if the key is of value greater than (gt) 0 or thatimage.png if not.
Good luck!
evilc said:
just PNG support seems to add more size than my entire app is!
Click to expand...
Click to collapse
Yep. Same goes for MortButtons... (and MortPlayer, but there, the player itself is bigger in relation...)
I am flabberghasted that supporting per-pixel Alpha PNGs takes this much, an alphablend routine can be done in a K or two, hundreds seems overkill.
Click to expand...
Click to collapse
The alphablend routine is in the Draw method, and even in source code not much more than 1kB.
The trouble is to load the PNG without losing the alpha information. With Windows' API, you can't do it - there's only the crippled SHLoadImage. So you need the entire code to decode PNGs, i.e. libpng, which in return requires zlib - over 200kB only to load PNG! The remaining kBs are spend to load/decode JPEG (quite some kBs, too), GIF (if enabled), BMP, ... and some basic image processing (resample, rotate, ...).
btw, you might want to check MortImg.dll and MortImage.lib, which is a (quite) simple wrapper. If only one image library is used, at least some memory on the device is saved (and if MortButtons or MortPlayer since b72 is used, also main memory).
Check out http://mort.svnrepository.com/svn/mort/MortTools/trunk with any SVN client (e.g. Tortoise), use "guest" for login and password.
evilc said:
Well I checked out XIAMultiTheme and it looks promising.
I was not aware that there was a memory leak bug in IImagefactory, I wasn't planning on using it in the final version anyway, so no biggie.
If XIAMultiTheme is capable of doing what I had envisaged for openClock, I will probably stop development, as you obviously know what you are doing much more than I do
However, a couple of points:
1) Size.
XIAMultiTheme seems to be a lot bigger and requires .NET - This seems to mainly be to do with the CxImage library - just PNG support seems to add more size than my entire app is! I am flabberghasted that supporting per-pixel Alpha PNGs takes this much, an alphablend routine can be done in a K or two, hundreds seems overkill. Apart from the requirement for rotation (for analogue clocks) I do not see why a full image lib is needed. Just a load and alpha blit.
2) Orientation awareness.
As in I don't see any in XIAMultiTheme. I am really happy with the way I have handled this in openClock - each item in the INI (XML in your case) has a "horizres" value associated with it. At render time, current screen width is compared to each item's horizres and if it matches, the item is drawn, if it doesn't then it isn't shown.
This provides a nice way to combine portrait, landscape and multi-res capabilities into one theme. And as long as you allow relative paths in the theme(eg 320\320bg.png, 240\240bg.png, common\common.png) then you can have a theme which supports all resolutions and orientations, and allow the user to store what they want on their PPC (eg if their device is qVGA, they know they do not need to put the 640 and 480 dirs on their PPC for a given theme, as they won't be used)
3) Stateful buttons.
Items like a voicemail button / wifi button etc should probably have two images associated with them - one for "no messages", one for "have messages". I was planning on putting something in openClock along the lines of specifying a reg key, an operator and an image.
eg:
regkey=HKEY_LOCAL_MACHINE\...
on=thisimage.png, gt, 0
off=thatimage.png
To set to thisimage if the key is of value greater than (gt) 0 or thatimage.png if not.
Good luck!
Click to expand...
Click to collapse
thanks you for your good words
1) beta version will be lighter ... (need to known what image loader use)
2) will be done on Page component (tab themes are already working)
3) will be done on sensor dll with "regex" (maybe)
XIAMultiTheme is in alpha development...
I would like to "merge" code with you or may be DLL collaboration.
XIAMultiTheme does NOT need .NET it's low level GDI "C" source
When XIAMultiTheme go on Beta status the dll will be around 10kb
Configurator is .net
Thanks you
Thanks for that mort!
However, if my entire app is (currently) 61K and it supports per-pixel alpha PNGs (Via the apparently bugged IImagefactory), then surely it is more than possible in less than 100K.
It seems like libpng must be grotesquely bloated for our needs. In an ideal world, someone would re-code SHLoadImage to not lose the alpha channel for PNGs. Maybe a workaround would be to convert the PNG into a 32bit per-pixel BMP with alpha before it is passed to SHLoadImage, as SHLoadImage deals with alpha BMPs just fine and AlphaBlend works just fine with AC_SRC_ALPHA data.
stefanux said:
thanks you for your good words
1) beta version will be lighter ... (need to known what image loader use)
2) will be done on Page component (tab themes are already working)
3) will be done on sensor dll with "regex" (maybe)
XIAMultiTheme is in alpha development...
I would like to "merge" code with you or may be DLL collaboration.
XIAMultiTheme does NOT need .NET it's low level GDI "C" source
When XIAMultiTheme go on Beta status the dll will be around 10kb
Configurator is .net
Thanks you
Click to expand...
Click to collapse
Hi stef,
I am more than happy to help out on your project with design ideas, testing and proofreading of english translations.
I have plenty of ideas on what the ultimate today screen widget app should feature, I just had to set my sights lower due to my (lack of) coding abilities.
Do you have a forum or something on your site? I don't see one.
I am slightly concerned about point (3) and your regex example. I would maybe try and keep it simpler, XML is already a little complicated for non-technical users to understand, throwing regexs into the mix may be the straw that broke the camel's back. That's why I went with INI files - simpler to use for lusers
evilc said:
Thanks for that mort!
... it supports per-pixel alpha PNGs (Via the apparently bugged IImagefactory), ....
Click to expand...
Click to collapse
Please try to do this test:
load 20 png's with imgfact. and start drawing all of them like a simple animation for 10 fps... image[]->Draw() after 5 minutes my application will blow up my pda (wm61) I thinks it's a "COM" bug because it happend only calling "Draw"
stefanux said:
Please try to do this test:
load 20 png's with imgfact. and start drawing all of them like a simple animation for 10 fps...
Click to expand...
Click to collapse
Are you kidding??? 10FPS? I have a kaiser!
Seriously though, if we can get a code snippet that proves this, surely we can get MS to issue a patch?
10/16/08--
It is 12:00 central time (17:00 GMT I think) and I will close voting at 5:00pm Central Time (22:00 GMT) today. So that leaves you just 5 Hours to make your vote. I will try and post the winner up here later tonight, or you can check yourself at www.gudensoft.com.
Thanks!!
10/14/08--
First, thanks for all the great ideas. I would love to develop all of these if I could, but we have to decide on just one of the programs! So, Since I couldn't add a poll to this thread, I added it to HERE.
CLICK HERE TO VOTE!
I bet I know which will win, but who knows? The poll will end Thursday or Friday (depending on if it is a close race or not).
Thanks
Gudy
10/10/08--
Hey guys,
I want to know what cool program, functionality, or software you would like to see created. I am a .net programmer (among others) and would like some ideas of projects you would like to see. I would like to stay away from a graphic intense program and involved games, so think functionality, usefulness, fun, etc. If I get some good ideas, I will then add a poll, vote on the best one, then build it. I will release it under my donationware license which means it will be free. Right now I am finishing up my Golf Gps program (and will continue to support), but will start this project once we get it deceided. So Shoot me your ideas!
Gudy
cool a programmer who need ideas
I have proposed something here: http://forum.xda-developers.com/showthread.php?t=434925
though it would maybe not appear as a grateful program for a developper ( a toolkit for other programs), it could be a good way to have a large diffusion through many config panels in different programs
it was just an idea
Wishlist
Hi,
Maybe simple for .NET, but for me impossible to do (without performance/battery penaulty) with basic4ppc or mortscript. And thats all I can handle.
What I would like to have is a program that enables me to execute programs when specific events occur. I'd like to know when AC power gets connected/disconnected, when there is a change in screen orientation, and when a headset gets connected/disconnected and so on. Maybe even when an internet connection through WIFI is available/unavailable.
Also I'd like to know is a specific BT device is connectable/conneted. I'd like to know if a specific WIFI network is connectable/connected. I'd like to know if I'm at a specific location. All event driven, without a performance consuming programing loop or battery drain.
Yeah, all or even some of those options would make my digital mobile life so much easier
Good luck huntig for input, if you ever get bored contact me and make me happy
Cheers,
Cacti
le_cactus said:
Hi,
Maybe simple for .NET, but for me impossible to do (without performance/battery penaulty) with basic4ppc or mortscript. And thats all I can handle.
What I would like to have is a program that enables me to execute programs when specific events occur. I'd like to know when AC power gets connected/disconnected, when there is a change in screen orientation, and when a headset gets connected/disconnected and so on. Maybe even when an internet connection through WIFI is available/unavailable.
Also I'd like to know is a specific BT device is connectable/conneted. I'd like to know if a specific WIFI network is connectable/connected. I'd like to know if I'm at a specific location. All event driven, without a performance consuming programing loop or battery drain.
Yeah, all or even some of those options would make my digital mobile life so much easier
Good luck huntig for input, if you ever get bored contact me and make me happy
Cheers,
Cacti
Click to expand...
Click to collapse
Doable, handy, not a massive undertaking, I like it! Not sure I would go the .net route on something like this, as really a GUI is not required (except for settings maybe) and the overhead is large with .net. Certainly will add it to the list. Keep them coming!!
t0k0m0k0 said:
cool a programmer who need ideas
I have proposed something here: http://forum.xda-developers.com/showthread.php?t=434925
though it would maybe not appear as a grateful program for a developper ( a toolkit for other programs), it could be a good way to have a large diffusion through many config panels in different programs
it was just an idea
Click to expand...
Click to collapse
This would be pretty difficult unless all of developers used the same programming langauge/technique. The only real feasable way I see this working would be developers using a common set of graphics. That would be more of a graphic undertaking instead of programming. I do like the idea, but pretty hard to impliment.
Thanks
Gudy
I would love to see something like Launchy for launching apps and files etc. as well as quick search of various types online. I'm guessing the on the fly search would require too much processing power, but if it's doable it would be awesome.
http://www.launchy.net/
I'm interested in new ideas too. I also use B4PPC.
Here's a few ideas:
-A tamagotchi, really. I was about to try this out tonight but Paint hates me.
-An app launcher like PetitLaunch on PalmOS. It's something that can pop from any app (hardware button) and when you type in extra letters it filters which apps are shown. I got this started and I can give you the files if you want.
-Pursue the development for Tippy. The source is on Nicbou.com/downloads if you want it.
-A time clock. A friend of mine notes down how long he works to make sure he doesn't get screwed and it takes him several minutes every week. He doesn't have a Pocket PC but maybe someone would be interested in something that tracks the hours you work and calculate the salary. I almost did this too.
And don't forget to share the source! If you need any help with B4PPC I'm here
galt said:
I would love to see something like Launchy for launching apps and files etc. as well as quick search of various types online. I'm guessing the on the fly search would require too much processing power, but if it's doable it would be awesome.
http://www.launchy.net/
Click to expand...
Click to collapse
Sounds simular to the app launcher listed in the next post, seems like there is a theme going on here, you all need some sort of good app launcher.
Gudy
I'd like the Launchy features for search-on-the-fly off on board apps and file launching, but ever more for different site searches (google, maps, wikipedia, live, youtube, Amazon, etc).
N1c0_ds said:
I'm interested in new ideas too. I also use B4PPC.
Here's a few ideas:
-A tamagotchi, really. I was about to try this out tonight but Paint hates me.
-An app launcher like PetitLaunch on PalmOS. It's something that can pop from any app (hardware button) and when you type in extra letters it filters which apps are shown. I got this started and I can give you the files if you want.
-Pursue the development for Tippy. The source is on Nicbou.com/downloads if you want it.
-A time clock. A friend of mine notes down how long he works to make sure he doesn't get screwed and it takes him several minutes every week. He doesn't have a Pocket PC but maybe someone would be interested in something that tracks the hours you work and calculate the salary. I almost did this too.
And don't forget to share the source! If you need any help with B4PPC I'm here
Click to expand...
Click to collapse
I had to look up tamagotchi, either I am too old, or just out of the loop to know that 10 million of these things were sold! Wow! That could be fun, but would take a pretty fancy AI type system to really be fun.
A form of Tippy is already out there, 1-calc has some of the features built in already.
A time clock could be cool, maybe a stop watch type thing perhaps?
Never used B4PPC, I mainly use C# and Visual Studio. It looks like the old Visual Basic for desktops. And last but not least, depending on the project, I more than likely will release the source.
Thanks!!! Keep'em comin!
Gudy
File Explorer Needs Help
Has anyone wanted to see a preview image in explorer's folder??
I'm not talking about fexplorerext2. although it is a fantastic enhancement; it takes a long time to load the preview immages.
I have a better idea (well, actualy MS thought of it first)
THUMBS.DB
for every folder that has an image file, this dll is created to replace cache of images. this way ou do not have to load it everytime and scale them down for thumbnail view. it is already there specificaly for each folder.
This alows the explorer to show a preview of the first image in the folder (or last created/accessed)
This is whatt I think WinMo is lacking - windows. lol.
I do not care much for the tabbed browsing. it hurts my head. too much scroling and not enough info. Icons work better I think, and waste less space on an already small screen.
well, that's been on my wishlist for a very long time. a dll that ataches to the already existing explorer making it work better.
Thanks for workin g on something new
program that makes led lights flash when phone rings would be nice
Interesting...I will have to think about how to tackle that. It would basically take a new file explorer (like total commander). This might be a bit larger than I want to tackle, but will research it a bit before ruling it out.
GUdy
bedaweed said:
program that makes led lights flash when phone rings would be nice
Click to expand...
Click to collapse
This would be very difficult as not every device handles the leds the same. Also, not every device has the same leds (color, # of, etc). I think No2Chem has a int. driver, but think it is only for the titan. Would be cool though...
Gudy
a system-wide launcher dock program like that on the velocity 103 PPC..
here's the URL for the review and video of the app (and the phone)
-------------------------------------------------------------
a new top bar replacemeent/notification system much like the "android Notification Drawer" it can replace the bubble (multiple) notifications icon when you got multiple and simultaneous notifications.. and also make it finger friendly (unlike M2D, no need to go back to homescreen to check email/sms previes and also calendar events, calls, etc.. also unlike big taskbar - from the touch phones, this'll have previews)
video: http://www.youtube.com/watch?v=z7qbPa1O8Ys&eur (at the 2 minute mark) , http://www.youtube.com/watch?v=hy-YcGNyJds
mjg7876 said:
Interesting...I will have to think about how to tackle that. It would basically take a new file explorer (like total commander). This might be a bit larger than I want to tackle, but will research it a bit before ruling it out.
GUdy
Click to expand...
Click to collapse
Fexplorer2 is basically a dll that works with the original file explorer context menu. there is a small exe that overwrites the original explorer to make it think that the explorer"s context menu has already been opened.
in a way it maybe possible to write a new dll and two exe
EXE 1 to replace the file explorer
EXE 2 to make thumbs db
DLL (conte4xt menu that alows to view as thumbnails/list etc ; as well as launching the second exe to make a thumbsdb)
maybe you can get some help from Hou Ming, the guy that made that program before.
it would be cool if you could get some of the old emus like pocket gba and pocket snes with window 6.1 I know i would be happy.
le_cactus said:
... when AC power gets connected/disconnected, when there is a change in screen orientation, and when a headset gets connected/disconnected and ...
Click to expand...
Click to collapse
I have been looking for a program that would stop the music (S2P, Audio Manager, or WMP etc...) if during playback of the music the headset is removed. Or for instance, when the device is on vibrate and you connect headset, it automatically changes profile to normal or something.
Another one is when I dock my device (or connect AC basically), I'd like clock program (or home screen, or photo slideshow, etc...) to come up automatically.
A feature that I miss from my older phones is the ability to set them to beep every minute during a phone call.
Now these are very general and not specific features. If you have any questions, don't hesitate to contact me!
Thank you,
SiNAra
ytsejam_ said:
a system-wide launcher dock program like that on the velocity 103 PPC..
here's the URL for the review and video of the app (and the phone)
-------------------------------------------------------------
a new top bar replacemeent/notification system much like the "android Notification Drawer" it can replace the bubble (multiple) notifications icon when you got multiple and simultaneous notifications.. and also make it finger friendly (unlike M2D, no need to go back to homescreen to check email/sms previes and also calendar events, calls, etc.. also unlike big taskbar - from the touch phones, this'll have previews)
video: http://www.youtube.com/watch?v=z7qbPa1O8Ys&eur (at the 2 minute mark) , http://www.youtube.com/watch?v=hy-YcGNyJds
Click to expand...
Click to collapse
The launcher on the 103 looks a lot like manilla, I know it is diff, but to me it seems mainly by presentation, not functionality. I do however like the notification top bar like that on android. Not sure how difficult taking over the top bar would be. I will do some digging.
S.V.I said:
Fexplorer2 is basically a dll that works with the original file explorer context menu. there is a small exe that overwrites the original explorer to make it think that the explorer"s context menu has already been opened.
in a way it maybe possible to write a new dll and two exe
EXE 1 to replace the file explorer
EXE 2 to make thumbs db
DLL (conte4xt menu that alows to view as thumbnails/list etc ; as well as launching the second exe to make a thumbsdb)
maybe you can get some help from Hou Ming, the guy that made that program before.
Click to expand...
Click to collapse
Can you give me a link to this? The only thing I could find (quickly) was sketchy at best. Still seems a bit much, but would like to know more about this Fexplorer2 thing before nuking the idea.
Gudy
Hello, XDA!
I have created my own 2D game engine that utilizes OpenGL and sports many features to help make programming 2D games for Android as quick and simple as possible. I created this engine for use in my own projects but then I thought why no make it open-source? I think other people could benefit from this and input from other developers could help fine tune this thing so it's as good as it can be.
So I gave my engine the name "BobEngine" after my online alias and uploaded the first public release called "BobEngine 1.0 Thingama" to GitHub. That was months ago and now I've finished working on the next update: BobEngine 2.0 Shishka.
I've got a post on my website detailing what's new in update: http://www.bobbyloujo.com/2015/01/bobengine-20-shishka-update.html
BobEngine uses a similar structure to GameMaker games so if you've ever used that you may be interested in BobEngine. BobEngine uses a specialized BobView to display the content of Rooms. Rooms are collections of GameObjects which each have a graphic and attributes such as x and y positions, width, height, angle, frame, etc... Rooms and GameObjects also have step, newpress, and released events built in. The step event happens each frame, the newpress event happens when a new pointer is touched on the screen, and the released event happens when a pointer is lifted from the screen.
There are many other tools included with BobEngine and the best way to start learning how to use them is have a look at the examples that are included! In the GitHub repository you'll find an Android Studio project called "BobEngine". This project contains the "bobEngine" library module that you'll need to include in your own projects if you want to use BobEngine. Also in the BobEngine project are modules for each of the included examples. Currently there are examples that demonstrate the structure of a BobEngine game, how to use input from the touch screen, and how to manipulate the camera. I'll be creating more examples in the future to show off all the things you can do with this engine!
All the methods and data members in BobEngine are internally documented and the examples include a lot of internal documentation to help you out as well.
I'll keep updating the library with new things as I think of them. If there is anything you think should be added go ahead and post about it in this thread.
Benjamin Blaszczak
a.k.a. Bobby Lou Jo
@Bobbyloujo on Twitter
Edit: Forgot the GitHub link: https://github.com/Bobbyloujo/BobEngine
@Bobbyloujo
Thanks man will try this today and welcome 2 xda :highfive:
Thanks sir...pls give us some game template made from your lib
Great job man. It looks great.
I will try as soon as possible
Sylvain
Thanks man. Will surely try it out. good work.
Awesome, just what I've been looking for. Thanks!
nice work, and thanks for putting your time and effort into it.
Could this be used to recreate "biomenace" for android?
Thanks everyone!
@berlyshells Anything you want to see in particular? I could probably throw together a Flappy Bird clone real quick or something...
@verbuyst It certainly looks doable if you put the time and effort into it.
Bobbyloujo said:
..
Click to expand...
Click to collapse
im not really looking for anything in particular..probably any game source with comments (of the functions/what for is this code etc..) inside the code would be nice haha i just requesting but its you're choice sir im sorry im just a newbie
TIA
A new example has been added to the repository per @berlyshells request. This example is called Jumpy Bug and it is a Flappy Bird clone. It demonstrates what a full game programmed with BobEngine looks like.
Bobbyloujo said:
....
Click to expand...
Click to collapse
thank you very much sir..you are indeed a good hearted person..this is what i really love on xda
While working on my most recent project I made a few changes to BobEngine. The changes have been uploaded to GitHub.
Changes:
The extra functionality provided by BobActivity has been moved to a new class - BobHelper. A BobHelper can be used by any activity. When using a BobHelper, be sure to call its onResume() method from your activity's onResume() method. BobActivity still functions the same way it did before. BobHelper is useful for when you want to use some other kind of activity has your application's main activity but still want the extra functions from BobActivity. For example, if you want to use BaseGameActivity from the BaseGameUtils library for Google Play services.
SplashActivity has been totally changed because, frankly, it sucked before It is now an abstract class. Create your own activity for showing splash screens and extend SplashActivity. Implement the setup() and end() methods. In the setup() method, call addSplash(R.layout.your_splash_layout, time_in_ms) to add a splash screen to show as defined by an xml layout. You can add up to 10 layouts. Add them in the order you want them to show. The end() method is called after the last splash screen has been shown. In the end() method, start an intent for your main activity and then call finish() to close the splash screen activity.
Other small changes.
How many games have made using library? Looks cool)
Thanks..I tried AndEngine and it failed to import on my Android Studio.
Marshal3 said:
How many games have made using library? Looks cool)
Click to expand...
Click to collapse
Uhm... about three. There's Plane Popper, Crazy Taxi Driver, and I just finished Bounce the Beach Ball. Other than that, I've made a few examples that you can find in the repository - including a Flappy Bird clone. Also, I've been working on a platformer.
basil2style said:
Thanks..I tried AndEngine and it failed to import on my Android Studio.
Click to expand...
Click to collapse
Let me know if you need any help with BobEngine!
Hello again, XDA!
I've updated BobEngine again. This update brings the following major additions:
Gamepad support! You can now get input from any standard gamepad using BobEngine. A new example has been added to the Android Studio project that shows and explains how to use this new gamepad support. The example is called controllerexample.
Multiple quads per GameObject. Up until now, a GameObject consisted of a single textured quad (well, two triangles that form a quad). Sometimes it is useful to have many quads grouped together. If you use this, note that all the quads for each GameObject must have the same graphic. This is a very niche feature that I added for a particular purpose but didn't end up using myself. If you'd like an example of what can be done with this, let me know and I'll make one.
Some other miscellaneous stuff has been changed as well. It's been so long since I posted an update that I forget everything I changed! One useful change I made was to the camera features. Rooms now have their own camera values, meaning if you change the camera in one room, then switch to another and change the camera there, then switch back to the first room the camera will be where you left it in the first room.
BobEngine can of course still be found here on GitHub: https://github.com/Bobbyloujo/BobEngine
Here's a video showing off gamepad support: https://youtu.be/vRdaaaJnqGk
As always, if you have any questions feel free to ask. Also, if you've made anything with BobEngine I would love to see it! Whether it's something big or something small I'd love to see how others have used my engine
If you haven't already, please follow me on Twitter. My handle is @Bobbyloujo and I post updates about the games and things I'm working on there pretty frequently. Right now I'm working on something pretty big!
Another new update today!
Changes:
* TextDisplay object added! TextDisplay is a GameObject that can be used to output text! Text can be centered, aligned left or right. A new example has been added to show how this new object can be used.
* A new 'visible' attribute has been added to GameObjects. Setting gameObject.visible to false will cause the object to be hidden so it isn't drawn.
* The getAngle() function in Room.java was broken. It has been fixed so now getAngle() and getAngleBetween() both work properly.
* The getRatioX() and getRatioY() functions sometimes would not work properly on some devices. This has been fixed.
* When using multiple quads per GameObject, the performance has been increased. This was done by collecting vertex data from the quads in a way that does not require the concatenation of many arrays.
As always, the repository can be found here: https://github.com/Bobbyloujo/BobEngine
It'll really help me out if you follow me on Twitter: https://twitter.com/Bobbyloujo
And like my Facebook page: https://www.facebook.com/BobbyLouJo
If you have any questions or would like to report a bug, please leave a message in this thread or PM me on XDA, Twitter, or Facebook.
Have a great week!!
Version 3.0 Bobsled
It's been a while, but in the time since my last update I've added a lot of new things to BobEngine. Since it's such a big update, I'm giving it a new version name: v3.0 Bobsled. Here goes:
RoomCache - In BobView.java you will find a new static class called RoomCache. As the name implies, RoomCache is used for storing and retrieving instances of Rooms. The nice thing about RoomCache is that you can call getRoom(Class roomType) with any class type that inherits Room and the function will return an instance of that room type, even if you haven't manually added a Room of that type to the cache. The function getRoom(...) will search the cache for an instance of roomType and return it if one is found OR it will create a new instance of roomType using reflection and return that. You'll also notice that there is a getRoom(Class roomType, Object... args) function. If you have created a room type that takes parameters other than (BobView view) like a default Room does, you can use this method to pass the required arguments to initialize a new instance of that room type if need be. The cache holds a specified max number of Rooms. When the cache is full and a new Room is added, the oldest Room is removed. You can make your own RoomCaches, but each BobView has it's own cache with an initial size of 3. To access it from your BobView, just call getRoomCache().
Along with RoomCache, BobView has received two new goToRoom overrides: goToRoom(Class roomType) and goToRoom(Class roomType, Object... args) for switching to rooms retrieved from the RoomCache.
Input events (newpress, released) are now handled on the main thread (same thread as step event). Handling game logic on the separate input thread was causing a lot strange glitches in my games when values were being changed when I was not expecting them to be changed. Now, input will be handled on the same thread just before the step event.
For even more convenience and even quicker game development, a new constructor has been added to GameObject: GameObject(Room room). This will automatically assign an instance ID number AND add the object to the room. What typically looked like this before:
Code:
GameObject object = new GameObject(room.nextInstance(), room);
room.addObject(object);
Now looks like this:
Code:
GameObject object = new GameObject(room);
So simple! The old constructor is still there and behaves the same way for those who want it and for backwards compatibility.
Setting GameObject.visible to false will now hide all Quads belonging to that GameObject. This will not change the Quad.visible field for any Quad. Also, similarly to GameObject, Quads are now added to the GameObject when initialized.
Animations can now be played once and looped for a limited number of times. animationFinished() will return true when an animation has finished playing.
Animation class - a new class has been added to GameObject.java. This class can be used to predefine animations with a start frame, end frame, fps, and loop times.
Previously, I was using 3 coordinates for each vertex. I learned it's possible to use only 2 in OpenGL. Since the 3rd vertex is not needed, I changed the code to use only 2 vertices. I'm not sure if this actually caused any performance improvement.
Graphic.Parameters class - A new class in Graphic.java allows you to predefine Graphic parameters to use with GameObject.setGraphic(Graphic.Parameters params). Useful for when you want to switch between graphics on a GameObject often.
A new method in the Graphic class called setDimensions(int width, int height) allows you to set the height and width of the DPI level image you want to use for setGraphic(Graphic g, int x, int y...). Previously, you would have to use setPreciseGraphic(...) if you had different sized images for different DPI levels that have multiple graphics on them.
Set the color intensity of all GameObjects on a specific layer using Room.setLayerColor(int layer, float r, float g, float b, float a).
Graphics management (this is a big one):
The Room, Graphic, and GraphicsHelper classes have been updated to improve and simplify management of graphics for large games. A new GraphicsHelper.cleanUp() method makes it easy to manage graphics. You can choose points in your game to call cleanUp(). When called, Graphics that have not been used recently will be unloaded and removed from the GraphicsHelper. Graphics have a new public field called 'persistent' which when set to true will cause the graphic to remain loaded when cleanUp() is called. All non-persistent Graphics will survive through a set number of cleanUp() calls before they are removed. If a Graphic is removed but then a GameObject tries to use it again, it will automatically be re-added to the GraphicsHelper and reloaded.
You can also manually call:
Graphic.load() to load a graphic after is has been added to the GraphicsHelper.
Graphic.unload() to unload a graphic
Graphic.remove() OR GraphicsHelper.removeGraphic(Graphic g) to unload and remove a Graphic from the GraphicsHelper.
OKAY, I think that's just about everything. I actually had to look through the changes in the GitHub commit to remember all the things I've changed xD There are a few other small changes but I didn't think they were important enough to list. Now I want to ask you guys something:
Is there any interest in a full-blown tutorial series for BobEngine?
I could start with the basics, then explain more advanced features like graphics management. I could also take requests for certain tutorials. I could even cover general game development topics and how to implement them with BobEngine. Doing this would be a lot of work so before I dive in I really want to gauge the level of interest in BobEngine. So far, it's been difficult to tell how many people are interested because I haven't gotten an overwhelming amount of replies here but every once in a while I get a PM or email asking for help. So if you're using BobEngine raise your hand!
And of course: if you've made anything with BobEngine I would love to see it! I've seen a few things and it makes me happy to see you guys using getting some use out of my engine.
Thanks for your time! If you have any questions, just ask. You find any issues with BobEngine, post them here or on GitHub and will fix them. Also don't forget to let me know if you're using BobEngine!
Once again, the repo can be found here: https://github.com/Bobbyloujo/BobEngine
Thanks again,
Ben a.k.a. Bobby Lou Jo
Twitter: https://twitter.com/Bobbyloujo
Facebook: https://www.facebook.com/BobbyLouJo
you are great and i should more from you
I am a new man in the electronic area, and you have developed your own staff, you set a good example for me.
Jackiefire said:
I am a new man in the electronic area, and you have developed your own staff, you set a good example for me.
Click to expand...
Click to collapse
Thanks! Your support means a lot.