public final class Display

  1. Object
  2. CN1Constants
  3. Display

Central class for the API that manages rendering/events and is used to place top level components (Form) on the “display”.

This class handles the main thread for the toolkit referenced here on as the EDT (Event Dispatch Thread) similar to the Swing EDT. This thread encapsulates the platform specific event delivery and painting semantics and enables threading features such as animations etc…

The EDT should not be blocked since paint operations and events would also be blocked in much the same way as they would be in other platforms. To serialize calls back into the EDT, use the methods Display#callSerially & Display#callSeriallyAndWait.

Notice that all Codename One calls occur on the EDT (events, painting, animations, etc…), Codename One should normally be manipulated on the EDT as well (hence the Display#callSerially & Display#callSeriallyAndWait methods). Theoretically, it should be possible to manipulate some Codename One features from other threads, but this can’t be guaranteed to work for all use cases.

Fields

public static final String SOUND_TYPE_ALARM = "alarm"A common sound type that can be used with playBuiltinSound
public static final String SOUND_TYPE_CONFIRMATION = "confirmation"A common sound type that can be used with playBuiltinSound
public static final String SOUND_TYPE_ERROR = "error"A common sound type that can be used with playBuiltinSound
public static final String SOUND_TYPE_INFO = "info"A common sound type that can be used with playBuiltinSound
public static final String SOUND_TYPE_WARNING = "warning"A common sound type that can be used with playBuiltinSound
public static final String SOUND_TYPE_BUTTON_PRESS = "press"A common sound type that can be used with playBuiltinSound
public static final int KEYBOARD_TYPE_UNKNOWN = 0Unknown keyboard type is the default indicating the software should try to detect the keyboard type if necessary
public static final int KEYBOARD_TYPE_NUMERIC = 1Numeric keypad keyboard type
public static final int KEYBOARD_TYPE_QWERTY = 2Full QWERTY keypad keyboard type, even if a numeric keyboard also exists
public static final int KEYBOARD_TYPE_VIRTUAL = 3A touch based device that doesn’t have a physical keyboard.
public static final int KEYBOARD_TYPE_HALF_QWERTY = 4Half-QWERTY which needs software assistance for completion
public static final int GAME_FIRE = 8Game action for fire
public static final int GAME_LEFT = 2Game action for the left key
public static final int GAME_RIGHT = 5Game action for right key
public static final int GAME_UP = 1Game action for UP key
public static final int GAME_DOWN = 6Game action for down key
public static final int MEDIA_KEY_SKIP_FORWARD = 20Special case game key used for media playback events
public static final int MEDIA_KEY_SKIP_BACK = 21Special case game key used for media playback events
public static final int MEDIA_KEY_PLAY = 22Special case game key used for media playback events
public static final int MEDIA_KEY_STOP = 23Special case game key used for media playback events
public static final int MEDIA_KEY_PLAY_STOP = 24Special case game key used for media playback events
public static final int MEDIA_KEY_PLAY_PAUSE = 25Special case game key used for media playback events
public static final int MEDIA_KEY_FAST_FORWARD = 26Special case game key used for media playback events
public static final int MEDIA_KEY_FAST_BACKWARD = 27Special case game key used for media playback events
public static final int KEY_POUND = 35An attribute that encapsulates ‘#’ int value.
public static final int SHOW_DURING_EDIT_IGNORE = 1Ignore all calls to show occurring during edit, they are discarded immediately
public static final int SHOW_DURING_EDIT_EXCEPTION = 2If show is called while editing text in the native text box an exception is thrown
public static final int SHOW_DURING_EDIT_ALLOW_DISCARD = 3Allow show to occur during edit and discard all user input at this moment
public static final int SHOW_DURING_EDIT_ALLOW_SAVE = 4Allow show to occur during edit and save all user input at this moment
public static final int SHOW_DURING_EDIT_SET_AS_NEXT = 5Show will update the current form to which the OK button of the text box will return
public static final int COMMAND_BEHAVIOR_DEFAULT = 1Indicates that the Codename One implementation should decide internally the command behavior most appropriate for this platform.
public static final int COMMAND_BEHAVIOR_SOFTKEY = 2Indicates the classic Codename One command behavior where the commands are placed in a list within a dialog.
public static final int COMMAND_BEHAVIOR_TOUCH_MENU = 3Indicates the touch menu dialog rendered by Codename One where commands are placed into a scrollable dialog
public static final int COMMAND_BEHAVIOR_BUTTON_BAR = 4Indicates that commands should be added to an always visible bar at the bottom of the form.
public static final int COMMAND_BEHAVIOR_BUTTON_BAR_TITLE_BACK = 5Identical to the bar behavior, places the back command within the title bar of the form/dialg
public static final int COMMAND_BEHAVIOR_BUTTON_BAR_TITLE_RIGHT = 6Places all commands on the right side of the title bar with a uniform size grid layout
public static final int COMMAND_BEHAVIOR_ICS = 7Commands are placed in the same was as they are in the ice cream sandwich Android OS update where the back button has a theme icon the application icon appears next to the
public static final int COMMAND_BEHAVIOR_SIDE_NAVIGATION = 8Commands are placed in a side menu similar to Facebook/Google+ apps
public static final int COMMAND_BEHAVIOR_NATIVE = 10Indicates that commands should try to add themselves to the native menus
public static final String WINDOW_SIZE_HINT_PERCENT = "cn1.windowSizePercent"Client property key used on the first shown Form to indicate the desired initial window size as a percentage of the available desktop.

Methods

public static void init(Object m)
public static void deinitialize()Closes down the EDT and Codename One, under normal conditions this method is completely unnecessary since exiting the application will shut down Codename One.
public static boolean isInitialized()This method returns true if the Display is initialized.
public static Display getInstance()Return the Display instance
public void setBookmark(Runnable bookmark)Sets a bookmark that can restore the app to a particular state.
public void restoreToBookmark()Runs the last bookmark that was set using #setBookmark(java.lang.Runnable)
public PluginSupport getPluginSupport()Gets reference to plugin support object.
public int getDragStartPercentage()This method allows us to manipulate the drag started detection logic.
public void setDragStartPercentage(int dragStartPercentage)This method allows us to manipulate the drag started detection logic.
public WifiPlatform getWifiPlatform()Returns the platform’s WiFi implementation.
public WifiDirectPlatform getWifiDirectPlatform()Returns the platform’s WiFi-Direct implementation.
public BonjourPlatform getBonjourPlatform()Returns the platform’s Bonjour / mDNS implementation.
public UsbPlatform getUsbPlatform()Returns the platform’s USB host implementation.
public NetworkTypePlatform getNetworkTypePlatform()Returns the platform’s network-type tracker used by NetworkManager.addNetworkTypeListener(...).
public Simd getSimd()Returns the SIMD API instance bound to the current implementation.
public boolean isGpuSupported()Returns true if the current platform provides a hardware accelerated 3D GPU backend for com.codename1.gpu.RenderView.
public PeerComponent createGpuPeer(RenderView view)Creates the native GPU peer backing a RenderView.
public void gpuSetContinuous(PeerComponent peer, boolean continuous)Sets whether a GPU peer renders continuously or only on demand.
public void gpuRequestRender(PeerComponent peer)Requests a single frame from a GPU peer.
public void setFramerate(int rate)Indicates the maximum frames the API will try to draw every second by default this is set to 10.
public void vibrate(int duration)Vibrates the device for the given length of time, notice that this might ignore the time value completely on some OS’s where this level of control isn’t supported e.g. iOS see: https://github.com/codenameone/CodenameOne/issues/1904
public void flashBacklight(int duration)Deprecated Flash the backlight of the device for the given length of time
public void announceForAccessibility(Component cmp, String text)Manually announces text to native accessibility services, optionally associating the announcement with a specific component.
public void announceForAccessibility(String text)Convenience overload to announce text without specifying a component.
public void accessibilityTreeChanged(int changeType)Notifies the native port that the portable semantic tree changed.
public void accessibilityTreeChanged(int changeType, int windowId)Notifies the native port that one surface’s semantic tree changed.
public boolean isAccessibilityTreeSupported()Returns true when the active port exposes lightweight components through a native virtual accessibility tree.
public boolean isAccessibilityTreeUpdateRequired()Returns true when the active port currently needs semantic changes to be projected eagerly.
public int getShowDuringEditBehavior()Deprecated Returns the status of the show during edit flag
public void setShowDuringEditBehavior(int showDuringEdit)Deprecated Invoking the show() method of a form/dialog while the user is editing text in the native text box can have several behaviors: SHOW_DURING_EDIT_IGNORE, SHOW_DURING_EDIT_EXCEPTION, SHOW_DURING_EDIT_ALLOW_DISCARD, SHOW_DURING_EDIT_ALLOW_SAVE,…
public int getFrameRate()Indicates the maximum frames the API will try to draw every second
public boolean isEdt()Returns true if we are currently in the event dispatch thread.
public void stopRemoteControl()Stops the remote control service.
public void startRemoteControl()Starts the remote control service.
public Boolean isDarkMode()Returns true if the platform is in dark mode, null is returned for unknown status
public void setDarkMode(Boolean darkMode)Override the default dark mode setting
public boolean isLargerTextEnabled()Returns true if the user has selected larger type fonts in the system settings.
public float getLargerTextScale()Returns a scale factor representing how much larger system fonts should be.
public boolean isHighContrastEnabled()Returns true when the user requests stronger foreground/background contrast.
public boolean isDifferentiateWithoutColorEnabled()Returns true when the user requests that information isn’t conveyed by color alone.
public AccessibilityColorVisionDeficiency getColorVisionDeficiency()Returns the selected color-vision correction, or AccessibilityColorVisionDeficiency.UNKNOWN when the platform doesn’t expose it.
public boolean isReduceMotionEnabled()Returns true when the user requests reduced or disabled nonessential motion.
public boolean isReduceTransparencyEnabled()Returns true when the user requests reduced transparency and blur effects.
public boolean isBoldTextEnabled()Returns true when the user requests heavier text weight.
public boolean isInvertColorsEnabled()Returns true when the operating system is inverting displayed colors.
public boolean isGrayscaleEnabled()Returns true when the operating system requests a grayscale presentation.
public boolean isOnOffSwitchLabelsEnabled()Returns true when switches should include visible on/off labels.
public boolean isScreenReaderEnabled()Returns true when a screen reader or touch-exploration service is active.
public boolean isEnableAsyncStackTraces()Checks if async stack traces are enabled.
public void setEnableAsyncStackTraces(boolean enableAsyncStackTraces)Enables or disables async stack traces.
public void callSerially(Runnable r)Causes the runnable to be invoked on the event dispatch thread.
public void callSeriallyOnIdle(Runnable r)Causes the runnable to be invoked on the event dispatch thread when the event dispatch thread is idle.
public String getLineSeparator()
public void scheduleBackgroundTask(Runnable r)Allows executing a background task in a separate low priority thread.
public void callSeriallyAndWait(Runnable r)Identical to callSerially with the added benefit of waiting for the Runnable method to complete.
public boolean platformUsesInputMode()Checks if this platform uses input modes.
public void callSeriallyAndWait(Runnable r, int timeout)Identical to callSerially with the added benefit of waiting for the Runnable method to complete.
public boolean isInTransition()Returns true if the system is currently in the process of transitioning between forms
public String getStackTrace(Thread parentThread, Throwable t)Returns the stack trace from the exception on the given thread.
public void onEditingComplete(Component c, String text)Called by the underlying implementation to indicate that editing in the native system has completed and changes should propagate into Codename One
public void invokeWithoutBlocking(Runnable r)Invokes a Runnable with blocking disabled.
public <T> T invokeWithoutBlockingWithResultSync(RunnableWithResultSync<T> r)Invokes a RunnableWithResultSync with blocking disabled.
public void invokeAndBlock(Runnable r, boolean dropEvents)Invokes runnable and blocks the current thread, if the current thread is the EDT it will still be blocked in a way that doesn’t break event dispatch . Important: calling this method spawns a new thread that shouldn’t access the UI!
public void invokeAndBlock(Runnable r)Invokes runnable and blocks the current thread, if the current thread is the EDT it will still be blocked in a way that doesn’t break event dispatch . Important: calling this method spawns a new thread that shouldn’t access the UI!
public boolean isTouchScreenDevice()The name of this method is misleading due to it’s legacy.
public void setTouchScreenDevice(boolean touchScreen)Indicates if this is a touch screen device that will return pen events, defaults to true if the device has pen events but can be overriden by the developer.
public void setNoSleep(boolean noSleep)Calling this method with noSleep=true will cause the edt to run without sleeping.
public void setTransitionYield(int transitionD)Indicates whether a delay should exist between calls to flush graphics during transition.
public void editString(Component cmp, int maxSize, int constraint, String text)Fires the native in place text editing logic, normally you wouldn’t invoke this API directly and instead use an API like com.codename1.ui.TextArea#startEditingAsync(), com.codename1.ui.TextArea#startEditing() or com.codename1.ui.Form#setEditOnShow(com.codename1.ui.TextArea).
public void editString(Component cmp, int maxSize, int constraint, String text, int initiatingKeycode)Fires the native in place text editing logic, normally you wouldn’t invoke this API directly and instead use an API like com.codename1.ui.TextArea#startEditingAsync(), com.codename1.ui.TextArea#startEditing() or com.codename1.ui.Form#setEditOnShow(com.codename1.ui.TextArea).
public void stopEditing(Component cmp)Allows us to stop editString on the given text component
public void stopEditing(Component cmp, Runnable onFinish)Allows us to stop editString on the given text component or Form.
public boolean minimizeApplication()Minimizes the current application if minimization is supported by the platform (may fail).
public boolean isMinimized()Indicates whether an application is minimized
public void restoreMinimizedApplication()Restore the minimized application if minimization is supported by the platform
public boolean isControlKeyDown()Checks if the control key is currently down.
public boolean isMetaKeyDown()Checks if the meta key is currently down.
public boolean isAltKeyDown()Checks if the alt key is currently down.
public boolean isAltGraphKeyDown()Checks if the altgraph key is currently down.
public boolean isRightMouseButtonDown()Checks if the last mouse press was a right click.
public boolean isShiftKeyDown()Checks if shift key is currently down.
public PointerEvent getCurrentPointerEvent()Returns a snapshot of the rich detail for the pointer event currently being dispatched such as the mouse button, pointer type (finger/mouse/stylus), pressure and stylus tilt.
public int getPointerButton()The mouse button associated with the current pointer event, one of the PointerEvent BUTTON_* constants.
public int getPressedButtonMask()A bitmask of the mouse buttons currently held down, built from the PointerEvent MASK_* constants.
public int getPointerType()The current pointing device type, one of the PointerEvent TYPE_* constants (finger, mouse, stylus or eraser).
public float getPointerPressure()The normalized pressure of the current pointer event between 0.0 and 1.0.
public float getPointerTiltX()The stylus tilt across the x axis of the current pointer event in degrees, or 0 when not reported.
public float getPointerTiltY()The stylus tilt across the y axis of the current pointer event in degrees, or 0 when not reported.
public float getPointerContactSize()The normalized contact size of the current pointer event between 0.0 and 1.0, or 0 when not reported.
public boolean isStylusPointer()True if the current pointer is a stylus or pen (Apple Pencil, S-Pen and similar).
public boolean fireMouseWheelEvent(int x, int y, int scrollX, int scrollY, boolean precise, int modifiers)Dispatches a mouse wheel event to the component under the given coordinates, and scrolls it.
public void fireMagnifyGesture(int x, int y, float scale)Dispatches a magnify (pinch) gesture to the component under the given coordinates, walking up the hierarchy until a component handles it.
public void fireRotationGesture(int x, int y, float radians)Dispatches a rotation (twist) gesture to the component under the given coordinates, walking up the hierarchy until a component handles it.
public void keyPressed(int keyCode)Pushes a key press event with the given keycode into Codename One
public void keyReleased(int keyCode)Pushes a key release event with the given keycode into Codename One
public void pointerDragged(int[] x, int[] y)Pushes a pointer drag event with the given coordinates into Codename One
public void pointerHover(int[] x, int[] y)Pushes a pointer hover event with the given coordinates into Codename One
public void pointerHoverPressed(int[] x, int[] y)Pushes a pointer hover release event with the given coordinates into Codename One
public void pointerHoverReleased(int[] x, int[] y)Pushes a pointer hover release event with the given coordinates into Codename One
public void pointerPressed(int[] x, int[] y)Pushes a pointer press event with the given coordinates into Codename One
public void pointerReleased(int[] x, int[] y)Pushes a pointer release event with the given coordinates into Codename One
public void sizeChanged(int w, int h)Notifies Codename One of display size changes, this method is invoked by the implementation class and is for internal use
public void hideNotify()Broadcasts hide notify into Codename One, this method is invoked by the Codename One implementation to notify Codename One of hideNotify events
public void showNotify()Broadcasts show notify into Codename One, this method is invoked by the Codename One implementation to notify Codename One of showNotify events
public boolean hasDragOccured()This method should be invoked by components that broadcast events on the pointerReleased callback.
public TopLevelContainer getCurrentTopLevel()Return the form currently displayed on the screen or null if no form is currently displayed.
public Form getCurrent()The form currently displayed on the main surface.
public int numAlphaLevels()Deprecated Return the number of alpha levels supported by the implementation.
public int numColors()Deprecated Returns the number of colors applicable on the device, note that the API does not support gray scale devices.
public int getDisplayWidth()Return the width of the display
public int getDisplayHeight()Return the height of the display
public Dimension getDesktopSize()Returns the size of the desktop hosting the application window when running on a desktop platform.
public Rectangle getWindowBounds()Returns the current window bounds when running on a desktop platform.
public void setWindowSize(int width, int height)Requests a resize of the application window when supported by the platform.
public Dimension getInitialWindowSizeHintPercent()Returns the initial desktop window size hint provided by the first shown form, when available.
public void setInitialWindowSizeHintPercent(Dimension hint)Sets the initial desktop window size hint (percent of the desktop) that should be used when the first form is shown.
public int convertToPixels(int dipCount, boolean horizontal)Converts the dips count to pixels, dips are roughly 1mm in length.
public int convertToPixels(float value, byte unitType)Converts from specified unit to pixels.
public int convertToPixels(float value, byte unitType, boolean horizontal)Converts from specified unit to pixels.
public int convertToPixels(float dipCount)Converts the dips count to pixels, dips are roughly 1mm in length.
public int getGameAction(int keyCode)Returns the game action code matching the given key combination
public int getKeyCode(int gameAction)Deprecated Returns the keycode matching the given game action constant (the opposite of getGameAction).
public boolean isThirdSoftButton()Indicates whether the 3rd softbutton should be supported on this device
public void setThirdSoftButton(boolean thirdSoftButton)Indicates whether the 3rd softbutton should be supported on this device
public void setShowVirtualKeyboard(boolean show)Deprecated Displays the virtual keyboard on devices that support manually poping up the vitual keyboard
public boolean isVirtualKeyboardShowing()Deprecated Indicates if the virtual keyboard is currently showing or not
public String[] getSupportedVirtualKeyboard()Deprecated Returns all platform supported virtual keyboards names
public void registerVirtualKeyboard(VirtualKeyboardInterface vkb)Deprecated Register a virtual keyboard
public VirtualKeyboardInterface getDefaultVirtualKeyboard()Deprecated Get the default virtual keyboard or null if the VirtualKeyboard is disabled
public void setDefaultVirtualKeyboard(VirtualKeyboardInterface vkb)Deprecated Sets the default virtual keyboard to be used by the platform
public ActionListener getVirtualKeyboardListener()Deprecated Gets the VirtualKeyboardListener Objects of exists.
public void setVirtualKeyboardListener(ActionListener l)Deprecated Sets a listener for VirtualKeyboard hide/show events.
public void addVirtualKeyboardListener(ActionListener l)Adds a listener for VirtualKeyboard hide/show events.
public void removeVirtualKeyboardListener(ActionListener l)Removes a listener for VirtualKeyboard hide/show events.
public void fireVirtualKeyboardEvent(boolean show)Fires a virtual keyboard show event.
public int getInvisibleAreaUnderVKB()Gets the invisible area under the Virtual Keyboard.
public int getKeyboardType()Returns the type of the input device one of: KEYBOARD_TYPE_UNKNOWN, KEYBOARD_TYPE_NUMERIC, KEYBOARD_TYPE_QWERTY, KEYBOARD_TYPE_VIRTUAL, KEYBOARD_TYPE_HALF_QWERTY
public boolean isNativeInputSupported()Indicates whether the device supports native in place editing in which case lightweight input logic shouldn’t be used for input.
public boolean isMultiTouch()Indicates whether the device supports multi-touch events, this is only relevant when touch events are supported
public boolean isClickTouchScreen()Indicates whether the device has a double layer screen thus allowing two stages to touch events: click and hover.
public float getDragSpeed(boolean yAxis)This method returns the dragging speed based on the latest dragged events
public boolean isBidiAlgorithm()Indicates whether Codename One should consider the bidi RTL algorithm when drawing text or navigating with the text field cursor.
public void setBidiAlgorithm(boolean activate)Indicates whether Codename One should consider the bidi RTL algorithm when drawing text or navigating with the text field cursor.
public String convertBidiLogicalToVisual(String s)Converts the given string from logical bidi layout to visual bidi layout so it can be rendered properly on the screen.
public int getCharLocation(String source, int index)Returns the index of the given char within the source string, the actual index isn’t necessarily the same when bidi is involved See this for more on visual vs. logical ordering.
public boolean isRTL(char c)Returns true if the given character is an RTL character
public InputStream getResourceAsStream(Class cls, String resource)This method is essentially equivalent to cls.getResourceAsStream(String) however some platforms might define unique ways in which to load resources within the implementation.
public void addEdtErrorHandler(ActionListener e)An error handler will receive an action event with the source exception from the EDT once an error handler is installed the default Codename One error dialog will no longer appear
public String getNativeLogSnapshot()An error handler will receive an action event with the source exception from the EDT once an error handler is installed the default Codename One error dialog will no longer appear
public void installNativeCrashHandler()Installs the platform native crash handler used by crash protection.
public String consumePendingNativeCrash()Returns the captured native crash evidence (raw backtrace + signal info as a text blob) from installNativeCrashHandler(), or null if none.
public void removeEdtErrorHandler(ActionListener e)
public boolean isAllowMinimizing()Allows a Codename One application to minimize without forcing it to the front whenever a new dialog is poped up
public void setAllowMinimizing(boolean allowMinimizing)Allows a Codename One application to minimize without forcing it to the front whenever a new dialog is poped up
public boolean shouldRenderSelection()This is an internal state flag relevant only for pureTouch mode (otherwise it will always be true).
public boolean shouldRenderSelection(Component c)
public boolean isPureTouch()A pure touch device has no focus showing when the user is using the touch interface.
public void setPureTouch(boolean pureTouch)A pure touch device has no focus showing when the user is using the touch interface.
public boolean isNativeCommands()Deprecated Indicates whether Codename One commands should be mapped to the native menus
public void setNativeCommands(boolean nativeCommands)Deprecated Indicates whether Codename One commands should be mapped to the native menus
public void exitApplication()Exits the application…
public void exitAndClearTask()Exits the application and removes it from the platform’s list of recent tasks, so the user cannot bring it back by picking it out of the task switcher.
public boolean isExitAndClearTaskSupported()Indicates whether this platform can remove the application from its list of recent tasks on exit.
public boolean isFullScreenSupported()Checks if this platform supports full-screen mode.
public boolean requestFullScreen()Try to enter full-screen mode if the platform supports it.
public boolean exitFullScreen()Try to exit full-screen mode if the platform supports it.
public boolean isInFullScreenMode()Checks if the app is currently running in full-screen mode.
public void showNativeScreen(Object nativeFullScreenPeer)Shows a native Form/Canvas or some other heavyweight native screen
public boolean isAutoFoldVKBOnFormSwitch()Normally Codename One folds the VKB when switching forms this field allows us to block that behavior.
public void setAutoFoldVKBOnFormSwitch(boolean autoFoldVKBOnFormSwitch)Normally Codename One folds the VKB when switching forms this field allows us to block that behavior.
public int getCommandBehavior()Deprecated Indicates the way commands should be added to a form as one of the ocmmand constants defined in this class
public void setCommandBehavior(int commandBehavior)Deprecated Indicates the way commands should be added to a form as one of the ocmmand constants defined in this class
public void postMessage(MessageEvent message)Posts a message to the native platform.
public void addMessageListener(ActionListener<MessageEvent> l)Adds a listener to receive messages from the native platform.
public void removeMessageListener(ActionListener<MessageEvent> l)Removes a listener from receiving messages from the native platform.
public void dispatchMessage(MessageEvent evt)Dispatches a message to all of the registered listeners.
public void addWindowListener(ActionListener<WindowEvent> l)Adds a listener to receive notifications about native window changes such as resize or movement.
public void removeWindowListener(ActionListener<WindowEvent> l)Removes a previously registered window listener.
public void fireWindowEvent(WindowEvent evt)Dispatches a window change event to registered listeners.
public String getProperty(String key, String defaultValue)Returns the property from the underlying platform deployment or the default value if no deployment values are supported.
public boolean isApnsPushDevice()Whether this port’s device subscribes to push through APNs.
public boolean isNativeRedirects()Whether this port follows HTTP redirects below the portable network layer, so the framework cannot see where a download actually came from.
public void setProperty(String key, String value)Sets a local property to the application, this method has no effect on the implementation code and only allows the user to override the logic of getProperty for internal application purposes.
public Boolean canExecute(String url)Returns true if executing this URL should work, returns false if it will not and null if this is unknown.
public void execute(String url)Executes the given URL on the native platform.
public void execute(String url, ActionListener response)Executes the given URL on the native platform, this method is useful if the platform has the ability to send an event to the app when the execution has ended, currently this works only for Android platform to invoke other intents.
public boolean downloadBytesAsFile(String fileName, byte[] bytes)Offers the given in-memory bytes to the user as a downloadable file, bypassing local storage.
public int getDeviceDensity()Returns one of the density variables appropriate for this device, notice that density doesn’t always correspond to resolution and an implementation might decide to change the density based on DPI constraints.
public float getDevicePixelRatio()The platform’s logical-pixel scale factor – device pixels per logical pixel, what iOS calls UIScreen.scale and Android calls density.
public boolean isRoundedImageSupported()Whether this platform can round a picture’s corners as it draws it, rather than the caller having to build a rounded copy of the bitmap.
public String getDensityStr()Returns the device density as a string.
public void playBuiltinSound(String soundIdentifier)Deprecated Plays a builtin device sound matching the given identifier, implementations and themes can offer additional identifiers to the ones that are already built in.
public Rectangle getDisplaySafeArea(Rectangle rect)Gets the display safe area as a rectangle.
public void installBuiltinSound(String soundIdentifier, InputStream data) throws IOExceptionInstalls a replacement sound as the builtin sound responsible for the given sound identifier (this will override the system sound if such a sound exists).
public boolean isBuiltinSoundAvailable(String soundIdentifier)Deprecated Indicates whether a user installed or system sound is available
public boolean isBuiltinSoundsEnabled()Allows muting/unmuting the builtin sounds easily
public void setBuiltinSoundsEnabled(boolean enabled)Allows muting/unmuting the builtin sounds easily
public Media createMedia(String uri, boolean isVideo, Runnable onCompletion) throws IOExceptionCreates a sound in the given URI which is partially platform specific.
public AsyncResource<Media> createMediaAsync(String uri, boolean video, Runnable onCompletion)Creates media asynchronously.
public void addCompletionHandler(Media media, Runnable onCompletion)Adds a callback to a Media element that will be called when the media finishes playing.
public void removeCompletionHandler(Media media, Runnable onCompletion)Removes onComplete callback from Media element.
public Media createMedia(InputStream stream, String mimeType, Runnable onCompletion) throws IOExceptionCreate the sound in the given stream Notice that an audio is “auto destroyed” on completion and cannot be played twice!
public AsyncResource<Media> createMediaAsync(InputStream stream, String mimeType, Runnable onCompletion)
public boolean isSoundPoolSupported()Indicates whether this platform provides a native low latency sound pool backing com.codename1.gaming.SoundPool.
public SoundPoolPeer createSoundPool(int maxStreams)Creates a native low latency sound pool peer for com.codename1.gaming.SoundPool, or returns null when this platform has no native backend.
public Object createSoftWeakRef(Object o)Creates a soft/weak reference to an object that allows it to be collected yet caches it.
public Object extractHardRef(Object o)Extracts the hard reference from the soft/weak reference given
public boolean hasNativeTheme()Indicates if the implemenetation has a native underlying theme
public void installNativeTheme()Installs the native theme, this is only applicable if hasNativeTheme() returned true.
public void copyToClipboard(Object obj)Performs a clipboard copy operation, if the native clipboard is supported by the implementation it would be used
public void copyToClipboard(ClipboardContent content)Copies a set of alternative clipboard representations.
public Object getPasteDataFromClipboard()Returns the current content of the clipboard
public ClipboardContent getClipboardContent()Returns all clipboard representations exposed by the current port, or null if none are available.
public boolean isPortrait()Returns true if the device is currently in portrait mode
public boolean isLockOrientation()Returns true if orientation was locked using #lockOrientation(boolean) and not yet unlocked via #unlockOrientation().
public boolean canForceOrientation()Returns true if the device allows forcing the orientation via code, feature phones do not allow this although some include a jad property allowing for this feature
public void lockOrientation(boolean portrait)On devices that return true for canForceOrientation() this method can lock the device orientation either to portrait or landscape mode
public void unlockOrientation()This is the reverse method for lock orientation allowing orientation lock to be disabled
public boolean isTablet()Indicates whether the device is a tablet, notice that this is often a guess
public boolean isDesktop()Returns true if this is a desktop application
public boolean isWatch()Indicates whether the application is running on a smartwatch form factor (Apple Watch / Wear OS).
public boolean isTV()Indicates whether the application is running on a television form factor (Apple TV / Android TV / Google TV).
public boolean isCarConnected()Indicates whether a head unit (Apple CarPlay / Google Android Auto) is currently connected and projecting the com.codename1.car experience.
public boolean isFoldable()True if the device is a foldable or dual screen device such as a Galaxy Fold, Galaxy Flip, Pixel Fold or Surface Duo.
public DevicePosture getDevicePosture()Returns the live device fold posture.
public void addPostureListener(ActionListener l)Adds a listener that is notified when the device is folded, unfolded or changes posture.
public void removePostureListener(ActionListener l)Removes a posture listener.
public void postureChanged()Invoked by the implementation when the device fold posture changes.
public boolean isDesktopMode()True if the application is currently running in a desktop windowing mode such as Samsung DeX, Android desktop windowing or iPad Stage Manager.
public int getDisplayCount()Returns the number of displays (monitors or external screens) currently attached.
public boolean isExternalDisplayConnected()True if an external or secondary display is currently attached.
public CarBridge getCarBridge()Returns the platform bridge used by the com.codename1.car API to render in-car templates, or null when in-car projection is unsupported on this port.
public WearableBridge getWearableBridge()Returns the platform bridge used by the com.codename1.wearable API to talk to the counterpart watch or phone app, or null when this device has no wearable counterpart.
public HomeBridge getHomeBridge()Returns the platform bridge used by the com.codename1.home API to reach HomeKit, the Google Home APIs or a local simulated home, or null when this port has no smart-home support.
public NearbyBridge getNearbyBridge()Returns the platform bridge used by the com.codename1.nearby API to reach precision ranging, companion-device association and the nearby transport, or null when this port implements none of them.
public CallBridge getCallBridge()Returns the platform bridge used by the com.codename1.call API to reach the system call stack – CallKit and PushKit on iOS, ConnectionService and TelecomManager on Android – or null when unsupported on this port.
public VpnBridge getVpnBridge()Returns the platform bridge used by the com.codename1.vpn API to manage VPN configurations, or null when unsupported on this port.
public SurfaceBridge getSurfaceBridge()Returns the platform bridge used by the com.codename1.surfaces API to render external surfaces (home-screen widgets and live activities), or null when unsupported on this port.
public DocumentProviderBridge getDocumentProviderBridge()Returns the platform bridge used by the com.codename1.documents API to expose the application’s documents to the system file browser, or null when unsupported on this port.
public ContinuityBridge getContinuityBridge()Returns the platform bridge used by the com.codename1.continuity API to advertise the user’s current activity to their other devices and to reach the platform’s synced key/value store, or null when unsupported on this port.
public IntentBridge getIntentBridge()Returns the platform bridge used by the com.codename1.intents API to expose the application’s capabilities to the system, or null when unsupported on this port.
public boolean canDial()Returns true if the device has dialing capabilities
public boolean areMutableImagesFast()On most platforms it is quite fast to draw on a mutable image and then render that image, however some platforms have much slower mutable images in comparison to just drawing on the screen.
public LocationManager getLocationManager()This method returns the platform Location Manager used for geofencing.
public boolean isLocationButtonSupported()Whether this platform draws a location button of its own.
public PeerComponent createLocationButton(int textType, int backgroundColor, int textColor, SuccessCallback<Boolean> onPermissionResult)Builds the platform’s own location button.
public boolean isLocationButtonReady(PeerComponent button)Whether a control from createLocationButton is actually live.
public MotionSensorManager getMotionSensorManager()Returns the platform motion sensor entry point or null when the current port does not provide motion sensors.
public Biometrics getBiometrics()Returns the platform biometric authentication entry point.
public SecureStorage getSecureStorage()Returns the platform biometric-gated secure storage.
public Nfc getNfc()Returns the platform NFC entry point.
public LocalCalendarSource getLocalCalendarSource()Returns the active port’s local device-calendar source.
public Bluetooth getBluetooth()Returns the platform Bluetooth entry point.
public Health getHealth()Returns the platform health entry point.
public void capturePhoto(ActionListener response)This method tries to invoke the device native camera to capture images.
public void captureAudio(ActionListener<ActionEvent> response)This method tries to invoke the device native hardware to capture audio.
public void captureAudio(MediaRecorderBuilder recordingOptions, ActionListener response)This method tries to invoke the device native hardware to capture audio.
public void captureVideo(ActionListener response)This method tries to invoke the device native camera to capture video.
public void captureVideo(VideoCaptureConstraints constraints, ActionListener response)Same as #captureVideo(com.codename1.ui.events.ActionListener), except that it attempts to impose constraints on the capture.
public void openImageGallery(ActionListener response)Deprecated Opens the device image gallery The method returns immediately and the response will be sent asynchronously to the given ActionListener Object
public void openGallery(ActionListener response, int type)Opens the device gallery to pick an image or a video.
public void openFileChooser(ActionListener response, String accept)Opens a file chooser for arbitrary user-selected files.
public boolean isGalleryTypeSupported(int type)Checks to see if the given gallery type is supported on the current platform.
public String getPlatformName()Returns a 2-3 letter code representing the platform name for the platform override
public String[] getPlatformOverrides()Returns the suffixes for ovr files that should be used when loading a layered resource file on this platform
public void sendMessage(String[] recipients, String subject, Message msg)Send an email using the platform mail client.
public void dial(String phoneNumber)Opens the device Dialer application with the given phone number
public boolean isCallDetectionSupported()Indicates whether this platform can attempt to detect active phone-call interruptions.
public boolean isInCall()Best-effort check for whether the platform currently believes an active phone call is interrupting the app.
public int getSMSSupport()Indicates the level of SMS support in the platform as one of: #SMS_NOT_SUPPORTED (for desktop, tablet etc.), #SMS_SEAMLESS (no UI interaction), #SMS_INTERACTIVE (with compose UI), #SMS_BOTH.
public void sendSMS(String phoneNumber, String message) throws IOExceptionSends a SMS message to the given phone number
public void sendSMS(String phoneNumber, String message, boolean interactive) throws IOExceptionSends a SMS message to the given phone number, the code below demonstrates the logic of detecting platform behavior for sending SMS.
public void notifyStatusBar(String tickerText, String contentTitle, String contentBody, boolean vibrate, boolean flashLights)Deprecated Place a notification on the device status bar (if device has this functionality).
public boolean isNotificationSupported()Indicates whether the notify status bar method will present a notification to the user
public Object notifyStatusBar(String tickerText, String contentTitle, String contentBody, boolean vibrate, boolean flashLights, Hashtable args)Deprecated Place a notification on the device status bar (if device has this functionality).
public void dismissNotification(Object o)Removes the notification previously posted with the notify status bar method
public boolean isBadgingSupported()Returns true if the underlying OS supports numeric badges on icons.
public void setBadgeNumber(int number)Sets the number that appears on the application icon in iOS
public boolean isOpenNativeNavigationAppSupported()Returns true if the underlying OS supports opening the native navigation application
public void openNativeNavigationApp(double latitude, double longitude)Opens the native navigation app in the given coordinate.
public void openNativeNavigationApp(String location)Opens the native navigation app with the given search location
public String[] getAllContacts(boolean withNumbers)Gets all contacts from the address book of the device
public Contact[] getAllContacts(boolean withNumbers, boolean includesFullName, boolean includesPicture, boolean includesNumbers, boolean includesEmail, boolean includeAddress)Notice: this method might be very slow and should be invoked on a separate thread! It might have platform specific optimizations over getAllContacts followed by looping over individual contacts but that isn’t guaranteed.
public boolean isGetAllContactsFast()Indicates if the getAllContacts is platform optimized, notice that the method might still take seconds or more to run so you should still use a separate thread!
public String[] getLinkedContactIds(Contact c)Gets IDs of all contacts that are linked to a given contact.
public Contact getContactById(String id)Get a Contact according to it’s contact id.
public Contact getContactById(String id, boolean includesFullName, boolean includesPicture, boolean includesNumbers, boolean includesEmail, boolean includeAddress)This method returns a Contact by the contact id and fills it’s data according to the given flags.
public boolean isContactsPermissionGranted()Some platforms allow the user to block contacts access on a per application basis this method returns true if the user denied permission to access contacts.
public boolean isContactPickerSupported()Returns true when the platform has a contact picker, see com.codename1.contacts.ContactPicker.
public void pickContacts(int requestedFields, boolean multiSelect, int selectionLimit, boolean requireAllRequestedFields, ActionListener<ActionEvent> response)Shows the platform’s contact picker, see com.codename1.contacts.ContactPicker for the API applications should use and for what the arguments mean.
public String createContact(String firstName, String familyName, String officePhone, String homePhone, String cellPhone, String email)Create a contact to the device contacts book
public boolean deleteContact(String id)removed a contact from the device contacts book
public boolean isNativeVideoPlayerControlsIncluded()Indicates if the native video player includes its own play/pause etc. controls so the movie player component doesn’t need to include them
public boolean isNativeShareSupported()Indicates if the underlying platform supports sharing capabilities
public boolean isNativeInAppReviewSupported()Indicates whether the platform exposes a native in-app review/rating prompt (the OS-sanctioned “rate this app” sheet).
public void requestNativeInAppReview(SuccessCallback<Boolean> done)Requests the native in-app review prompt.
public void share(String toShare)Deprecated Share the required information using the platform sharing services.
public void share(String text, String image, String mimeType)Share the required information using the platform sharing services.
public void share(String textOrPath, String image, String mimeType, Rectangle sourceRect)Share the required information using the platform sharing services.
public void share(String textOrPath, String image, String mimeType, Rectangle sourceRect, ShareResultListener listener)Like share(String,String,String,Rectangle) but reports the outcome through listener on the EDT.
public boolean isPrintingSupported()Indicates if the underlying platform can print documents through print(String,String,PrintResultListener).
public void print(String filePath, String mimeType, PrintResultListener listener)Print a document file through the platform printing system, typically showing the native print dialog where the user picks a printer and options.
public L10NManager getLocalizationManager()The localization manager allows adapting values for display in different locales thru parsing and formatting capabilities (similar to JavaSE’s DateFormat/NumberFormat).
public void registerPush(String id, boolean noFallback)Deprecated User register to receive push notification
public void registerPush(Hashtable metaData, boolean noFallback)Deprecated Register to receive push notification, invoke this method once (ever) to receive push notifications.
public void registerPush()Register to receive push notification, invoke this method once (ever) to receive push notifications.
public void deregisterPush()Stop receiving push notifications to this client application
public Media createMediaRecorder(String path) throws IOExceptionCreates a Media recorder Object which will record from the device mic to a file in the given path.
public Media createMediaRecorder(MediaRecorderBuilder builder) throws IOExceptionDeprecated
public Media createMediaRecorder(String path, String mimeType) throws IOExceptionCreates a Media recorder Object which will record from the device mic to a file in the given path.
public boolean isSpeechRecognitionSupported()Whether SpeechRecognizer is implemented on the current platform.
public void startSpeechRecognition(RecognitionOptions options, RecognitionCallback callback)Begins a speech-recognition session.
public void stopSpeechRecognition()
public boolean isTextToSpeechSupported()Whether TextToSpeech is implemented on the current platform.
public void textToSpeechSpeak(String text, TtsOptions options)
public void textToSpeechStop()
public String[] textToSpeechAvailableVoices()
public ImageIO getImageIO()Returns the image IO instance that allows scaling image files.
public VideoIO getVideoIO()Returns the video IO instance for video encoding and frame accurate decoding, or null if video IO isn’t supported on the given platform.
public String getMediaRecorderingMimeType()Deprecated Gets the recording mime type for the returned Media from the createMediaRecorder method
public Database openOrCreate(String databaseName) throws IOExceptionOpens a database or create one if not exists.
public Database openOrCreate(String databaseName, DatabaseConfig config) throws IOExceptionOpens an encrypted database or creates one if it does not exist.
public boolean isDatabaseEncryptionSupported()Indicates whether this platform can open encrypted databases.
public Database openOrCreateForRekey(String databaseName) throws IOExceptionOpens a plaintext database through an engine able to encrypt it in place.
public boolean isDatabaseManagedKeyHardwareBacked()Indicates whether managed database keys are held in hardware backed storage here.
public String databaseManagedKeyIdentity(String databaseName)Reports whether a database is encrypted, when the platform can tell without reading the file itself.
public String databaseRegistryIdentity(String databaseName)See com.codename1.impl.CodenameOneImplementation#databaseRegistryIdentity(String).
public boolean isRelativeAttachmentNameResolvable()See com.codename1.impl.CodenameOneImplementation#isRelativeAttachmentNameResolvable().
public String databaseIdentityForEngineFile(String engineFile)See com.codename1.impl.CodenameOneImplementation#databaseIdentityForEngineFile(String).
public int openDatabaseConnections(String databaseName)See com.codename1.impl.CodenameOneImplementation#openDatabaseConnections(String).
public int isDatabaseFileEncrypted(String databaseName)
public boolean isBlobQueryParameterSupported()Indicates whether byte[] values may be used as query parameters.
public boolean isDatabaseCustomPathSupported()Indicates whether this platform accepts a file path as a database name.
public void delete(String databaseName) throws IOExceptionDeletes database
public boolean exists(String databaseName)Indicates weather a database exists
public String getDatabasePath(String databaseName)Returns the file path of the Database if support for database exists on the platform.
public void setPollingFrequency(int freq)Deprecated Sets the frequency for polling the server in case of polling based push notification
public Thread createThread(Runnable r, String name)Start a Codename One thread that supports crash protection and similar Codename One features.
public Thread startThread(Runnable r, String name)Deprecated Start a Codename One thread that supports crash protection and similar Codename One features.
public boolean isNativeTitle()Indicates if the title of the Form is native title(in android ICS devices if the command behavior is native the ActionBar is used to display the title and the menu)
public void refreshNativeTitle()if the title is native(e.g the android action bar), notify the native title that is needs to be refreshed
public CrashReport getCrashReporter()The crash reporter gets invoked when an uncaught exception is intercepted
public void setCrashReporter(CrashReport crashReporter)The crash reporter gets invoked when an uncaught exception is intercepted
public String getUdid()Returns the UDID for devices that support it
public String getMsisdn()Returns the MSISDN for devices that expose it
public Purchase getInAppPurchase()Returns the native OS purchase implementation if applicable, if unavailable this method will try to fallback to a custom purchase implementation and failing that will return null
public Purchase getInAppPurchase(boolean d)Deprecated
public CodeScanner getCodeScanner()Deprecated Returns the native implementation of the code scanner or null
public String[] getAvailableRecordingMimeTypes()Gets the available recording MimeTypes
public boolean isScreenSaverDisableSupported()Checks if the device supports disabling the screen display from dimming, allowing the developer to keep the screen display on.
public boolean isScrollWheeling()Checks is the scroll-wheel mouse is currently scrolling.
public void setScreenSaverEnabled(boolean e)If isScreenSaverDisableSupported() returns true calling this method will lock the screen display on
public boolean hasCamera()Returns true if the device has camera false otherwise.
public boolean isNativePickerTypeSupported(int pickerType)Indicates whether the native picker dialog is supported for the given type which can include one of PICKER_TYPE_DATE_AND_TIME, PICKER_TYPE_TIME, PICKER_TYPE_DATE
public Object showNativePicker(int type, Component source, Object currentValue, Object data)Shows a native modal dialog allowing us to perform the picking for the given type which can include one of PICKER_TYPE_DATE_AND_TIME, PICKER_TYPE_TIME, PICKER_TYPE_DATE
public boolean isMultiKeyMode()When set to true Codename One allows multiple hardware keys to be pressed at once, this isn’t on by default since it can trigger some complexities with UI navigation to/from native code
public void setMultiKeyMode(boolean multiKeyMode)When set to true Codename One allows multiple hardware keys to be pressed at once, this isn’t on by default since it can trigger some complexities with UI navigation to/from native code
public int getLongPointerPressInterval()Long pointer press is invoked after the given interval, this allows making long press events shorter/longer
public void setLongPointerPressInterval(int v)Long pointer press is invoked after the given interval, this allows making long press events shorter/longer
public void scheduleLocalNotification(LocalNotification n, long firstTime, int repeat)Schedules a local notification that will occur after the given time elapsed.
public void cancelLocalNotification(String notificationId)Cancels a local notification by ID.
public void requestNotificationPermission(NotificationPermissionCallback callback)Requests permission to post notifications using a default request (alert, sound and badge).
public void requestNotificationPermission(NotificationPermissionRequest request, NotificationPermissionCallback callback)Requests permission to post notifications with the capabilities described by the given request.
public void registerNotificationChannel(NotificationChannelBuilder builder)Registers a notification channel (Android).
public void deleteNotificationChannel(String channelId)Deletes a notification channel (Android).
public void createNotificationChannelGroup(String groupId, String groupName)Creates a notification channel group (Android).
public void scheduleBackgroundWork(WorkRequest request)Schedules constraint-aware background work.
public void cancelBackgroundWork(String workId)Cancels scheduled background work by id.
public boolean isBackgroundWorkSupported()Returns true if constraint-aware background work is supported.
public void scheduleBackgroundProcessing(String id, long earliestBeginEpochMs, boolean requiresNetwork, boolean requiresPower, Runnable task)Schedules a deferrable background processing task.
public void cancelBackgroundProcessing(String id)Cancels a scheduled background processing task.
public boolean isBackgroundProcessingSupported()Returns true if deferrable background processing is supported.
public Object startForegroundService(String channelId, String title, String body, String iconName, ForegroundService.Task task, ForegroundService handle)Starts a foreground service.
public void updateForegroundServiceNotification(Object nativeHandle, String title, String body)Updates a foreground service notification.
public void stopForegroundService(Object nativeHandle)Stops a foreground service.
public boolean isForegroundServiceSupported()Returns true if foreground services are supported.
public boolean isReceiveSharedContentSupported()Returns true if the platform can receive shared content from other apps.
public boolean isWalletExtensionSupported()Returns true if the platform supports publishing data to a Wallet issuer-provisioning extension.
public void walletExtensionSetPassEntries(boolean remote, WalletPassEntry[] entries)Publishes the Wallet extension pass entries, replacing the previous list.
public void walletExtensionSetRequiresAuthentication(boolean requiresAuthentication)Sets the Wallet extension requires-authentication flag.
public void walletExtensionSetAuthToken(String token)Publishes the Wallet extension auth token.
public void walletExtensionClear()Clears all published Wallet extension data.
public void subscribeToPushTopic(String topic)Subscribes the device to a push topic.
public void unsubscribeFromPushTopic(String topic)Unsubscribes the device from a push topic.
public void setPreferredBackgroundFetchInterval(int seconds)Sets the preferred time interval between background fetches.
public int getPreferredBackgroundFetchInterval(int seconds)Gets the preferred time (in seconds) between background fetches.
public boolean isBackgroundFetchSupported()Checks to see if the current platform supports background fetch.
public boolean isSimulator()Allows detecting development mode so debugging code and special cases can be used to simplify flow
public boolean isDebuggableBuild()Whether this build is a development build rather than a release build headed for an app store.
public Media createBackgroundMedia(String uri) throws IOExceptionCreates an audio media that can be played in the background.
public AsyncResource<Media> createBackgroundMediaAsync(String uri)Creates an audio media that can be played in the background.
public Image gaussianBlurImage(Image image, float radius)Create a blur image from the given image.
public Image createSFSymbolImage(String name, int color, float sizePixels, int weight)Renders an Apple SF Symbol to an image on iOS (null elsewhere / if the symbol is unavailable).
public boolean isGaussianBlurSupported()Returns true if gaussian blur is supported on this platform
public void refreshContacts()Refreshes the native list of contacts on devices that require this see com.codename1.contacts.ContactsManager#refresh()
public boolean isJailbrokenDevice()Returns true if this device is jailbroken or rooted, false if not or unknown.
public AsyncResource<String> requestIntegrityToken(String nonce)Requests a signed device-attestation token (Play Integrity / App Attest) bound to the server nonce.
public boolean isAttestationSupported()Returns true if device-attestation (Play Integrity / App Attest) is supported and bundled.
public boolean isDeviceCompromised()Non-exiting RASP check, true if the device appears rooted/jailbroken/instrumented/tampered.
public String[] getCompromiseReasons()Returns the reason codes behind isDeviceCompromised() (e.g. “root”, “frida”, “emulator”).
public String[] getEnabledAccessibilityServices()Returns the component ids of the accessibility services currently enabled on the device.
public void resetAttestation()Discards cached platform attestation state, forcing the next attestation to start from a fresh hardware key.
public void confirmAttestation(String keyId)Acknowledges that a backend recorded the attested key.
public String[] getAppSignerDigests()Returns digests of the certificates the running app is signed with.
public void setSecureScreen(boolean secure)Marks the current screen secure (Android FLAG_SECURE), blocking screenshots/recording/scraping.
public void setTapjackingProtection(TapjackingPolicy policy)Sets the tapjacking policy.
public TapjackingPolicy getTapjackingPolicy()The tapjacking policy currently in force, never null.
public boolean isScreenObscured()True when the most recently observed touch arrived over an obscured window.
public void addTapjackingListener(ActionListener l)Registers a listener notified when the obscured state changes.
public void removeTapjackingListener(ActionListener l)Removes a listener added by addTapjackingListener().
public void setHideOverlayWindows(boolean hide)Asks the OS to hide overlay windows drawn over this app (Android 12+).
public boolean isHideOverlayWindowsSupported()True where setHideOverlayWindows() is actually enforced by the platform.
public Map<String, String> getProjectBuildHints()Returns the build hints for the simulator, this will only work in the debug environment and it’s designed to allow extensions/API’s to verify user settings/build hints exist
public void setProjectBuildHint(String key, String value)Sets a build hint into the settings while overwriting any previous value.
public boolean canInstallOnHomescreen()Checks to see if you can prompt the user to install the app on their homescreen.
public boolean promptInstallOnHomescreen()Prompts the user to install this app on their homescreen.
public void onCanInstallOnHomescreen(Runnable r)A callback fired when you are allowed to prompt the user to install the app on their homescreen.
public Image captureScreen()Deprecated Captures a screenshot of the screen.
public void screenshot(SuccessCallback<Image> callback)Captures a screenshot in the native layer which should include peer components as well.
public void notifyPushCompletion()Notifies the platform that push notification processing is complete.
public Timer setTimeout(int timeout, Runnable r)Convenience method to schedule a task to run on the EDT after timeoutms.
public Timer setInterval(int period, Runnable r)Convenience method to schedule a task to run on the EDT after periodms repeating every periodms.
public BrowserComponent getSharedJavascriptContext()Gets a reference to an application-wide shared Javascript context that can be used for running Javascript commands.
public void firePinchBeginGesture()Starts a magnify (pinch) gesture.
public void firePinchReleaseGesture(int x, int y)Ends the magnify (pinch) gesture in progress, notifying whichever component consumed it.

Inherited fields

Inherited methods

Field details

SOUND_TYPE_ALARM

public static final String SOUND_TYPE_ALARM = "alarm"
A common sound type that can be used with playBuiltinSound

SOUND_TYPE_CONFIRMATION

public static final String SOUND_TYPE_CONFIRMATION = "confirmation"
A common sound type that can be used with playBuiltinSound

SOUND_TYPE_ERROR

public static final String SOUND_TYPE_ERROR = "error"
A common sound type that can be used with playBuiltinSound

SOUND_TYPE_INFO

public static final String SOUND_TYPE_INFO = "info"
A common sound type that can be used with playBuiltinSound

SOUND_TYPE_WARNING

public static final String SOUND_TYPE_WARNING = "warning"
A common sound type that can be used with playBuiltinSound

SOUND_TYPE_BUTTON_PRESS

public static final String SOUND_TYPE_BUTTON_PRESS = "press"
A common sound type that can be used with playBuiltinSound

KEYBOARD_TYPE_UNKNOWN

public static final int KEYBOARD_TYPE_UNKNOWN = 0
Unknown keyboard type is the default indicating the software should try to detect the keyboard type if necessary

KEYBOARD_TYPE_NUMERIC

public static final int KEYBOARD_TYPE_NUMERIC = 1
Numeric keypad keyboard type

KEYBOARD_TYPE_QWERTY

public static final int KEYBOARD_TYPE_QWERTY = 2
Full QWERTY keypad keyboard type, even if a numeric keyboard also exists

KEYBOARD_TYPE_VIRTUAL

public static final int KEYBOARD_TYPE_VIRTUAL = 3
A touch based device that doesn’t have a physical keyboard. Such a device pops up a virtual keyboad.

KEYBOARD_TYPE_HALF_QWERTY

public static final int KEYBOARD_TYPE_HALF_QWERTY = 4
Half-QWERTY which needs software assistance for completion

GAME_FIRE

public static final int GAME_FIRE = 8
Game action for fire

GAME_LEFT

public static final int GAME_LEFT = 2
Game action for the left key

GAME_RIGHT

public static final int GAME_RIGHT = 5
Game action for right key

GAME_UP

public static final int GAME_UP = 1
Game action for UP key

GAME_DOWN

public static final int GAME_DOWN = 6
Game action for down key

MEDIA_KEY_SKIP_FORWARD

public static final int MEDIA_KEY_SKIP_FORWARD = 20
Special case game key used for media playback events

MEDIA_KEY_SKIP_BACK

public static final int MEDIA_KEY_SKIP_BACK = 21
Special case game key used for media playback events

MEDIA_KEY_PLAY

public static final int MEDIA_KEY_PLAY = 22
Special case game key used for media playback events

MEDIA_KEY_STOP

public static final int MEDIA_KEY_STOP = 23
Special case game key used for media playback events

MEDIA_KEY_PLAY_STOP

public static final int MEDIA_KEY_PLAY_STOP = 24
Special case game key used for media playback events

MEDIA_KEY_PLAY_PAUSE

public static final int MEDIA_KEY_PLAY_PAUSE = 25
Special case game key used for media playback events

MEDIA_KEY_FAST_FORWARD

public static final int MEDIA_KEY_FAST_FORWARD = 26
Special case game key used for media playback events

MEDIA_KEY_FAST_BACKWARD

public static final int MEDIA_KEY_FAST_BACKWARD = 27
Special case game key used for media playback events

KEY_POUND

public static final int KEY_POUND = 35
An attribute that encapsulates ‘#’ int value.

SHOW_DURING_EDIT_IGNORE

public static final int SHOW_DURING_EDIT_IGNORE = 1
Ignore all calls to show occurring during edit, they are discarded immediately

SHOW_DURING_EDIT_EXCEPTION

public static final int SHOW_DURING_EDIT_EXCEPTION = 2
If show is called while editing text in the native text box an exception is thrown

SHOW_DURING_EDIT_ALLOW_DISCARD

public static final int SHOW_DURING_EDIT_ALLOW_DISCARD = 3
Allow show to occur during edit and discard all user input at this moment

SHOW_DURING_EDIT_ALLOW_SAVE

public static final int SHOW_DURING_EDIT_ALLOW_SAVE = 4
Allow show to occur during edit and save all user input at this moment

SHOW_DURING_EDIT_SET_AS_NEXT

public static final int SHOW_DURING_EDIT_SET_AS_NEXT = 5
Show will update the current form to which the OK button of the text box will return

COMMAND_BEHAVIOR_DEFAULT

public static final int COMMAND_BEHAVIOR_DEFAULT = 1
Indicates that the Codename One implementation should decide internally the command behavior most appropriate for this platform.

COMMAND_BEHAVIOR_SOFTKEY

public static final int COMMAND_BEHAVIOR_SOFTKEY = 2
Indicates the classic Codename One command behavior where the commands are placed in a list within a dialog. This is the most customizable approach for none touch devices.

COMMAND_BEHAVIOR_TOUCH_MENU

public static final int COMMAND_BEHAVIOR_TOUCH_MENU = 3
Indicates the touch menu dialog rendered by Codename One where commands are placed into a scrollable dialog

COMMAND_BEHAVIOR_BUTTON_BAR

public static final int COMMAND_BEHAVIOR_BUTTON_BAR = 4
Indicates that commands should be added to an always visible bar at the bottom of the form.

COMMAND_BEHAVIOR_BUTTON_BAR_TITLE_BACK

public static final int COMMAND_BEHAVIOR_BUTTON_BAR_TITLE_BACK = 5
Identical to the bar behavior, places the back command within the title bar of the form/dialg

COMMAND_BEHAVIOR_BUTTON_BAR_TITLE_RIGHT

public static final int COMMAND_BEHAVIOR_BUTTON_BAR_TITLE_RIGHT = 6
Places all commands on the right side of the title bar with a uniform size grid layout

COMMAND_BEHAVIOR_ICS

public static final int COMMAND_BEHAVIOR_ICS = 7
Commands are placed in the same was as they are in the ice cream sandwich Android OS update where the back button has a theme icon the application icon appears next to the

COMMAND_BEHAVIOR_SIDE_NAVIGATION

public static final int COMMAND_BEHAVIOR_SIDE_NAVIGATION = 8
Commands are placed in a side menu similar to Facebook/Google+ apps

COMMAND_BEHAVIOR_NATIVE

public static final int COMMAND_BEHAVIOR_NATIVE = 10
Indicates that commands should try to add themselves to the native menus

WINDOW_SIZE_HINT_PERCENT

public static final String WINDOW_SIZE_HINT_PERCENT = "cn1.windowSizePercent"
Client property key used on the first shown Form to indicate the desired initial window size as a percentage of the available desktop. The value should be a com.codename1.ui.geom.Dimension whose width and height represent percentages.

Method details

init

public static void init(Object m)

deinitialize

public static void deinitialize()
Closes down the EDT and Codename One, under normal conditions this method is completely unnecessary since exiting the application will shut down Codename One. However, if the application is minimized and the user wishes to free all resources without exiting the application then this method can be used. Once this method is used Codename One will no longer work and Display.init(Object) should be invoked again for any further Codename One call! Notice that minimize (being a Codename One method) MUST be invoked before invoking this method!

isInitialized

public static boolean isInitialized()
This method returns true if the Display is initialized.

Returns

true if the EDT is running

getInstance

public static Display getInstance()
Return the Display instance

Returns

the Display instance

setBookmark

public void setBookmark(Runnable bookmark)

Sets a bookmark that can restore the app to a particular state. This takes a Runnable that will be run when #restoreToBookmark() () } is called.

The primary purpose of this feature is live code refresh.

Parameters

bookmark Runnable
A Runnable that can be run to restore the app to a particular point.

restoreToBookmark

public void restoreToBookmark()
Runs the last bookmark that was set using #setBookmark(java.lang.Runnable)

getPluginSupport

public PluginSupport getPluginSupport()
Gets reference to plugin support object.

Returns

The plugin support object.

getDragStartPercentage

public int getDragStartPercentage()
This method allows us to manipulate the drag started detection logic. If the pointer was dragged for more than this percentage of the display size it is safe to assume that a drag is in progress.

Returns

motion percentage

setDragStartPercentage

public void setDragStartPercentage(int dragStartPercentage)
This method allows us to manipulate the drag started detection logic. If the pointer was dragged for more than this percentage of the display size it is safe to assume that a drag is in progress.

Parameters

dragStartPercentage int
percentage of the screen required to initiate drag

getWifiPlatform

public WifiPlatform getWifiPlatform()
Returns the platform’s WiFi implementation. Used by com.codename1.io.wifi.WiFi; applications normally talk to that static facade rather than calling this directly.

getWifiDirectPlatform

public WifiDirectPlatform getWifiDirectPlatform()
Returns the platform’s WiFi-Direct implementation.

getBonjourPlatform

public BonjourPlatform getBonjourPlatform()
Returns the platform’s Bonjour / mDNS implementation.

getUsbPlatform

public UsbPlatform getUsbPlatform()
Returns the platform’s USB host implementation.

getNetworkTypePlatform

public NetworkTypePlatform getNetworkTypePlatform()
Returns the platform’s network-type tracker used by NetworkManager.addNetworkTypeListener(...).

getSimd

public Simd getSimd()
Returns the SIMD API instance bound to the current implementation.

isGpuSupported

public boolean isGpuSupported()
Returns true if the current platform provides a hardware accelerated 3D GPU backend for com.codename1.gpu.RenderView.

createGpuPeer

public PeerComponent createGpuPeer(RenderView view)
Creates the native GPU peer backing a RenderView. Intended for use by RenderView; returns null on platforms without a 3D backend.

gpuSetContinuous

public void gpuSetContinuous(PeerComponent peer, boolean continuous)
Sets whether a GPU peer renders continuously or only on demand. Intended for use by RenderView.

gpuRequestRender

public void gpuRequestRender(PeerComponent peer)
Requests a single frame from a GPU peer. Intended for use by RenderView.

setFramerate

public void setFramerate(int rate)
Indicates the maximum frames the API will try to draw every second by default this is set to 10. The advantage of limiting framerate is to allow the CPU to perform other tasks besides drawing. Notice that when no change is occurring on the screen no frame is drawn and so a high/low FPS will have no effect then. 10FPS would be very reasonable for a business application.

Parameters

rate int
the frame rate

vibrate

public void vibrate(int duration)
Vibrates the device for the given length of time, notice that this might ignore the time value completely on some OS’s where this level of control isn’t supported e.g. iOS see: https://github.com/codenameone/CodenameOne/issues/1904

Parameters

duration int
length of time to vibrate (might be ignored)

flashBacklight

public void flashBacklight(int duration)
Deprecated. this refers to functionality of devices that are no longer sold, not to the devices “flash”
Flash the backlight of the device for the given length of time

Parameters

duration int
length of time to flash the backlight

announceForAccessibility

public void announceForAccessibility(Component cmp, String text)
Manually announces text to native accessibility services, optionally associating the announcement with a specific component. Most assistive technologies will announce a component automatically when it gains focus; this method is intended for situations where an announcement should occur independently of focus changes.

Parameters

cmp Component
the component related to this announcement or null for the root view
text String
the message to announce

announceForAccessibility

public void announceForAccessibility(String text)
Convenience overload to announce text without specifying a component.

Parameters

text String
the message to announce

accessibilityTreeChanged

public void accessibilityTreeChanged(int changeType)
Notifies the native port that the portable semantic tree changed. This is primarily an internal bridge used by the accessibility subsystem.

Parameters

changeType int
bit mask of AccessibilityManager.CHANGE_* constants

accessibilityTreeChanged

public void accessibilityTreeChanged(int changeType, int windowId)
Notifies the native port that one surface’s semantic tree changed.

Parameters

changeType int
bit mask of AccessibilityManager.CHANGE_* constants
windowId int
the surface that changed, zero for the application’s main one

isAccessibilityTreeSupported

public boolean isAccessibilityTreeSupported()
Returns true when the active port exposes lightweight components through a native virtual accessibility tree.

isAccessibilityTreeUpdateRequired

public boolean isAccessibilityTreeUpdateRequired()
Returns true when the active port currently needs semantic changes to be projected eagerly. This is an internal bridge used to avoid rebuilding an unused accessibility tree from hot component setters.

getShowDuringEditBehavior

public int getShowDuringEditBehavior()
Deprecated. this method isn’t applicable in modern devices
Returns the status of the show during edit flag

Returns

one of the following: SHOW_DURING_EDIT_IGNORE, SHOW_DURING_EDIT_EXCEPTION, SHOW_DURING_EDIT_ALLOW_DISCARD, SHOW_DURING_EDIT_ALLOW_SAVE, SHOW_DURING_EDIT_SET_AS_NEXT

setShowDuringEditBehavior

public void setShowDuringEditBehavior(int showDuringEdit)
Deprecated. this method isn’t applicable in modern devices
Invoking the show() method of a form/dialog while the user is editing text in the native text box can have several behaviors: SHOW_DURING_EDIT_IGNORE, SHOW_DURING_EDIT_EXCEPTION, SHOW_DURING_EDIT_ALLOW_DISCARD, SHOW_DURING_EDIT_ALLOW_SAVE, SHOW_DURING_EDIT_SET_AS_NEXT

Parameters

showDuringEdit int
one of the following: SHOW_DURING_EDIT_IGNORE, SHOW_DURING_EDIT_EXCEPTION, SHOW_DURING_EDIT_ALLOW_DISCARD, SHOW_DURING_EDIT_ALLOW_SAVE, SHOW_DURING_EDIT_SET_AS_NEXT

getFrameRate

public int getFrameRate()
Indicates the maximum frames the API will try to draw every second

Returns

the frame rate

isEdt

public boolean isEdt()
Returns true if we are currently in the event dispatch thread. This is useful for generic code that can be used both with the EDT and outside of it.

Returns

true if we are currently in the event dispatch thread; otherwise false

stopRemoteControl

public void stopRemoteControl()

Stops the remote control service. This should be implemented in the platform to handle unbinding the com.codename1.media.RemoteControlListener with the platform’s remote control.

This is executed when a new listener is registered using com.codename1.media.MediaManager#setRemoteControlListener(com.codename1.media.RemoteControlListener)

startRemoteControl

public void startRemoteControl()

Starts the remote control service. This should be implemented in the platform to handle binding the RemoteControlListener with the platform’s remote control.

This is executed when the user registers a new listener using MediaManager#setRemoteControlListener(com.codename1.media.RemoteControlListener)

isDarkMode

public Boolean isDarkMode()
Returns true if the platform is in dark mode, null is returned for unknown status

Returns

true in case of dark mode

setDarkMode

public void setDarkMode(Boolean darkMode)
Override the default dark mode setting

Parameters

darkMode Boolean
can be set to null to reset to platform default

isLargerTextEnabled

public boolean isLargerTextEnabled()
Returns true if the user has selected larger type fonts in the system settings.

Returns

true when the platform indicates a larger text preference.

getLargerTextScale

public float getLargerTextScale()
Returns a scale factor representing how much larger system fonts should be. A value of 1.0 indicates the default system font size.

Returns

scale factor for larger system fonts.

isHighContrastEnabled

public boolean isHighContrastEnabled()
Returns true when the user requests stronger foreground/background contrast.

isDifferentiateWithoutColorEnabled

public boolean isDifferentiateWithoutColorEnabled()
Returns true when the user requests that information isn’t conveyed by color alone.

getColorVisionDeficiency

public AccessibilityColorVisionDeficiency getColorVisionDeficiency()
Returns the selected color-vision correction, or AccessibilityColorVisionDeficiency.UNKNOWN when the platform doesn’t expose it.

isReduceMotionEnabled

public boolean isReduceMotionEnabled()
Returns true when the user requests reduced or disabled nonessential motion.

isReduceTransparencyEnabled

public boolean isReduceTransparencyEnabled()
Returns true when the user requests reduced transparency and blur effects.

isBoldTextEnabled

public boolean isBoldTextEnabled()
Returns true when the user requests heavier text weight.

isInvertColorsEnabled

public boolean isInvertColorsEnabled()
Returns true when the operating system is inverting displayed colors.

isGrayscaleEnabled

public boolean isGrayscaleEnabled()
Returns true when the operating system requests a grayscale presentation.

isOnOffSwitchLabelsEnabled

public boolean isOnOffSwitchLabelsEnabled()
Returns true when switches should include visible on/off labels.

isScreenReaderEnabled

public boolean isScreenReaderEnabled()
Returns true when a screen reader or touch-exploration service is active.

isEnableAsyncStackTraces

public boolean isEnableAsyncStackTraces()

Checks if async stack traces are enabled. If enabled, the stack trace at the point of #callSerially(java.lang.Runnable) calls will be recorded, and logged in the case that there is an uncaught exception.

Currently this is only supported in the JavaSE/Simulator port.

Returns

Whether async stack traces are enabled.

setEnableAsyncStackTraces

public void setEnableAsyncStackTraces(boolean enableAsyncStackTraces)

Enables or disables async stack traces. If enabled, the stack trace at the point of #callSerially(java.lang.Runnable) calls will be recorded, and logged in the case that there is an uncaught exception.

Currently this is only supported in the JavaSE/Simulator port.

Parameters

enableAsyncStackTraces boolean
True to enable async stack traces.

callSerially

public void callSerially(Runnable r)
Causes the runnable to be invoked on the event dispatch thread. This method returns immediately and will not wait for the serial call to occur

Parameters

r Runnable
runnable (NOT A THREAD!) that will be invoked on the EDT serial to the paint and key handling events

callSeriallyOnIdle

public void callSeriallyOnIdle(Runnable r)
Causes the runnable to be invoked on the event dispatch thread when the event dispatch thread is idle. This method returns immediately and will not wait for the serial call to occur. Notice this method is identical to call serially but will perform the runnable only when the EDT is idle

Parameters

r Runnable
runnable (NOT A THREAD!) that will be invoked on the EDT serial to the paint and key handling events

getLineSeparator

public String getLineSeparator()

scheduleBackgroundTask

public void scheduleBackgroundTask(Runnable r)
Allows executing a background task in a separate low priority thread. Tasks are serialized so they don’t overload the CPU.

Parameters

r Runnable
the task to perform in the background

callSeriallyAndWait

public void callSeriallyAndWait(Runnable r)
Identical to callSerially with the added benefit of waiting for the Runnable method to complete.

Parameters

r Runnable
runnable (NOT A THREAD!) that will be invoked on the EDT serial to the paint and key handling events

Throws

IllegalStateException
if this method is invoked on the event dispatch thread (e.g. during paint or event handling).

platformUsesInputMode

public boolean platformUsesInputMode()
Checks if this platform uses input modes. No current platforms return true for this. It is a holdover from J2ME.

Returns

True if the platform supports input modes. Only true for J2ME and RIM.

callSeriallyAndWait

public void callSeriallyAndWait(Runnable r, int timeout)
Identical to callSerially with the added benefit of waiting for the Runnable method to complete.

Parameters

r Runnable
runnable (NOT A THREAD!) that will be invoked on the EDT serial to the paint and key handling events
timeout int
timeout duration, on timeout the method just returns

Throws

IllegalStateException
if this method is invoked on the event dispatch thread (e.g. during paint or event handling).

isInTransition

public boolean isInTransition()
Returns true if the system is currently in the process of transitioning between forms

Returns

true if in the middle of form transition

getStackTrace

public String getStackTrace(Thread parentThread, Throwable t)
Returns the stack trace from the exception on the given thread. This API isn’t supported on all platforms and may return a blank string when unavailable.

Parameters

parentThread Thread
the thread in which the exception was thrown
t Throwable
the exception

Returns

a stack trace string that might be blank

onEditingComplete

public void onEditingComplete(Component c, String text)
Called by the underlying implementation to indicate that editing in the native system has completed and changes should propagate into Codename One

Parameters

c Component
edited component
text String
new text for the component

invokeWithoutBlocking

public void invokeWithoutBlocking(Runnable r)
Invokes a Runnable with blocking disabled. If any attempt is made to block (i.e. call #invokeAndBlock(java.lang.Runnable) from inside this Runnable, it will result in a BlockingDisallowedException being thrown.

Parameters

r Runnable
Runnable to be run immediately.

Throws

BlockingDisallowedException
If #invokeAndBlock(java.lang.Runnable) is attempted anywhere in the Runnable.

invokeWithoutBlockingWithResultSync

public <T> T invokeWithoutBlockingWithResultSync(RunnableWithResultSync<T> r)
Invokes a RunnableWithResultSync with blocking disabled. If any attempt is made to block (i.e. call #invokeAndBlock(java.lang.Runnable) from inside this Runnable, it will result in a BlockingDisallowedException being thrown.

Parameters

r RunnableWithResultSync<T>
RunnableWithResultSync to be run immediately.

Throws

BlockingDisallowedException
If #invokeAndBlock(java.lang.Runnable) is attempted anywhere in the Runnable.

invokeAndBlock

public void invokeAndBlock(Runnable r, boolean dropEvents)

Invokes runnable and blocks the current thread, if the current thread is the EDT it will still be blocked in a way that doesn’t break event dispatch . Important: calling this method spawns a new thread that shouldn’t access the UI!

See this section in the developer guide for further information.

Parameters

r Runnable
runnable (NOT A THREAD!) that will be invoked synchronously by this method
dropEvents boolean
indicates if the display should drop all events while this runnable is running

Throws

BlockingDisallowedException
if this method is called while blocking is disabled (i.e. we are running inside a call to #invokeWithoutBlocking(java.lang.Runnable) on the EDT).

invokeAndBlock

public void invokeAndBlock(Runnable r)

Invokes runnable and blocks the current thread, if the current thread is the EDT it will still be blocked in a way that doesn’t break event dispatch . Important: calling this method spawns a new thread that shouldn’t access the UI!

See this section in the developer guide for further information.

Parameters

r Runnable
runnable (NOT A THREAD!) that will be invoked synchroniously by this method

isTouchScreenDevice

public boolean isTouchScreenDevice()
The name of this method is misleading due to it’s legacy. It will return true on the desktop too where the mouse sends pointer events.

Returns

true if this device supports touch/pointer events

setTouchScreenDevice

public void setTouchScreenDevice(boolean touchScreen)
Indicates if this is a touch screen device that will return pen events, defaults to true if the device has pen events but can be overriden by the developer.

Parameters

touchScreen boolean
false if this is not a touch screen device

setNoSleep

public void setNoSleep(boolean noSleep)
Calling this method with noSleep=true will cause the edt to run without sleeping.

Parameters

noSleep boolean
causes the edt to stop the sleeping periods between 2 cycles

setTransitionYield

public void setTransitionYield(int transitionD)
Indicates whether a delay should exist between calls to flush graphics during transition. In some devices flushGraphics is asynchronious causing it to be very slow with our background thread. The solution is to add a short wait allowing the implementation time to paint the screen. This value is set automatically by default but can be overriden for some devices.

Parameters

transitionD int
-1 for no delay otherwise delay in milliseconds

editString

public void editString(Component cmp, int maxSize, int constraint, String text)
Fires the native in place text editing logic, normally you wouldn’t invoke this API directly and instead use an API like com.codename1.ui.TextArea#startEditingAsync(), com.codename1.ui.TextArea#startEditing() or com.codename1.ui.Form#setEditOnShow(com.codename1.ui.TextArea).

Parameters

cmp Component
the TextArea component
maxSize int
the maximum size from the text area
constraint int
the constraints of the text area
text String
the string to edit

editString

public void editString(Component cmp, int maxSize, int constraint, String text, int initiatingKeycode)
Fires the native in place text editing logic, normally you wouldn’t invoke this API directly and instead use an API like com.codename1.ui.TextArea#startEditingAsync(), com.codename1.ui.TextArea#startEditing() or com.codename1.ui.Form#setEditOnShow(com.codename1.ui.TextArea).

Parameters

cmp Component
the TextArea component
maxSize int
the maximum size from the text area
constraint int
the constraints of the text area
text String
the string to edit
initiatingKeycode int
the keycode used to initiate the edit.

stopEditing

public void stopEditing(Component cmp)
Allows us to stop editString on the given text component

Parameters

cmp Component
the text field/text area component

stopEditing

public void stopEditing(Component cmp, Runnable onFinish)
Allows us to stop editString on the given text component or Form. If cmp is a Form, it will stop editing in any active component on the form, and close the keyboard if it is opened.

Parameters

cmp Component
the text field/text area component
onFinish Runnable
invoked when editing stopped

minimizeApplication

public boolean minimizeApplication()
Minimizes the current application if minimization is supported by the platform (may fail). Returns false if minimization failed.

Returns

false if minimization failed true if it succeeded or seems to be successful

isMinimized

public boolean isMinimized()
Indicates whether an application is minimized

Returns

true if the application is minimized

restoreMinimizedApplication

public void restoreMinimizedApplication()
Restore the minimized application if minimization is supported by the platform

isControlKeyDown

public boolean isControlKeyDown()
Checks if the control key is currently down. Only relevant for desktop ports.

isMetaKeyDown

public boolean isMetaKeyDown()
Checks if the meta key is currently down. Only relevant for desktop ports.

isAltKeyDown

public boolean isAltKeyDown()
Checks if the alt key is currently down. Only relevant for desktop ports.

isAltGraphKeyDown

public boolean isAltGraphKeyDown()
Checks if the altgraph key is currently down. Only relevant for desktop ports.

isRightMouseButtonDown

public boolean isRightMouseButtonDown()
Checks if the last mouse press was a right click.

Returns

True if the last mouse press was a right click.

isShiftKeyDown

public boolean isShiftKeyDown()
Checks if shift key is currently down. Only relevant for desktop ports.

getCurrentPointerEvent

public PointerEvent getCurrentPointerEvent()

Returns a snapshot of the rich detail for the pointer event currently being dispatched such as the mouse button, pointer type (finger/mouse/stylus), pressure and stylus tilt.

This is most useful when called from within a pointer listener. When no pointer event has been dispatched yet a default snapshot at the last known pointer location is returned.

Returns

the current PointerEvent, never null

getPointerButton

public int getPointerButton()
The mouse button associated with the current pointer event, one of the PointerEvent BUTTON_* constants.

getPressedButtonMask

public int getPressedButtonMask()
A bitmask of the mouse buttons currently held down, built from the PointerEvent MASK_* constants.

getPointerType

public int getPointerType()
The current pointing device type, one of the PointerEvent TYPE_* constants (finger, mouse, stylus or eraser).

getPointerPressure

public float getPointerPressure()
The normalized pressure of the current pointer event between 0.0 and 1.0. Devices and ports that do not report pressure return 1.0.

getPointerTiltX

public float getPointerTiltX()
The stylus tilt across the x axis of the current pointer event in degrees, or 0 when not reported.

getPointerTiltY

public float getPointerTiltY()
The stylus tilt across the y axis of the current pointer event in degrees, or 0 when not reported.

getPointerContactSize

public float getPointerContactSize()
The normalized contact size of the current pointer event between 0.0 and 1.0, or 0 when not reported.

isStylusPointer

public boolean isStylusPointer()
True if the current pointer is a stylus or pen (Apple Pencil, S-Pen and similar).

fireMouseWheelEvent

public boolean fireMouseWheelEvent(int x, int y, int scrollX, int scrollY, boolean precise, int modifiers)

Dispatches a mouse wheel event to the component under the given coordinates, and scrolls it. Invoked by the implementation on the EDT.

This is where a wheel ends: listeners on the component and its ancestors see it first and may consume it, then Component#mouseWheel(com.codename1.ui.events.WheelEvent) may take it, and what neither claimed scrolls the nearest ancestor that can move in that direction. A port calls this and does nothing else.

It used to dispatch to listeners only, as a preflight before the port synthesized a press, a few drags and a release to do the scrolling. Those synthetic events are gone – they pressed whatever sat under the cursor, so a trackpad nudge over a button activated it – and the scrolling they existed for happens here instead. The method is deliberately the single terminal entry point rather than one of a pair: a port that called the wrong half of a split API would either scroll nothing or go back to faking pointer events, which is the bug this replaced.

Parameters

x int
the pointer x position in display pixels
y int
the pointer y position in display pixels
scrollX int
the horizontal scroll amount in display pixels
scrollY int
the vertical scroll amount in display pixels
precise boolean
true if the deltas come from a high resolution device such as a trackpad
modifiers int
bitmask of the held keyboard modifiers

Returns

true if the wheel was acted on – a listener consumed it, a component handled it, or something scrolled. False means nothing under the cursor could move, which is the answer a port needs to pass the gesture to whatever hosts the app; it is NOT an invitation to emulate the wheel with pointer events.

fireMagnifyGesture

public void fireMagnifyGesture(int x, int y, float scale)
Dispatches a magnify (pinch) gesture to the component under the given coordinates, walking up the hierarchy until a component handles it. Invoked by the implementation for native trackpad / multi touch magnify gestures; routes to com.codename1.ui.Component#pinch(float).

Parameters

x int
the gesture x position in display pixels
y int
the gesture y position in display pixels
scale float
the magnification scale, larger than 1 zooms in and smaller than 1 zooms out

fireRotationGesture

public void fireRotationGesture(int x, int y, float radians)
Dispatches a rotation (twist) gesture to the component under the given coordinates, walking up the hierarchy until a component handles it. Invoked by the implementation for native trackpad / multi touch rotation gestures; routes to com.codename1.ui.Component#rotation(float).

Parameters

x int
the gesture x position in display pixels
y int
the gesture y position in display pixels
radians float
the incremental rotation in radians, positive is clockwise

keyPressed

public void keyPressed(int keyCode)
Pushes a key press event with the given keycode into Codename One

Parameters

keyCode int
keycode of the key event

keyReleased

public void keyReleased(int keyCode)
Pushes a key release event with the given keycode into Codename One

Parameters

keyCode int
keycode of the key event

pointerDragged

public void pointerDragged(int[] x, int[] y)
Pushes a pointer drag event with the given coordinates into Codename One

Parameters

x int[]
the x position of the pointer
y int[]
the y position of the pointer

pointerHover

public void pointerHover(int[] x, int[] y)
Pushes a pointer hover event with the given coordinates into Codename One

Parameters

x int[]
the x position of the pointer
y int[]
the y position of the pointer

pointerHoverPressed

public void pointerHoverPressed(int[] x, int[] y)
Pushes a pointer hover release event with the given coordinates into Codename One

Parameters

x int[]
the x position of the pointer
y int[]
the y position of the pointer

pointerHoverReleased

public void pointerHoverReleased(int[] x, int[] y)
Pushes a pointer hover release event with the given coordinates into Codename One

Parameters

x int[]
the x position of the pointer
y int[]
the y position of the pointer

pointerPressed

public void pointerPressed(int[] x, int[] y)
Pushes a pointer press event with the given coordinates into Codename One

Parameters

x int[]
the x position of the pointer
y int[]
the y position of the pointer

pointerReleased

public void pointerReleased(int[] x, int[] y)
Pushes a pointer release event with the given coordinates into Codename One

Parameters

x int[]
the x position of the pointer
y int[]
the y position of the pointer

sizeChanged

public void sizeChanged(int w, int h)
Notifies Codename One of display size changes, this method is invoked by the implementation class and is for internal use

Parameters

w int
the width of the drawing surface
h int
the height of the drawing surface

hideNotify

public void hideNotify()
Broadcasts hide notify into Codename One, this method is invoked by the Codename One implementation to notify Codename One of hideNotify events

showNotify

public void showNotify()
Broadcasts show notify into Codename One, this method is invoked by the Codename One implementation to notify Codename One of showNotify events

hasDragOccured

public boolean hasDragOccured()
This method should be invoked by components that broadcast events on the pointerReleased callback. This method will indicate if a drag occured since the pointer press event, notice that this method will not behave as expected for multi-touch events.

Returns

true if a drag has occured since the last pointer pressed

getCurrentTopLevel

public TopLevelContainer getCurrentTopLevel()
Return the form currently displayed on the screen or null if no form is currently displayed.

Returns

the focused window when one has focus, otherwise the current form, or null

getCurrent

public Form getCurrent()
The form currently displayed on the main surface. See #getCurrentTopLevel() for the answer that can also name a Window.

numAlphaLevels

public int numAlphaLevels()
Deprecated. this method isn’t implemented in most modern devices
Return the number of alpha levels supported by the implementation.

Returns

the number of alpha levels supported by the implementation

numColors

public int numColors()
Deprecated. this method isn’t implemented in most modern devices
Returns the number of colors applicable on the device, note that the API does not support gray scale devices.

Returns

the number of colors applicable on the device

getDisplayWidth

public int getDisplayWidth()
Return the width of the display

Returns

the width of the display

getDisplayHeight

public int getDisplayHeight()
Return the height of the display

Returns

the height of the display

getDesktopSize

public Dimension getDesktopSize()
Returns the size of the desktop hosting the application window when running on a desktop platform.

Returns

the desktop size or the current display size if not supported

getWindowBounds

public Rectangle getWindowBounds()
Returns the current window bounds when running on a desktop platform.

Returns

the bounds of the application window

setWindowSize

public void setWindowSize(int width, int height)
Requests a resize of the application window when supported by the platform.

Parameters

width int
the desired window width
height int
the desired window height

getInitialWindowSizeHintPercent

public Dimension getInitialWindowSizeHintPercent()
Returns the initial desktop window size hint provided by the first shown form, when available.

Returns

the stored hint or null

setInitialWindowSizeHintPercent

public void setInitialWindowSizeHintPercent(Dimension hint)
Sets the initial desktop window size hint (percent of the desktop) that should be used when the first form is shown. This is primarily useful for desktop environments where the Codename One application is hosted in a window rather than full-screen.

Parameters

hint Dimension
a Dimension whose width/height represent percentages of the desktop to use for the initial window size, or null to clear a previously stored hint

convertToPixels

public int convertToPixels(int dipCount, boolean horizontal)
Converts the dips count to pixels, dips are roughly 1mm in length. This is a very rough estimate and not to be relied upon

Parameters

dipCount int
the dips that we will convert to pixels
horizontal boolean
indicates pixels in the horizontal plane

Returns

value in pixels

convertToPixels

public int convertToPixels(float value, byte unitType)
Converts from specified unit to pixels.

Parameters

value float
The value to convert, expressed in unitType.
unitType byte
The unit type. One of Style#UNIT_TYPE_DIPS, Style#UNIT_TYPE_PIXELS, Style#UNIT_TYPE_REM, Style#UNIT_TYPE_SCREEN_PERCENTAGE, Style#UNIT_TYPE_VH, Style#UNIT_TYPE_VW, Style#UNIT_TYPE_VMIN, Style#UNIT_TYPE_VMAX

Returns

The value converted to pixels.

convertToPixels

public int convertToPixels(float value, byte unitType, boolean horizontal)
Converts from specified unit to pixels.

Parameters

value float
The value to convert, expressed in unitType.
unitType byte
The unit type. One of Style#UNIT_TYPE_DIPS, Style#UNIT_TYPE_PIXELS, Style#UNIT_TYPE_REM, Style#UNIT_TYPE_SCREEN_PERCENTAGE, Style#UNIT_TYPE_VH, Style#UNIT_TYPE_VW, Style#UNIT_TYPE_VMIN, Style#UNIT_TYPE_VMAX
horizontal boolean
Whether screen percentage units should be based on horitonzal or vertical percentage.

Returns

The value converted to pixels.

convertToPixels

public int convertToPixels(float dipCount)
Converts the dips count to pixels, dips are roughly 1mm in length. This is a very rough estimate and not to be relied upon. This version of the method assumes square pixels which is pretty much the norm.

Parameters

dipCount float
the dips that we will convert to pixels

Returns

value in pixels

getGameAction

public int getGameAction(int keyCode)
Returns the game action code matching the given key combination

Parameters

keyCode int
key code received from the event

Returns

game action matching this keycode

getKeyCode

public int getKeyCode(int gameAction)
Deprecated. this method doesn’t work properly across device and is mocked up here mostly for the case of unit testing. Do not use it for anything other than that! Do not rely on getKeyCode(GAME_*) == keyCodeFromKeyEvent, this will never actually happen!
Returns the keycode matching the given game action constant (the opposite of getGameAction). On some devices getKeyCode returns numeric keypad values for game actions, this breaks the code since we filter these values (to prevent navigation on ‘2’). We pick unused negative values for game keys and assign them to game keys for getKeyCode so they will work with getGameAction.

Parameters

gameAction int
game action constant from this class

Returns

keycode matching this constant

isThirdSoftButton

public boolean isThirdSoftButton()
Indicates whether the 3rd softbutton should be supported on this device

Returns

true if a third softbutton should be used

setThirdSoftButton

public void setThirdSoftButton(boolean thirdSoftButton)
Indicates whether the 3rd softbutton should be supported on this device

Parameters

thirdSoftButton boolean
true if a third softbutton should be used

setShowVirtualKeyboard

public void setShowVirtualKeyboard(boolean show)
Deprecated. this method was only relevant for feature phones. You should use com.codename1.ui.TextArea#startEditingAsync() or com.codename1.ui.TextArea#stopEditing() to control text field editing/VKB visibility
Displays the virtual keyboard on devices that support manually poping up the vitual keyboard

Parameters

show boolean
toggles the virtual keyboards visibility

isVirtualKeyboardShowing

public boolean isVirtualKeyboardShowing()
Deprecated. this method was only relevant for feature phones. You should use com.codename1.ui.TextArea#isEditing() instead.
Indicates if the virtual keyboard is currently showing or not

Returns

true if the virtual keyboard is showing

getSupportedVirtualKeyboard

public String[] getSupportedVirtualKeyboard()
Deprecated. this method is only used in feature phones and has no modern equivalent
Returns all platform supported virtual keyboards names

Returns

all platform supported virtual keyboards names

registerVirtualKeyboard

public void registerVirtualKeyboard(VirtualKeyboardInterface vkb)
Deprecated. this method is only used in feature phones and has no modern equivalent
Register a virtual keyboard

getDefaultVirtualKeyboard

public VirtualKeyboardInterface getDefaultVirtualKeyboard()
Deprecated. this method is only used in feature phones and has no modern equivalent
Get the default virtual keyboard or null if the VirtualKeyboard is disabled

Returns

the default vkb

setDefaultVirtualKeyboard

public void setDefaultVirtualKeyboard(VirtualKeyboardInterface vkb)
Deprecated. this method is only used in feature phones and has no modern equivalent
Sets the default virtual keyboard to be used by the platform

Parameters

vkb VirtualKeyboardInterface
a VirtualKeyboard to be used or null to disable the VirtualKeyboard

getVirtualKeyboardListener

public ActionListener getVirtualKeyboardListener()
Deprecated. Use #removeVirtualKeyboardListener(com.codename1.ui.events.ActionListener)
Gets the VirtualKeyboardListener Objects of exists.

Returns

a Listener Object or null if not exists

setVirtualKeyboardListener

public void setVirtualKeyboardListener(ActionListener l)
Deprecated. Use #addVirtualKeyboardListener(com.codename1.ui.events.ActionListener)
Sets a listener for VirtualKeyboard hide/show events. The Listener will get an event once the keyboard is opened/closed with a Boolean value that represents the state of the keyboard true for open and false for closed getSource() on the ActionEvent will return the Boolean value.

Parameters

l ActionListener
the listener

addVirtualKeyboardListener

public void addVirtualKeyboardListener(ActionListener l)

Adds a listener for VirtualKeyboard hide/show events. ActionEvents will return a Boolean value for ActionEvent#getSource(), with Boolean.TRUE on show, and Boolean.FALSE on hide.

Note: Keyboard events may not be 100% reliable as they use heuristics on most platforms to guess when the keyboard is shown or hidden.

Parameters

l ActionListener
The listener.

removeVirtualKeyboardListener

public void removeVirtualKeyboardListener(ActionListener l)

Removes a listener for VirtualKeyboard hide/show events. ActionEvents will return a Boolean value for ActionEvent#getSource(), with Boolean.TRUE on show, and Boolean.FALSE on hide.

Note: Keyboard events may not be 100% reliable as they use heuristics on most platforms to guess when the keyboard is shown or hidden.

Parameters

l ActionListener
The listener.

fireVirtualKeyboardEvent

public void fireVirtualKeyboardEvent(boolean show)
Fires a virtual keyboard show event.

getInvisibleAreaUnderVKB

public int getInvisibleAreaUnderVKB()
Gets the invisible area under the Virtual Keyboard.

Returns

Height of the VKB that overlaps the screen.

getKeyboardType

public int getKeyboardType()
Returns the type of the input device one of: KEYBOARD_TYPE_UNKNOWN, KEYBOARD_TYPE_NUMERIC, KEYBOARD_TYPE_QWERTY, KEYBOARD_TYPE_VIRTUAL, KEYBOARD_TYPE_HALF_QWERTY

Returns

KEYBOARD_TYPE_UNKNOWN

isNativeInputSupported

public boolean isNativeInputSupported()
Indicates whether the device supports native in place editing in which case lightweight input logic shouldn’t be used for input.

Returns

false by default

isMultiTouch

public boolean isMultiTouch()
Indicates whether the device supports multi-touch events, this is only relevant when touch events are supported

Returns

false by default

isClickTouchScreen

public boolean isClickTouchScreen()

Indicates whether the device has a double layer screen thus allowing two stages to touch events: click and hover. This is true for devices such as the storm but can also be true for a PC with a mouse pointer floating on top.

A click touch screen will also send pointer hover events to the underlying software and will only send the standard pointer events on click.

Returns

false by default

getDragSpeed

public float getDragSpeed(boolean yAxis)
This method returns the dragging speed based on the latest dragged events

Parameters

yAxis boolean
indicates what axis speed is required

Returns

the dragging speed

isBidiAlgorithm

public boolean isBidiAlgorithm()
Indicates whether Codename One should consider the bidi RTL algorithm when drawing text or navigating with the text field cursor.

Returns

true if the bidi algorithm should be considered

setBidiAlgorithm

public void setBidiAlgorithm(boolean activate)
Indicates whether Codename One should consider the bidi RTL algorithm when drawing text or navigating with the text field cursor.

Parameters

activate boolean
set to true to activate the bidi algorithm, false to disable it

convertBidiLogicalToVisual

public String convertBidiLogicalToVisual(String s)
Converts the given string from logical bidi layout to visual bidi layout so it can be rendered properly on the screen. This method is only necessary for devices/platforms that don’t have “built in” bidi support such as Sony Ericsson devices. See this for more on visual vs. logical ordering.

Parameters

s String
a “logical” string with RTL characters

Returns

a “visual” renderable string

getCharLocation

public int getCharLocation(String source, int index)
Returns the index of the given char within the source string, the actual index isn’t necessarily the same when bidi is involved See this for more on visual vs. logical ordering.

Parameters

source String
the string in which we are looking for the position
index int
the “logical” location of the cursor

Returns

the “visual” location of the cursor

isRTL

public boolean isRTL(char c)
Returns true if the given character is an RTL character

Parameters

c char
character to test

Returns

true if the charcter is an RTL character

getResourceAsStream

public InputStream getResourceAsStream(Class cls, String resource)
This method is essentially equivalent to cls.getResourceAsStream(String) however some platforms might define unique ways in which to load resources within the implementation.

Parameters

cls Class
class to load the resource from
resource String
relative/absolute URL based on the Java convention

Returns

input stream for the resource or null if not found

addEdtErrorHandler

public void addEdtErrorHandler(ActionListener e)
An error handler will receive an action event with the source exception from the EDT once an error handler is installed the default Codename One error dialog will no longer appear

Parameters

e ActionListener
listener receiving the errors

getNativeLogSnapshot

public String getNativeLogSnapshot()
An error handler will receive an action event with the source exception from the EDT once an error handler is installed the default Codename One error dialog will no longer appear

installNativeCrashHandler

public void installNativeCrashHandler()
Installs the platform native crash handler used by crash protection. On platforms where a native crash (a signal, an uncaught Objective-C exception, a segfault in JNI code) cannot reach the JVM error path, the handler writes a structured record to disk before the process dies. The record is replayed on the next launch via consumePendingNativeCrash(). Idempotent.

consumePendingNativeCrash

public String consumePendingNativeCrash()
Returns the captured native crash evidence (raw backtrace + signal info as a text blob) from installNativeCrashHandler(), or null if none. The implementation deletes the underlying record before returning so the same crash isn’t replayed on subsequent launches. Crash protection wraps the returned blob in a synthetic report payload.

removeEdtErrorHandler

public void removeEdtErrorHandler(ActionListener e)

isAllowMinimizing

public boolean isAllowMinimizing()
Allows a Codename One application to minimize without forcing it to the front whenever a new dialog is poped up

Returns

allowMinimizing value

setAllowMinimizing

public void setAllowMinimizing(boolean allowMinimizing)
Allows a Codename One application to minimize without forcing it to the front whenever a new dialog is poped up

Parameters

allowMinimizing boolean
value

shouldRenderSelection

public boolean shouldRenderSelection()
This is an internal state flag relevant only for pureTouch mode (otherwise it will always be true). A pureTouch mode is stopped if a user switches to using the trackball/navigation pad and this flag essentially toggles between those two modes.

Returns

the shouldRenderSelection

shouldRenderSelection

public boolean shouldRenderSelection(Component c)

isPureTouch

public boolean isPureTouch()
A pure touch device has no focus showing when the user is using the touch interface. Selection only shows when the user actually touches the screen or suddenly switches to using a keypad/trackball. This sort of interface is common in Android devices

Returns

the pureTouch flag

setPureTouch

public void setPureTouch(boolean pureTouch)
A pure touch device has no focus showing when the user is using the touch interface. Selection only shows when the user actually touches the screen or suddenly switches to using a keypad/trackball. This sort of interface is common in Android devices

Parameters

pureTouch boolean
the value for pureTouch

isNativeCommands

public boolean isNativeCommands()
Deprecated. use getCommandBehavior() == Display.COMMAND_BEHAVIOR_NATIVE
Indicates whether Codename One commands should be mapped to the native menus

Returns

the nativeCommands status

setNativeCommands

public void setNativeCommands(boolean nativeCommands)
Deprecated. use setCommandBehavior(Display.COMMAND_BEHAVIOR_NATIVE)
Indicates whether Codename One commands should be mapped to the native menus

Parameters

nativeCommands boolean
the flag to set

exitApplication

public void exitApplication()
Exits the application…

exitAndClearTask

public void exitAndClearTask()
Exits the application and removes it from the platform’s list of recent tasks, so the user cannot bring it back by picking it out of the task switcher. This maps to Android’s Activity.finishAndRemoveTask(); platforms that expose no equivalent (iOS, the desktop ports and the simulator among them) fall back to #exitApplication(), which is why the call is always safe to make. Use #isExitAndClearTaskSupported() when the behavior matters enough to branch on.

isExitAndClearTaskSupported

public boolean isExitAndClearTaskSupported()
Indicates whether this platform can remove the application from its list of recent tasks on exit. When this returns false #exitAndClearTask() is still legal, it just behaves exactly like #exitApplication().

Returns

true if the task can be cleared, false if the call degrades to a plain exit

isFullScreenSupported

public boolean isFullScreenSupported()

Checks if this platform supports full-screen mode. If full-screen mode is supported, you can use the #requestFullScreen(), #exitFullScreen(), and #isInFullScreenMode() methods to enter and exit full-screen - and query the current state.

Currently only desktop and Javascript builds support full-screen mode; And Javascript only supports this on certain browsers. See the MDN Fullscreen API docs for a list of browsers that support full-screen.

When running in the simulator, full-screen is only supported for the desktop skin.

Returns

true if Full-screen mode is supported on this platform.

requestFullScreen

public boolean requestFullScreen()

Try to enter full-screen mode if the platform supports it.

Currently only desktop and Javascript builds support full-screen mode; And Javascript only supports this on certain browsers. See the MDN Fullscreen API docs for a list of browsers that support full-screen.

When running in the simulator, full-screen is only supported for the desktop skin.

Returns

true on success. This will also return true if the app is already running in full-screen mode. It will return false if the app fails to enter full-screen mode.

exitFullScreen

public boolean exitFullScreen()

Try to exit full-screen mode if the platform supports it.

Currently only desktop and Javascript builds support full-screen mode; And Javascript only supports this on certain browsers. See the MDN Fullscreen API docs for a list of browsers that support full-screen.

When running in the simulator, full-screen is only supported for the desktop skin.

Returns

true on success. This will also return true if the app is already NOT in full-screen mode. It will return false if the app fails to exit full-screen mode.

isInFullScreenMode

public boolean isInFullScreenMode()
Checks if the app is currently running in full-screen mode.

Returns

true if the app is currently in full-screen mode.

showNativeScreen

public void showNativeScreen(Object nativeFullScreenPeer)
Shows a native Form/Canvas or some other heavyweight native screen

Parameters

nativeFullScreenPeer Object
the native screen peer

isAutoFoldVKBOnFormSwitch

public boolean isAutoFoldVKBOnFormSwitch()
Normally Codename One folds the VKB when switching forms this field allows us to block that behavior.

Returns

the autoFoldVKBOnFormSwitch

setAutoFoldVKBOnFormSwitch

public void setAutoFoldVKBOnFormSwitch(boolean autoFoldVKBOnFormSwitch)
Normally Codename One folds the VKB when switching forms this field allows us to block that behavior.

Parameters

autoFoldVKBOnFormSwitch boolean
the autoFoldVKBOnFormSwitch to set

getCommandBehavior

public int getCommandBehavior()
Deprecated. we recommend migrating to the Toolbar API. When using the toolbar the command behavior can’t be manipulated
Indicates the way commands should be added to a form as one of the ocmmand constants defined in this class

Returns

the commandBehavior

setCommandBehavior

public void setCommandBehavior(int commandBehavior)
Deprecated. we recommend migrating to the Toolbar API. When using the toolbar the command behavior can’t be manipulated
Indicates the way commands should be added to a form as one of the ocmmand constants defined in this class

Parameters

commandBehavior int
the commandBehavior to set

postMessage

public void postMessage(MessageEvent message)

Posts a message to the native platform. Different platforms may handle messages posted this way differently.

The Javascript port will dispatch the message on the window object as a custom DOM event named ‘cn1outbox’, with the event data containing a ‘detail’ key with the message, and a ‘code’ key with the code.

Parameters

message MessageEvent
The message.

addMessageListener

public void addMessageListener(ActionListener<MessageEvent> l)

Adds a listener to receive messages from the native platform. This is one mechanism for the native platform to communicate with the Codename one app.

In the JavaScript port, listeners will be notified when DOM events named ‘cn1inbox’ are received on the window object. The event data ‘detail’ key will be the source of the message, and the ‘code’ key will be the source of the code.

Parameters

l ActionListener<MessageEvent>
The listener.

removeMessageListener

public void removeMessageListener(ActionListener<MessageEvent> l)
Removes a listener from receiving messages from the native platform.

Parameters

l ActionListener<MessageEvent>
The listener.

dispatchMessage

public void dispatchMessage(MessageEvent evt)
Dispatches a message to all of the registered listeners.

addWindowListener

public void addWindowListener(ActionListener<WindowEvent> l)
Adds a listener to receive notifications about native window changes such as resize or movement.

Parameters

l ActionListener<WindowEvent>
the listener to add

removeWindowListener

public void removeWindowListener(ActionListener<WindowEvent> l)
Removes a previously registered window listener.

Parameters

l ActionListener<WindowEvent>
the listener to remove

fireWindowEvent

public void fireWindowEvent(WindowEvent evt)
Dispatches a window change event to registered listeners. This method is intended to be invoked by platform implementations.

Parameters

evt WindowEvent
the window event to dispatch

getProperty

public String getProperty(String key, String defaultValue)

Returns the property from the underlying platform deployment or the default value if no deployment values are supported. This is equivalent to the getAppProperty from the jad file.

The implementation should be responsible for the following keys to return reasonable valid values for the application:

  • AppName

  • User-Agent

  • AppVersion

  • Platform - Similar to microedition.platform

  • OS - returns what is the underlying platform e.g. - iOS, Android, RIM, SE…

  • OSVer - OS version when available as a user readable string (not necessarily a number e.g: 3.2.1).

Parameters

key String
the key of the property
defaultValue String
a default return value

Returns

the value of the property

isApnsPushDevice

public boolean isApnsPushDevice()

Whether this port’s device subscribes to push through APNs.

A capability, so it is answered by the port and not by #getProperty(String, String): cn1_push_prefix is a key an application may legitimately set – Push.getPushKey() reads exactly that override – and letting the override answer here sent provider “native” for a device that registers with APNs, so no deliverable subscription was ever created.

Narrow on purpose. The generic port-property accessor behind it stays package private: an application has no business reading arbitrary implementation properties, and every widening of that surface is permanent.

Returns

true when the port registers with APNs

isNativeRedirects

public boolean isNativeRedirects()

Whether this port follows HTTP redirects below the portable network layer, so the framework cannot see where a download actually came from.

A capability for the same reason as #isApnsPushDevice(): it decides whether a model download must be digest pinned, and reading it through #getProperty(String, String) would let application or library code switch that verification off.

Returns

true when redirects are followed natively

setProperty

public void setProperty(String key, String value)
Sets a local property to the application, this method has no effect on the implementation code and only allows the user to override the logic of getProperty for internal application purposes.

Parameters

key String
key the key of the property
value String
the value of the property

canExecute

public Boolean canExecute(String url)

Returns true if executing this URL should work, returns false if it will not and null if this is unknown.

Boolean can = Display.getInstance().canExecute("imdb:///find?q=godfather");
if(can != null && can) {
  Display.getInstance().execute("imdb:///find?q=godfather");
} else {
  Display.getInstance().execute("http://www.imdb.com");
}

Parameters

url String
the url that would be executed

Returns

true if executing this URL should work, returns false if it will not and null if this is unknown

execute

public void execute(String url)

Executes the given URL on the native platform.

Boolean can = Display.getInstance().canExecute("imdb:///find?q=godfather");
if(can != null && can) {
  Display.getInstance().execute("imdb:///find?q=godfather");
} else {
  Display.getInstance().execute("http://www.imdb.com");
}

On the JavaSE simulator this method also serves as the cross-platform entry point for the simulator hook system. The simulator scans cn1libs (and the running app) for META-INF/codenameone/simulator-hooks.properties files, and a URL of the form namespace:itemN that matches a registered hook is intercepted and dispatched on the CN1 EDT instead of being handed to the native URL opener. On Android, iOS, JavaScript and other production targets no hooks are ever registered, so a hook-style URL falls through to the normal native execute and (almost always) becomes a no-op. CN1 UnitTests running cross-platform should guard with canExecute(String) before invoking a hook URL:

if (Boolean.TRUE.equals(Display.getInstance().canExecute("bluetooth:item1"))) {
    Display.getInstance().execute("bluetooth:item1"); // toggle the simulated adapter
}

See the developer guide’s “Creating CN1Libs” chapter for the simulator-hooks.properties format and the positional itemN / labelN conventions.

JavaScript port

Browsers only let a page open a new window/tab from inside a live user gesture, and Codename One dispatches events on its own EDT so by the time your listener calls this method the browser no longer considers a gesture to be in progress. The JavaScript port therefore resolves the javascript.execute.target property to decide what to do:

  • auto (the default) opens a new tab when the page still has user activation and otherwise navigates the page the app is running in. No confirmation prompt is ever shown, but note that navigating the current page unloads the app.
  • _blank only ever opens a new tab. When the browser would block it the port shows a confirmation Sheet whose OK button supplies the missing gesture. This was the behavior before the property existed.
  • _self always navigates the page the app is running in.

Set it before the call, for example in your init method:

Display.getInstance().setProperty("javascript.execute.target", "_self");

The property applies to any URL carrying a URI scheme the browser can hand off, custom deep links like the imdb:///find example above included. It is ignored on every other platform, and on all targets a javascript: URL, a data: URL, a file: URL or a path into local storage keeps its existing meaning.

Parameters

url String
the url to execute

execute

public void execute(String url, ActionListener response)
Executes the given URL on the native platform, this method is useful if the platform has the ability to send an event to the app when the execution has ended, currently this works only for Android platform to invoke other intents.

Parameters

url String
the url to execute
response ActionListener
a callback from the platform when this execution returned to the application

downloadBytesAsFile

public boolean downloadBytesAsFile(String fileName, byte[] bytes)
Offers the given in-memory bytes to the user as a downloadable file, bypassing local storage. This exists for platforms (currently the JavaScript port) where the storage-backed execute(String) download path is unavailable. Returns true if the platform handled the download, false if unsupported (callers should then fall back to writing the file and calling execute(String)).

Parameters

fileName String
the suggested file name for the download
bytes byte[]
the file contents

getDeviceDensity

public int getDeviceDensity()
Returns one of the density variables appropriate for this device, notice that density doesn’t always correspond to resolution and an implementation might decide to change the density based on DPI constraints.

Returns

one of the DENSITY constants of Display

getDevicePixelRatio

public float getDevicePixelRatio()

The platform’s logical-pixel scale factor – device pixels per logical pixel, what iOS calls UIScreen.scale and Android calls density.

Distinct from getDeviceDensity, which is a coarse DPI bucket for choosing artwork and physical sizing. Code that lays out in the platform’s own logical units needs this number: on iOS the scale is 1, 2 or 3, while the density bucket of a modern iPhone implies 3.5.

Returns

pixels per logical pixel, or 0 when the platform does not report one

isRoundedImageSupported

public boolean isRoundedImageSupported()

Whether this platform can round a picture’s corners as it draws it, rather than the caller having to build a rounded copy of the bitmap.

The platform answering yes does not mean every picture can be rounded – procedural images and rotated ones cannot. Ask Graphics.isRoundedImageSupported(Image) about the specific picture before skipping a rounded-copy fallback.

getDensityStr

public String getDensityStr()

Returns the device density as a string.

  • DENSITY_VERY_LOW : “very-low”

  • DENSITY_LOW : “low”

  • DENSITY_MEDIUM : “medium”

  • DENSITY_HIGH : “high”

  • DENSITY_VERY_HIGH : “very-high”

  • DENSITY_HD : “hd”

  • DENSITY_560 : “560”

  • DENSITY_2HD : “2hd”

  • DENSITY_4K : “4k”;

Returns

Device density as a string.

playBuiltinSound

public void playBuiltinSound(String soundIdentifier)
Deprecated. this isn’t supported on most platforms
Plays a builtin device sound matching the given identifier, implementations and themes can offer additional identifiers to the ones that are already built in.

Parameters

soundIdentifier String
the sound identifier which can match one of the common constants in this class or be a user/implementation defined sound

getDisplaySafeArea

public Rectangle getDisplaySafeArea(Rectangle rect)
Gets the display safe area as a rectangle.

Parameters

rect Rectangle
Out parameter that will store the display safe area.

Returns

The display safe area.

installBuiltinSound

public void installBuiltinSound(String soundIdentifier, InputStream data) throws IOException
Installs a replacement sound as the builtin sound responsible for the given sound identifier (this will override the system sound if such a sound exists).

Parameters

soundIdentifier String
the sound string passed to playBuiltinSound
data InputStream
an input stream containing platform specific audio file, its usually safe to assume that wav/mp3 would be supported.

Throws

IOException
if the stream throws an exception

isBuiltinSoundAvailable

public boolean isBuiltinSoundAvailable(String soundIdentifier)
Deprecated. this isn’t supported on most platforms
Indicates whether a user installed or system sound is available

Parameters

soundIdentifier String
the sound string passed to playBuiltinSound

Returns

true if a sound of this given type is avilable

isBuiltinSoundsEnabled

public boolean isBuiltinSoundsEnabled()
Allows muting/unmuting the builtin sounds easily

Returns

true if the sound is not muted

setBuiltinSoundsEnabled

public void setBuiltinSoundsEnabled(boolean enabled)
Allows muting/unmuting the builtin sounds easily

Parameters

enabled boolean
indicates whether the sound is muted

createMedia

public Media createMedia(String uri, boolean isVideo, Runnable onCompletion) throws IOException
Creates a sound in the given URI which is partially platform specific. Notice that an audio is “auto destroyed” on completion and cannot be played twice!

Parameters

uri String
the platform specific location for the sound
isVideo boolean
Not documented.
onCompletion Runnable
invoked when the audio file finishes playing, may be null

Returns

a handle that can be used to control the playback of the audio

Throws

java.io.IOException
if the URI access fails

createMediaAsync

public AsyncResource<Media> createMediaAsync(String uri, boolean video, Runnable onCompletion)
Creates media asynchronously.

Parameters

uri String
the platform specific location for the sound
video boolean
Not documented.
onCompletion Runnable
invoked when the audio file finishes playing, may be null

Returns

a handle that can be used to control the playback of the audio

addCompletionHandler

public void addCompletionHandler(Media media, Runnable onCompletion)
Adds a callback to a Media element that will be called when the media finishes playing.

Parameters

media Media
The media to add the callback to.
onCompletion Runnable
The callback that will run on the EDT when the playback completes.

removeCompletionHandler

public void removeCompletionHandler(Media media, Runnable onCompletion)
Removes onComplete callback from Media element.

Parameters

media Media
The media element.
onCompletion Runnable
The callback.

createMedia

public Media createMedia(InputStream stream, String mimeType, Runnable onCompletion) throws IOException
Create the sound in the given stream Notice that an audio is “auto destroyed” on completion and cannot be played twice!

Parameters

stream InputStream
the stream containing the media data
mimeType String
the type of the data in the stream
onCompletion Runnable
invoked when the audio file finishes playing, may be null

Returns

a handle that can be used to control the playback of the audio

Throws

java.io.IOException
if the URI access fails

createMediaAsync

public AsyncResource<Media> createMediaAsync(InputStream stream, String mimeType, Runnable onCompletion)

isSoundPoolSupported

public boolean isSoundPoolSupported()
Indicates whether this platform provides a native low latency sound pool backing com.codename1.gaming.SoundPool. When false the gaming layer uses a com.codename1.media.MediaManager based fallback.

createSoundPool

public SoundPoolPeer createSoundPool(int maxStreams)
Creates a native low latency sound pool peer for com.codename1.gaming.SoundPool, or returns null when this platform has no native backend.

Parameters

maxStreams int
the maximum number of simultaneously playing voices

createSoftWeakRef

public Object createSoftWeakRef(Object o)
Creates a soft/weak reference to an object that allows it to be collected yet caches it. This method is in the porting layer since CLDC only includes weak references while some platforms include nothing at all and some include the superior soft references.

Parameters

o Object
object to cache

Returns

a caching object or null if caching isn’t supported

extractHardRef

public Object extractHardRef(Object o)
Extracts the hard reference from the soft/weak reference given

Parameters

o Object
the reference returned by createSoftWeakRef

Returns

the original object submitted or null

hasNativeTheme

public boolean hasNativeTheme()
Indicates if the implemenetation has a native underlying theme

Returns

true if the implementation has a native theme available

installNativeTheme

public void installNativeTheme()
Installs the native theme, this is only applicable if hasNativeTheme() returned true. Notice that this method might replace the DefaultLookAndFeel instance and the default transitions.

copyToClipboard

public void copyToClipboard(Object obj)
Performs a clipboard copy operation, if the native clipboard is supported by the implementation it would be used

Parameters

obj Object
object to copy, while this can be any arbitrary object it is recommended that only Strings or Codename One image objects be used to copy

copyToClipboard

public void copyToClipboard(ClipboardContent content)
Copies a set of alternative clipboard representations. The first entry should normally be text/plain; richer consumers can negotiate HTML, RTF, Markdown, AsciiDoc, or custom MIME data.

getPasteDataFromClipboard

public Object getPasteDataFromClipboard()
Returns the current content of the clipboard

Returns

can be any object or null see copyToClipboard

getClipboardContent

public ClipboardContent getClipboardContent()
Returns all clipboard representations exposed by the current port, or null if none are available.

isPortrait

public boolean isPortrait()
Returns true if the device is currently in portrait mode

Returns

true if the device is in portrait mode

isLockOrientation

public boolean isLockOrientation()
Returns true if orientation was locked using #lockOrientation(boolean) and not yet unlocked via #unlockOrientation().

Returns

true if orientation is currently marked as locked

canForceOrientation

public boolean canForceOrientation()

Returns true if the device allows forcing the orientation via code, feature phones do not allow this although some include a jad property allowing for this feature

Since version 6.0, orientation lock is supported in Javascript builds in some browsers. For a full list of browsers the support locking orientation, see the MDN Lock Orientation docs.

NOTE: In Javascript builds, orientation lock is only supported if the app is running in full-screen mode. If the app is not currently in full-screen mode, then #canForceOrientation() will return false and #lockOrientation(boolean) will do nothing.

Returns

true if lockOrientation would work

lockOrientation

public void lockOrientation(boolean portrait)

On devices that return true for canForceOrientation() this method can lock the device orientation either to portrait or landscape mode

Since version 6.0, orientation lock is supported in Javascript builds in some browsers. For a full list of browsers the support locking orientation, see the MDN Lock Orientation docs.

NOTE: In Javascript builds, orientation lock is only supported if the app is running in full-screen mode. If the app is not currently in full-screen mode, then #canForceOrientation() will return false and #lockOrientation(boolean) will do nothing.

Parameters

portrait boolean
true to lock to portrait mode, false to lock to landscape mode

unlockOrientation

public void unlockOrientation()

This is the reverse method for lock orientation allowing orientation lock to be disabled

Since version 6.0, orientation lock is supported in Javascript builds in some browsers. For a full list of browsers the support locking orientation, see the MDN Lock Orientation docs.

NOTE: In Javascript builds, orientation lock is only supported if the app is running in full-screen mode. If the app is not currently in full-screen mode, then #canForceOrientation() will return false and #lockOrientation(boolean) will do nothing.

isTablet

public boolean isTablet()
Indicates whether the device is a tablet, notice that this is often a guess

Returns

true if the device is assumed to be a tablet

isDesktop

public boolean isDesktop()
Returns true if this is a desktop application

Returns

true if this is a desktop application

isWatch

public boolean isWatch()
Indicates whether the application is running on a smartwatch form factor (Apple Watch / Wear OS). Notice that this is often a guess derived from the device metadata.

Returns

true if the device is assumed to be a smartwatch

isTV

public boolean isTV()
Indicates whether the application is running on a television form factor (Apple TV / Android TV / Google TV). Notice that this is often a guess derived from the device metadata.

Returns

true if the device is assumed to be a TV

isCarConnected

public boolean isCarConnected()
Indicates whether a head unit (Apple CarPlay / Google Android Auto) is currently connected and projecting the com.codename1.car experience. See com.codename1.car.Car#isCarConnected().

Returns

true if a car is connected

isFoldable

public boolean isFoldable()
True if the device is a foldable or dual screen device such as a Galaxy Fold, Galaxy Flip, Pixel Fold or Surface Duo.

Returns

true if the device is foldable

getDevicePosture

public DevicePosture getDevicePosture()
Returns the live device fold posture. See com.codename1.ui.DevicePosture for details.

Returns

the device posture, never null

addPostureListener

public void addPostureListener(ActionListener l)
Adds a listener that is notified when the device is folded, unfolded or changes posture. The delivered com.codename1.ui.events.ActionEvent has the type PostureChange; query the new posture from com.codename1.ui.DevicePosture#getInstance().

Parameters

l ActionListener
the listener to add

removePostureListener

public void removePostureListener(ActionListener l)
Removes a posture listener.

Parameters

l ActionListener
the listener to remove

postureChanged

public void postureChanged()
Invoked by the implementation when the device fold posture changes. Fires the registered posture listeners on the EDT.

isDesktopMode

public boolean isDesktopMode()
True if the application is currently running in a desktop windowing mode such as Samsung DeX, Android desktop windowing or iPad Stage Manager. This is distinct from #isDesktop() which reports a genuine desktop platform (Windows, macOS or Linux).

Returns

true if running in a desktop windowing mode

getDisplayCount

public int getDisplayCount()
Returns the number of displays (monitors or external screens) currently attached.

Returns

the number of attached displays, at least 1

isExternalDisplayConnected

public boolean isExternalDisplayConnected()
True if an external or secondary display is currently attached.

Returns

true if an external display is connected

getCarBridge

public CarBridge getCarBridge()
Returns the platform bridge used by the com.codename1.car API to render in-car templates, or null when in-car projection is unsupported on this port. Internal – application code uses the com.codename1.car API rather than this bridge directly.

Returns

the car bridge, or null

getWearableBridge

public WearableBridge getWearableBridge()
Returns the platform bridge used by the com.codename1.wearable API to talk to the counterpart watch or phone app, or null when this device has no wearable counterpart. Internal – application code uses the com.codename1.wearable API rather than this bridge directly.

Returns

the wearable bridge, or null

getHomeBridge

public HomeBridge getHomeBridge()
Returns the platform bridge used by the com.codename1.home API to reach HomeKit, the Google Home APIs or a local simulated home, or null when this port has no smart-home support. Internal – application code uses com.codename1.home.SmartHome rather than this bridge directly.

Returns

the smart-home bridge, or null

getNearbyBridge

public NearbyBridge getNearbyBridge()
Returns the platform bridge used by the com.codename1.nearby API to reach precision ranging, companion-device association and the nearby transport, or null when this port implements none of them. Internal – application code uses the com.codename1.nearby packages rather than this bridge directly.

Returns

the nearby bridge, or null

getCallBridge

public CallBridge getCallBridge()
Returns the platform bridge used by the com.codename1.call API to reach the system call stack – CallKit and PushKit on iOS, ConnectionService and TelecomManager on Android – or null when unsupported on this port. Internal – application code uses the com.codename1.call packages rather than this bridge directly.

Returns

the call bridge, or null

getVpnBridge

public VpnBridge getVpnBridge()
Returns the platform bridge used by the com.codename1.vpn API to manage VPN configurations, or null when unsupported on this port. Internal – application code uses the com.codename1.vpn packages rather than this bridge directly.

Returns

the VPN bridge, or null

getSurfaceBridge

public SurfaceBridge getSurfaceBridge()
Returns the platform bridge used by the com.codename1.surfaces API to render external surfaces (home-screen widgets and live activities), or null when unsupported on this port. Internal – application code uses the com.codename1.surfaces API rather than this bridge directly.

Returns

the surface bridge, or null

getDocumentProviderBridge

public DocumentProviderBridge getDocumentProviderBridge()
Returns the platform bridge used by the com.codename1.documents API to expose the application’s documents to the system file browser, or null when unsupported on this port. Internal – application code uses the com.codename1.documents API rather than this bridge directly.

Returns

the document provider bridge, or null

getContinuityBridge

public ContinuityBridge getContinuityBridge()
Returns the platform bridge used by the com.codename1.continuity API to advertise the user’s current activity to their other devices and to reach the platform’s synced key/value store, or null when unsupported on this port. Internal – application code uses the com.codename1.continuity API rather than this bridge directly.

Returns

the continuity bridge, or null

getIntentBridge

public IntentBridge getIntentBridge()
Returns the platform bridge used by the com.codename1.intents API to expose the application’s capabilities to the system, or null when unsupported on this port. Internal – application code uses the com.codename1.intents API rather than this bridge directly.

Returns

the intent bridge, or null

canDial

public boolean canDial()
Returns true if the device has dialing capabilities

Returns

false if it cannot dial

areMutableImagesFast

public boolean areMutableImagesFast()
On most platforms it is quite fast to draw on a mutable image and then render that image, however some platforms have much slower mutable images in comparison to just drawing on the screen. These platforms should return false here and Codename One will try to use less mutable image related optimizations in transitions and other operations.

Returns

true if mutable images are fast on this platform

getLocationManager

public LocationManager getLocationManager()

This method returns the platform Location Manager used for geofencing. This allows tracking the user location in the background. Usage:

// File: BGLocationTest.java
public void showForm() {
    Form hi = new Form("Hi World");
    hi.addComponent(new Label("Hi World"));

    Location loc = new Location();
    loc.setLatitude(51.5033630);
    loc.setLongitude(-0.1276250);

    Geofence gf = new Geofence("test", loc, 100, 100000);

    LocationManager.getLocationManager().addGeoFencing(GeofenceListenerImpl.class, gf);

    hi.show();
}
// File: GeofenceListenerImpl.java
public class GeofenceListenerImpl implements GeofenceListener {
    public void onExit(String id) {
        System.out.println("Exited "+id);
    }

    public void onEntered(String id) {
        System.out.println("Entered "+id);
    }
}
`public class GeofenceListenerImpl implements GeofenceListener {
public void onExit(String id) {
System.out.println("Exited "+id);`

public void onEntered(String id) {
System.out.println("Entered "+id);
}
}
Form hi = new Form("Hi World");
hi.addComponent(new Label("Hi World"));

Location loc = new Location();
loc.setLatitude(51.5033630);
loc.setLongitude(-0.1276250);

Geofence gf = new Geofence("test", loc, 100, 100000);

LocationManager.getLocationManager().addGeoFencing(GeofenceListenerImpl.class, gf);

hi.show();}

Returns

LocationManager Object

isLocationButtonSupported

public boolean isLocationButtonSupported()

Whether this platform draws a location button of its own.

From Android 17 Google Play requires transactional precise-location use to go through a button the system draws, because a tap on such a button is what earns a session-scoped grant. Where there is no such control this returns false and LocationButton falls back to an ordinary Codename One button that asks for the location permission.

This is the question to ask BEFORE building anything – what the platform can do. What a particular button ended up showing is com.codename1.location.LocationButton#isSystemRendered(), which also answers false when the platform has the control but its session failed.

Returns

whether createLocationButton can produce a control

createLocationButton

public PeerComponent createLocationButton(int textType, int backgroundColor, int textColor, SuccessCallback<Boolean> onPermissionResult)

Builds the platform’s own location button.

This is the platform half of LocationButton, which is what application code uses; it is public for the same reason createGpuPeer is, so a port and the component can meet.

Parameters

textType int
one of the TEXT_ constants on LocationButton
backgroundColor int
an RRGGBB colour for the control, or -1 to let the platform choose
textColor int
an RRGGBB colour for its label, or -1 to let the platform choose
onPermissionResult SuccessCallback<Boolean>
invoked with TRUE when the user shared their location, FALSE when they declined, and null when the platform’s own session failed

Returns

the control, or null when this platform has none

isLocationButtonReady

public boolean isLocationButtonReady(PeerComponent button)

Whether a control from createLocationButton is actually live.

The platform half of com.codename1.location.LocationButton#isSystemRendered(). A control the system renders in another process exists before it is drawn into, and a session that never opens leaves it existing and blank.

Parameters

button PeerComponent
a control this platform returned

Returns

whether the platform is drawing into it

getMotionSensorManager

public MotionSensorManager getMotionSensorManager()
Returns the platform motion sensor entry point or null when the current port does not provide motion sensors. Prefer MotionSensorManager.getInstance() in application code — it handles the fallback to a no-op manager when the current port returns null.

getBiometrics

public Biometrics getBiometrics()
Returns the platform biometric authentication entry point. Prefer Biometrics.getInstance() in application code — it handles the fallback to a no-op stub when the current port does not implement biometrics.

getSecureStorage

public SecureStorage getSecureStorage()
Returns the platform biometric-gated secure storage. Prefer SecureStorage.getInstance() in application code.

getNfc

public Nfc getNfc()
Returns the platform NFC entry point. Prefer Nfc.getInstance() in application code — it handles the fallback to a no-op stub when the current port does not implement NFC.

getLocalCalendarSource

public LocalCalendarSource getLocalCalendarSource()
Returns the active port’s local device-calendar source. Applications should normally use LocalCalendarSource.getInstance().

getBluetooth

public Bluetooth getBluetooth()
Returns the platform Bluetooth entry point. Prefer Bluetooth.getInstance() in application code — it handles the fallback to a no-op stub when the current port does not implement Bluetooth.

getHealth

public Health getHealth()
Returns the platform health entry point. Prefer Health.getInstance() in application code — it handles the fallback to a no-op stub when the current port does not implement health data.

capturePhoto

public void capturePhoto(ActionListener response)

This method tries to invoke the device native camera to capture images. The method returns immediately and the response will be sent asynchronously to the given ActionListener Object The image is saved as a jpeg to a file on the device.

use this in the actionPerformed to retrieve the file path String path = (String) evt.getSource();

if evt returns null the image capture was cancelled by the user.

Parameters

response ActionListener
a callback Object to retrieve the file path

Throws

RuntimeException
if this feature failed or unsupported on the platform

captureAudio

public void captureAudio(ActionListener<ActionEvent> response)

This method tries to invoke the device native hardware to capture audio. The method returns immediately and the response will be sent asynchronously to the given ActionListener Object The audio is saved to a file on the device.

use this in the actionPerformed to retrieve the file path String path = (String) evt.getSource();

Parameters

response ActionListener<ActionEvent>
a callback Object to retrieve the file path

Throws

RuntimeException
if this feature failed or unsupported on the platform

captureAudio

public void captureAudio(MediaRecorderBuilder recordingOptions, ActionListener response)

This method tries to invoke the device native hardware to capture audio. The method returns immediately and the response will be sent asynchronously to the given ActionListener Object The audio is saved to a file on the device.

use this in the actionPerformed to retrieve the file path String path = (String) evt.getSource();

Parameters

recordingOptions MediaRecorderBuilder
Audio recording options.
response ActionListener
a callback Object to retrieve the file path

Throws

RuntimeException
if this feature failed or unsupported on the platform

captureVideo

public void captureVideo(ActionListener response)

This method tries to invoke the device native camera to capture video. The method returns immediately and the response will be sent asynchronously to the given ActionListener Object The video is saved to a file on the device.

use this in the actionPerformed to retrieve the file path String path = (String) evt.getSource();

Parameters

response ActionListener
a callback Object to retrieve the file path

Throws

RuntimeException
if this feature failed or unsupported on the platform

captureVideo

public void captureVideo(VideoCaptureConstraints constraints, ActionListener response)
Same as #captureVideo(com.codename1.ui.events.ActionListener), except that it attempts to impose constraints on the capture. Constraints include width, height, and max length. Not all platforms support capture constraints. Use the VideoCaptureConstraints#isSupported() to see if a constraint is supported. If constraints are not supported at all, then this method will fall back to calling #captureVideo(com.codename1.ui.events.ActionListener).

Parameters

constraints VideoCaptureConstraints
Capture constraints to use.
response ActionListener
a callback Object to retrieve the file path

openImageGallery

public void openImageGallery(ActionListener response)
Deprecated. see openGallery instead

Opens the device image gallery The method returns immediately and the response will be sent asynchronously to the given ActionListener Object

use this in the actionPerformed to retrieve the file path String path = (String) evt.getSource();

Parameters

response ActionListener
a callback Object to retrieve the file path

Throws

RuntimeException
if this feature failed or unsupported on the platform

openGallery

public void openGallery(ActionListener response, int type)

Opens the device gallery to pick an image or a video.

The method returns immediately and the response is sent asynchronously to the given ActionListener Object as the source value of the event (as a String)

E.g. within the callback action performed call you can use this code: String path = (String) evt.getSource();.

A more detailed sample of picking a video file can be seen here:

final Form hi = new Form("MediaPlayer", new BorderLayout());
hi.setToolbar(new Toolbar());
Style s = UIManager.getInstance().getComponentStyle("Title");
FontImage icon = FontImage.createMaterial(FontImage.MATERIAL_VIDEO_LIBRARY, s);
hi.getToolbar().addCommandToRightBar(new Command("", icon) {
@Override
    public void actionPerformed(ActionEvent evt) {
        Display.getInstance().openGallery((e) -> {
            if(e != null && e.getSource() != null) {
                String file = (String)e.getSource();
                try {
                    Media video = MediaManager.createMedia(file, true);
                    hi.removeAll();
                    hi.add(BorderLayout.CENTER, new MediaPlayer(video));
                    hi.revalidate();
                } catch(IOException err) {
                    Log.e(err);
                }
            }
        }, Display.GALLERY_VIDEO);
    }
});
hi.show();

Version 5.0 and higher support multi-selection (i.e. the types #GALLERY_IMAGE_MULTI, #GALLERY_VIDEO_MULTI, and #GALLERY_ALL_MULTI). When using one of the multiselection types, the source of the ActionEvent will be a String[], containing the paths of the selected elements, or null if the user cancelled the dialog.

Platform support

Currently (version 5.0 and higher), all platforms support the types #GALLERY_IMAGE, #GALLERY_VIDEO, #GALLERY_ALL, #GALLERY_IMAGE_MULTI, #GALLERY_VIDEO_MULTI, #GALLERY_ALL_MULTI. On iOS, multi-selection requires a deployment target of iOS 8.0 or higher, so it is disabled by default. You can enable multi-selection on iOS, by adding the ios.enableGalleryMultiselect=true build hint. This build hint will be added automatically for you if you run your app in the simulator, and it calls openGallery() with one of the multiselect gallery types.

Parameters

response ActionListener
a callback Object to retrieve the file path For multiselection types (#GALLERY_IMAGE_MULTI, #GALLERY_VIDEO_MULTI, and #GALLERY_ALL_MULTI), the source of the ActionEvent sent this callback will be a String[]. For other types, it will be a String. If the dialog was cancelled, it will be null.
type int
one of the following #GALLERY_IMAGE, #GALLERY_VIDEO, #GALLERY_ALL, #GALLERY_IMAGE_MULTI, #GALLERY_VIDEO_MULTI, #GALLERY_ALL_MULTI.

Throws

RuntimeException
if this feature failed or unsupported on the platform. Use #isGalleryTypeSupported(int) to check if the type is supported before calling this method.

See also

openFileChooser

public void openFileChooser(ActionListener response, String accept)

Opens a file chooser for arbitrary user-selected files.

The callback source is a String path that can be read with FileSystemStorage.openInputStream(), or null if the user cancelled. The accept argument is a comma-separated list of file extensions ("pdf,txt", "p8") or MIME types ("application/pdf"). Platforms with native document pickers use them; other ports fall back to a Codename One file tree.

Unlike openGallery(), this API is not for media-library access and does not add photo/music build hints.

Parameters

response ActionListener
callback receiving the selected file path
accept String
comma-separated extensions or MIME types, or null for all files

isGalleryTypeSupported

public boolean isGalleryTypeSupported(int type)
Checks to see if the given gallery type is supported on the current platform.

Parameters

type int
one of the following #GALLERY_IMAGE, #GALLERY_VIDEO, #GALLERY_ALL, #GALLERY_IMAGE_MULTI, #GALLERY_VIDEO_MULTI, #GALLERY_ALL_MULTI.

Returns

True if the type is supported

getPlatformName

public String getPlatformName()
Returns a 2-3 letter code representing the platform name for the platform override

Returns

the name of the platform e.g. ios, rim, win, and, me, HTML5

getPlatformOverrides

public String[] getPlatformOverrides()
Returns the suffixes for ovr files that should be used when loading a layered resource file on this platform

Returns

a string array with the proper order of resource override layers

sendMessage

public void sendMessage(String[] recipients, String subject, Message msg)

Send an email using the platform mail client.

The code below demonstrates sending a simple message with attachments using the devices native email client:

Message m = new Message("Body of message");
m.getAttachments().put(textAttachmentUri, "text/plain");
m.getAttachments().put(imageAttachmentUri, "image/png");
Display.getInstance().sendMessage(new String[] {"someone@gmail.com"}, "Subject of message", m);

Parameters

recipients String[]
array of e-mail addresses
subject String
e-mail subject
msg Message
the Message to send

dial

public void dial(String phoneNumber)
Opens the device Dialer application with the given phone number

isCallDetectionSupported

public boolean isCallDetectionSupported()

Indicates whether this platform can attempt to detect active phone-call interruptions.

A true result means the platform provides a best-effort heuristic only. It does not guarantee exact telephony state.

Returns

true if call detection is implemented on this platform.

isInCall

public boolean isInCall()

Best-effort check for whether the platform currently believes an active phone call is interrupting the app.

This API is intentionally heuristic. It can produce false positives (e.g. non-call interruptions like Control Center or app-switching) and false negatives. Use it for UX hints and telemetry, not as a security or business-critical gate.

Returns

true if the platform currently believes a call interruption is active.

getSMSSupport

public int getSMSSupport()

Indicates the level of SMS support in the platform as one of: #SMS_NOT_SUPPORTED (for desktop, tablet etc.), #SMS_SEAMLESS (no UI interaction), #SMS_INTERACTIVE (with compose UI), #SMS_BOTH.

The sample below demonstrates the use case for this property:

void sendMessage(String phone, String data) {
    switch(Display.getInstance().getSMSSupport()) {
    case Display.SMS_NOT_SUPPORTED:
        return;
    case Display.SMS_SEAMLESS:
        showUIDialogToEditMessageData();
        Display.getInstance().sendSMS(phone, data);
        return;
    default:
        Display.getInstance().sendSMS(phone, data);
        return;
    }
}

Returns

one of the SMS_* values

sendSMS

public void sendSMS(String phoneNumber, String message) throws IOException
Sends a SMS message to the given phone number

Parameters

phoneNumber String
to send the sms
message String
the content of the sms

sendSMS

public void sendSMS(String phoneNumber, String message, boolean interactive) throws IOException

Sends a SMS message to the given phone number, the code below demonstrates the logic of detecting platform behavior for sending SMS.

void sendMessage(String phone, String data) {
    switch(Display.getInstance().getSMSSupport()) {
    case Display.SMS_NOT_SUPPORTED:
        return;
    case Display.SMS_SEAMLESS:
        showUIDialogToEditMessageData();
        Display.getInstance().sendSMS(phone, data);
        return;
    default:
        Display.getInstance().sendSMS(phone, data);
        return;
    }
}

Parameters

phoneNumber String
to send the sms
message String
the content of the sms
interactive boolean
indicates the SMS should show a UI or should not show a UI if applicable see getSMSSupport

notifyStatusBar

public void notifyStatusBar(String tickerText, String contentTitle, String contentBody, boolean vibrate, boolean flashLights)
Deprecated. there is a new version of this method with a slightly improved signature
Place a notification on the device status bar (if device has this functionality). Clicking the notification might re-start the Application.

Parameters

tickerText String
the ticker text of the Notification
contentTitle String
the title of the Notification
contentBody String
the content of the Notification
vibrate boolean
enable/disable notification alert
flashLights boolean
enable/disable notification flashing

isNotificationSupported

public boolean isNotificationSupported()
Indicates whether the notify status bar method will present a notification to the user

Returns

true if the notify status bar method will present a notification to the user

notifyStatusBar

public Object notifyStatusBar(String tickerText, String contentTitle, String contentBody, boolean vibrate, boolean flashLights, Hashtable args)
Deprecated. use scheduleLocalNotification instead
Place a notification on the device status bar (if device has this functionality). Clicking the notification might re-start the Application.

Parameters

tickerText String
the ticker text of the Notification
contentTitle String
the title of the Notification
contentBody String
the content of the Notification
vibrate boolean
enable/disable notification alert
flashLights boolean
enable/disable notification flashing
args Hashtable
additional arguments to the notification

Returns

a platform native object that allows modifying notification state

dismissNotification

public void dismissNotification(Object o)
Removes the notification previously posted with the notify status bar method

Parameters

o Object
the object returned from the notifyStatusBar method

isBadgingSupported

public boolean isBadgingSupported()
Returns true if the underlying OS supports numeric badges on icons. Notice this is only available on iOS and only when push notification is enabled

Returns

true if the underlying OS supports numeric badges

setBadgeNumber

public void setBadgeNumber(int number)
Sets the number that appears on the application icon in iOS

Parameters

number int
number to show on the icon

isOpenNativeNavigationAppSupported

public boolean isOpenNativeNavigationAppSupported()
Returns true if the underlying OS supports opening the native navigation application

Returns

true if the underlying OS supports launch of native navigation app

openNativeNavigationApp

public void openNativeNavigationApp(double latitude, double longitude)
Opens the native navigation app in the given coordinate.

openNativeNavigationApp

public void openNativeNavigationApp(String location)
Opens the native navigation app with the given search location

Parameters

location String
the location to search for in the native navigation map

getAllContacts

public String[] getAllContacts(boolean withNumbers)
Gets all contacts from the address book of the device

Parameters

withNumbers boolean
if true returns only contacts that has a number

Returns

array of contacts unique ids

getAllContacts

public Contact[] getAllContacts(boolean withNumbers, boolean includesFullName, boolean includesPicture, boolean includesNumbers, boolean includesEmail, boolean includeAddress)

Notice: this method might be very slow and should be invoked on a separate thread! It might have platform specific optimizations over getAllContacts followed by looping over individual contacts but that isn’t guaranteed. See isGetAllContactsFast for information.

The sample below demonstrates listing all the contacts within the device with their photos

Form hi = new Form("Contacts", new BoxLayout(BoxLayout.Y_AXIS));
hi.add(new InfiniteProgress());
int size = Display.getInstance().convertToPixels(5, true);
FontImage fi = FontImage.createFixed("" + FontImage.MATERIAL_PERSON, FontImage.getMaterialDesignFont(), 0xff, size, size);

Display.getInstance().scheduleBackgroundTask(() -> {
    Contact[] contacts = Display.getInstance().getAllContacts(true, true, false, true, false, false);
    Display.getInstance().callSerially(() -> {
        hi.removeAll();
        for(Contact c : contacts) {
            MultiButton mb = new MultiButton(c.getDisplayName());
            mb.setIcon(fi);
            mb.setTextLine2(c.getPrimaryPhoneNumber());
            hi.add(mb);
            mb.putClientProperty("id", c.getId());
            Display.getInstance().scheduleBackgroundTask(() -> {
                Contact cc = ContactsManager.getContactById(c.getId(), false, true, false, false, false);
                Display.getInstance().callSerially(() -> {
                    Image photo = cc.getPhoto();
                    if(photo != null) {
                        mb.setIcon(photo.fill(size, size));
                        mb.revalidate();
                    }
                });
            });
        }
        hi.getContentPane().animateLayout(150);
    });
});

Parameters

withNumbers boolean
if true returns only contacts that has a number
includesFullName boolean
if true try to fetch the full name of the Contact(not just display name)
includesPicture boolean
if true try to fetch the Contact Picture if exists
includesNumbers boolean
if true try to fetch all Contact numbers
includesEmail boolean
if true try to fetch all Contact Emails
includeAddress boolean
if true try to fetch all Contact Addresses

Returns

array of the contacts

isGetAllContactsFast

public boolean isGetAllContactsFast()
Indicates if the getAllContacts is platform optimized, notice that the method might still take seconds or more to run so you should still use a separate thread!

Returns

true if getAllContacts will perform faster that just getting each contact

getLinkedContactIds

public String[] getLinkedContactIds(Contact c)
Gets IDs of all contacts that are linked to a given contact. Some platforms, like iOS, allow for multiple distinct contact records to be “linked” to indicate that they refer to the same person.

Parameters

c Contact
The contact whose “linked” contacts are to be retrieved.

Returns

IDs of linked contacts.

getContactById

public Contact getContactById(String id)
Get a Contact according to it’s contact id.

Parameters

id String
unique id of the Contact

Returns

a Contact Object

getContactById

public Contact getContactById(String id, boolean includesFullName, boolean includesPicture, boolean includesNumbers, boolean includesEmail, boolean includeAddress)

This method returns a Contact by the contact id and fills it’s data according to the given flags.

The sample below demonstrates listing all the contacts within the device with their photos

Form hi = new Form("Contacts", new BoxLayout(BoxLayout.Y_AXIS));
hi.add(new InfiniteProgress());
int size = Display.getInstance().convertToPixels(5, true);
FontImage fi = FontImage.createFixed("" + FontImage.MATERIAL_PERSON, FontImage.getMaterialDesignFont(), 0xff, size, size);

Display.getInstance().scheduleBackgroundTask(() -> {
    Contact[] contacts = Display.getInstance().getAllContacts(true, true, false, true, false, false);
    Display.getInstance().callSerially(() -> {
        hi.removeAll();
        for(Contact c : contacts) {
            MultiButton mb = new MultiButton(c.getDisplayName());
            mb.setIcon(fi);
            mb.setTextLine2(c.getPrimaryPhoneNumber());
            hi.add(mb);
            mb.putClientProperty("id", c.getId());
            Display.getInstance().scheduleBackgroundTask(() -> {
                Contact cc = ContactsManager.getContactById(c.getId(), false, true, false, false, false);
                Display.getInstance().callSerially(() -> {
                    Image photo = cc.getPhoto();
                    if(photo != null) {
                        mb.setIcon(photo.fill(size, size));
                        mb.revalidate();
                    }
                });
            });
        }
        hi.getContentPane().animateLayout(150);
    });
});

Parameters

id String
of the Contact
includesFullName boolean
if true try to fetch the full name of the Contact(not just display name)
includesPicture boolean
if true try to fetch the Contact Picture if exists
includesNumbers boolean
if true try to fetch all Contact numbers
includesEmail boolean
if true try to fetch all Contact Emails
includeAddress boolean
if true try to fetch all Contact Addresses

Returns

a Contact Object

isContactsPermissionGranted

public boolean isContactsPermissionGranted()
Some platforms allow the user to block contacts access on a per application basis this method returns true if the user denied permission to access contacts. This can allow you to customize the error message presented to the user.

Returns

true if contacts access is allowed or globally available, false otherwise

isContactPickerSupported

public boolean isContactPickerSupported()
Returns true when the platform has a contact picker, see com.codename1.contacts.ContactPicker.

Returns

true if #pickContacts(int, boolean, int, boolean, com.codename1.ui.events.ActionListener) will show a picker

pickContacts

public void pickContacts(int requestedFields, boolean multiSelect, int selectionLimit, boolean requireAllRequestedFields, ActionListener<ActionEvent> response)
Shows the platform’s contact picker, see com.codename1.contacts.ContactPicker for the API applications should use and for what the arguments mean.

Parameters

requestedFields int
bit set of the field constants on com.codename1.contacts.ContactPicker
multiSelect boolean
true to let the user pick more than one contact
selectionLimit int
the largest number of contacts the user may pick
requireAllRequestedFields boolean
true to offer only contacts holding every requested field
response ActionListener<ActionEvent>
invoked with a com.codename1.contacts.Contact array source once the user is done

createContact

public String createContact(String firstName, String familyName, String officePhone, String homePhone, String cellPhone, String email)
Create a contact to the device contacts book

Parameters

firstName String
the Contact firstName
familyName String
the Contact familyName
officePhone String
the Contact work phone or null
homePhone String
the Contact home phone or null
cellPhone String
the Contact mobile phone or null
email String
the Contact email or null

Returns

the contact id if creation succeeded or null if failed

deleteContact

public boolean deleteContact(String id)
removed a contact from the device contacts book

Parameters

id String
the contact id to remove

Returns

true if deletion succeeded false otherwise

isNativeVideoPlayerControlsIncluded

public boolean isNativeVideoPlayerControlsIncluded()
Indicates if the native video player includes its own play/pause etc. controls so the movie player component doesn’t need to include them

Returns

true if the movie player component doesn’t need to include such controls

isNativeShareSupported

public boolean isNativeShareSupported()
Indicates if the underlying platform supports sharing capabilities

Returns

true if the underlying platform handles share.

isNativeInAppReviewSupported

public boolean isNativeInAppReviewSupported()
Indicates whether the platform exposes a native in-app review/rating prompt (the OS-sanctioned “rate this app” sheet). When false the AppReview API falls back to a Codename One drawn rating widget.

Returns

true if the platform can present a native review prompt.

requestNativeInAppReview

public void requestNativeInAppReview(SuccessCallback<Boolean> done)
Requests the native in-app review prompt. Should only be invoked when isNativeInAppReviewSupported returns true. The platforms hide whether the user actually rated and may throttle the prompt; done reports whether the request reached the native review controller.

Parameters

done SuccessCallback<Boolean>
invoked with true once the native prompt was requested or false when the platform did not handle it. May be null.

share

public void share(String toShare)
Deprecated. use the method share that accepts an image and mime type

Share the required information using the platform sharing services. a Sharing service can be: mail, sms, facebook, twitter,… This method is implemented if isNativeShareSupported() returned true for a specific platform.

Since 6.0, there is native sharing support in the Javascript port using the navigator.share API. Currently (2019) this is only supported on Chrome for Android, and will only work if the app is accessed over https:.

Parameters

toShare String
String to share.

share

public void share(String text, String image, String mimeType)

Share the required information using the platform sharing services. a Sharing service can be: mail, sms, facebook, twitter,… This method is implemented if isNativeShareSupported() returned true for a specific platform.

Since 6.0, there is native sharing support in the Javascript port using the navigator.share API. Currently (2019) this is only supported on Chrome for Android, and will only work if the app is accessed over https:.

Parameters

text String
String to share.
image String
file path to the image or null
mimeType String
type of the image or null if no image to share

share

public void share(String textOrPath, String image, String mimeType, Rectangle sourceRect)

Share the required information using the platform sharing services. a Sharing service can be: mail, sms, facebook, twitter,… This method is implemented if isNativeShareSupported() returned true for a specific platform.

Since 6.0, there is native sharing support in the Javascript port using the navigator.share API. Currently (2019) this is only supported on Chrome for Android, and will only work if the app is accessed over https:.

Since 7.0, you can share files using using the file path in the text parameter. The file must exist in file system storage, and you must define the appropriate mimeType in the mimeType parameter. E.g. share("file:/.../myfile.pdf", null, "application.pdf")

Parameters

textOrPath String
String to share, or path to file to share.
image String
file path to the image or null
mimeType String
type of the image or file. null if just sharing text
sourceRect Rectangle
The source rectangle of the button that originated the share request. This is used on some platforms to provide a hint as to where the share dialog overlay should pop up. Particularly, on the iPad with iOS 8 and higher.

share

public void share(String textOrPath, String image, String mimeType, Rectangle sourceRect, ShareResultListener listener)

Like share(String,String,String,Rectangle) but reports the outcome through listener on the EDT.

listener may be null. If the underlying platform cannot report the outcome (older Android, Web Share API), the listener is still invoked with ShareResult.sharedTo passing a null package name so the app can resume its flow.

Parameters

textOrPath String
String to share, or path to file to share.
image String
file path to the image or null
mimeType String
type of the image or file. null if just sharing text
sourceRect Rectangle
source rectangle hint for the share popover. May be null.
listener ShareResultListener
callback for the share outcome. May be null.

isPrintingSupported

public boolean isPrintingSupported()
Indicates if the underlying platform can print documents through print(String,String,PrintResultListener).

Returns

true if the underlying platform handles printing.

print

public void print(String filePath, String mimeType, PrintResultListener listener)

Print a document file through the platform printing system, typically showing the native print dialog where the user picks a printer and options. The outcome is reported through listener on the EDT.

All printing platforms accept PDF (application/pdf) and common image types (image/png, image/jpeg); other mime types fail with PrintResult.STATUS_FAILED on platforms that can’t render them. See Printer for a friendlier facade.

Parameters

filePath String
path of the document in FileSystemStorage
mimeType String
the document type, e.g. application/pdf, image/png
listener PrintResultListener
callback for the print outcome. May be null.

getLocalizationManager

public L10NManager getLocalizationManager()

The localization manager allows adapting values for display in different locales thru parsing and formatting capabilities (similar to JavaSE’s DateFormat/NumberFormat). It also includes language/locale/currency related API’s similar to Locale/currency API’s from JavaSE.

The sample code below just lists the various capabilities of the API:

Form hi = new Form("L10N", new TableLayout(16, 2));
L10NManager l10n = L10NManager.getInstance();
hi.add("format(double)").add(l10n.format(11.11)).
    add("format(int)").add(l10n.format(33)).
    add("formatCurrency").add(l10n.formatCurrency(53.267)).
    add("formatDateLongStyle").add(l10n.formatDateLongStyle(new Date())).
    add("formatDateShortStyle").add(l10n.formatDateShortStyle(new Date())).
    add("formatDateTime").add(l10n.formatDateTime(new Date())).
    add("formatDateTimeMedium").add(l10n.formatDateTimeMedium(new Date())).
    add("formatDateTimeShort").add(l10n.formatDateTimeShort(new Date())).
    add("getCurrencySymbol").add(l10n.getCurrencySymbol()).
    add("getLanguage").add(l10n.getLanguage()).
    add("getLocale").add(l10n.getLocale()).
    add("isRTLLocale").add("" + l10n.isRTLLocale()).
    add("parseCurrency").add(l10n.formatCurrency(l10n.parseCurrency("33.77$"))).
    add("parseDouble").add(l10n.format(l10n.parseDouble("34.35"))).
    add("parseInt").add(l10n.format(l10n.parseInt("56"))).
    add("parseLong").add("" + l10n.parseLong("4444444"));
hi.show();

Returns

an instance of the localization manager

registerPush

public void registerPush(String id, boolean noFallback)
Deprecated. use #registerPush() the Android push id should be set with the build hint gcm.sender_id which will work for Chrome JavaScript builds too
User register to receive push notification

Parameters

id String
the id for the user
noFallback boolean
some devices don’t support an efficient push API and will resort to polling to provide push like functionality. If this flag is set to true no polling will occur and the error PushCallback.REGISTRATION_ERROR_SERVICE_NOT_AVAILABLE will be sent to the push interface.

registerPush

public void registerPush(Hashtable metaData, boolean noFallback)
Deprecated. use #registerPush() the Android push id should be set with the build hint gcm.sender_id which will work for Chrome JavaScript builds too
Register to receive push notification, invoke this method once (ever) to receive push notifications.

Parameters

metaData Hashtable
meta data for push, this is relevant on some platforms such as google where a push id is necessary,
noFallback boolean
some devices don’t support an efficient push API and will resort to polling to provide push like functionality. If this flag is set to true no polling will occur and the error PushCallback.REGISTRATION_ERROR_SERVICE_NOT_AVAILABLE will be sent to the push interface.

registerPush

public void registerPush()
Register to receive push notification, invoke this method once (ever) to receive push notifications.

deregisterPush

public void deregisterPush()
Stop receiving push notifications to this client application

createMediaRecorder

public Media createMediaRecorder(String path) throws IOException
Creates a Media recorder Object which will record from the device mic to a file in the given path. The output format will be amr-nb if supported by the platform.

Parameters

path String
a file path to where to store the recording, if the file does not exists it will be created.

createMediaRecorder

public Media createMediaRecorder(MediaRecorderBuilder builder) throws IOException
Deprecated. use MediaRecorderBuilder#build()

Parameters

builder MediaRecorderBuilder
A MediaRecorderBuilder

Returns

a MediaRecorder

createMediaRecorder

public Media createMediaRecorder(String path, String mimeType) throws IOException
Creates a Media recorder Object which will record from the device mic to a file in the given path.

Parameters

path String
a file path to where to store the recording, if the file does not exists it will be created.
mimeType String
the output mime type that is supported see getAvailableRecordingMimeTypes()

isSpeechRecognitionSupported

public boolean isSpeechRecognitionSupported()
Whether SpeechRecognizer is implemented on the current platform. The user may still deny mic / speech permission at call time even when this returns true.

startSpeechRecognition

public void startSpeechRecognition(RecognitionOptions options, RecognitionCallback callback)
Begins a speech-recognition session. See SpeechRecognizer.recognize for the callable surface; this hook is the direct delegation point that platform ports override.

stopSpeechRecognition

public void stopSpeechRecognition()

isTextToSpeechSupported

public boolean isTextToSpeechSupported()
Whether TextToSpeech is implemented on the current platform.

textToSpeechSpeak

public void textToSpeechSpeak(String text, TtsOptions options)

textToSpeechStop

public void textToSpeechStop()

textToSpeechAvailableVoices

public String[] textToSpeechAvailableVoices()

getImageIO

public ImageIO getImageIO()
Returns the image IO instance that allows scaling image files.

Returns

the image IO instance or null if image IO isn’t supported for the given platform

getVideoIO

public VideoIO getVideoIO()
Returns the video IO instance for video encoding and frame accurate decoding, or null if video IO isn’t supported on the given platform. See com.codename1.media.VideoIO.

Returns

the video IO instance or null if unsupported

getMediaRecorderingMimeType

public String getMediaRecorderingMimeType()
Deprecated. see getAvailableRecordingMimeTypes() instead
Gets the recording mime type for the returned Media from the createMediaRecorder method

Returns

the recording mime type

openOrCreate

public Database openOrCreate(String databaseName) throws IOException
Opens a database or create one if not exists. On platforms where #isDatabaseCustomPathSupported() this method can optionally accept a file path.

Parameters

databaseName String
the name of the database

Returns

Database Object or null if not supported on the platform

Throws

IOException
if database cannot be created

openOrCreate

public Database openOrCreate(String databaseName, DatabaseConfig config) throws IOException

Opens an encrypted database or creates one if it does not exist.

Prefer com.codename1.db.Database#openOrCreate(java.lang.String, com.codename1.db.DatabaseConfig), which validates the name and the platform’s capability before delegating here.

Parameters

databaseName String
the name of the database
config DatabaseConfig
how the database should be keyed

Returns

the open database

Throws

IOException
if the database cannot be opened, created or decrypted

isDatabaseEncryptionSupported

public boolean isDatabaseEncryptionSupported()
Indicates whether this platform can open encrypted databases.

Returns

true if encrypted databases are supported

openOrCreateForRekey

public Database openOrCreateForRekey(String databaseName) throws IOException
Opens a plaintext database through an engine able to encrypt it in place.

Parameters

databaseName String
the name of the database

Returns

the open database

Throws

IOException
if the database cannot be opened

isDatabaseManagedKeyHardwareBacked

public boolean isDatabaseManagedKeyHardwareBacked()
Indicates whether managed database keys are held in hardware backed storage here.

Returns

true when a hardware backed key store protects managed keys

databaseManagedKeyIdentity

public String databaseManagedKeyIdentity(String databaseName)
Reports whether a database is encrypted, when the platform can tell without reading the file itself.

Parameters

databaseName String
the name of the database

Returns

one of the CodenameOneImplementation DATABASE_ENCRYPT* constants The identity a managed database key with no explicit alias is stored under.

See com.codename1.impl.CodenameOneImplementation#databaseManagedKeyIdentity(String).

databaseRegistryIdentity

public String databaseRegistryIdentity(String databaseName)
See com.codename1.impl.CodenameOneImplementation#databaseRegistryIdentity(String).

Parameters

databaseName String
the database, as an application named it

Returns

the key it is registered under

isRelativeAttachmentNameResolvable

public boolean isRelativeAttachmentNameResolvable()
See com.codename1.impl.CodenameOneImplementation#isRelativeAttachmentNameResolvable().

Returns

whether a relative attachment name resolves to the database this port would open

databaseIdentityForEngineFile

public String databaseIdentityForEngineFile(String engineFile)
See com.codename1.impl.CodenameOneImplementation#databaseIdentityForEngineFile(String).

Parameters

engineFile String
the filename the engine reported

Returns

the registry identity for it

openDatabaseConnections

public int openDatabaseConnections(String databaseName)
See com.codename1.impl.CodenameOneImplementation#openDatabaseConnections(String).

Parameters

databaseName String
the name or path being deleted

Returns

the number of connections the port has open on it

isDatabaseFileEncrypted

public int isDatabaseFileEncrypted(String databaseName)

isBlobQueryParameterSupported

public boolean isBlobQueryParameterSupported()
Indicates whether byte[] values may be used as query parameters.

Returns

true if blobs are accepted as query parameters

isDatabaseCustomPathSupported

public boolean isDatabaseCustomPathSupported()
Indicates whether this platform accepts a file path as a database name.

Returns

true if custom database paths are supported

delete

public void delete(String databaseName) throws IOException
Deletes database

Parameters

databaseName String
the name of the database

Throws

IOException
if database cannot be deleted

exists

public boolean exists(String databaseName)
Indicates weather a database exists

Parameters

databaseName String
the name of the database

Returns

true if database exists

getDatabasePath

public String getDatabasePath(String databaseName)
Returns the file path of the Database if support for database exists on the platform.

Parameters

databaseName String
the name of the database with out / or path elements e.g. mydatabase.db

Returns

the file path of the database or null if database isn’t supported

setPollingFrequency

public void setPollingFrequency(int freq)
Deprecated. we no longer support push polling
Sets the frequency for polling the server in case of polling based push notification

Parameters

freq int
the frequency in milliseconds

createThread

public Thread createThread(Runnable r, String name)
Start a Codename One thread that supports crash protection and similar Codename One features.

Parameters

r Runnable
runnable to run, NOTICE the thread MUST be explicitly started!
name String
the name for the thread

Returns

a thread instance which must be explicitly started!

startThread

public Thread startThread(Runnable r, String name)
Deprecated. confusing name use java.lang.String) instead
Start a Codename One thread that supports crash protection and similar Codename One features.

Parameters

r Runnable
runnable to run, NOTICE the thread MUST be explicitly started!
name String
the name for the thread

Returns

a thread instance which must be explicitly started!

isNativeTitle

public boolean isNativeTitle()
Indicates if the title of the Form is native title(in android ICS devices if the command behavior is native the ActionBar is used to display the title and the menu)

Returns

true if platform would like to show the Form title

refreshNativeTitle

public void refreshNativeTitle()
if the title is native(e.g the android action bar), notify the native title that is needs to be refreshed

getCrashReporter

public CrashReport getCrashReporter()
The crash reporter gets invoked when an uncaught exception is intercepted

Returns

the crashReporter

setCrashReporter

public void setCrashReporter(CrashReport crashReporter)
The crash reporter gets invoked when an uncaught exception is intercepted

Parameters

crashReporter CrashReport
the crashReporter to set

getUdid

public String getUdid()
Returns the UDID for devices that support it

Returns

the UDID or null

getMsisdn

public String getMsisdn()
Returns the MSISDN for devices that expose it

Returns

the msisdn or null

getInAppPurchase

public Purchase getInAppPurchase()
Returns the native OS purchase implementation if applicable, if unavailable this method will try to fallback to a custom purchase implementation and failing that will return null

Returns

instance of the purchase class or null

getInAppPurchase

public Purchase getInAppPurchase(boolean d)
Deprecated. use the version that accepts no arguments, the physical goods purchase is always manual payment if applicable

getCodeScanner

public CodeScanner getCodeScanner()
Deprecated. Use the cn1-codescanner cn1lib.
Returns the native implementation of the code scanner or null

Returns

code scanner instance

getAvailableRecordingMimeTypes

public String[] getAvailableRecordingMimeTypes()
Gets the available recording MimeTypes

isScreenSaverDisableSupported

public boolean isScreenSaverDisableSupported()
Checks if the device supports disabling the screen display from dimming, allowing the developer to keep the screen display on.

isScrollWheeling

public boolean isScrollWheeling()
Checks is the scroll-wheel mouse is currently scrolling. The scroll-wheel simulates pointer presses and drags so there are cases when you are processing pointer events when you may want to know if it was driggered by a scroll wheel.

Returns

True if the scroll-wheel is responsible for current pointer events.

setScreenSaverEnabled

public void setScreenSaverEnabled(boolean e)
If isScreenSaverDisableSupported() returns true calling this method will lock the screen display on

Parameters

e boolean
when set to true the screen saver will work as usual and when set to false the screen will not turn off automatically

hasCamera

public boolean hasCamera()
Returns true if the device has camera false otherwise.

isNativePickerTypeSupported

public boolean isNativePickerTypeSupported(int pickerType)
Indicates whether the native picker dialog is supported for the given type which can include one of PICKER_TYPE_DATE_AND_TIME, PICKER_TYPE_TIME, PICKER_TYPE_DATE

Parameters

pickerType int
the picker type constant

Returns

true if the native platform supports this picker type

showNativePicker

public Object showNativePicker(int type, Component source, Object currentValue, Object data)
Shows a native modal dialog allowing us to perform the picking for the given type which can include one of PICKER_TYPE_DATE_AND_TIME, PICKER_TYPE_TIME, PICKER_TYPE_DATE

Parameters

type int
the picker type constant
source Component
the source component (optional) the native dialog will be placed in relation to this component if applicable
currentValue Object
the currently selected value
data Object
additional meta data specific to the picker type when applicable

Returns

the value from the picker or null if the operation was canceled.

isMultiKeyMode

public boolean isMultiKeyMode()
When set to true Codename One allows multiple hardware keys to be pressed at once, this isn’t on by default since it can trigger some complexities with UI navigation to/from native code

Returns

the multiKeyMode

setMultiKeyMode

public void setMultiKeyMode(boolean multiKeyMode)
When set to true Codename One allows multiple hardware keys to be pressed at once, this isn’t on by default since it can trigger some complexities with UI navigation to/from native code

Parameters

multiKeyMode boolean
the multiKeyMode to set

getLongPointerPressInterval

public int getLongPointerPressInterval()
Long pointer press is invoked after the given interval, this allows making long press events shorter/longer

Returns

time in milliseconds

setLongPointerPressInterval

public void setLongPointerPressInterval(int v)
Long pointer press is invoked after the given interval, this allows making long press events shorter/longer

Parameters

v int
time in milliseconds

scheduleLocalNotification

public void scheduleLocalNotification(LocalNotification n, long firstTime, int repeat)

Schedules a local notification that will occur after the given time elapsed.

The sample below combines this with the geofence API to show a local notification when entering a radius with the app in the background:

// File: GeofenceListenerImpl.java
public class GeofenceListenerImpl implements GeofenceListener {
@Override
    public void onExit(String id) {
    }
@Override
    public void onEntered(String id) {
        if(!Display.getInstance().isMinimized()) {
            Display.getInstance().callSerially(() -> {
                Dialog.show("Welcome", "Thanks for arriving", "OK", null);
            });
        } else {
            LocalNotification ln = new LocalNotification();
            ln.setId("LnMessage");
            ln.setAlertTitle("Welcome");
            ln.setAlertBody("Thanks for arriving!");
            Display.getInstance().scheduleLocalNotification(ln, System.currentTimeMillis() + 10, LocalNotification.REPEAT_NONE);
        }
    }
}
// File: GeofenceSample.java
Geofence gf = new Geofence("test", loc, 100, 100000);
LocationManager.getLocationManager().addGeoFencing(GeofenceListenerImpl.class, gf);

Parameters

n LocalNotification
The notification to schedule.
firstTime long
time in milliseconds when to schedule the notification
repeat int
repeat one of the following: REPEAT_NONE, REPEAT_FIFTEEN_MINUTES, REPEAT_HALF_HOUR, REPEAT_HOUR, REPEAT_DAY, REPEAT_WEEK

cancelLocalNotification

public void cancelLocalNotification(String notificationId)
Cancels a local notification by ID.

requestNotificationPermission

public void requestNotificationPermission(NotificationPermissionCallback callback)
Requests permission to post notifications using a default request (alert, sound and badge). The result is delivered to the callback on the EDT. On platforms without a notification permission model the callback reports the permission as granted.

Parameters

callback NotificationPermissionCallback
the callback to receive the result

requestNotificationPermission

public void requestNotificationPermission(NotificationPermissionRequest request, NotificationPermissionCallback callback)
Requests permission to post notifications with the capabilities described by the given request. The result is delivered to the callback on the EDT.

Parameters

request NotificationPermissionRequest
describes which notification capabilities to request
callback NotificationPermissionCallback
the callback to receive the result

registerNotificationChannel

public void registerNotificationChannel(NotificationChannelBuilder builder)
Registers a notification channel (Android). No-op on platforms without channels.

Parameters

builder NotificationChannelBuilder
the channel definition

deleteNotificationChannel

public void deleteNotificationChannel(String channelId)
Deletes a notification channel (Android). No-op on platforms without channels.

Parameters

channelId String
the channel id to delete

createNotificationChannelGroup

public void createNotificationChannelGroup(String groupId, String groupName)
Creates a notification channel group (Android). No-op on platforms without channels.

Parameters

groupId String
the group id
groupName String
the user-visible group name

scheduleBackgroundWork

public void scheduleBackgroundWork(WorkRequest request)
Schedules constraint-aware background work. Used internally by com.codename1.background.BackgroundWork.

Parameters

request WorkRequest
the work request

cancelBackgroundWork

public void cancelBackgroundWork(String workId)
Cancels scheduled background work by id.

Parameters

workId String
the work id

isBackgroundWorkSupported

public boolean isBackgroundWorkSupported()
Returns true if constraint-aware background work is supported.

Returns

true if supported

scheduleBackgroundProcessing

public void scheduleBackgroundProcessing(String id, long earliestBeginEpochMs, boolean requiresNetwork, boolean requiresPower, Runnable task)
Schedules a deferrable background processing task. Used internally by com.codename1.background.BackgroundTask.

Parameters

id String
the task id
earliestBeginEpochMs long
the earliest begin time in milliseconds since the epoch, or 0
requiresNetwork boolean
true if network is required
requiresPower boolean
true if charging is required
task Runnable
the work to run

cancelBackgroundProcessing

public void cancelBackgroundProcessing(String id)
Cancels a scheduled background processing task.

Parameters

id String
the task id

isBackgroundProcessingSupported

public boolean isBackgroundProcessingSupported()
Returns true if deferrable background processing is supported.

Returns

true if supported

startForegroundService

public Object startForegroundService(String channelId, String title, String body, String iconName, ForegroundService.Task task, ForegroundService handle)
Starts a foreground service. Used internally by com.codename1.background.ForegroundService.

Parameters

channelId String
the notification channel id
title String
the notification title
body String
the notification body
iconName String
the small icon resource name, or null
task ForegroundService.Task
the task to run
handle ForegroundService
the service handle passed to the task

Returns

an opaque native handle

updateForegroundServiceNotification

public void updateForegroundServiceNotification(Object nativeHandle, String title, String body)
Updates a foreground service notification.

Parameters

nativeHandle Object
the handle returned by #startForegroundService
title String
the new title
body String
the new body

stopForegroundService

public void stopForegroundService(Object nativeHandle)
Stops a foreground service.

Parameters

nativeHandle Object
the handle returned by #startForegroundService

isForegroundServiceSupported

public boolean isForegroundServiceSupported()
Returns true if foreground services are supported.

Returns

true if supported

isReceiveSharedContentSupported

public boolean isReceiveSharedContentSupported()
Returns true if the platform can receive shared content from other apps.

Returns

true if supported

isWalletExtensionSupported

public boolean isWalletExtensionSupported()
Returns true if the platform supports publishing data to a Wallet issuer-provisioning extension. Used internally by com.codename1.payment.WalletExtension.

walletExtensionSetPassEntries

public void walletExtensionSetPassEntries(boolean remote, WalletPassEntry[] entries)
Publishes the Wallet extension pass entries, replacing the previous list. Used internally by com.codename1.payment.WalletExtension.

Parameters

remote boolean
true for the Apple Watch list, false for the iPhone list
entries WalletPassEntry[]
the available cards; null or empty clears the list

walletExtensionSetRequiresAuthentication

public void walletExtensionSetRequiresAuthentication(boolean requiresAuthentication)
Sets the Wallet extension requires-authentication flag. Used internally by com.codename1.payment.WalletExtension.

walletExtensionSetAuthToken

public void walletExtensionSetAuthToken(String token)
Publishes the Wallet extension auth token. Used internally by com.codename1.payment.WalletExtension.

walletExtensionClear

public void walletExtensionClear()
Clears all published Wallet extension data. Used internally by com.codename1.payment.WalletExtension.

subscribeToPushTopic

public void subscribeToPushTopic(String topic)
Subscribes the device to a push topic. Used internally by com.codename1.push.Push.

Parameters

topic String
the topic name

unsubscribeFromPushTopic

public void unsubscribeFromPushTopic(String topic)
Unsubscribes the device from a push topic. Used internally by com.codename1.push.Push.

Parameters

topic String
the topic name

setPreferredBackgroundFetchInterval

public void setPreferredBackgroundFetchInterval(int seconds)

Sets the preferred time interval between background fetches. This is only a preferred interval and is not guaranteed. Some platforms, like iOS, maintain sovereign control over when and if background fetches will be allowed. This number is used only as a guideline.

This method must be called in order to activate background fetch.>

Note: If the platform doesn’t support background fetch (i.e. #isBackgroundFetchSupported() returns false, then this method does nothing.

Parameters

seconds int
The time interval in seconds.

getPreferredBackgroundFetchInterval

public int getPreferredBackgroundFetchInterval(int seconds)
Gets the preferred time (in seconds) between background fetches.

Returns

The time interval in seconds.

isBackgroundFetchSupported

public boolean isBackgroundFetchSupported()
Checks to see if the current platform supports background fetch.

Returns

True if the current platform supports background fetch.

isSimulator

public boolean isSimulator()
Allows detecting development mode so debugging code and special cases can be used to simplify flow

Returns

true if we are running in the simulator, false otherwise

isDebuggableBuild

public boolean isDebuggableBuild()

Whether this build is a development build rather than a release build headed for an app store. This is broader than isSimulator(), which reports the JavaSE simulator and designer specifically and is false on a device however the build was signed. Use it to gate a facility that belongs in a build you are working on but not in one a user installs.

What each port reports:

  • Android: true when the package carries the debuggable flag, which a debug build sets and a release build clears.

  • iOS: true when the provisioning profile grants get-task-allow, the entitlement that permits a debugger to attach. Development and ad-hoc profiles carry it; App Store and enterprise profiles do not.

  • JavaSE: ALWAYS true. That port runs the simulator, the designer and the desktop tooling, and it cannot distinguish those from a desktop application packaged for distribution, so a packaged desktop app also reports true. Do not rely on this method alone to withhold something from a shipped DESKTOP build; combine it with your own signal there.

  • Any other port: false, because it cannot tell. The answer errs towards treating a build as a release and withholding the facility.

Returns

true if this is a development build

createBackgroundMedia

public Media createBackgroundMedia(String uri) throws IOException
Creates an audio media that can be played in the background.

Parameters

uri String
the uri of the media can start with jar://, file://, http:// (can also use rtsp:// if supported on the platform)

Returns

Media a Media Object that can be used to control the playback of the media or null if background playing is not supported on the platform

Throws

IOException
if creation of media from the given URI has failed

createBackgroundMediaAsync

public AsyncResource<Media> createBackgroundMediaAsync(String uri)
Creates an audio media that can be played in the background. This call is asynchronous, so that it will return perhaps before the media object is ready.

Parameters

uri String
the uri of the media can start with jar://, file://, http:// (can also use rtsp:// if supported on the platform)

Returns

Media a Media Object that can be used to control the playback of the media or null if background playing is not supported on the platform

gaussianBlurImage

public Image gaussianBlurImage(Image image, float radius)
Create a blur image from the given image. The algorithm is gaussian blur - https://en.wikipedia.org/wiki/Gaussian_blur

Parameters

image Image
the image to blur
radius float
the radius to be used in the algorithm

createSFSymbolImage

public Image createSFSymbolImage(String name, int color, float sizePixels, int weight)
Renders an Apple SF Symbol to an image on iOS (null elsewhere / if the symbol is unavailable). name = SF Symbol name (e.g. “star.fill”); color = 0xRRGGBB; sizePixels = target point size in PIXELS; weight 0=regular..higher bolder.

isGaussianBlurSupported

public boolean isGaussianBlurSupported()
Returns true if gaussian blur is supported on this platform

Returns

true if gaussian blur is supported.

refreshContacts

public void refreshContacts()
Refreshes the native list of contacts on devices that require this see com.codename1.contacts.ContactsManager#refresh()

isJailbrokenDevice

public boolean isJailbrokenDevice()
Returns true if this device is jailbroken or rooted, false if not or unknown. Notice that this method isn’t accurate and can’t detect all jailbreak/rooting cases

Returns

true if this device is jailbroken or rooted, false if not or unknown.

requestIntegrityToken

public AsyncResource<String> requestIntegrityToken(String nonce)
Requests a signed device-attestation token (Play Integrity / App Attest) bound to the server nonce. See com.codename1.security.DeviceIntegrity#requestIntegrityToken(String).

isAttestationSupported

public boolean isAttestationSupported()
Returns true if device-attestation (Play Integrity / App Attest) is supported and bundled.

isDeviceCompromised

public boolean isDeviceCompromised()
Non-exiting RASP check, true if the device appears rooted/jailbroken/instrumented/tampered.

getCompromiseReasons

public String[] getCompromiseReasons()
Returns the reason codes behind isDeviceCompromised() (e.g. “root”, “frida”, “emulator”).

getEnabledAccessibilityServices

public String[] getEnabledAccessibilityServices()
Returns the component ids of the accessibility services currently enabled on the device.

resetAttestation

public void resetAttestation()
Discards cached platform attestation state, forcing the next attestation to start from a fresh hardware key. See com.codename1.security.DeviceIntegrity#resetAttestation().

confirmAttestation

public void confirmAttestation(String keyId)
Acknowledges that a backend recorded the attested key. See com.codename1.security.DeviceIntegrity#confirmAttestation().

getAppSignerDigests

public String[] getAppSignerDigests()
Returns digests of the certificates the running app is signed with. Low level hook for the attestation layer, which reports them to a verifying service; an on-device comparison proves nothing on its own. Empty where the platform has no such concept.

setSecureScreen

public void setSecureScreen(boolean secure)
Marks the current screen secure (Android FLAG_SECURE), blocking screenshots/recording/scraping.

setTapjackingProtection

public void setTapjackingProtection(TapjackingPolicy policy)
Sets the tapjacking policy. See com.codename1.security.DeviceIntegrity#setTapjackingProtection(TapjackingPolicy).

getTapjackingPolicy

public TapjackingPolicy getTapjackingPolicy()
The tapjacking policy currently in force, never null.

isScreenObscured

public boolean isScreenObscured()
True when the most recently observed touch arrived over an obscured window. See com.codename1.security.DeviceIntegrity#isScreenObscured().

addTapjackingListener

public void addTapjackingListener(ActionListener l)
Registers a listener notified when the obscured state changes.

removeTapjackingListener

public void removeTapjackingListener(ActionListener l)
Removes a listener added by addTapjackingListener().

setHideOverlayWindows

public void setHideOverlayWindows(boolean hide)
Asks the OS to hide overlay windows drawn over this app (Android 12+).

isHideOverlayWindowsSupported

public boolean isHideOverlayWindowsSupported()
True where setHideOverlayWindows() is actually enforced by the platform.

getProjectBuildHints

public Map<String, String> getProjectBuildHints()
Returns the build hints for the simulator, this will only work in the debug environment and it’s designed to allow extensions/API’s to verify user settings/build hints exist

Returns

map of the build hints that isn’t modified without the codename1.arg. prefix

setProjectBuildHint

public void setProjectBuildHint(String key, String value)
Sets a build hint into the settings while overwriting any previous value. This will only work in the debug environment and it’s designed to allow extensions/API’s to verify user settings/build hints exist. Important: this will throw an exception outside of the simulator!

Parameters

key String
the build hint without the codename1.arg. prefix
value String
the value for the hint

canInstallOnHomescreen

public boolean canInstallOnHomescreen()

Checks to see if you can prompt the user to install the app on their homescreen. This is only relevant for the Javascript port with PWAs. This is not a “static” property, as it only returns true if the app is in a state that allows you to prompt the user. E.g. if you have previously prompted the user and they have declined, then this will return false.

Best practice is to use #onCanInstallOnHomescreen(java.lang.Runnable) to be notified when you are allowed to prompt the user for installation. Then call #promptInstallOnHomescreen() inside that method - or sometime after.

Example

`onCanInstallOnHomescreen(()->{
     if (canInstallOnHomescreen()) {
          if (promptInstallOnHomescreen()) {
              // User accepted installation` else {
              // user rejected installation
          }
     }
});
}

