Patent Description:
Displays of electronic devices (e.g., a laptop computer, a desktop computer, a smartphone, etc.) generally have a regular rectangular shape. However, some electronic devices may have displays with an irregular feature (such as a notch, rounded edges).

Documents <CIT>, <CIT> and <CIT> describe examples of the related art.

However, for purpose of explanation, several aspects of the subject technology are set forth in the following figures.

Further aspects of the invention are outlined in the dependent claims.

Some electronic devices may have displays with an irregular feature (such as a notch, rounded edges) and/or irregular/non-rectangular shapes or geometries (e.g., star or round-shaped). As an example, for a display having a two-dimensional array of pixels, a notch may be defined as a small area within the display area and adjacent to an edge (e.g., the top edge) of the display, the small area having no pixels but is surrounded with pixels. It may be visually or practically undesirable to render and present any part of an application user interface (UI) on a portion of the display that includes the irregular feature or shape as the application UI may be at least partially obscured by the irregular feature or shape. Typically, one or more applications installed on an electronic device (e.g., a laptop computer, a desktop computer, embedded computing system, etc.) may be developed and configured for a regular display with rectangular geometry. For example, an application may be configured under the assumption that a user interface of the application is to be rendered and presented on a generic rectangular display of which all pixels (in a two-dimensional array arrangement) are available for display purposes. However, when the user interface of such an application (e.g., an application window) is rendered and presented on a display having an irregular feature (e.g., a notch), a portion of the user interface may intersect with or get covered by the irregular feature and thus that user interface portion may be not visible to the user.

Such an obscured presentation of the application user interface may not only be visually displeasing to the user but may also conceal important application information (e.g., text or a status indicator) intended to be visually available to the user for proper user-application interaction. Moreover, once displayed, it may not be possible for the user to digitally move (e.g., using the click and drag operation of the mouse pointer) the user interface or the obscured portion thereof away from the display area covered by the irregular feature. For example, if the application user interface or window is first displayed in a full-screen mode such that the window covers the entire display, it would not be possible for a user to move the window to another display area without terminating the full-screen mode. As another example, an application may be programmed such that, upon execution, an element of its user interface (e.g., a toolbar or a status bar of the application) is static and always displayed in a specific region of the display (e.g., covering a few pixel rows near the top of a rectangular display screen). As such, when the user interface is presented on a display with an irregular feature (e.g., a notch) in the same region that includes the static user interface element, the static user interface element or a portion therefore may undesirably get covered by the irregular feature.

A user may attempt to avoid an irregular display feature by changing the display resolution, which is typically available as a display setting on conventional computing devices. However, any change in the resolution (or any other display setting) may cause flashing or other unwanted artifacts on the display, or may require the user to reboot the computing device to have the new display setting take effect. Accordingly, making such display setting changes for an application may be ineffective and impractical as it requires a manual (i.e., not automatic) intervention by the user and will result in a persistent state of the display (until the setting is changed again) that may not be ideal for other applications that are also displayed, albeit in the background, on the display. Further, with the advent of electronic displays having different shapes, sizes, aspect ratios, and non-rectangular features, it may not be feasible for application developers to create or update applications such that the corresponding user interfaces are compatible with (i.e., do not get obstructed by) the irregular or non-rectangular display geometries. Accordingly, it may be desirable to have techniques implemented in operating systems and electronics devices that automatically adjust the rendering and displaying of an application user interface such that the user interface does not intersect with the display's irregular feature.

The subject system provides techniques for displaying applications on a display while avoiding the display's irregular features (such as a notch, rounded edges) and/or accounting for the display's irregular/non-rectangular shapes (e.g., star or round-shaped), responsive to certain triggering condition(s) specifically related to the application being displayed. In other words, the subject techniques provide for displaying an application while avoiding the display's region(s) that either don't have pixels or have pixels that are not to be used for the application.

The disclosed techniques include determining whether a triggering condition related to an application executing on an electronic device is present, and if so, determining a user interface (UI) adjustment value. The UI adjustment value is applied to a frame that represents all of the content including a user interface of the application to be rendered on a display of the electronic device. The UI adjustment value represents an adjustment to the frame such that, when the adjusted frame is rendered, the user interface of the application is presented on the display except on a predefined portion (e.g., a portion including an irregular feature or region) of the display. The adjusted frame is then rendered to present the user interface of the application on the display except on the predefined portion of the display. Further, responsive to a determination that the triggering condition is no longer present, the UI adjustment value is no longer applied to the frame, and the (unadjusted) frame is rendered to present the user interface of the application on the display.

