Multi-User Publishing Environment More information: http://www.mupe.net Notes for developers: - The release code has been compiled using ant, Antenna and Proguard. This is how you recompile the client JAR file: 1) Set JAVA_HOME environment variable refer to directory where java JDK is installed 2) Set J2ME_HOME environment variable refer to directory where WTK (wireless toolkit) is installed. 3) You also need to change the "wtk.home" property value in the "build.xml" to correspond with the J2ME_HOME environment variable. 4) Install Ant. One easy way to install Ant is to just copy the bin and lib directories into corresponding directories of JDK. 5) Install Proguard JAR files into WTK's bin directory. 6) Install Antenna into the lib directory where you installed Ant. However it should be ok as long as it Antenna in the classpath. 7a) Run "ant cldc1.1" in the command prompt. If everything is ok, the new client JAR should be in the bin directory after a few moments. 7b) If you need to compile the client for cldc 1.0 (without location api) you can do that with "ant cldc1.0". Download links: Ant: Download link: http://ant.apache.org/ Proguard: http://proguard.sourceforge.net/ Antenna: http://antenna.sourceforge.net/ - If you have trouble compiling the client in linux environment (the compiler does not like special characters in the code), you need to set the LOCALE for the console where you are running WTK from. You can set the correct locale with command: export LANG=en_US.ISO8859-1 - You might need to set the heap size to 64000 and storage size to 10000 to avoid problems with client running out of memory when using WTK. - If you are adding new plugin, UI module, or UI widget into the client, you need to add the class files into src/com/nokia/mid/appl/mupe/ClassMapper.java or else the classes won't be included when building the client JAR with Ant. version 3.01 ------------ - Added modulo in the available operators for evaluating parameter values. So, for instance a='10 % 3' gives value 1 for attribute 'a'. - optimisation: Only portion that intersects with default group (canvas itself) is updated. - Default values for item and resource creation can be changed via "defaults" tag. (see "new features how-to.txt") - Canvas creation parameter: defaultsize='true/false'. Set this to true if you want the canvas to use the closest supported resolution instead of full screen size. Only applies to full screen canvases. One can also set custom resolution with syntax defaultsize='176x208'. - Support for floating point with two decimals when using percentual values (ie. "12.23%"). - Calling Canvas.repaint() just after creating an UI on S40 phones caused blank screen. Replaced it with Canvas.flushGraphics(). - Sorting the services according to usage level on the main menu did not work. Fixed. - "stoptimer" takes "finalise='true'" parameter that calls the finalisation sequence before the timer is disposed. The finalisation sequence is called only if the timer was created with "finalise='true'". - graphics item: added "triangle" method. - ibutton: removed "framemode" parameter. The framemode is defined by if the button uses "resource" or "resources" parameter for defining the used image resources. - method: callplatform - calls the device platform with given URL. The URL can be a phone number for using the voice call, or web URL for showing a web page. The URL can also be something else if the platform has more support for different kinds of platform requests. (see "new features how-to.txt") - Graphics item: support for auto scaling vector graphics via autoscale='true' parameter. Graphics are automatically rescaled if the size of the graphics item changes. - Support for bitmap fonts for canvas string items. (see "new features how-to.txt") - Strings without width parameter that have multiple lines works correctly. The string is no longer drawn as one line text. - Support for modal item groups via modal='true' creation parameter. (see "new features how-to.txt") - Main menu displayed wrong kind of quit dialog (it had "main" option). - Loading icon (the indicator right up corner) is loaded only once for all canvases instead of loading it for each canvas. - Canvas prompt: autocaps='false' parameter disables automatic character capitalization. - Canvas prompt did not handle "max" parameter right way. Fixed. - Canvas prompt: if user keeps a number button down corresponding number is added to the prompt string. This is default behaviour of text input field of a mobile phone. - "getsnaphot" creates "on_media_error" event if phone runs out of memory when taking a picture with camera and returns to application UI. - Fixed support for 3gp video files. - If "changeservice" fails to connect to new service, the client reactivates the previous service. version 3.00a June 2007 ----------------------- Note: This version requires version 3.00 or above of MupeCore.jar - Tilemap: cellalign parameter for controlling how to align tiles globally. - Tilemap: cellalign parameter for addtile for overiding the default tile alignment. - Changed the default url in dev mode as "127.0.0.1:8780". - Creating items in canvas UI sometimes required "group" parameter, even tho it was not needed. version 3.00 Beta1 June 2007 ---------------------------- Note: This version requires version 3.00 or above of MupeCore.jar - client works without the "i_" and "g_" prefixes in the method calls. So, one does not need to write the "i_" or "g_" prefixes in the xml code anymore. - Optimised the message compression for current set of tags, parameters, and common values. - Renamed i_delete of choice group widgets (both canvas and form ui) into "removechoice" (or i_removechoice in old script syntax). - Renamed i_select of choice group widgets (both canvas and form ui) into "selectitem". (or i_selectitem in old script syntax). - Location plugin: new method "distance" calculates distance between center points of two triggers or distance between the current location and given trigger (see "new features how-to.txt"). - Rounded groups should update the UI under them only at the corner areas. - Commondialog: quit dialog gives an option to return to main menu, when using a MUPE service. - Cleaned the XML packer and made a single jar file for it. - Build script also repacks the XML files. - Removed "on__repeat" events from emulator, since they didn't work with WTK25 (or WTK22) and the emulator created random key repeat events which caused performance loss or weird behaviour. - Added 10 ms sleep after creating an object with Class.newInstance on emulator, since it sometimes crashed when trying to access the newly created object right after the creation. - When client falls back to cached version of media file, but the media file is not cached, the client client threw a NullpointerExcetion. Fixed. - Implemented features that makes moving from 2.xx to 3.xx version easier. - One can create templates using and
version 2.93a May 2007 --------------------- - Unpacking XML created an error on some XMLs (unpacker exceeded the size of the content). - if media server is not available, the client uses cached media files. I.e main menu loads even if master server is down. version 2.93 beta May 2007 -------------------------- - Creating subresource now accepts percentages as parameters for width and height. - Media Loader should recorver from restarting the server (and media manager). - When creating UI with type parameter defaults to - First working build of Location API plugin (see "new features how-to.txt") - New XML widget: iconlist (see "new features how-to.txt") - Dev mode: about dialog was loaded even tho it was not used. - Prompt: Added "qwerty" mode for devices with full size keyboard. The "qwerty" mode activates when a non-numeric key is pressed (say, letter "c") - Locked groups with no items in them now receive key input. - After connection to a service has failed and client has returned to main menu, the client should not still try to reconnect several times anymore. version 2.92b May 2007 ---------------------- - XML Widgets do not reserve any event hooks for internal use anymore. - Service icons on the start screen should not get messed up after registering to MUPE. This bug may have caused also other problems when changing active service. - Main menu loads much faster now. - Client tick is now 25ms instead of 100ms for better performance. - IRC subsystem reacts to most important irc protocol signals. - sometimes canvas choicegroup, multichoicegroup, iconselector and numberselector ended up in wrong item group. - iconselector was using wrong arrow graphics. - Gridview was shown even though it was created with "visible='false'" - "cache='false'" did not work with mupe media protocol. The feature is removed when using media protocol from now on, since it is obsolete. - Removed all the bogus services from application development mode and also about dialog that was out-dated. - g_break ends proccess of i_loop and g_foreach. If g_break is run in script that is not inside i_loop of g_foreach the whole script ends running (all sublevels). If g_break is called inside nested g_foreach or i_loop. Only the most inner loop is cancelled. - g_setselectable handles correctly if item that was set unselectable was the selected item. - Overriding selector movement did not check if the item is selectable item. version 2.92a Apr 2007 ---------------------- - Connects to official MUPE master server version 2.91b Apr 2007 ---------------------- Note: Remove previous version of MUPE before installing this version. - Empty conditional xml sections (, ) do not jam the client anymore on emulator. - Empty removes the hook from item again. - WTK 2.5 supported - Nested or interlaced and calls should not cause problems anymore as long as there is equals amounts of and calls. - Changed the client jar URL to correct one. - JAD file has more information about MUPE. - Made small changes into "quit" dialog, since the content of the dialog didn't fit properly on medium resolution phone. - Phone displays an error dialog instead of getting stuck if it cannot connect to master server. - Cleaned up the source tree. - Commondialog does not try to delete itself anymore, since that probably broke nested commondialogs (a commondialog opens another commondialog). version 2.91a Apr 2007 ---------------------- - Implemented i_roundrect for "graphics" item. - Changed "button" item to correspond the new looks. - Implemented rounded rectangle graphics routine, since the one in MIPD is not doing its job very good. - Common dialog is not using static graphics anymore. All the graphics are scalable. Should work much better on any screen resolution. - New UI group style "rounded", which draws a rounded background using fgcolor and bgcolor. Makes it easier to create custom dialogs. - Main menu UI is cleaned up for development use. The Development version of main menu does not include online chat UI or connecting to master server via "Get More". - Main menu UI is loaded when on emulation mode, otherwise the client starts in online mode. - Network notification of "unsubscribe" has been disabled for the time being. - New XML packer integrated with the client. Better error reporting and also much faster. - Removed the URL prompt under the "dev mode". it was unnecessary. - New parameter for defining resource: "recreate". Set this to false if you don't want to recreate a resource, once it has been created. Especially handy with global resources and multi UI applications. - Default application icon is defined as static resource ("static.defaultappicon"). - Emulated mainmenu uses resolution specific graphics and UI descriptions. - When creating client JAR with ant, all the unnecessary graphics are left out. - JAR and MIDlet name has been changed into "Mupe". - Fixed nasty bug where moving selector changed the UI's ID and caused a lot of seemingly random errors in running XMLs. - support for master server accessing features before only available to the main menu. version 2.90 Beta10 Apr 2007 ---------------------------- - Tilemap: i_shiftrows did not work right if the tilemap didn't have equal amount of rows and columns. - Tilemap: i_shiftcolumns did not work right if the tilemap didn't have equal amount of rows and columns. - Tilemap: new method - i_column - works same way as i_row, but fills one column with data instead of a row. - Tilemap: Uses 16-bit data internally, instead of 32-bit for saving memory. - new Widget: "prompt". Prompt is an one-line edit field which do not support T9 or full keyboard, but it can be used to input a short text without the fullscreen editor. - Static resources: Static resources are resources that stays in the memory even if the used service changes. Static resources can only be defined in the "main menu" to store graphics for the XML widgets. - g_beginload and g_endload. When g_beginload is called the subsequent media loading (gfx, xml, audio) only accumulates data of which resources needs to be loaded. When the g_endload is called, all the media is loaded at once (or only checked for updates) to save time used for loading. This feature only works with mupe media protocol. - Client didn't always know when it was displaying the main menu. Fixed. - Pressing * key opens an options dialog. - Quit dialog is using commondialog style. - Camera and audio recorder permits user input until the hardware is ready. - Common dialog is reimplemented using percentage values instead of absolute coordinates. - You can still enter an URL to subscribe a service (without master UI), by pressing '6' on the main menu. - Some minor bug fixes. version 2.90 Beta8 Mar 2007 --------------------------- - More main menu UI tweaks version 2.90 Beta7 Mar 2007 --------------------------- - Main menu UI tweaks - Common dialog shows descriptions of services before subscribing version 2.90 Beta6 Mar 2007 --------------------------- - If UI was recreated and there was message outside the template (but same reply from server) the message UI context still refered to the old deinitialised UI. Fixed. - Common dialog had wrong button text for 'information' type dialog - COmmon dialog now permits use of keypad and soft buttons while active (increased modality). - Latest main UI layout changes according to expert opinions. version 2.90 Beta5 Mar 2007 --------------------------- - Reply message received from server had wrong UI id, if the message was sent from UI that was not active. This resulted into some messages failing, especially item creation messages. version 2.90 Beta4 Mar 2007 --------------------------- - Message forwarding between UIs still had a bug, when using dynamic references in the message parameter, such as (global.var, group.var, this.var, selected.var, etc). Now it should work correctly. version 2.90 Beta3 Mar 2007 --------------------------- - Message forwarding between UIs did not work properly. - Commondialog has the question text displayed again. - Settings dialog lost focus on the UI when user clicked on the buttons, other than "back" button and it jammed the UI. version 2.90 Beta2 Mar 2007 --------------------------- - Some messages failed because they didn't have UI context. Especially pushed messages. Fixed. - Includes new version of common dialog and also "connect service?" dialog. - Chat channels are removed from the main UI and instead there is single "chat" icon with other icons, such as "Settings", "Get", "Share" and "About". - Other minor changes in the main UI. - Includes old 2.31f "settings" and "About" dialogs. - Client keeps track of if it has crashed during using previous service. I.e. the service has not been shutdown properly, but forced down. version 2.90 Beta Mar 2007 -------------------------- - New UI style - Possible to send client messages without UI context. Its possible to create templates inside templates etc. - Support for new mupe media protocol, via "mupe://" prefix. - Added "mediaport" service info that can be used for setting the media protocol port in the server. version 2.32a Feb 2007 ---------------------- - Client sends "ACK" messages to server (2.31c recommended) to keep socket connection up. ACK message is sent if there has not been any network activity for one minute. - Form UI did not have "id" and "title" attributes. - Error reporting had a bug in the parameters print outs. Fixed. - Support for Navigore GPS. Also a service discovery related bug fixed from the GPS module (thanks to Wesa Aapro for debugging and fixing the plugin). - Moving selected item only redraws the previous seledted item and the newly selected item. Previously the whole UI was redrawn. - Added method: for canvas ui. It moves the selector to corresponding direction. - New feature: debug screen. Shows 20 last debug messages in dedicated screen. the screen can be activated by , which pauses the client. The debug messages are generated via (as usual) with no extra parameters. - Emulated Bluetooth also sends on_bluetooth_devicediscovery_result event, which was missing. - Taking pictures and editing text in canvas (g_input and editfield) pauses the client preventing the UI or state changing while the client is in modal state. - It is possible to recompile client without Canvas UI, Form UI and/or plugins by changing boolean flags (INCLUDE_) in Defaults.java. - UI Timers were not paused with the rest of the client. Fixed. - commondialog's type parameter "notify" is now changed to "notification" (consistant with other values "information" and "confirmation"). - Image button has new mode "disabled". This optional mode resets the graphics when the i_disable medhod is called for the button. When the button is disabled it is not interactive. The graphics for the disabled mode are defined by extra value in the resource list (one extra "/imgresource" statement or the button is using index 3 in frame mode. - new attribute "anchor" that tells "id" of anchored item. - Implemented i_delete for canvas choicegroup and multichoicegroup. - Implemented i_clear for canvas choicegroup and multichoicegroup. - new conditional statement "i_inrange" (tests if given value is inside numeric range). - new method . Optimised branch conditional for avoiding writing long sets of "i_equal" clauses. - Services in main menu are sorted. The last accessed service is first and the least accessed is last. - Sounds didn't work when loaded locally from jar file. Fixed. - Errors are reported into client debug view. - Lots of minor bug fixes. - List view caption had buggy color definition. Fixed. - Support for IRC messaging - Canvas string: i_insert, inserts a string in the beginning of text and cuts text off from the end of the text according to given "max" characters parameter. - Canvas string: i_append, appends a string in the end of text and cuts text off from the beginning of the text accorcing to given "max" characters parameter. - Set network timeout to 30 seconds. Old value (10 sec) was too short. - Client network request timeout creates an "on_net_error" event. version 2.31f Sep 2006 ---------------------- - Automated ways of creating image subresources (see "new features how-to.txt" for details) - i_setimage does not require "resource" or "url" parameters, the current image resource is used instead if left unspecified. - If subresource with given id is already created, the older one is deinitialised before replaced by the newer one. - Font heights are available as attributes in canvas UI: "smallfontheight", "mediumfontheight" and "largefontheight". - The default selector movement is now more precise, when moving selector sideways. - Canvas method can be used to override the default selector movement. (see "new features how-to.txt" for details) - new common script language methods: i_settoken (sets value of string token) and i_removetoken (removes a string token), i_findtoken (returns index of token). (see "new features how-to.txt" for details) - new attribute for canvas image, "frame", which tells the currently used image frame. - The default font size in canvas ui is set to "small" (was set to "medium" before). - Error reporting had a bug. If the error was not xml related, it was not reported. - Converting xml back to string format now works better considering diplaying attribute references. - New boolean parameter for canvas string -"autowrap". Set this to false if the string should not automatically fit the text inside the text area. - New int parameters for canvas string - xoffset and yoffset. Sets the text placement inside the text area. - New method for canvas string - i_scroll. Scrolls the text inside the text area. (see "new features how-to.txt" for details) - XML Widget: multichoicegroup (see "new features how-to.txt" for details) - XML Widget: iconselector (see "new features how-to.txt" for details) - XML Widget: numberchooser (see "new features how-to.txt" for details) - XML Widget: textpane - scrollable text panel (see "new features how-to.txt" for details) - Notify-only messages left mupe "loading" icon visible on screen. Fixed. - Support for Nokia LD-3W GPS Module. Untested. - "Notify" type commondialog didn't have timeout value set. Fixed. - UI Timers reimplemented as timer tasks. Uses the java timer scheduling instead of calculating the timer activations manually. Should provide somewhat better timings (smoother animations etc). - Fixes for SMS push support (code was broken because of changes in the client starting sequence). - Bluetooth operations are now faked with emulator. The real BT operations hogged the system by using 100% cpu time. The BT is faked Until this is fixed in the emulator or the reason why this happensis known and handled properly. version 2.31e Sep 2006 ---------------------- - Client crashed when it was run the very first time on new phone. Fixed. - Removed MAX_CACHE_SIZE limiter. Cache can be larger on devices with lots of memory. - Font size of list view items is set to "small". Nokia N93 renders the medium size fonts exceptionally large, which didn't fit list view. - turns on server side client/script error logging. - Parameters of "serviceinfo" call were not evaluated. - Limiting RMS cache size was calculated wrong. Fixed. - "Command" item did not evaluate its parameters. - "g_alert", "g_startvibra" and "g_flashlights" did not evaluate "time" parameter. - Form UI did not evaluate "title" parameter. - g_stopsound did not evaluate "resource" parameter. - g_foreach did not evaluate its parameters. - g_send did not evaluate "event" and "error" parameters. - g_removecommand did not evaluate "id" and "sub" parameters. - g_load, g_unload and g_call did not evaluate "plugin" parameter. - g_send did not evaluate "type" parameter. - i_attribute did not evaluate "type" parameter. - Unless the Menu was closed without choosing any of the options, the menu text remained as "Close". Fixed. - If menu loses its focus, it is automatically closed. - canvas editfield did not work if the "max" parameter was unspecified. Fixed. - canvas editfield created on_change event twice for each change. Fixed. - Canvas string (and editfield) did not work anymore if its value was used as integer. Fixed. - Following color parameters are defined for "menu","listview","gridview" and "commondialog": parameter Meaning --------- ------ fontcolor All text. bgcolor Widget background. selectorcolor Selected item background. captioncolor Caption color. version 2.31d Aug 2006 ---------------------- - Menu text is changed to "Close" when menu is open. - Better error reporting. No more pagefuls of spam from one script exception. - Error reporting to server. - XML Widgets: changed all $(reference.var) to $(reference7.var) to not interfere with the application. - Alias for "$(reference.var)" - "$(ref.var)". Also: ref1,ref2,...,ref7. - Alias for g_setreference: "g_ref" - Client error reporting to server. - Cache size reporting via attributes: $(client.cachetotal), $(client.cacheused), $(client.cachefree) and $(client.cachefiles) - memory usage reporting via attributes: $(client.memorytotal), $(client.memoryfree) - "ok" button in information type common dialog was drawn too low. Fixed. - Cache information dialog in settings menu. - g_starttimer did not evaluate any of the parameters. version 2.31c Aug 2006 ---------------------- - Request resend timeout was unnecessarily long (1 minute), its now set to 10sec. - If cache was cleared from the settings menu, the file cache no longer worker until MupeClient was restarted. - SMS push thread is no longer running in the background, since many devices do not receive any messages if the client is already running. version 2.31b Aug 2006 ---------------------- - Client main thread and network thread is changed to Timer tasks. - XML Widget: Choice group (see xmlpacker/xml/mainmenu.xml for example code) - Downloaded media files that could not be used by the device (unsupported format) and files that are broken somehow are not cached anymore. - Client does not call Garbage collector anymore. - Client can now be fully obfuscated. - Serviceinfos are now cached in memory (instead of RMS database) for faster access. - There was a severe bug in the xml parser (uncompressed xml) that caused the client to jam when parsing the content. Fixed. (Same problem was also in server core). - Pressing arrow buttons rapidly for changing item focus jammed the client. Could not do that anymore. - Media cache was disabled. Data was cached in memory, but not saved into database. Cache is working again. version 2.31a Jun 2006 ---------------------- - Client is running garbage collector again once in a while (was disabled in alpha version). - Update checks are only run once a week. - service name "settings" is reserved - Setting "nocase='true'" for string comparison with i_equal, the comparison is case insensitive. - If message box was shown (with g_alert, g_debug onscreen='true' or another network error message) and client had a network error at the same time, that jammed the client. - Its possible specify the index attribute (the loop counter) for i_loop, using attr='attrname' parameter. - on_activation event is created for newly created UI that is shown on the screen. - on_deactivation event is created for newly created UIs that are not shown. - timer initialisation and finalisation message sequences didn't work. Fixed. - Found a bug in xml parser. Xml code like this " " was not handled properly, i.e. nested similar tags with parameters. - Reverted back to old image/sound downloading routine. The new routine didn't work on some phones with certain firmware versions. Because of this the on_resource_loading event is only received for 0% and 100%. - Background image of item group (and canvas ui) can be set with "resource" parameter, same way as with image item. - New function: g_hideloadingicon. Hides the loading icon of canvas ui. The loading icon is no longer shown for the UI. - Client asks if the user really wants to quit using MUPE. - Preview mode when taking snapshots is back as an optional feature (using showpreview='true' parameter with g_snapshot). - If taken snapshot does not fit on the screen the recorder creates a thumbnail image if g_getsnapshot was run in "preview" mode. - Item group could not be created without id parameter. Fixed. - First Implementation of Settings menu for main screen. - Canvas pool size for Nokia6600 increased to 20 (the number of simultaneous Canvas UIs in phones memory). - Unsubscribing service should not jam the client anymore. version 2.31 alpha May 2006 ---------------------- - Automatic update check no longer activates everytime the main menu is shown. - There was a bug in anchoring item group to another item group. This did not work and its fixed now. - fgcolor and bgcolor attributes now stay as (rrggbb) 24bit hex values, instead of 10-base integer values. Can be used as parameters to g_setcolors. - Changed way how client handles messages internally. - Using short "sleep" in the main thread instead of yield only. This should correct some problems with some phone models, such as client getting stuck when connecting to service. - Support for Xml widgets. Xml widgets are there to make it easier for the developer to create UIs. Xml widgets are like normal widgets, but their functionality is mostly in coded in Xml and such cannot be considered as native UI widgets, but as "macros". - XML widget: listview (see "new features how-to.txt"). - XML widget: menu (see "new features how-to.txt"). - XML Widget: common dialog (see "new features how-to.txt"). - XML Widget: Download progress dialog (see "new features how-to.txt"). - XML Widget: ibutton (button represented by a set of images. See "new features how-to.txt"). - XML Widget: edit field (See "new features how-to.txt"). - XML Widget: grid view (See "new features how-to.txt"). - Requests larger than 2048 bytes are considered as "uploads". The UI is notified of this with events: on_upload_start, on_uploading and on_upload_end. The on_uploading event receives percentage uploaded so far with parameter "upload_status". - new message for Canvas UI: g_sendtoback. Works as g_bringtofront, but does the opposite. - new parameter for Canvas Ui items: topmost. When set to "true" the item is considered as a topmost item, which resides on top of other items even if the other item is created after the item or tried to bring to front. There can be several topmost items, in which case the topmost items have their own zorder. - Support for utf-16 (unicode) character sets. - Found a bug in Mupe's base64 codec. Last 1-2 bytes were encoded wrong if the data needed padding. fixed. - Moving selector on screen no longer result in some items being redrawed two times. - "group" parameter was not evaluated in any item reference. Fixed. - When group was locked and the selection was auto-moved to the locked group the selection was moved to wrong item. Now its correctly moved to the 1st item. - Item group no longer updates the loading status image, from another thread. That might have caused drawing errors. - Now loading indicator is drawn separate of the UI, keeping it on top of item groups. - yielding other threads from main thread caused problems on some phone models. Added a small sleep in addition to the yield call. - "hook" parameter of i_event was not evaluated. Fixed. - New option for g_setselectorcolor; "previous". It sets the previous selector color. - keypad events no longer create game key events (such as moving the selector). - Offline images (graphics included in jar file) are now cached for faster access. - Media cache didn't store media type. Internal cache format is changed. First time the client is started the emulator clears the cache for format upgrade. This bug caused cached audio data to fail when being reaccessed. - loops and volume parameters of g_playsound weren't evaluated. Fixed. - Support for video formats when creating resources. (type='video' parameter) - g_pausetimer - pauses a timer without disposing it. - g_pausesound - pauses sound playback. - g_playvideo - plays a video resource on Canvas UI. (see "new features how-to.txt") - g_stopvideo - stops video playback. - g_pausevideo - pauses video playback. - Client updates are checked via the jad file instead of jar file. - Widened the byte code range of the client's tag space from 127 to 256. - loads and runs an offline Xml from jar file. Makes customizing client easier. - No more hassle with selector transparency. Canvas items have creation parameter called "drawselector", which can be set to false for individual items that do not need the selector drawn around them. - Added "border" parameter for "string" item in Canvas UI. When set to true the string item draws a border line around itself. This parameter can also be accessed via "i_setstyle" call. - Added parameter "hpadding" for string items. With this integer parameter, its possible to shift the text away from the horizontal boundary by given amount of pixels, when using left of right alignment. Works great with "border" parameter. - Fixed a bug from canvas string. If only the "width" parameter was specified, the bounding box of the string was calculated wrong, one line too high. - i_equal and i_notequal have "true" as the default value of "value" parameter. This makes it easier to do boolean checks. - Unchanged client-server protocol for future downwards compatibility. - Canvas strings can take the horizontal and vertical alignments from one parameter: align='left/center'. The 1st alignment (before the '/'-char) is horizontal alignment and the latter one is vertical alignment. - Tilemap: i_shiftrows had a bug. Fixed. - If UI was created with no selectable items visible and then a UI group with selectable items was shown, the selected item was left null. Fixed. - Moving the selector only updates the corresponding UI items (old and new selected item), instead of whole UI. - MediaLoader didn't report UI from malformed audio/video formats. version 2.30b Mar 2006 ---------------------- - Automatic update check and application installing. - If g_getsnapshot was called at creation time of UI the picture taking screen was lost behind the newly created UI. Same thing happened if g_getsnapshot was called from UI's on_create or on_show hooks. - Start screen UI should not recover better from network errors within subscribing and connecting to services. - More shortcuts in writing xml. This time for specifying event hook - just write a tag that starts with "on_" such as do-things-here - event "on_show" is created for the item just before the item is actually shown on the screen. So, its possible to do changes in the item before its drawn. version 2.30a Mar 2006 (official release) ---------------------- - "target" parameter (the alternate to "ui","id" and "group" parameters) changed to "item" parameter. It was overlapping with "target" parameter of i_intersects conditional. - Scrollbar item that implements (interactive) gauge in canvas UI (which needs more work). See "new features how-to.txt" for more details. - Media loader sends on_resource_loading events during media loading, with "resource_status" as parameter. See "new features how-to.txt" for more details. - Network latency calculations are now more reliable. - Pushed network messages don't mess up the network request hanling any more. - You can now send sms messages from mupe content. See "new features how-to.txt" for more details. - You can also send sms invites to mupe applications (using sms push registry). See "new features how-to.txt" for more details. - Canvas default group didnt receive on_create and on_show events after the canvas had been created. - Alternative notation for anchoring ui items: anchor='reference/anchor/anchorid'. Less xml = better Example: anchor='bottom_left/top_right/image1' - Changed delimiter of id and group to '/' in "item" parameter. The "." character got easily mixed up with "." characters used in attribute references. - Better color predefinitions in canvas UI. In addition to the color predefinitions available you can alter the color by giving a modifier in the end of the color definition, such as "white50%" and "pink120%". - new feature: g_in does not run the included script if the referred item does not exist. Can be used for testing if an ui item exists. - There was a bug in i_less,i_greater,i_equal and i_notequal that caused NullPointerException if the referred attribute (attr parameter) was not found. - Better error reporting in emulated mode. version 2.26rc Jan 2006 ----------------------- - IMPORTANT!!: Made TCP/IP the default protocol. FOR NOW ON USE TCP PORT TO SUBSCRIBE TO SERVER!!! Basically this makes running Http client manager on server side obsolete. (you can change default protocol from Defaults.java, if needed.) - Its now possible to define a set subresources from an image resource. This makes cropping within creating images obsolote. You can crop the image into smaller images already when creating image resource. (See "new features howto.txt" for more info) - Canvas didn't reset its selector color on Nokia6600 phone in certain situations. Its now fixed. - Added new boolean creation parameter for canvas items - "sticky". When set to true at creation, the created canvas item does not move when the item group is scrolled with "i_scroll" message. - Added five more attributes for canvas items: "top", "bottom", "left", "right" (screen coordinates relative to item group) and "sticky" (true if the item is not scrolled with i_scroll). - GPS module still had some bugs, fixed the bugs. Also removed "on_gps_location_data" event, which created too much traffic into the clients event buffer and made the data reading less time critical. - Changed the API of following messages: i_substring, i_stringtoken, i_numberoftokens, and i_stringlength. They now work similar to i_inc, i_dec and other math functions. Refer Client script Manual for more details. - Following attributes are now evaluated for attribute references: "name" parameter of i_attribute and "text" parameter of i_substring, i_stringtoken, i_numberoftokens, i_stringlength, i_inc, i_dec, i_multiply, i_divide, i_modulo, i_absolute, i_greater, i_less, i_equal and i_notequal. - "value" attribute of gauge did not work. Fixed now. - Changed Httposter class to NetworkClient and HttpListener interface to NetworkListener (was named badly). - After evaluating text of edit field into integer, the edit field did not work anymore. Had similar bug in some other UI items as well, fixed now. - Update: mainmenu.xml uses g_calc and subresources. - changed events "on_http_request", "on_http_response" and "on_http_error" to "on_net_request", "on_net_response" and "on_net_error". - i_outside, i_intersects, i_inside supports "else" branching. - Startscreen shows descriptions and IP addresses of the services. - Alternate way of referring to ui items via "target" parameter. Its now possible to use similar syntax to the attribute reference when referring to ui items (instead of separate "ui", "group" and "id" parameters. For instance target='ui1:group3.item2' refers to "item2" in "group3" that is in "ui1". - Canvas UI had problems with user input (keys and pointer) with terminated UIs, should work better now. - Canvas UI created exception with network response handled by a terminated UI. Fixed now. - g_debug takes a new boolean parameter "onscreen". When set to "true" the debug message is displayed on screen of the device for 3 seconds. - "serviceinfo" message is now also part of Common Script Language and so can be used inside UI script. - New way of caching data. The raw data is cached instead of the objects created from the data. This makes the cache less memory efficient but its now also possible to cache audio files and this was required for permanent file cache support. - The client caches image and sound files using RMS (record management store). This only happens if the device reports enough space available for use in the RMS database. - The conditionals i_less, i_greater, i_equal and i_notequal have new parameter "value0". This parameter can be used for testing two different values instead of testing attribute with a value. For instance tests if "3" is less than "4". The value attributes can be arithmetirc statements that includes attribute references. - The "yes/no" Main menu XML dialog has the questions "yes" and "no" the other way around corresponding the behaviour on most phones. The yes/no answer can also be given using the soft buttons. - Obsolete state removed from image snapper and sound recorder. After the sound/image is taken the recorder immediately returns back to content. - Accessing record store via "serviceinfo" didnt release resources used by record enumeration. Fixed now. - Tcp/ip connection didnt close when returning back to main menu. Fixed. - Added support for playing audio using from resource files in the JAR. - Canvas UI is now updating graphics using flushGraphics instead of repaint. Also it only updated the portions needed for update. Should have positive impact in the performance. - Threads give time to each other for better performance. - Instead of static delay between operations the client now operates more smoothly, making animations and timer events more accurate. - g_input uses different input constraints given as parameter. (See "new features howto.txt" for more info) - Graphics items can now be double buffered, making rendering much faster (via doublebuffer='true' parameter). Note that i_resize, i_undo and i_forget do not work with double buffered graphics items. Also, because of limitation in MIDP 2.0 these buffered graphics items cant be transparent :/. - All xml scripts are now byte coded for maximum performance. - i_row message of tilemap item has new parameter "column" that can be used for specifying the starting column of given data. - new messages for tilemap item: i_shiftrows and i_shiftcolums (see Client script Manual for more details). - Support for offline scripts saved in the client for running offline. (see Client script Manual for more details). - Resources: cache='update' flag for updating a changed resource into the cache. - Scripts in the menu commands are run in UI's context. - item groups can be resized via i_resize (same api as with "graphics" item). - i_resize method of canvas string item accepts "deltawidth" and "deltaheight" parameters. version 2.25a Sep 2005 (official release) ---------------------- - If image loading failed by incorrect data format, image with errorcode "200" was displayed. Now, image with string "err" is diplayed, which better describes the situation. - Added list of string for supported devices in the GPS plugin (PluginGps.java) - GPS plugin should now display "n/a" as current location, when the phone is not properly connected to GPS device. - GPS plugin should no longer display 0,0 as the current location when the device has invalid GPS data. - GPS plugin should better handle the cancelling of the proccess. - Includes some scetches for upcoming sms push support. Feature is disabled for the time being though. - There is a basic set of icons included with client. You can refer to the icons with using url "/icons.png" (without "http://" prefix). All icons included in this one image, each icon is size 24x24, and some of the icons include "selected" and "unselected" version. The "selected" version is always the right side one. version 2.24c Sep 2005 (internal release) ---------------------- - "name" parameter in i_choice message is now evaluated - all boolean parameters are now evaluated for attribute references. - type and id parameters of resource creation message are now evaluated. - Form and canvas strings' style parameters are now evaluated for attribute references. - There was a bug in drawing background of a canvas. It should be fixed now. - "else" branching in conditional statemements (i_equal, i_greater, etc) did not work. Its fixed now. - First implementation of GPS plugin. Works with Nokia LD-1W devices and confirmed with Nokia 6630 phone. (See "new features howto.txt" for example script). - mainmenu: replaced fullscreen "yes/no" dialog with a UI integrated "yes/no" dialog. - There was no "global" reference support in form ui (?!). Fixed now. - Added "stop" method for bluetooth plugin for aborting the bluetooth discovery process. - If image resource was not yet loaded but image frame was set to non-zero with i_setframe sometimes resulted to unvisible image. Fixed now. - MupeClient can now be easily integrated with a custom Midlet. There is an interface MupeInterface for this purpose. In addition client can be launched using "jumpStart" method without showing the mainScreen UI. The functional part of the client is in MupeClient, while the midlet is in dummy Mupe.java file. version 2.24b Jun 2005 ----------------------- Note: you update the UI with the xmlpacker tool. Make changes to xmlpacker/mainmenu.xml and then run update.bat. It compresses the UI xml into the res/ directory. - "else" branching from conditional statements. If condition is false a script under tag is run - The 6600 workaround (UI caching) does not break the modularity of the client anymore. - Parts of the client is now obfuscated making the client jar smaller (around 25kB smaller). - There is a splash screen visible when the client is loading. - Canvas should not fail to defect its size anymore. - Moving item group didnt update the item groups below. Fixed now. - i_scroll message for item group. Scrolls the contents of item group for given amounts (deltax and deltay parameters). - added on_ui_ready event into the start screen. its called when all the services have been added to the ui. - Added two more events into the start screen: on_subscribe_service - service $(this.url) is being subsribed and on_connect_service - service $(this.service) is being activated. - Multiline PCData texts are now handled properly by deleting the whitespaces from the beginning and and of each text line. - New graphics and layout changes in the mainscreen UI. version 2.24a May 2005 ----------------------- - Totally new start screen UI layout, based on mupe XML. Yes, UI modding is possible now. - UI groups didn't evaluate their width and height parameters. - Item anchoring didn't evaluate the anchorid parameter. - Cropped images that were anchored to other items were place wrong on the screen. - Moved "changeservice" message into common script language. - Changeservice dialog always acted like the user had selected "yes". - Changeservice works a bit differently now. It's now possible to only specify url of the service. - Added parameter "exitmupe" into message. When the parameter is set to "true", the quit message quits mupe client. - items draw themselves on top of item group border. Fixed now. - COlor ffffff resulted in black color instead of white, fixed now. - Quick fix for getting rid of some of the white boxes from the canvas strings. version 2.23b May 2005 ----------------------- - Workaround for MIDP bug that causes loss of data when TCP connection is lost. However this only works with requests. When using notification messages, one message will still be lost when the tcp/ip connection goes down. version 2.23a Apr 2005 ----------------------- - Added touch screen support in UI canvas (on_pointer_down, on_pointer_up and on_pointer_dragged events) (see "new features how-to.txt"). - Set network thread priority to normal (was set to max priority). - Http messaging part was creating one extra StringBuffer per each message, which was not used. - empty script in i_hook broke the i_event. Now empty script in i_hook only removes the hook. - Graphics item drawing routine had a bug, some parts of the graphics was not drawn. Fixed. - Made common deinialisation method for client. - Client code is much more thread-safe. All the scripts are run in same thread context. - re-implemented client-side plugin listener api. Now it only contains one method. - plugin api no longer saves data into serviceinfo. Instead they they give the data as parameters to the events the plugin creates. (see changes in "new features how-to.txt") - Bluetooth plugin now creates event (on_bluetooth_devicediscovery_progress) for each found device. (see "new features how-to.txt"). - default group (=the canvas) cannot be moved anymore. - New command g_anchoritem for re-anchoring canvas items after creation. - tilemap: i_replace - changes tiles with value A into value B. Can be used for creating animated tiles. - g_allowuserinput: also added to form ui (see "new features how-to.txt"). - client does not run scripts on terminated UIs anymore. - form ui should be deinitialising faster now. - Added support for popup selection box in ui form (via "popupchoicegroup" ui item). (see "new features how-to.txt"). - Emulator should not be throwing "illegal state exception" when restarting the midlet without restarting the emulator, anymore. - invalid attribute references display warning messages at the emulator console. - It's always possible to refer to item group's attributes with $(aaa.ccc) notation, instead of $(aaa.aaa.ccc) notation. - Support for attribute references to other UIs with $(ui:id.var) and $(ui:group.id.var) notation. (see "new features how-to.txt"). - New layout in starting screen. - Overwriting service with new one (address has changed) is now handled properly in the client side. - there was a bug in tilemap drawing that caused an exception before all the resources were loaded. - Timers remember the item context they were started from, i.e. $(this.var) should work inside timers. - It is now possible to set colors of button (fgcolor and bgcolor) item in canvas UI. - found new bug in some MIDP iplementation, which made all interactive items in Form UI work faulty. - Added message "g_input" for generic UI independent text input method (see "new features how-to.txt") - Item group that becomes the locked item group now receives "on_focus_enter" event and the previous locked item group receives "on_focus_leave" event. If lock is removed, the currently locked group receives "on_focus_leave" event. - When script creates an error in client, the client always tells the actual message that caused the error, not the bytecode of the message. - "g_select"ing an item group with lock='true' parameter now also selects an item from the locked group. This only happens when the locked item group changes. - Transparent item groups supported via style='transparent' parameter. (see "new features how-to.txt") - Minor bug in canvas button that sometimes threw an NullPointerException when after the button had been deleted. - When locked item group was replaced with another item group the item selector got lost. Its fixed now. - It is possible to set the selector frame color in canvas UI using g_setselectorcolor (see "new features how-to.txt"). version 2.22c Feb 2005 ---------------------- - Support for server side network performance analysis. Requires 1.22b Core or later. - Plugins should have ansynch interface (i.e. calls dont block anymore). - Code is more thread-safe (work still in progress). version 2.22b Feb 2005 ---------------------- - "fullupdate" optimisation broke item groups. Should be ok now. - Graphics item line drawing was completely broken. Fixed. - Graphics item was anchored to an image could cause parts of the graphics item be drawn wrongly. Should be fixed now. - Made a few method calls in the most called parts of code obsolete, small increase in performance. version 2.22a ------------- - NOTE: rearranged parts of the message api: requires core version 1.22a or later to work. - tilemap item: i_gettile row='' column='' attr='': sets an attribute to value of cell at (column,row). - There was a bug in g_foreach when using "ends" parameter, fixed now. - All "ui" parameters are now evaluated for variable references. - Support for manual override in iso8859-1 encoding when sending messages with g_send. You can turn off the encoding with "encode='false'" parameter in g_send and then encode the needed parts using "encode='true'" parameter with i_attribute. - graphics item: i_undo for undoing the last drawing operation. - graphics item: i_forget for removing the first drawing operation. - "$(group.var)" and "$(global.var)" were broken, fixed now. - i_greater and i_less: added boolean parameter "orequal" for support for logical >= and <= operations. - i_attribute: You can now also use "var='value'" notation to set attribute "var". - graphics item: support for i_moveto and i_lineto, see "new features how-to.txt" - graphics item: attributes "cursorx" and "cursory" for i_moveto and i_lineto. - graphics item: some of the graphics items were one pixel too high and wide. Should be better now. - added '{' and '}' characters in to encoded iso8859-1 chars. - g_setcolors: "fgcolor" parameter did not work, fixed. - canvas UI: selection rectangle did not disappear when using "g_select" with "lock='true'" parameter, fixed. - new item types in canvas and form UIs, "data". item "data" is dummy item that is not visible, but only for storing attributes and scripts. - When UI item is deleted and it is also set with "g_setreference", the reference should be set to null, fixed. - Recreation and deletion of UI items broke the variable reference to those items. Should work better now. - In addition to previous variable references to ui items now created yet should start working when the item is created. - g_allowuserinput: new "type" parameter allows you to disable a certain type of user interaction. see "new features how-to.txt" - choicegroup item: new attribute "values" which returns a list of "true" and "false" strings accoding to which choices are selected. - optimisation: Strings that did not have any variable references were still evaluated each time, no need to do so anymore. - submenu items: selecting "cancel" freezed the client, fixed. - Subsequent "setactive" messages could freeze client. Should not happen anymore. - gauge item: i_setmax and i_setvalue did not evaluate "value" parameter for attribute references. - graphics item optimisation: only updates the area inside the newly added or deleted graphics component. - graphics item optimisation: only draws graphics components inside current update area. - tilemap item: "*"-character can be used to mask out certain cells in "data" parameter of "i_row". - g_beginchange: new boolean parameter "fullupdate" allow you to override all the extra logic when updating ui items, instead the next call to "g_endchange" does full UI redraw. - In addition to previous the client now uses full update internally for faster screen redrawing when needed. - new function : runs a script in specified item context. see "new features how-to.txt" version 2.21d ------------- - when locking input to a ui item in canvas ui the selection box should now disappear immediately. - new message i_gettile for tilemap - gets a value of tile with parameters 'column' and 'row' and puts the value to attribute (specified by parameter 'attr'). - Fixed plugin support. It should work ok now. - Added new plugin PluginTest.java for a simple example code how to create plugins. - Bluetooth plugin device discovery is working. - (under devl) Images and edit fields support different layouts again in form UI. Version 2.21c ------------- - Emulated version of the video snapper should now work. The size of the taken image is limited to 160x120, since the emulated getSnapshot does not support width and height parameters in MIDP :/ (tested with wtk 2.2) - Graphics elements of a graphics item supports $(item.attr) parameters. - Added key hooks for buttons "clear", "call" and "hangup". Events are accordingly: on_clear_up, on_clear_down, on_call_up, on_call_down, on_hangup_up, on_hangup_down Version 2.21b ------------- - Downwards compatibility. One can turn off xml compression using . This should enable older versions of client to connect to use new version of the server and vice versa. Keep in mind that turning off xml compression has negative impact on the network performance. - BlueTooth plugin should do at least something now. Still under development. - Form UI has $(this.width) and $(this.height) attributes. - Fixed major bug in message handler thread - an uncaught exception in message handler could exit the thread. - new functionality: i_substring, i_stringlenght, i_stringtoken, i_numberoftokens (see 'new features how-to.txt') - "UI change fix" is enabled only for Nokia6600 models (should fix "jes" crashes, when loading UI). - There was a bug in running Canvas item group scripts. One could not refer to the items from top level, and the on_create and on_show hooks did not work for the item group. - i_addtile call accepts new parameters: cropx and cropy. You can crop portion of and image resource just like with regular images, instead of using the whole image. - Its possible now to restrict item selection to one item group in canvas UI with uses different type parameters, instead of values 'request','tcp' and 'xmlrpc' it now can have values: 'http' [default] , 'tcp' , 'xmlrpc'. This change requires no updates to script using old-style calls. - String and image items can be created as hyperlinks in Form UI (see new features how-to.txt) - Plugin API for creating third party plugins for mupe client. (see new features how-to.txt) - 1st implementation of Bluetooth plugin (device discovery only, not quaranteed to work). - Support for real push over tcp/ip (no more polls to server). - Support for compressed XML messages. - Support for notify messages (client does not wait for reply, only notify server) (see new features how-to.txt) - New command in main menu, for copying the server IP from a subscribed service to the edit field. - Global resources - using global='true' flag. - Submenus - see 'new features how-to.txt'. - Image resource cropping - see 'new features how-to.txt'. - Parameter delivery with event hooks - see 'new features how-to.txt'. - All scripts are run via one thread. This should make thread deadlocks impossible in the client. Should have some positive effect in overal performance as well. - Tags like this does not need to have that extra space anymore --> - clientUnsubsribe should work now from client side (sent when user removes a server). - "default_tcp_port" serviceinfo for setting the default port for tcp/ip messaging. - bug fixes, bug fixes, bug fixes... version 2.12 (internal release) ------------ - minor bug fixes version 2.11 ------------ See "new features how-to.txt" file for new features in this version. Bug fixes: - When deinitialising canvas, item messages (such as i_setframe) should not create errors anymore. - Sometimes a text that contained line breaks was displayed in one line (canvas string). - Editfield had max length set after the text was set (thanks Harri!) - several other minor fixes Version 2.10beta2 (internal release) ----------------- Changes to MupeClient - String items in canvas can have multiple lines using line breaks. This only works when the width of the bounding box is defined. example: 1st line 2nd line 3rd line - Sound loading is not cached at the moment, since caching them and reloading them after resource deinitialisation did not work. - g_playsound uses 'resource' parameter instead of 'id' parameter for defining which sound resource is to be played. version 2.10beta1 ----------------- Early development version of MIDP 2.0 client. Has largely the same functionality as the 1.10 versio of MIDP1.0 client. Known bugs: - Setting editfield constraints (password, numeric, etc ) somehow crashes the client on Nokia6600. Feature disabled for the time being. - Application icon does not show. - Form UI on Nokia6600 has some weird problems. Its crashing client sometimes, even tho on emulator the code works fine. New features: - Fullscreen canvas UI. Use fullscreen='false' parameter if you want to use the MIDP1 style Canvas UI. - Use of transparent colors and alpha channel when drawing images. - MIDI/Wav/and other audio files can be downloaded as resources and played with g_playsound. - Support for other than png format images if supported by the device. - Nokia7650 UI layout no longer needed. Use the defaultColorPhone layout. - Can use pictures taken with camera in content (using g_getsnapshot message) - Can upload pictures taken with camera in base64 format (base64 encoded data can be referred with $(resources.) notation). - Can record sounds from user and upload the sounds to server, same way as with the shapshots (g_recordaudio message). - resources defined with "resource", "g_snapshot" and "g_recordaudio" can be defined as global resources. This means that the resources are not deinitialised when UI template is changed, but when the service is closed. The global resources can be referred same way as the regular resources and they can be defined using "global='true'" parameter. If there is a resource with same ID defined in the UI level, that one is used instead. - TCP connections to MupeClientManagerTcpip, which makes data transfers a lot faster for applications that need to poll server very frequently. - Support for MIDP internal propoerties through $(client.) now also support "microedition." properties. - All string parsing (inside loops) optimised with use of StringBuffers. Bug fixes: - If some "$(...)" reference could not be evaluated, the parameter list was parsed wrong. Should work now. - $(this.var) notation in form ui did not work - i_atribute and i_hook can be used within form ui. - on_create events for UIs are sent after running the script for the UI (and so there can be on_create hook present) - A lot of small bug fixes here and there. Still missing: - Mirror/rotation of image items in canvas UI. - Streaming audio? - SmS support? Tested with Nokia6600 pnone. Note: After installing the Midlet you may want to change the internet accessiblity setting to "ask only once", otherwise you get an annoying dialog asking wether the midlet can access internet or not for every request. This can be done in the Application Control/settings screen. 1. What is MUPE? Multi-User Publishing Environment is a platform for creating multi-user context-aware applications. 2. Installation Mobile phone: Install the jar fie. Emulator: Use Java 2 Platform Micro Edition Wireless Toolkit Version 2.0_01 minimum. Wtk 2.2 beta2 or higher required for BlueTooth support. Copy the MupeClient to /apps/ directory After loading the MupeClient project into wireless toolkit you should be able choose Nokia7650 phone layout. (The demos are usually optimized for series60 screen size.) 3. Developers Start building your applications by customizing the Server, Client usually does not need modifications. See readme.txt in MupeServer module for details. 4. Further Information & Bug Reports Server and client updates can be found in http://www.mupe.net Contact information and bug reports, see http://www.mupe.net 6. Requirements Use Java 2 Platform Micro Edition Wireless Toolkit (Wtk 2.2 or higher required for BlueTooth support) to run the MUPE client on an emulator. Build the javadoc documentation with the Apache Ant (build.xml included use: "ant javadoc").