https://developers.google.com/web/fundamentals/app-install-banners/

Returns

True if you are able to prompt the user to install the app on their homescreen.

promptInstallOnHomescreen

public boolean promptInstallOnHomescreen()
Prompts the user to install this app on their homescreen. This is only relevant in the javascript port.

Returns

The result of the user prompt. true if the user accepts the installation, false if they reject it.

onCanInstallOnHomescreen

public void onCanInstallOnHomescreen(Runnable r)
A callback fired when you are allowed to prompt the user to install the app on their homescreen. Only relevant in the javascript port.

Parameters

r Runnable
Runnable that will be run when/if you are permitted to prompt the user to install the app on their homescreen.

captureScreen

public Image captureScreen()
Deprecated. use screenshot(SuccessCallback) instead
Captures a screenshot of the screen.

Returns

An image of the screen, or null if it failed.

screenshot

public void screenshot(SuccessCallback<Image> callback)
Captures a screenshot in the native layer which should include peer components as well.

Parameters

callback SuccessCallback<Image>
will be invoked on the EDT with a screenshot

notifyPushCompletion

public void notifyPushCompletion()

Notifies the platform that push notification processing is complete. This is useful on iOS where the app is woken up in the background to handle a push notification and needs to signal completion to avoid being suspended prematurely.