<FIG> illustrates an example electronic device <NUM> that may implement techniques to automatically adjust the rendering and displaying of an application user interface such that the user interface does not intersect with the display's irregular feature or shape. The electronic device <NUM> is depicted as a laptop computer; however, that depiction is not limiting. The electronic device <NUM> may be, for example, a desktop computer, a smartphone, a peripheral device (e.g., a digital camera, headphones), a tablet computing device, a wearable device (such as a watch, a band, and the like), an appliance (e.g., refrigerator), a vehicle, a robot, a kiosk, an accessory device, or any other appropriate device that includes or is operationally connected to, for example, a display with one or more irregular features (such as a notch, a keyhole, rounded edges) and/or has an irregular shape (e.g., star-shape, round-shape, or any other non-rectangular shape). The electronic device <NUM> may include one or more wireless interfaces, such as WLAN radios, cellular radios, Bluetooth radios, Zigbee radios, near field communication (NFC) radios, and/or other wireless radios. The electronic device <NUM> may be, and/or may include all or part of, the device discussed below with respect to <FIG>, and/or the system discussed below with respect to <FIG>.

By way of example, as shown in <FIG>, the electronic device <NUM> includes a display <NUM> having an irregular feature <NUM> adjacent to a top edge <NUM> of the display <NUM>. The display <NUM> may be a non-touch display (e.g., a screen including an array of pixels) for displaying images or visual content including user interfaces of applications, or a touchscreen (e.g., a screen including an array of pixels and a corresponding array of capacitive, resistive, or other touch sensor electrodes that receive touch-based input) that can be used for both receiving user inputs (e.g., via a stylus or user's finger(s)) and displaying for displaying images or visual content including user interfaces of applications. For example, as shown in <FIG>, the display <NUM> may display one or more windows <NUM>-<NUM>, <NUM>-<NUM> that represent user interfaces of one or more applications being executed on the electronic device <NUM>. In this example, the window <NUM>-<NUM> may be considered to be in the foreground and the window <NUM>-<NUM> may be considered to be in the background of the display <NUM>.

The display <NUM> is depicted as having a mostly rectangular shape; however, that depiction is not limiting. The display <NUM> may have an irregular shape, e.g., star shape, round shape, oval shape, or any other non-rectangular shape. In <FIG>, the irregular feature <NUM> is depicted as a notch <NUM>, which may be defined as a relatively small area within the display area of the display <NUM> and adjacent to an edge (e.g., the top edge <NUM>) of the display <NUM>, the small area having no pixels but is surrounded with pixels. Instead of being adjacent to the top edge <NUM>, the notch <NUM> may be adjacent to a different edge (e.g., the bottom edge, the left edge, or the right edge) of the display <NUM>. In some implementations, the display <NUM> may include more than one irregular feature <NUM> in different regions (e.g., along the same edge or different edges) of the display <NUM>. In some implementations, in addition to or as an alternative to the notch <NUM>, the irregular feature <NUM> may include one or more of a keyhole feature, a region of the display <NUM> adjoining and across an entire edge of the display, and a region of the display <NUM> underneath which an electronic component (e.g., a sensor, a camera, etc.) is embedded.

In some implementations, the subject techniques define a portion of the display (referred to herein as the "predefined portion of the display") around and including the display's irregular feature(s). As described in detail below, the subject techniques, when implemented, may result in adjusting the rendering of a user interface of an application such that the user interface is presented on the display except on the predefined portion of the display. By way of example, in <FIG>, a region <NUM> across the top edge <NUM> and including the notch <NUM> defines the predefined portion of the display <NUM>. However, that depiction is not intended to be limiting; the region <NUM> may span across multiple edges of the display <NUM>. Further, although not shown, one or more static user interface elements (e.g., a toolbar, a status bar, etc.) of an operating system of the electronic device <NUM> may be displayed in the region <NUM> when the electronic device <NUM> is operational.

<FIG> illustrates an example device <NUM> that may implement a system for the device depicted in <FIG> in accordance with one or more implementations. Not all of the depicted components may be used in all implementations, and one or more implementations may include additional or different components than those shown in the figure. Variations in the arrangement and type of the components may be made without departing from the scope of the claims as set forth herein.

The device <NUM> may include a processor <NUM>, a memory <NUM>, a communication interface <NUM>, an input device or module <NUM>, and an output device or module <NUM>. The processor <NUM> may include suitable logic, circuitry, and/or code that enable processing data and/or controlling operations of the device <NUM>. In this regard, the processor <NUM> may be enabled to provide control signals to various other components of the device <NUM>. The processor <NUM> may also control transfers of data between various portions of the device <NUM>. Additionally, the processor <NUM> may enable implementation of an operating system or otherwise execute code to manage operations of the device <NUM>.

The memory <NUM> may include suitable logic, circuitry, and/or code that enable storage of various types of information such as received data, generated data, code, and/or configuration information. The memory <NUM> may include, for example, random access memory (RAM), read-only memory (ROM), flash, and/or magnetic storage. In one or more implementations, in a case where the device <NUM> corresponds to one or more of the electronic device <NUM>, the memory <NUM> may include a frame buffer for storing a frame that represents all the content including a user interface of the application to be rendered on the display <NUM> of the electronic device <NUM>. In some implementations, the frame buffer may be a contiguous high throughput memory in which each element of the frame buffer corresponds to a single pixel on the display <NUM>. The intensity of each pixel may be in accordance with a voltage value applied to the corresponding element of the frame buffer.

The input device <NUM> may include suitable logic, circuitry, and/or code for capturing input, such as audio input (e.g., voice requests), remote control input, touchscreen input, keyboard input, mouse input, etc. The output device <NUM> may include suitable logic, circuitry, and/or code for providing output, such as audio output (e.g., music), image or video output (e.g., a digital image or video), etc. The output device <NUM> may include the display <NUM> including the irregular feature <NUM> as discussed above with respect to <FIG>.

The communication interface <NUM> may include suitable logic, circuitry, and/or code that enables wired or wireless communication for the device. The communication interface <NUM> may include, for example, one or more of a Bluetooth communication interface, a cellular (<NUM>, <NUM>/LTE, <NUM>) interface, an NFC interface, a Zigbee communication interface, a WLAN communication interface, a USB communication interface, or generally any communication interface.

In one or more implementations, one or more of the processor <NUM>, the memory <NUM>, the communication interface <NUM>, the input device <NUM>, the output module <NUM> and/or one or more portions thereof, may be implemented in software (e.g., subroutines and code), may be implemented in hardware (e.g., an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA), a Programmable Logic Device (PLD), a controller, a state machine, gated logic, discrete hardware components, or any other suitable devices) and/or a combination of both.

<FIG> illustrates an example system architecture that may be implemented by the electronic device <NUM> in accordance with one or more implementations of the subject technology. For example, the system architecture may implement techniques to automatically adjust the rendering and displaying of an application user interface such that the user interface does not intersect with the display's irregular feature or shape. For explanatory purposes, the architecture of <FIG> is described as being implemented based on the depicted components of the electronic device <NUM>, by using a processor and/or memory of the electronic device <NUM>. However, not all of the depicted components may be used in all implementations, and one or more implementations may include additional or different components than those shown in the <FIG>. Variations in the arrangement and type of the components may be made without departing from the scope of the claims as set forth herein.

Various portions of the architecture of <FIG> can be implemented in software or hardware, including by one or more processors and a memory device containing instructions, which when executed by the processor cause the processor to perform the operations described herein. In the example of <FIG>, the electronic device <NUM> includes system processes <NUM> including a trigger module <NUM> and an adjustment value module <NUM>, a frame buffer <NUM>, a frame adjustment module <NUM>, and the display <NUM> (discussed above with respect to <FIG>).

In one or more implementations, the frame buffer <NUM> stores a frame <NUM> that represents all the content including a user interface of the application to be rendered on the display <NUM>. In some implementations, the frame buffer <NUM> may be a contiguous high throughput memory in which each element of the frame <NUM> in the frame buffer <NUM> corresponds to a single pixel on the display <NUM>. The intensity of each pixel may be in accordance with a voltage value applied to the corresponding element of the frame buffer <NUM>. As such, the frame <NUM> may be two-dimensional array having element values corresponding to the two-dimensional pixel array of the display <NUM>. In one or more implementations, every memory cell in the frame buffer <NUM> may correspond to a single pixel. In the case of an n-bit color display, each of these n bits may a separate bit plane (e.g. <NUM>-bit color will have <NUM> bit planes). The binary values from each of the n bit planes may be loaded into corresponding positions in a register of a system memory. The resulting binary number is interpreted as an intensity level between <NUM> to <NUM>n - <NUM>, and the intensity level is then converted into an analog voltage between <NUM> and the maximum voltage by a digital-to-analog converter, hence enabling <NUM>n intensity levels. An array of such voltage values (corresponding to the pixels of the display <NUM>) form the frame <NUM> stored in the frame buffer <NUM>.