If the ios.delayPushCompletion build hint (or property) is set to “true”, Codename One will NOT automatically signal completion after the com.codename1.push.PushCallback#push(String) method returns. Instead, the application MUST invoke this method manually when it has finished its background work (e.g. playing audio, downloading content).

setTimeout

public Timer setTimeout(int timeout, Runnable r)
Convenience method to schedule a task to run on the EDT after timeoutms.

Parameters

timeout int
The timeout in milliseconds.
r Runnable
The task to run.

Returns

The Timer object that can be used to cancel the task.

setInterval

public Timer setInterval(int period, Runnable r)
Convenience method to schedule a task to run on the EDT after periodms repeating every periodms.

Parameters

period int
The delay and repeat in milliseconds.
r Runnable
The runnable to run on the EDT.

Returns

The timer object which can be used to cancel the task.

getSharedJavascriptContext

public BrowserComponent getSharedJavascriptContext()

Gets a reference to an application-wide shared Javascript context that can be used for running Javascript commands. When running in the Javascript port, this Javascript context will be the same context in which the application itself is running, so it gives you the ability to interact with the browser and DOM directly using the familiar BrowserComponent API.

When running on other platforms, this shared context will be an off-screen browser component.

Sample code allowing user to execute arbitrary Javascript code inside the shared context:

Form hi = new Form("Hi World", new BorderLayout());
TextArea input = new TextArea();
TextArea output = new TextArea();
output.setEditable(false);

Button execute = new Button("Run");
execute.addActionListener(evt->{
    BrowserComponent bc = CN.getSharedJavascriptContext().ready().get();
    bc.execute("callback.onSuccess(window.eval(${0}))", new Object[]{input.getText()}, res->{
        output.setText(res.toString());
    });
});
SplitPane split = new SplitPane(SplitPane.VERTICAL_SPLIT, input, output, "0", "50%", "99%");
hi.add(CENTER, split);
hi.add(NORTH, execute);

hi.show();

Returns

A shared BrowserComponent

firePinchBeginGesture

public void firePinchBeginGesture()

Starts a magnify (pinch) gesture. Invoked by the implementation when the platform reports that a gesture began, before any scale is delivered.

A port that reports this gets the gesture delivered to one component for its whole duration; one that does not keeps the older behaviour of resolving the component from the coordinates on every update. Reporting it also discards a claim whose release never arrived, so a cancelled gesture cannot strand the next one.

firePinchReleaseGesture

public void firePinchReleaseGesture(int x, int y)
Ends the magnify (pinch) gesture in progress, notifying whichever component consumed it. Invoked by the implementation when the platform reports that the gesture finished; does nothing when no component took the gesture.

Parameters

x int
the gesture x position in display pixels
y int
the gesture y position in display pixels