In one or more implementations, one or more applications executable on the electronic device <NUM> may be configured with a user interface which, when rendered, by default would be presented on the display <NUM> such that the user interface is at least partially obstructed by the irregular feature <NUM>. For such applications, the operating system or the system processes <NUM> (separate from the applications) of the electronic device <NUM> may identify, create, store (in a memory of the device <NUM>), and update a list of applications <NUM> along with their respective user interfaces' incompatibility issues. For example, for each application in the list, the corresponding incompatibility issue(s) may indicate a state or a manner in which the user interface of the application, when rendered, would intersect with the irregular feature <NUM> of the display <NUM> (and thus, be considered incompatible with the display <NUM>).

By way of example, the operating system may identify an Application <NUM> having a "full-screen" incompatibility issue in which when the user interface (e.g., a window <NUM>-<NUM> as shown in <FIG>) is rendered to be presented in the full-screen mode (covering the entire pixel array) on the display <NUM>, a top portion of the user interface is obscured by the notch <NUM>. As another example, an Application <NUM> on the electronic device <NUM> may be configured with a user interface that has two or more user interface (UI) elements (e.g., as shown in <FIG>), and one or more of the UI elements, when rendered, are static (i.e., cannot be moved based on user input) on the display <NUM> and are obscured by the notch <NUM>. In this example, the operating system may identify the Application <NUM> as having a "UI element" incompatibility issue in which when the user interface is rendered to be presented on the display <NUM>, the one or more static UI elements of Application <NUM> are obscured by the notch <NUM>. Additionally, or alternatively, the operating system (or other system processes) executing on the electronic device <NUM> may identify and store other incompatibility issues indicating operational states or conditions of the applications in which at least portions of the corresponding user interfaces get covered or hidden on the display due to its irregular feature or shape.

In one or more implementations, the system processes <NUM> including the trigger module <NUM> and the adjustment value module <NUM> may receive and process application information <NUM> identifying an application which is currently "in focus," i.e., the application of which the user interface is to be rendered for displaying on the foreground of the display <NUM>. The application information <NUM> (to be processed by the system processes <NUM>) may also include state information of the application indicating a state of the user interface of the application. For example, the state information may indicate if the user interface is to be rendered and displayed in the full-screen mode on the display <NUM>, or if the user interface includes a specific UI element which, when rendered, would have coordinates overlapping with the coordinates of the irregular feature <NUM> on the display <NUM>.

In one or more implementations, the trigger module <NUM> may receive and process the application information <NUM> to determine whether a triggering condition is present such that the user interface of the in-focus application is to be adjusted to avoid being obscured by the irregular feature(s) of the display. For example, based on the application information <NUM>, the trigger module <NUM> may determine (a) whether the identified in-focus application is one of the applications in the list of applications predetermined by the operating system as having incompatibility issue(s), and (b) whether the state information indicates a user-interface state that is identified in the list as an incompatibility issue (e.g., full-screen issue, UI issue, or due to movement of the user interface into the portion of the display that includes the irregular feature) for the in-focus application. In one or more implementations, a user may indicate that a given application may have incompatibility issues, such as by checking a box or selecting another UI element corresponding to the given application.

If the trigger module <NUM> determines that both the above (a) and (b) conditions are true (i.e., the user interface of the in-focus application would have an incompatibility issue if rendered), the trigger module <NUM> may determine that a trigger condition exists and generate a trigger condition signal <NUM>. In one or more implementations, the trigger condition signal <NUM> may indicate activation of further modules and processes of the architecture to effectuate adjustment of the user interface so as to avoid or account for the irregular feature <NUM> when displayed on the display <NUM>. In one or more implementations, the application information <NUM> may include an affirmative user input to the system processes specifying that the user requires the user interface of the in-focus application to be adjusted (e.g., to avoid or account for the irregular feature <NUM>), regardless of whether either of the above-discussed conditions (a) and (b) is true. In this example, the trigger condition signal <NUM> represents an adjustment mode for the application activated based on the user input. In one or more implementations, the application information <NUM> may include a preference value embedded in the application (by the developer), the preference value indicating that the user interface of the application is to be adjusted (e.g., to avoid or account for the irregular feature <NUM>), regardless of whether either of the above-discussed conditions (a) and (b) is true. In this example, the trigger condition signal <NUM> represents an adjustment mode for the application activated based on the embedded preference value. In some implementations, the operating system can identify triggering events or conditions without receiving any specific triggering instructions or data, thereby allowing the operating system to render adjusted frames for applications that have not been updated for use with the display <NUM>. This allows existing applications to execute and display on new devices with new (non-rectangular) display geometries.

In one or more implementations, the adjustment value module <NUM> may receive and process the trigger condition signal <NUM> to determine a user interface (UI) adjustment value <NUM>. For example, the UI adjustment value <NUM> may include a scaling value <NUM> and an offset value <NUM>. The scaling value <NUM> may be used to scale values of a frame <NUM> from the frame buffer <NUM> to obtain an adjusted frame <NUM>. Here, the adjusted frame <NUM> may represent the frame <NUM> that has been shrunk or expanded in terms of the display resolution (in both height and width) in accordance with the scaling value <NUM>. The offset value <NUM> may be used to rectilinearly move values of a frame <NUM> from the frame buffer <NUM> to obtain an adjusted frame <NUM>. Here, the adjusted frame <NUM> may represent the frame <NUM> that has been rectilinearly moved (in the horizontal and/or vertical direction) relative to the display <NUM>'s coordinates in accordance with the offset value <NUM>. In one or more implementations, the UI adjustment of scaling and/or offsetting may be animated. Accordingly, the UI adjustment value <NUM> (one or both of the scaling value <NUM> and the offset value <NUM>) may represent an adjustment to the frame <NUM> from the frame buffer <NUM> such that, when the adjusted frame <NUM> is rendered, the application's user interface is presented on the display <NUM> except on the predefined portion, e.g., the region <NUM> (including the irregular feature <NUM> or the notch <NUM>) of the display <NUM>.

In one or more implementations, the frame adjustment module <NUM> may receive and process the frame <NUM> and the UI adjustment value <NUM> including the scaling value <NUM> and/or the offset value <NUM> to generate an adjusted frame <NUM>. As noted above, in accordance with the adjusted frame <NUM>, the application's user interface is modified such that when presented, the user interface is displayed on the display <NUM> except on the predefined portion, e.g., the region <NUM> of the display <NUM>, thus avoiding the irregular feature <NUM> or the notch <NUM> (e.g., as discussed below in reference to <FIG> and <FIG>). In one or more implementations, the frame adjustment module <NUM> may apply the scaling value <NUM> to scale the frame <NUM> to obtain an adjusted frame <NUM>. For example, the frame adjustment module <NUM> may shrink (or expand) the size of the frame <NUM> in both height and width in accordance with the scaling value <NUM>, such that the adjusted frame <NUM> when presented on the display <NUM> would have a lower resolution as compared to a presentation of the frame <NUM>. By way of example, the scaling value <NUM> may represent a reduction in the size of the frame <NUM> to <NUM>% or <NUM>% or <NUM>% of its original size, although these reduction values are not limiting. In one or more implementations, the frame adjustment module <NUM> may apply the offset value <NUM> to the frame <NUM> to obtain an adjusted frame <NUM>. For example, the frame adjustment module <NUM> may rectilinearly move (in the horizontal and/or vertical direction) the frame <NUM> relative to the display <NUM>'s coordinates in accordance with the offset value <NUM>, such that the adjusted frame <NUM> when presented on the display <NUM> would have a rectilinearly-displaced presentation as compared to a presentation of the frame <NUM>. For example, when the adjusted frame <NUM> is rendered, the top edge of the application's user interface may be placed starting at a lower (vertical) coordinate position on the display <NUM> as compared to the placement of the same user interface on the display <NUM> if the (unadjusted) frame <NUM> were to be rendered.

In some implementations, the rendering of the adjusted frame <NUM> is performed by using a hardware module (e.g., processor, chipset, integrated circuit, etc.) that is constructed to perform the rendering in accordance with the UI adjustment value <NUM> without causing flashing or unwanted artifacts typically resulting from display setting changes on conventional computing systems. In some implementation, the applying of the UI adjustment value <NUM> to the frame <NUM> may change the appearance of all the content including the user interface of the in-focus application being displayed by the display <NUM>. However, the change in the appearance would be effective until the triggering condition is present (as detected by the trigger module <NUM>, discussed above). In some implementations, responsive to a determination by the trigger module <NUM> that the triggering condition is no longer present, the frame adjustment module <NUM> terminates application of the UI adjustment value <NUM> to the frame <NUM>, and the frame <NUM> is rendered to display the user interface of the application on the display <NUM>.

<FIG> depict a use case of the subject technology in which adjustment of the user interface of an application having the full-screen incompatibility issue is illustrated. For example, as shown in <FIG>, a window <NUM>-<NUM> of an in-focus application is displayed in the full-screen mode on the display <NUM> of the electronic device <NUM>. As shown, a portion of a header <NUM> of the window <NUM>-<NUM> intersects with and is thus obscured by the notch <NUM>. In accordance with the techniques and the architecture discussed above with respect to <FIG>, the trigger module <NUM> may determine that a triggering condition for the window <NUM>-<NUM> of the in-focus application is present. Based on the trigger condition signal <NUM>, the adjustment value module <NUM> may determine a suitable UI adjustment value <NUM>, and the frame adjustment module <NUM> may apply the UI adjustment value <NUM> to a frame <NUM> corresponding to content including the window <NUM>-<NUM> to obtain an adjusted frame <NUM>. The frame <NUM> may represent content including the window <NUM>-<NUM> to be rendered on the display <NUM>. The UI adjustment value <NUM> may represent an adjustment to the frame <NUM> such that, when the adjusted frame <NUM> is rendered, the window <NUM>-<NUM> is presented on the display <NUM> except on the predefined region <NUM> including the notch <NUM> of the display <NUM>. As shown in <FIG>, the adjusted frame <NUM> is rendered and presented as an adjusted window <NUM>-3A, which may be smaller than and/or downward displaced as compared to the window <NUM>-<NUM>. The scaling and rectilinear movement adjustments to the window <NUM>-<NUM> may be based on the scaling value <NUM> and the offset value <NUM>, respectively. In one or more implementations, the UI adjustment of scaling and/or offsetting may be animated. As shown, the top edge of a header 405A of the window <NUM>-3A is displayed below the predefined region <NUM> thus avoiding the visual intersection of the window with the notch <NUM>.

<FIG> depict another use case of the subject technology in which adjustment of the user interface of an application having the UI element incompatibility issue is illustrated. For example, as shown in <FIG>, the user interface of an in-focus application may include a window <NUM>-<NUM>-<NUM> and a UI element <NUM>-<NUM>-<NUM>, both of which are displayed on the display <NUM> of the electronic device <NUM>. As shown, a portion of UI element <NUM>-<NUM>-<NUM> intersects with and is thus obscured by the notch <NUM>. In accordance with the techniques and the architecture discussed above with respect to <FIG>, the trigger module <NUM> may determine that a triggering condition in relation to the UI element <NUM>-<NUM>-<NUM> is present. Based on the trigger condition signal <NUM>, the adjustment value module <NUM> may determine a suitable UI adjustment value <NUM>, and the frame adjustment module <NUM> may apply the UI adjustment value <NUM> to a frame <NUM> corresponding to all the content on the display <NUM> including the UI element <NUM>-<NUM>-<NUM> to obtain an adjusted frame <NUM>. The UI adjustment value <NUM> may represent an adjustment to the frame <NUM> such that, when the adjusted frame <NUM> is rendered, the UI element <NUM>-<NUM>-<NUM> is presented on the display <NUM> except on the predefined region <NUM> including the notch <NUM> of the display <NUM>. As shown in <FIG>, the adjusted frame <NUM> is rendered and presented including an adjusted UI element <NUM>-<NUM>-2A and an adjusted window <NUM>-<NUM>-1A. The adjusted window <NUM>-<NUM>-1A and the adjusted UI element <NUM>-<NUM>-2A may be smaller than and/or downward displaced as compared to the window <NUM>-<NUM>-<NUM> and the UI element <NUM>-<NUM>-<NUM>, respectively. The scaling and rectilinear movement adjustments to the window <NUM>-<NUM>-<NUM> and the UI element <NUM>-<NUM>-<NUM> may be based on the scaling value <NUM> and the offset value <NUM>, respectively. As shown, the UI element <NUM>-<NUM>-<NUM> is displayed below the predefined region <NUM> thus avoiding the visual intersection of the UI element with the notch <NUM>.

<FIG> illustrates a flow diagram of an example process for displaying applications on a display while avoiding or accounting for the display's irregular or undesirable features in accordance with one or more implementations. For illustrative purposes, the process <NUM> is primarily described herein with reference to the device <NUM> of <FIG>. For illustrative purposes, the blocks of the process <NUM> are described herein as occurring in serial, or linearly. However, multiple blocks of the process <NUM> may occur in parallel. In addition, the blocks of the process <NUM> need not be performed in the order shown and/or one or more blocks of the process <NUM> need not be performed and/or can be replaced by other operations.

In operation <NUM>, the process <NUM> includes determining, using, e.g., the trigger module <NUM>, whether a triggering condition related to an in-focus application executing on an electronic device <NUM> is present.

In operation <NUM>, the process <NUM> includes, responsive to a determination by the trigger module <NUM> that the triggering condition is present (as indicated by the trigger condition signal <NUM>), determining, using the adjustment value module <NUM>, a user interface (UI) adjustment value <NUM>.

In operation <NUM>, the process <NUM> includes applying, using the frame adjustment module <NUM>, the UI adjustment value <NUM> to a frame <NUM> to obtain an adjusted frame <NUM>. The frame <NUM> may represent content including a user interface of the application to be rendered on the display <NUM> of the electronic device <NUM>. The UI adjustment value <NUM> may represent an adjustment to the frame <NUM> such that, when the adjusted frame <NUM> is rendered, the user interface of the application is presented on the display <NUM> except on a predefined portion (e.g., the region <NUM>) of the display <NUM>.

In operation <NUM>, the process <NUM> includes rendering, using the processor, the adjusted frame <NUM> to present the user interface of the application on the display <NUM> except on the predefined portion (e.g., the region <NUM>) of the display <NUM>.

Some aspects of the present technology may involve gathering and use of data available from specific and legitimate sources for training and/or operating machine learning models. The present disclosure contemplates that in some instances, this gathered data may include personal information data that uniquely identifies or can be used to identify a specific person. Such personal information data can include voice samples, voice profiles, demographic data, location-based data, online identifiers, telephone numbers, email addresses, home addresses, biometric data or records relating to a user's health or level of fitness (e.g., vital signs measurements, medication information, exercise information), date of birth, or any other personal information.

The present disclosure recognizes that the use of such personal information data, in the present technology, can be used to the benefit of users. For example, the personal information data can be used for identifying a user of the device on which the disclosed techniques are being implemented and executed, or identifying a user profile in accordance with which the application (that is subject to the disclosed techniques) is being executed.

Despite the foregoing, the present disclosure also contemplates aspects in which users selectively block the use of, or access to, personal information data. That is, the present disclosure contemplates that hardware and/or software elements can be provided to prevent or block access to such personal information data. For example, the present technology can be configured to allow users to select to "opt in" or "opt out" of participation in the collection and/or sharing of personal information data during registration for services or anytime thereafter. In addition to providing "opt in" and "opt out" options, the present disclosure contemplates providing notifications relating to the access or use of personal information. For instance, a user may be notified upon downloading an app that their personal information data will be accessed and then reminded again just before personal information data is accessed by the app.

De-identification may be facilitated, when appropriate, by removing identifiers, controlling the amount or specificity of data stored (e.g., collecting location data at city level rather than at an address level or at a scale that is insufficient for facial recognition), controlling how data is stored (e.g., aggregating data across users), and/or other methods such as differential privacy.

Therefore, although the present disclosure broadly covers use of personal information data to implement one or more various disclosed aspects, the present disclosure also contemplates that the various aspects can also be implemented without the need for accessing such personal information data. That is, the various aspects of the present technology are not rendered inoperable due to the lack of all or a portion of such personal information data.

<FIG> illustrates an electronic system <NUM> with which one or more implementations of the subject technology may be implemented. The electronic system <NUM> can be, and/or can be a part of the device <NUM>, as shown in <FIG>, or the devices illustrated in <FIG> and <FIG>. The electronic system <NUM> may include various types of computer readable media and interfaces for various other types of computer readable media. The electronic system <NUM> includes a bus <NUM>, one or more processing unit(s) <NUM>, a system memory <NUM> (and/or buffer), a ROM <NUM>, a permanent storage device <NUM>, an input device interface <NUM>, an output device interface <NUM>, and one or more network interfaces <NUM>, or subsets and variations thereof.

In one or more implementations, the processes of the subject disclosure are stored in the system memory <NUM>, the permanent storage device <NUM>, and/or the ROM <NUM> (which are each implemented as a non-transitory computer-readable medium).

Finally, as shown in <FIG>, the bus <NUM> also couples the electronic system <NUM> to one or more networks and/or to one or more network nodes through the one or more network interface(s) <NUM>. In this manner, the electronic system <NUM> can be a part of a network of computers (such as a LAN, a wide area network ("WAN"), or an Intranet, or a network of networks, such as the Internet. Any or all components of the electronic system <NUM> can be used in conjunction with the subject disclosure.

These functions described above can be implemented in computer software, firmware or hardware. The techniques can be implemented using one or more computer program products. Programmable processors and computers can be included in or packaged as mobile devices. The processes and logic flows can be performed by one or more programmable processors and by one or more programmable logic circuitry. General and special purpose computing devices and storage devices can be interconnected through communication networks.

Some implementations include electronic components, such as microprocessors, storage and memory that store computer program instructions in a machine-readable or computer-readable medium (also referred to as computer-readable storage media, machine-readable media, or machine-readable storage media). Some examples of such computer-readable media include RAM, ROM, read-only compact discs (CD-ROM), recordable compact discs (CD-R), rewritable compact discs (CD-RW), read-only digital versatile discs (e.g., DVD-ROM, dual-layer DVD-ROM), a variety of recordable/rewritable DVDs (e.g., DVD-RAM, DVD-RW, DVD+RW, etc.), flash memory (e.g., SD cards, mini-SD cards, micro-SD cards, etc.), magnetic and/or solid state hard drives, read-only and recordable Blu-Ray® discs, ultra density optical discs, any other optical or magnetic media, and floppy disks. The computer-readable media can store a computer program that is executable by at least one processing unit and includes sets of instructions for performing various operations. Examples of computer programs or computer code include machine code, such as is produced by a compiler, and files including higher-level code that are executed by a computer, an electronic component, or a microprocessor using an interpreter.

While the above discussion primarily refers to microprocessor or multi-core processors that execute software, some implementations are performed by one or more integrated circuits, such as application specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs). In some implementations, such integrated circuits execute instructions that are stored on the circuit itself.

To provide for interaction with a user, implementations of the subject matter described in this specification can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; e.g., feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; e.g., by sending web pages to a web browser on a user's client device in response to requests received from the web browser.

Aspects of the subject matter described in this specification can be implemented in a computing system that includes a back end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such back end, middleware, or front end components.

In accordance with aspects of the disclosure, a method is provided that includes determining whether a triggering condition related to an application executing on an electronic device is present, and if so, determining a user interface (UI) adjustment value. The UI adjustment value is applied to a frame that represents all of the content including a user interface of the application to be rendered on the display. The UI adjustment value represents an adjustment to the frame such that, when the adjusted frame is rendered, the user interface of the application is presented on the display except on a predefined portion (e.g., a portion including an irregular feature or region) of the display. The adjusted frame is then rendered to present the user interface of the application on the display except on the predefined portion of the display.

In accordance with aspects of the disclosure, a device is provided that includes at least one processor; and a memory including instructions that, when executed by the at least one processor, cause the at least one processor to determine whether a triggering condition related to an application executing on an electronic device is present, and if so, determine a user interface (UI) adjustment value. The instructions, when executed, further cause the at least one processor to apply the UI adjustment value to a frame that represents all of the content including a user interface of the application to be rendered on the display. The UI adjustment value represents an adjustment to the frame such that, when the adjusted frame is rendered, the user interface of the application is presented on the display except on a predefined portion (e.g., a portion including an irregular feature or region) of the display. The instructions, when executed, further cause the at least one processor to render the adjusted frame to present the user interface of the application on the display except on the predefined portion of the display.

The described functionality may be implemented in varying ways for each particular application.

It is understood that the specific order or hierarchy of steps in the processes disclosed is an illustration of example approaches. Based upon design preferences, it is understood that the specific order or hierarchy of steps in the processes may be rearranged. Some of the steps may be performed simultaneously. The accompanying method claims present elements of the various steps in a sample order, and are not meant to be limited to the specific order or hierarchy presented.

The previous description provides various examples of the subject technology, and the subject technology is not limited to these examples. Thus, the claims are not intended to be limited to the aspects shown herein, but is to be accorded the full scope consistent with the language claims, wherein reference to an element in the singular is not intended to mean "one and only one" unless specifically so stated, but rather "one or more. Headings and subheadings, if any, are used for convenience only and do not limit the disclosure described herein.

For example, a processor configured to monitor and control an operation or a component may also mean the processor being programmed to monitor and control the operation or the processor being operable to monitor and control the operation.

Claim 1:
A method for displaying an application user interface on a display of an electronic device, the method comprising:
determining, using a processor of the electronic device, whether a triggering condition related to an application executing on the electronic device (<NUM>) is present, wherein the triggering condition is determined when the application is in focus and when the application is determined to be indicated as having a user interface, UI, with a compatibility issue with a predefined portion (<NUM>, <NUM>, <NUM>) of the display (<NUM>) of the electronic device;
responsive to a determination that the triggering condition is present, determining, using the processor, a UI adjustment value (<NUM>), the UI adjustment value including an offset value (<NUM>);
applying, using the processor, the UI adjustment value to a frame (<NUM>) to obtain an adjusted frame, wherein the frame is rectilinearly moved in accordance with the offset value to obtain the adjusted frame (<NUM>), wherein the frame represents all content to be rendered on the display of the electronic device, the content including a user interface of the application , and the UI adjustment value represents an adjustment to the frame such that, when the adjusted frame is rendered, the user interface of the application is presented on the display except on the predefined portion of the display; and
rendering, using the processor, the adjusted frame to present the user interface of the application on the display except on the predefined portion of the display.