Application compatibility on computing devices
By installing the application on the computing device and activating the compatibility mode, limiting window size changes and presenting predefined size options, the application's compatibility issues in different operating systems and display environments are solved, improving application execution and user experience.
Patent Information
- Application Number
- CN202280052181.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2021-07-28
- Filing Date
- 2022-07-27
- Publication Date
- 2025-04-11
- Estimated Expiration
- 2042-07-27
AI Technical Summary
The prior art is difficult to effectively solve the compatibility problems of applications when running in different operating systems and display environments, resulting in presentation and size adjustment problems.
By installing the application on the computing device and determining whether to activate the compatibility mode, restricting changes in the window size or shape of the application user interface, and presenting multiple user interface objects with predefined size options.
Improves the execution and user experience of applications on different computing devices, reducing the problems related to presentation and resizing.
Smart Images

Figure CN117716337B_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This application claims the continuation of, and the benefit of priority to, U.S. non-provisional patent application No. 17 / 443,865, filed on July 28, 2021, entitled “APPLICATION COMPATIBILITY ON A COMPUTING DEVICE,” the disclosure of which is incorporated herein by reference in its entirety. Background Art
[0003] Some applications can operate on multiple operating system environments. For example, an application can be executed on a first computing device with a first type of operating system, and the same application can also be executed on a second computing device with a second type of operating system. In some examples, an application can be designed (e.g., optimized) to be executed on a first type of operating system (rather than a second type), wherein the execution of the application on the second type of operating system can cause resizing and / or presentation problems. For example, mobile applications are generally designed (e.g., optimized) to be executed on a smaller screen such as a smart phone or a tablet. However, some mobile applications can also be executed on a computing device with a larger screen such as a laptop or desktop computer. For example, a user can download a mobile application on her smart phone. In addition, a user can be able to download the same mobile application on her laptop, but in some examples, the mobile application may not be optimized to operate on a larger display screen of a laptop, which may cause presentation problems. Summary of the invention
[0004] According to one aspect, a method includes: installing an application on a computing device; determining whether to activate a compatibility mode for the application; in response to activating the compatibility mode, determining a restriction on a change in an application window size or shape of a user interface of the application; and presenting a user interface object defining a plurality of predefined size options for the user interface of the application. An apparatus configured to perform the operations of the method may be provided. In addition, a computer-readable medium may be provided to perform the operations of the method.
[0005] According to some aspects, a method, apparatus, or computer-readable medium may include one or more of the following features (or any combination thereof), such as presenting a user interface of an application on a display of a computing device; receiving a resize request for resizing or reshaping the user interface on the display; and disallowing the resize request. The feature may include: adjusting a user interface scale of application content to be displayed within the user interface of the application; and presenting the application content in the user interface according to the adjusted user interface scale. The feature may include adjusting the display size of the application content to be displayed in the user interface to be less than or equal to the window size of the user interface. The feature may include removing a user interface control element configured to be displayed within the user interface of the application. The feature may include presenting a user interface of the application on a display of a computing device, wherein a user interface object is presented in response to the user interface being presented on the display. The feature may include presenting a user interface of the application on a display of a computing device, the user interface including a selectable user interface element, wherein the user interface object is presented in response to receiving a selected selectable user interface element. The feature may include changing an area of the user interface to indicate that resizing is restricted and presenting the user interface with the changed portion on the display of the computing device. The feature may include enabling hotkeys for functions of the application and displaying information about the hotkeys in the user interface of the application. Features may include where the application is a mobile application, and the mobile application is a native application configured to execute on a mobile operating system of a mobile computing device. Features may include obtaining at least one compatibility signal, the at least one compatibility signal including at least one of an application list or a resize capability value, and determining an activation compatibility mode based on the at least one compatibility signal. Features may include: sending a compatibility request to an application store platform that can be executed by a server computer over a network; receiving a compatibility response from the application store platform over the network; and determining an activation compatibility mode based on the compatibility response. Features may include obtaining metadata associated with the application and determining an activation compatibility mode based on the metadata. Features may include: sending a compatibility request to a software container or a virtual machine configured to execute an application on a computing device via an inter-process communication link; receiving a compatibility response from the software container via an inter-process communication link; and determining an activation compatibility mode based on the compatibility response.
[0006] According to one aspect, an apparatus includes at least one processor and a non-transitory computer-readable medium storing executable instructions that, when executed by the at least one processor, cause the at least one processor to: install an application on a computing device; activate a compatibility mode for the application, wherein activation of the compatibility mode indicates that the application lacks functionality or has functionality that is incompatible with an operating system of the computing device; in response to the compatibility mode being activated, enable a window resize lock to restrict changes to an application window size or shape of a user interface of the application; and present a user interface object defining a plurality of predefined size options for a user interface of the application. A method including the operation of an apparatus may be provided. In addition, a computer-readable medium may be provided to perform the operation of the apparatus.
[0007] According to some aspects, a method, apparatus, or computer-readable medium may include one or more of the following features (or any combination thereof): obtaining at least one compatibility signal, the at least one compatibility signal including at least one of an application list or a resize capability value; and determining to activate a compatibility mode based on the at least one compatibility signal. The feature may include: sending a compatibility request to an application store platform executable by a server computer over a network; receiving a compatibility response from the application store platform over a network; and determining to activate a compatibility mode based on the compatibility response. The feature may include obtaining metadata associated with an application, and determining to activate a compatibility mode based on the metadata. The feature may include: sending a compatibility request to a software container or a virtual machine configured to execute an application on a computing device via an interprocess communication link; receiving a compatibility response from the software container via an interprocess communication link; and determining to activate a compatibility mode based on the compatibility response. The feature may include presenting an operating system settings interface including a setting that allows a user to select whether to enable a window resize lock. The feature may include presenting a user interface object indicating that an application has functionality that is incompatible with an operating system of a computing device.
[0008] According to one aspect, a non-transitory computer-readable medium storing executable instructions, which when executed by at least one processor causes the at least one processor to: install an application on a computing device; activate a compatibility mode for the application, wherein the activation of the compatibility mode indicates that the application lacks functionality or has functionality that is incompatible with an operating system of the computing device; in response to the compatibility mode being activated, enable a window resize lock to restrict changes to the application window size of the user interface of the application; adjust a user interface scale of application content to be presented within the user interface of the application; and present the application content in the user interface of the application according to the adjusted user interface scale. A device for performing operations of a non-transitory computer-readable medium may be provided. In addition, a method for performing operations of a non-transitory computer-readable medium may be provided.
[0009] According to some aspects, a method, device, or computer-readable medium may include one or more of the following features (or any combination thereof), presenting a user interface object that defines a plurality of predefined size options for a user interface of an application. The features may include: receiving a resize request to resize or reshape the user interface; presenting a user interface object in response to the resize request, the user interface object including a selectable control for restarting the application; and restarting the application in response to receiving a selection of the selectable control, so that the user interface is resized on the display according to the resize request. The features may include detecting a position of a cursor icon on the display, and changing the shape of the cursor icon in response to detecting the position of the cursor icon within a threshold distance of an edge of the user interface. The features may include: enabling a drag-and-drop feature of a function of the application; and presenting a drag-and-drop interface on the user interface of the application, the drag-and-drop interface configured to allow a user to move data into the application.
[0010] In addition to the methods described herein, a device is disclosed, comprising at least one processor and a non-transitory computer-readable medium storing executable instructions, which, when executed by at least one processor, causes the at least one processor to perform any of the methods disclosed herein. A non-transitory computer-readable medium storing executable instructions is also disclosed, which, when executed by at least one processor, causes the at least one processor to perform any of the methods disclosed herein. A computer program product is also disclosed, which includes instructions for causing one or more processors to perform any of the methods disclosed herein. Similarly, in the case where the present disclosure is presented in terms of a device or a computer-readable medium, a corresponding method is also disclosed. Details of one or more embodiments are set forth in the drawings and the following description. Other features will be apparent from the specification and drawings and the claims. BRIEF DESCRIPTION OF THE DRAWINGS
[0011] Figure 1A
[0013] Illustrated is a system for enabling one or more compatibility features to improve compatibility of applications executing on a computing device, according to an aspect.
[0012] Figure 1B Non-limiting examples of compatibility features according to an aspect are illustrated.
[0013] Figure 1C Illustrated are compatibility states of applications according to an aspect.
[0014] Figure 1D A compatibility signal for determining whether to activate a compatibility mode of an application according to an aspect is illustrated.
[0015] Figure 2A An example of an operating system according to an aspect is illustrated.
[0016] Figure 2B A method for using Figure 2A Flowchart for determining the compatibility status of an application based on an operating system.
[0017] FIG. 3A to FIG. 3E Illustrated is a user interface for an application within compatibility mode according to various aspects.
[0018] Figure 4 Illustrated is a user interface for an application within compatibility mode according to an aspect.
[0019] FIG. 5A to FIG. 5D Illustrated is a user interface for an application within compatibility mode according to various aspects.
[0020] FIG. 6A to FIG. 6E Cursor icons for applications within compatibility mode according to various aspects are illustrated.
[0021] Figure 7 Illustrated is a user interface for an application within compatibility mode according to an aspect.
[0022] Figure 8 Illustrated is a user interface for an application within compatibility mode according to an aspect.
[0023] Fig. 9 Illustrated is a user interface for an application within compatibility mode according to an aspect.
[0024] Fig.10 Illustrated is a user interface for an application within compatibility mode according to an aspect.
[0025] Fig.11 Illustrated is a user interface for an application within compatibility mode according to an aspect.
[0026] Fig.12 Illustrated is a user interface for an application within compatibility mode according to an aspect.
[0027] Fig.13 Illustrated is a user interface for an application within compatibility mode according to an aspect.
[0028] Fig.14 Illustrated is a user interface for an application within compatibility mode according to an aspect.
[0029] Fig.15 Illustrated is a user interface for an application within compatibility mode according to an aspect.
[0030] Fig.16 An operating system settings interface according to one aspect is illustrated.
[0031] Fig.17A Illustrated is a user interface for an application in which a compatibility mode is disabled, according to an aspect.
[0032] Fig. 17B Illustrated is a user interface for an application in which a compatibility mode is activated according to an aspect.
[0033] Fig.18 Illustrated is a user interface for an application within compatibility mode according to an aspect.
[0034] Fig.19 Illustrated is a user interface for an application within compatibility mode according to an aspect.
[0035] Fig. 20 Illustrated is a user interface for an application within compatibility mode according to an aspect.
[0036] Fig.21 Illustrated is a user interface for an application within compatibility mode according to an aspect.
[0037] Fig. 22 A flow chart depicting example operation of a system according to an aspect is illustrated.
[0038] Fig.23 Examples of a computer device and a mobile computer device according to an aspect are illustrated. DETAILED DESCRIPTION
[0039] The present disclosure relates to a system and / or method capable of improving the compatibility of non-optimized applications on a computing device, thereby improving the execution and user experience of applications on the computing device. In some examples, the application includes a mobile application, which is designed or optimized to be executed in a mobile environment (e.g., a smart phone or a tablet), but can also be installed and executed on a larger computing device (e.g., a device with a display larger than a typical mobile environment) such as a laptop or desktop computer. In some examples, the mobile application is not optimized to be executed on a larger computing device, which can lead to technical problems associated with presentation or resizing problems (including sudden termination of the application). More generally, the application can be designed for a first type of display (and / or a first type of operating system), but can also be executed using a second type of display (and / or a second type of operating system), wherein the execution of the application using the second type of display (e.g., a different form factor) and / or using the second type of operating system (e.g., a different operating system) can cause technical problems associated with presentation or resizing problems. However, the embodiments discussed herein provide a technical solution, wherein the window manager is configured to enable one or more compatibility features, thereby providing one or more technical benefits of improving the execution and user experience of applications on computing devices.
[0040] For example, in response to an application being installed on a computing device, the state determination engine can determine to activate a compatibility mode for the application, which can cause one or more compatibility features to be enabled. In some examples, activation of the compatibility mode can indicate that the application has functionality that is incompatible with an operating system of the computing device and / or has functionality that is incompatible with a display of the computing device. In some examples, activation of the compatibility mode can indicate that the application lacks one or more functionality that can degrade execution of the application and / or user experience on the computing device.
[0041] For example, a mobile application that can be executed by a smart phone can be designed to support one or a small number of window layouts (e.g., small layout size, large layout size, etc.). The same mobile application can be installed on a larger computing device such as a laptop or desktop computer (also referred to as a desktop environment). In a desktop environment, the user interface (or window) of the application can be resizable. However, executing a mobile application (e.g., a non-optimized application) in a desktop environment may cause one or more technical problems. For example, resizing (e.g., freely resizing) an application in a desktop environment may cause it to terminate suddenly because the application developer may not have taken into account the window size change. Therefore, the display function of the application may be incompatible with the operating system.
[0042] In some examples, the application may mistakenly assume that the application window size and the display size are the same. In some examples, the application can be designed to save the current window size in order to use it later, but the window size can change and the application can attempt an action at a location where the application window no longer exists. In addition to resizing incompatibilities (or separation therefrom), the application may lack (multiple) functions or have other functions that are incompatible with the operating system and / or the display of the computing device. For example, the user interface of the application presented on the display may have a user interface (UI) scale that is different from other applications. In some examples, the application may have one or more incompatibilities related to user input support such as keyboards, input devices (e.g., computer mice), trackpads, and / or touch input support. Therefore, the input function of the application may be incompatible with the operating system and / or the display.
[0043] In some examples, the state determination engine determines whether to activate compatibility mode during or after installation of the application. In some examples, the state determination engine determines whether to activate compatibility mode in response to a launch request but before presenting the user interface of the application on the display. In some examples, after launching the application, one or more properties (e.g., dynamic properties) may be available (e.g., only available). The properties may include resizing and / or orientation properties. For example, depending on which function of the application is launched, resizing capabilities and orientation may be different for the application. Activation of compatibility mode may indicate that the application lacks functionality or has functionality that is incompatible with the operating system of the computing device.
[0044] The state determination engine can determine to activate the compatibility mode based on one or more compatibility signals. The compatibility signal can be any type of signal indicating whether the compatibility mode should be activated (for example, the application lacks functionality or has functionality that is incompatible with the operating system). The determination of activating the compatibility mode of the application can be based at least in part on (multiple) compatibility signals. In some examples, (multiple) compatibility signals include an application list identifying multiple applications. In some examples, the application list is a list of applications that have been identified as optimized for the operating system of the computing device. If the application is not on the application list, the state determination engine can determine to activate the compatibility mode. In some examples, the application list is a list of applications that have not yet been optimized for the operating system of the computing device. If the application is on the application list, the state determination engine can determine to activate the compatibility mode.
[0045] (Multiple) compatibility signals may include a resizing capability value generated by the resizing capability determination engine. The resizing capability value may indicate whether the user interface of the application is resizable (or reshapeable) on the display of the computing device. In some examples, the resizing capability value having a first value may indicate that the application is not resizable. If the resizing capability value is the first value, the state determination engine may determine to activate the compatibility mode. In some examples, the resizing capability value having a second value may indicate that the application is resizable. If the resizing capability value is the second value, the state determination engine may determine to activate the compatibility mode. In some examples, the resizing capability determination engine may analyze the application and determine the resizing capability value based on the analysis. In some examples, the analysis includes determining whether the application is capable of performing dynamic configuration changes associated with the resizing operation and / or whether the application identifies one or more layouts for a computer display (e.g., a larger display). In some examples, the analysis may take into account other attributes, such as whether the application is being launched for the first time, whether the application is one of a particular type of size or shape (e.g., a maximized / full screen application may not need to be in compatibility mode), whether the application is one of: a special window mode (e.g., picture-in-picture, split screen, etc.), the source from which the application was installed (e.g., type of app store), whether the application has a popularity metric greater than a threshold level, whether the application is a gaming application, and / or whether the application is capable of playing videos.
[0046] In some examples, the state determination engine may query the application store platform to determine whether to place the application in compatibility mode. The application store platform may enable the installation of the application on the computing device. The state determination engine may query the application store platform in response to the application being installed in the computing device. For example, the application store platform may store compatibility state information indicating whether the application is optimized for the operating system of the computing device. In some examples, the application developer may identify one or more platforms on which the application is optimized to execute. For example, the application may indicate "designed for mobile" or "designed for desktop". This information may be stored as compatibility state information. In some examples, remote storage of this information may allow the information to be updated periodically (and kept up to date). In some examples, different operating systems are able to access compatibility state information. In some examples, one or more server computers associated with the application store platform may perform one or more processes to automatically determine (e.g., test) whether the application lacks functionality and / or has functionality that is incompatible with the operating system of the computing device, and store this information as compatibility state information. In some examples, the determination (e.g., testing) is performed manually.
[0047] In response to the compatibility mode being activated, a window manager associated with the operating system may enable one or more compatibility features.(Multiple) compatibility features may improve the execution and user experience of applications on computing devices. The compatibility features may include providing a capability mode indicator that visually indicates that the compatibility mode is activated, enabling a window resize lock (e.g., limiting window resize), switching between disabling and enabling a window resize lock, allowing resize to only a limited number of sizes or shapes (e.g., a predefined set of sizes or shapes), restarting an application in response to a resize request, adjusting the UI scale of application content on a user interface, adjusting the display size to correspond to the application window size (e.g., adjusting the display size from the application's viewpoint to correspond to the application window size or shape), limiting the number of resize events sent to an application during free resize, enabling hot keys for functions associated with an application, enabling drag-and-drop features for functions associated with an application, adjusting, adding, or deleting one or more UI control elements (e.g., removing navigation controls, adding additional UI controls, or adjusting icons of UI control elements), and / or automatically positioning (e.g., snapping) the user interface to the edge of the display while retaining the aspect ratio of the window size, etc.
[0048] (Multiple) enabled compatibility features can provide a technical advantage of reducing presentation or resizing problems associated with applications that lack one or more functions or have one or more features that are incompatible with the device's operating system. In one example, when a user attempts to resize (or reshape) a window of an application on a laptop computer, the resizing attempt may cause the application to terminate abruptly. However, when compatibility mode is activated, one or more compatibility features can be enabled, which can include limiting the size of the application's window to one or more predefined sizes (or shapes). Thus, presentation problems can be reduced. In addition, in addition to (or separate from) limiting resizing, one or more other compatibility features can also be enabled to improve the execution and user experience of applications on computing devices.
[0049] Figures 1A to 1DA system 100 is illustrated for enabling one or more compatibility features 138 to improve compatibility of an application 110 executed on a computing device 120. If it is determined that an application 110 lacks functionality or has functionality that is incompatible with an operating system 126 of the computing device 120, the application 110 may be placed into a compatibility mode 113 in which one or more compatibility features 138 are enabled to improve execution of the application, improve the user's experience with the application, and / or reduce resizing or rendering issues. The application 110 may be designed (or optimized) to execute on an operating system that is different from the operating system 126 of the computing device 120, which may be referred to as a non-optimized application. In some examples, the application 110 may be designed (or optimized) to execute using a display that is different from the display 140 of the computing device 120 (e.g., a display with a different form factor), which may be referred to as a non-optimized application. A non-optimized application may have missing functionality or may have functionality that is incompatible with the operating system 126 and / or the display 140. In some examples, a non-optimized application has compatibility issues, where the compatibility issues can fall into one or more categories such as keyboard user experience (UX), input device (e.g., computer mouse) UX, hover state, cursor, application functionality failure, window management, resize stability, camera, media playback or audio routing and / or stability.
[0050] In some examples, the application 110 is designed (or optimized) to execute on a mobile environment, where the operating system 126 of the computing device 120 is associated with a laptop or desktop environment. The execution of the non-optimized application may cause rendering problems including abrupt termination of the application 110 when the user interface 142 (also referred to as a window or application window) of the application 110 is resized. However, by enabling one or more compatibility features 138, these rendering problems can be reduced and the performance of the application 110 can be improved.
[0051] The computing device 120 may be any type of computing device that includes one or more processors 122, one or more memory devices 124, a display 140, and an operating system 126 configured to execute (or assist in executing) one or more applications 110. In some examples, the display 140 is a display of the computing device 120. In some examples, the display 140 may also include one or more external monitors connected to the computing device 120. The operating system 126 may include multiple modules, such as a state determination engine 128 and a window manager 136, which will be explained later in this disclosure. The operating system 126 is system software that manages computer hardware, software resources, and provides common services for computing programs. The application 110 downloaded and installed on the computing device 120 may lack functionality or have functionality that is incompatible with the operating system 126. For example, the operating system 126 may be a first type of operating system, but the application 110 downloaded and installed on the computing device 120 may be designed and optimized for a second type of operating system. In some examples, the operating system 126 is associated with an operating environment of a laptop or desktop computer, while the application 110 is associated with an operating environment of a tablet or smart phone. In some examples, the operating system is the same, but application 110 is optimized to execute on a display different than display 140 of computing device 120 .
[0052] The processor(s) 122 may be formed in a substrate configured to execute one or more machine executable instructions or software, firmware, or a combination thereof. The processor(s) 122 can be semiconductor based, i.e., the processor can include semiconductor material capable of executing digital logic. The memory device(s) 124 may include a main memory storing information in a format that can be read and / or executed by the processor(s) 122. The memory device(s) 124 may include a storage device 134 configured to store a compatibility state 130 associated with the application 110, wherein the compatibility state 130 may include whether the application 110 is placed in a compatibility mode 113. In addition, the memory device(s) 124 may store applications (e.g., operating system 126, applications 110, etc.) and modules (e.g., state determination engine 128, window manager 136) that, when executed by the processor 122, perform certain operations.
[0053] The computing device 120 can communicate with the server computer 102 via the network 150. The server computer 102 can be a computing device in the form of a plurality of different devices, such as a standard server, such a server group or a rack server system. In some examples, the server computer 102 can be a single system sharing components, such as a processor and a memory. The network 150 can include the Internet and / or other types of data networks, such as a local area network (LAN), a wide area network (WAN), a cellular network, a satellite network or other types of data networks. The network 150 can also include any number of computing devices (e.g., computers, servers, routers, network switches, etc.) configured to receive and / or send data within the network 150. The network 150 can also include any number of hardwired and / or wireless connections.
[0054] The server computer 102 may include one or more processors 104 formed in a substrate, an operating system (not shown), and one or more memory devices 106. The memory device 106 may represent any kind (or multiple kinds) of memory (e.g., RAM, flash memory, cache, disk, tape, etc.). In some examples (not shown), the memory device 106 may include external memory, for example, memory that is physically remote from the server computer 102 but accessible by the server computer 102. The server computer 102 may include one or more modules or engines representing specially programmed software. For example, the server computer 102 may include an application store platform 108. The application store platform 108 is configured to provide a plurality of applications 110 to a user for downloading and installing. For example, the computing device 120 may have an application that communicates with the application store platform 108 in order to discover applications 110 to be downloaded and installed on the computing device 120.
[0055] The computing device 120 can download the application 110 from the application store platform 108 through the network 150, wherein the application 110 is at least partially stored (e.g., locally stored) on the operating system 126 of the computing device 120. The application 110 can be any type of software program that presents a user interface 142 on the display 140 of the computing device 120 when launched. In some examples, the application 110 can be executed by the operating system 126 (or run on the operating system 126). In some examples, the application 110 is a mobile application. A mobile application is a local application configured to be executed on a mobile operating system of a mobile computing device (such as a smart phone or tablet). A local application is a software program developed for a specific platform or device or for a specific operating system. In some examples, a local application is a software program developed for multiple platforms or devices. In some examples, a local application is a software program developed for use on a mobile platform and also configured to be executed on a desktop or laptop computer. In some examples, the application 110 is an Android application. In some examples, the application 110 is a mobile iOS application. In some examples, application 110 is a mobile Windows application. In some examples, application 110 includes a Linux application (or sometimes referred to as a Crostini application).
[0056] The application 110 lacks functionality or has functionality that is incompatible with the operating system 126 of the computing device 120. In some examples, the application 110 does not support window resizing on a larger display screen. In some examples, the operating system 126 may be associated with a laptop or desktop environment, and the application 110 has not been optimized to execute on a laptop or desktop environment. For example, the application 110 may be an application designed for mobile (but not laptop or desktop environments).
[0057] An application 110 (e.g., a mobile application) that can be executed by a smart phone can be designed to support one or a small number of window layouts (e.g., vertical window size, horizontal window size, etc.). The same application 110 can be installed on a larger computing device such as a laptop or desktop computer (also referred to as a desktop environment). In a desktop environment, the user interface 142 (or window) of the application can be resizable. However, since the application 110 supports one or a small number of window size layouts, resizing the application 110 (e.g., free resizing) may cause the application 110 to terminate suddenly. In addition to (or separation from) resizing incompatibility, the application 110 may have other functions that are incompatible with the operating system 126 of the computing device 120. For example, the user interface 142 of the application 110 presented on the display 140 may have a different user interface (UI) scale than other applications.
[0058] In some examples, application 110 has one or more incompatibilities related to user input support (e.g., keyboard, computer mouse, trackpad, touch input support). For example, application 110 may rely on touch gestures (while in some examples, computing device 120 does not support touch gestures or only partially supports touch gestures). In addition, application 110 may have UI controls (e.g., buttons) that do not indicate clickability with a hover state. In addition, text selection may be inoperable (or application 110 does not support copy / paste right-click options), in some cases, trackpad or mouse wheel scrolling may be inoperable, pressing enter to confirm edits or send messages may be inoperable, and / or pressing the space bar to pause the video may be inoperable. In some examples, application 110 may not support selecting multiple items (e.g., using CTRL and shift). In some examples, application 110 may not support changing the visual aspects of the cursor when hovering over a clickable UI element.
[0059] After the application 110 has been installed on the operating system 126 of the computing device 120, the state determination engine 128 can determine whether the application 110 has a function that is incompatible with the operating system 126 of the computing device 120. If the application 110 is designed only for mobile platforms, the state determination engine 128 determines that the application 110 lacks a function or has a function that is incompatible with the operating system 126 of the computing device 120, and the state determination engine 128 places the application 110 in a compatibility mode 113 in which one or more compatibility features 138 are enabled. Placing the device in a compatibility mode that enables or enables one or more compatibility features can reduce rendering issues and / or reduce instability of the application during execution. Therefore, the execution of the application on the operating system can be improved. If the application 110 is designed for mobile and laptop / desktop environments, the state determination engine 128 determines that the application 110 is compatible with the operating system 126 of the computing device 120, and the state determination engine 128 does not place the application 110 in the compatibility mode 113.
[0060] The state determination engine 128 may determine a compatibility state 130 from among a plurality of compatibility states 130 and may store the determined compatibility state 130 in a storage device 134. The storage device 134 may be a persistent memory that stores settings of the operating system 126. In some examples, the state determination engine 128 determines the compatibility state 130 in response to the application 110 being installed on the operating system 126. In some examples, the state determination engine 128 determines the compatibility state 130 during at least a portion of the installation of the application 110. In some examples, the state determination engine 128 determines the compatibility state 130 after the application 110 is installed on the operating system 126. In some examples, the state determination engine 128 determines the compatibility state 130 in response to an execution request 144, where the execution request 144 is a request received by the operating system 126 to launch the application 110. In some examples, the state determination engine 128 determines the compatibility state 130 each time the application 110 is launched. In some examples, state determination engine 128 determines compatibility state 130 before user interface 142 is presented on display 140 .
[0061] The stored compatibility state 130 may indicate whether the application 110 is placed in the compatibility mode 113. The plurality of compatibility states 130 may include two or more compatibility states 130. Figure 1C As shown, the compatibility state 130 may include a compatibility state 130a and a compatibility state 130b. The compatibility state 130a may be a value indicating that the compatibility mode 113 is activated. For example, if the state determination engine 128 determines that the application 110 lacks functionality and / or has functionality that is incompatible with the operating system 126 of the computing device 120, the state determination engine 128 identifies the compatibility state 130a and stores the compatibility state 130a in the storage device 134.
[0062] Compatibility state 130b may be a value indicating that compatibility mode 113 is disabled. For example, if state determination engine 128 determines that application 110 is compatible with operating system 126 of computing device 120, state determination engine 128 identifies compatibility state 130b and stores compatibility state 130b in storage 134.
[0063] In some examples, the plurality of compatibility states 130 may include two or more compatibility states 130, such as compatibility state 130c and compatibility state 130d. Compatibility state 130c may be a value indicating that compatibility mode 113 is not eligible (or undefined). Compatibility state 130d may be a value indicating that application 110 is eligible (e.g., ready) to be placed in compatibility mode 113. In some examples, state determination engine 128 identifies compatibility state 130d after application 110 is installed (but before application 110 is launched).
[0064] In some examples, the compatibility state 130 is configured as a state machine. For example, before the application 110 is installed, the compatibility state 130 is a compatibility state 130c (e.g., not eligible). In some examples, in the compatibility state 130c, the setting to enable or disable the compatibility mode 113 can be hidden from the user. In response to the application 110 being installed, the compatibility state 130 can transition to the compatibility state 130d (e.g., eligible). In some examples, in the compatibility state 130d, the compatibility mode 113 is ready to be activated, and the setting to enable or disable the compatibility mode 113 is hidden from the user. In response to the application 110 being launched, the state determination engine 128 can determine whether to activate the compatibility mode 113. If the state determination engine 128 determines to activate the compatibility mode 113, then the compatibility state 130 transitions to the compatibility state 130a (e.g., activated), where one or more compatibility features 138 can be enabled. In some examples, in the compatibility state 130a, the setting to enable or disable the compatibility mode 113 can be presented to the user. In some examples, in response to receiving (e.g., from a user) a selection to disable compatibility mode 113, compatibility state 130 transitions to compatibility state 130b (e.g., disabled). In compatibility state 130b, settings to enable or disable compatibility mode 113 can be presented to the user. Additionally, in compatibility state 130b, one or more compatibility features 138 can be disabled. In some examples, in response to application 110 not being installed, compatibility state 130 transitions back to compatibility state 130c (e.g., not eligible or undefined).
[0065] State determination engine 128 may determine whether to activate compatibility mode 113 based on one or more compatibility signals 132. In some examples, compatibility signal(s) 132 are obtained (or generated) locally on computing device 120. In some examples, compatibility signal(s) 132 are obtained (via network 150) from one or more server computers (including server computer 102). In some examples, compatibility signal(s) 132 are obtained (or generated) from multiple sources (such as computing device 120 and one or more server computers). Figure 1DAs shown, the compatibility signal(s) 132 may include the compatibility state 130 stored in the storage device 134 , the application list 105 , and / or the resizable capability value 107 determined by the resizable capability determination module 109 .
[0066] Application list 105 may identify a plurality of applications that are predetermined to be compatible with operating system 126. In some examples, state determination engine 128 receives application list 105 and determines whether application 110 is on application list 105. If application 110 is not on application list 105, state determination engine 128 may identify compatibility state 130a and store compatibility state 130a in storage 134. In some examples, state determination engine 128 may change a value associated with application 110 in storage 134 from compatibility state 130d to compatibility state 130a. If application 110 is on application list 105, state determination engine 128 may identify compatibility state 130b and store compatibility state 130b in storage 134. In some examples, state determination engine 128 may change a value associated with application 110 in storage 134 from compatibility state 130d to compatibility state 130b.
[0067] The resize capability determination module 109 is configured to analyze the application 110 and determine the resize capability value 107 based on the analysis of the application 110. In some examples, the resize capability determination module 109 may determine whether the application 110 is capable of performing dynamic configuration changes associated with a resize operation and / or whether the application 110 provides one or more UI layouts for the display 140. The resize capability value 107 may indicate whether the application 110 is resizable on the display 140. The state determination engine 128 may receive the resize capability value 107, and if the resize capability value 107 indicates that the application 110 does not support resizing (e.g., dynamic resizing), the state determination engine 128 may identify a compatibility state 130a and store the compatibility state 130 in the storage device 134. If the resize capability value 107 indicates that the application 110 does support resizing, the state determination engine 128 may identify a compatibility state 130b and store the compatibility state 130 in the storage device 134.
[0068] The compatibility signal(s) 132 may include other signals, such as whether the application 110 is being launched for the first time, whether the application 110 is one of a particular type of size or shape (e.g., a maximized / full screen application may not need to be in compatibility mode), whether the application 110 is one of a special window mode (e.g., picture-in-picture, split screen, etc.), the source from which the application 110 was installed (e.g., the type of app store), whether the application 110 has a popularity metric greater than a threshold level, whether the application 110 is a gaming application, and / or whether the application 110 is capable of playing videos, etc.
[0069] The state determination engine 128 may receive the compatibility state 130 stored in the storage device 134. For example, if the compatibility state 130 is the compatibility state 130d (e.g., ready), the state determination engine 128 may determine whether the compatibility mode 113 should be activated using the application list 105 and / or the resizing capability value 107. In addition, in some examples, the user is able to deactivate the compatibility mode 113 (and then later activate the compatibility mode 113). For example, a user interface (e.g., a settings interface) may be displayed to the user that allows the user to activate or deactivate the compatibility mode 113 with respect to a particular application 110. If the compatibility mode 113 is deactivated by the user, the storage device 134 may be updated to indicate the compatibility state 130b. In some examples, in response to receiving the execution request 144, the state determination engine 128 may obtain a value from the storage device 134. If the value indicates the compatibility state 130b, then in some examples, the state determination engine 128 may continue to identify the compatibility state 130b (because it will indicate that the user has deactivated the compatibility mode 113). In some examples, after application 110 is closed (eg, terminated), the values in storage 134 automatically revert to compatibility state 130 c (eg, ready).
[0070] In some examples, the state determination engine 128 may query the application store platform 108 to determine whether the application 110 lacks functionality or has functionality that is incompatible with the operating system 126 of the computing device 120. For example, the application 110 may be labeled as "optimized for desktop" or "designed for mobile." For example, the application store platform 108 may include compatibility state information 114 indicating whether the application 110 is optimized to execute on the operating system 126. For example, an application developer may provide information about whether their application 110 is designed for mobile and / or designed for both mobile and laptop / desktop environments. If the application 110 is designed only for mobile platforms, the compatibility state information 114 may include information that the application 110 is designed only for mobile platforms. If the application 110 is designed for both mobile platforms and laptop / desktop platforms, the compatibility state information 114 may include information that the application 110 is designed for both platforms. In some examples, a server computer 102 associated with an application store platform 108 may perform one or more processes (e.g., an automated testing process) to automatically determine whether an application 110 lacks functionality or has functionality that is incompatible with an operating system 126 of a computing device 120, and store this information as compatibility state information 114. In some examples, a manual testing process is performed, and the compatibility state 130 may be updated with the results of the manual testing process.
[0071] The state determination engine 128 may send a compatibility request 101 to the application store platform 108 over the network 150, wherein the compatibility request 101 is a request to obtain compatibility state information 114 associated with the application 110. In some examples, the compatibility request 101 is sent in response to the application 110 being installed. In some examples, the compatibility request 101 is sent in response to the application 110 being launched. The state determination engine 128 may receive a compatibility response 103 from the application store platform 108 over the network 150. The compatibility response 103 may indicate whether the application 110 lacks functionality or has functionality that is incompatible with the operating system 126 of the computing device 120. In some examples, the compatibility response 103 may indicate that the computing device 120 is designed for a mobile environment. In some examples, the compatibility response 103 may indicate that the computing device 120 is designed for a laptop desktop environment. In some examples, the compatibility response 103 may identify a compatibility state 130. In some examples, the compatibility response 103 may indicate which compatibility feature 138 is to be enabled. The determination of the compatibility mode 113 of the activated application 110 can be based at least in part on the compatibility response 103. Sending the compatibility request 101 when the application 110 is launched can provide a dynamic approach in which changes in the functionality of the application 110 over time can be taken into account when the application is updated (for example) by the developer. For example, if the application is updated and / or functionality is added / removed, the compatibility response can change compared to a previous launch of the application.
[0072] In some examples, the state determination engine 128 can obtain metadata 111 about the application 110 during installation of the application 110 on the operating system 126 of the computing device 120. In some examples, the application store platform 108 is configured to inject the metadata 111 into the application 110, wherein the metadata 111 can identify whether the application 110 has functionality that is incompatible with the operating system 126 of the computing device 120. For example, the metadata 111 can indicate whether the application 110 is designed for mobile platforms only or for mobile platforms and desktop / laptop platforms. Based on the metadata 111, the state determination engine 128 can determine the compatibility state 130 of the application 110. If and when the application 110 is updated, the metadata 111 can be updated. Thus, a dynamic method for determining whether to enter or enable a compatibility mode 113 can be provided.
[0073] Window manager 136 may obtain compatibility state 130a from storage, and if compatibility state 130 is compatibility state 130a, application 110 is configured to execute in compatibility mode 113 in which one or more compatibility features 138 are enabled.
[0074] Figure 1BA plurality of compatibility features 138 are illustrated. When compatibility mode 113 is activated, window manager 136 may enable one or more of compatibility features 138 in order to improve the performance of application 110 and / or reduce rendering issues that sometimes occur when executing application 110 that is not optimized to execute on operating system 126. In some examples, when compatibility mode 113 is activated, window manager 136 determines to limit changes to the application window size (e.g., height 152, width 154) of user interface 142 of application 110. In other words, changes to the application window size may be limited. In some examples, a user may not be able to adjust the size or shape of user interface 142 at all. In some examples, a user may be able to switch to one of a plurality of predefined size options 185, but freely resizing user interface 142 is still limited by the determination of the limit on making changes to the application window size. Restrictions on changes to the application window size may be provided by enabling window resize lock 156.
[0075] In response to execution request 144 (e.g., a request to launch application 110), application 110 is launched in compatibility mode 113, wherein a user interface 142 of application 110 is presented on display 140 of computing device 120. In some examples, in order to identify to a user that application 110 is executing in compatibility mode 113 (where one or more features may be restricted, changed, deleted, and / or added), user interface 142 of application 110 includes capability mode indicator 147. Capability mode indicator 147 may visually indicate that application 110 is executing in compatibility mode 113. Capability mode indicator 147 may be a portion of user interface 142 that is changed. For example, window manager 136 may change a portion of user interface 142 to indicate that application 110 is executing in compatibility mode 113. In some examples, a border area of user interface 142 is transparent or translucent, which may indicate that application 110 is not resizable (e.g., freely resizable). In some examples, an icon (e.g., an application icon on an application launcher, a cursor icon, etc.) is presented on a portion of the user interface 142 indicating that the application 110 is executing in the compatibility mode 113. In some examples, the capability mode indicator 147 may be identified by a changed background. In some examples, the window manager 136 may center the user interface 142 on a blurred wallpaper background, which may indicate that the application 110 is executing in the compatibility mode 113. For example, the operating system 126 may enter an immersive mode, and the front application typically spans the entire display 140. However, when the application 110 is placed into the compatibility mode 113, in some examples, the application 110 cannot be resized to the full display 140, so instead the window manager 136 may blur the background to give an immersive experience. In other words, a portion (e.g., an area) of the user interface 142 may be changed or altered to indicate that resizing is limited, and the user interface 142 with the changed portion is presented on the display 140 of the computing device 120. The changing or modifying of portions of user interface 142 may be based on (or in response to) determining limitations on changes to application window size or shape.
[0076] In some examples, the default application 110 is resizable (unless the application 110 explicitly identifies itself as non-resizeable). In some examples, the application 110 is an application that has not been identified as non-resizeable. In an example, resizing can also include reshaping the user interface 142. When the application 110 is resizable, the user can drag the resize (e.g., freely resize or reshape), maximize / restore, and position the application 110 in a multi-view mode. The multi-view mode can be a display technology in computer graphics, which includes dividing graphics and / or text into two or more adjacent (non-overlapping or partially overlapping) parts of the display 140. In some examples, the multi-view mode is a split-screen view. In some examples, the application 110 is an application that does not perform dynamic configuration changes associated with the resizing operation. In some examples, the application 110 is not configured with a UI layout designed for the display 140. For example, if the display 140 is a larger screen (e.g., a laptop screen), the application 110 may not define the UI layout of the larger screen.
[0077] When compatibility mode 113 is activated for an application, window manager 136 may enable window resize lock 156, wherein resizing of user interface 142 of application 110 is restricted. When window resize lock 156 is enabled, window manager 136 may prevent application 110 from being placed in multi-view mode. When window resize lock 156 is enabled, any drag resize request may be ignored. In order to resize user interface 142 by dragging, an edge region (e.g., top edge, bottom edge, right edge, or left edge) of user interface 142 is selected and moved to a desired position. Window manager 136 may ignore resize request 112 generated based on an action provided by a user. For example, window manager 136 may receive resize request 112 when a user attempts to drag resize user interface 142. When application 110 is placed in compatibility mode 113 and window resize lock 156 is enabled, window manager 136 may prevent resizing of user interface 142 by not allowing resize request 112. For example, a user may attempt to drag resize user interface 142, but resize request 112 may not be allowed when window resize lock 156 is enabled. In some examples, not allowing resize request 112 may include not allowing resize request 112 based on determined restrictions on changing application window sizes.
[0078] Window resize lock 156 may include a portrait window lock 156a. For example, window manager 136 may enable a portrait window lock 156a that presents window size 146 in a portrait orientation (when initially launched on display 140) and prevents window size 146 from being resized to a different size. Portrait orientation is when height 152 is greater than width 154. In some examples, the portrait window size corresponds to a phone size. In some examples, window resize lock 156 includes a landscape window lock 156b. For example, window manager 136 may enable a landscape window lock 156b, where window size 146 is presented in a landscape orientation (when initially launched on display 140) and prevents window size 146 from being resized to a different size. Landscape orientation is when width 154 is greater than height 152. In some examples, the landscape window size corresponds to a table size and may be greater than the portrait window size. In some examples, when window resize lock 156 is enabled, user interface 142 of application 110 is presented at a maximized size (e.g., full screen size), and user interface 142 is restricted from being resized. The maximized size is a size where window size 146 is the same or substantially the same as the size of display 140 (e.g., the difference is less than 5 mm, 2 mm, or 1 mm).
[0079] In some examples, if compatibility mode 113 is activated, the vertical window lock 156a is triggered. In some examples, if compatibility mode 113 is activated, the horizontal window lock 156b is triggered. Since application 110 can be optimized for only a small number of layouts, application 110 can be locked to the optimized orientation. In some examples, the vertical orientation corresponds to the phone size, and the horizontal orientation corresponds to the tablet size. In some examples, application 110 (e.g., mobile application) is most likely to be optimized for one of them. Application 110 is most likely to support at least the vertical layout, unless they declare themselves as horizontal only, in which in some examples, the vertical window lock 156a is enabled by default. In addition, generally, the application 110 executed on a laptop / desktop computer should be started in a large window (e.g., as large as possible) to occupy most of the display 140. However, for applications 110 that may only support phone and / or tablet sizes, enable vertical window lock 156a or horizontal window lock 156b.
[0080] In some examples, the orientation engine 135 can determine the orientation in which the window resize lock 156 is enabled, where the orientation can be a vertical window size, a horizontal window size, a maximized size, or other types of orientations. In some examples, the orientation engine 135 is included in the window manager 136. In some examples, the orientation engine 135 is logic on the operating system 126 that is separate from the window manager 136. In some examples, the orientation engine 135 can determine the orientation of the application window resize lock 156 based on the orientation value (e.g., vertical only, horizontal only, unspecified, etc.) and the resize capability flag (e.g., resize capability value 107) provided by the application 110. In some examples, if the orientation value and the resize capability flag are not sufficient to determine the orientation, the orientation engine 135 can trigger an automated evaluation (or manual evaluation) to identify the best orientation for the application 110. In some examples, the orientation engine 135 can obtain user-provided orientation data about the best orientation for the application 110 (e.g., obtained from multiple different users), and then determine the orientation of the application 110 based on the user-provided orientation data.
[0081] In some examples, the window manager 136 is configured to present a UI object 164 on the user interface 142, wherein the UI object 164 indicates a resize disabled indicator 166. In some examples, the resize disabled indicator 166 is a UI splash screen presented on the user interface 142 when the application 110 is initially launched. The resize disabled indicator 166 may indicate that the application 110 lacks functionality or has functionality that is incompatible with the operating system 126 of the computing device 120 and / or resize is disabled. The resize disabled indicator 166 may indicate that the application 110 is not optimized for the computing device 120 and that enabling free resize may cause the application to crash or render problems. The presentation of the resize disabled indicator 166 may reduce stability and rendering problems. In some examples, the resize disabled indicator 166 may provide a selectable option to enable resize, for example, to disable the window resize lock 156. In some examples, if the user chooses to enable resize, the window manager 136 is configured to disable the window resize lock 156. In some examples, windows manager 136 is configured to update storage device 134 to disable compatibility mode 113 by storing compatibility state 130b.
[0082] In some examples, the window manager 136 may present an operating system settings interface 186, wherein the operating system settings interface 186 includes a resize setting 180 that allows a user to select whether to allow window resizing for the application 110. The operating system settings interface 186 may be an interface that provides settings associated with the operating system 126. For example, the operating system settings interface 186 may provide settings for a network, a Bluetooth connection, a connected device, and applications installed on the computing device. In the per-application settings, the operating system settings interface 186 may provide a resize setting 180 (e.g., a toggle switch) that allows a user to select whether to allow window resizing. The window manager 136 may disable the window resize lock 156 in response to the user selecting an option to allow resizing. The window manager 136 may update the storage device 134 based on the user selection. For example, if the user selects to allow resizing, the window manager 136 may update the storage device 134 with a compatibility state 130b that indicates that the compatibility mode 113 is disabled.
[0083] The window manager 136 may present the UI object 164 on the user interface 142, wherein the UI object 164 includes a resize settings link 188. If the user selects the resize settings link 188, the window manager 136 presents the operating system settings interface 186 having the resize settings 180.
[0084] The window manager 136 may receive a resize request 112 to resize the user interface 142. In response to the resize request 112, the window manager 136 may present the UI object 164 including the restart indicator 184 to restart the application 110. Then, in response to receiving a selection of the selectable control, the window manager 136 may restart the application 110 so that the user interface 142 is resized on the display according to the resize request 112. For example, when being resized, the application 110 may not be presented at the new size, but restarting the application 110 ensures that the application is presented at the new size. Restarting the application 110 in this manner may reduce instability of the application 110 and / or reduce rendering issues during resizing.
[0085] The window manager 136 is configured to detect the position of the cursor icon 190 on the display 140. In response to detecting the position of the cursor icon 190 within a threshold distance of the edge of the user interface 142, the window manager 136 may change the cursor icon 190 to indicate that resizing is not allowed. For example, a user may position the cursor icon 190 at (or near) the edge of the user interface 142 in order to "grab" the edge and resize the user interface 142 to a desired width 154 or height 152, but when the cursor icon 190 is detected within a threshold distance of the edge of the user interface 142, the window manager 136 may change the cursor icon 190. The cursor icon 190 may be changed to a different shape or a completely different icon to indicate that drag resizing is not allowed. In some examples, the window manager 136 is configured to change an aspect of the cursor icon 190 (e.g., size, shape, color, and / or graphics, etc.) in response to the cursor icon 190 being positioned within a threshold distance of a selectable UI element. For example, if application 110 displays a selectable UI element, and window manager 136 detects that cursor icon 190 is positioned beyond or within a threshold distance of the selectable UI element, window manager 136 may change cursor icon 190 to indicate that the UI element is selectable.
[0086] The window manager 136 may enable resizing to different predefined window sizes 158. For example, the user may be able to switch to two, three, or more predefined window sizes 158, but the user interface 142 may still be restricted from freely resizing. For example, the user may still not be able to drag and resize the user interface 142. In some examples, the window manager 136 is configured to present a UI object 164 on the user interface 142, wherein the UI object 164 provides a plurality of predefined size options 185 corresponding to the predefined window sizes 158. In some examples, the UI object 164 is presented on the user interface 142 when the application 110 is launched. In some examples, the window manager 136 receives a resize request 112, and instead of resizing the window size 146 of the user interface 142 according to the resize request 112, the window manager 136 presents the UI object 164 using the predefined size options 185. For example, the user may attempt to drag the user interface 142 to resize, and in response to the drag resize attempt, the window manager 136 may present the UI object 164 at the predefined window size 158. Presenting UI objects 164 at predefined or predetermined size options (e.g., window sizes) can reduce application instability and / or reduce rendering issues on computing device 120 during resizing operations and / or during subsequent execution of application 110 at computing device 120. Application performance may thus be improved.
[0087] The predefined window sizes 158 may include a first window size 158-1 and a second window size 158-2, wherein the second window size 158-2 is different from the first window size 158-1 (e.g., at least one of the height 152 or the width 154 is different). In some examples, the second window size 158-2 is larger than the first window size 158-1. In some examples, the first window size 158-1 relates to a mobile size, and the second window size 158-2 relates to a tablet size. In some examples, the window manager 136 initially presents the user interface 142 according to the first window size 158-1. The user is provided with an option to switch to the second window size 158-2. In some examples, the predefined window size 158 includes a third window size 158-3 that is different from the first window size 158-1 or the second window size 158-2. In some examples, the third window size 158-3 is larger than the first window size 158-1 and the second window size 158-2. In some examples, third window size 158 - 3 is a maximized size where user interface 142 substantially corresponds to the size of display 140 .
[0088] When compatibility mode 113 is activated, window manager 136 may adjust a UI scale 160 of user interface 142 of application 110. In other words, in response to determining that compatibility mode 113 is activated for application 110, a UI scale 160 of application content to be displayed within user interface 142 may be adjusted. In some examples, window manager 136 may increase UI scale 160 to magnify aspects of user interface 142, such as text and graphics, to correspond to a UI scale associated with an application optimized to execute on operating system 126. For example, user interface 142 of application 110 is initially configured to be presented on display 140 according to a first UI scale. However, before launching user interface 142, window manager 136 may adjust the first UI scale to a second UI scale so that user interface 142 is presented on display 140 according to the second UI scale.
[0089] When compatibility mode 113 is activated, window manager 136 may adjust display size 162 of application 110 to correspond to window size 146. Display size 162 may be a display size according to the viewpoint of application 110 via an application programming interface (API) that queries display size 162. Display size 162 may be the width and / or height of text and graphics of application 110 displayed on display 140. Window manager 136 may reduce display size 162 to correspond to window size 146 of user interface 142. Since mobile applications are typically executed in full screen mode on a phone or tablet, application developers typically do not distinguish between window size 146 and display size 162 (e.g., if the application is running in full screen mode, they return the same value). However, for mobile applications operating on larger devices such as laptops, mobile applications can be executed in a free form environment, so the difference between display size 162 and window size 146 can cause rendering problems. In some examples, adjusting display size 162 of application 110 includes adjusting display size 162 to be seen (or based on the viewpoint of application 110 ) includes adjusting display size 162 of application content to be displayed in user interface 142 to be less than or equal to window size 146 of user interface 142 .
[0090] Window manager 136 may increase UI scale 160 to magnify aspects of user interface 142, such as text and graphics, to correspond to a UI scale associated with an application optimized for execution on operating system 126. For example, user interface 142 of application 110 is initially configured to be presented on display 140 according to a first UI scale. However, before launching user interface 142, window manager 136 may adjust the first UI scale to a second UI scale so that user interface 142 is presented on display 140 according to the second UI scale.
[0091] When application 110 is in compatibility mode 113, window manager 136 can adjust, add, or delete one or more UI controls 172 associated with user interface 142 of application 110. For example, when application 110 is executed on operating system 126 for which it is not optimized to execute, user interface 142 can provide one or more UI controls 172 that are redundant, inapplicable, and / or insufficient to properly navigate application 110. In some examples, window manager 136 can remove maximize and / or restore controls when resize constraints are enabled. In some examples, window manager 136 can remove a back navigation button that may be confusing to a user when presented in user interface 142. For example, in response to determining that compatibility mode 113 is activated, user interface control elements that are configured (e.g., originally configured) to be displayed within user interface 142 can be removed (or changed).
[0092] When the application 110 is in compatibility mode 113, the window manager 136 can enable one or more hot keys 170 to perform one or more functions that are usually touch commands on the mobile platform and present information about the hot keys 170 on the user interface 142. For example, in response to determining that the compatibility mode 113 is activated, the hot keys 170 for the functions of the application 110 can be enabled, and the information about the hot keys 170 is displayed in the user interface 142 of the application 110. The hot key 170 is a key or a combination of keys on a computer keyboard that provides access to a specific function associated with the execution of the application 110. In some examples, the hot key 170 can be referred to as a shortcut key. The window manager 136 can detect that the application 110 includes a chat portion that allows the user to type text. On a mobile platform, in order to send a message, the user usually has to provide a touch command on the send key. However, when the application 110 is executed on a laptop / desktop platform, the window manager 136 can implement the hot key 170 (e.g., tap enter to send) so that the user can use the keyboard to send the message. In some examples, window manager 136 can enable hotkey 170 (e.g., press input) to pause and start video or audio. In some examples, window manager 136 can enable hotkey 170 to exit UI object (e.g., UI dialog).
[0093] When application 110 is in compatibility mode 113, window manager 136 may enable drag-and-drop feature 176. Drag-and-drop feature 176 may be a UI feature that allows a user to select a file or image and drag it into a drop zone using a mouse so that the file or image can be received by application 110.
[0094] When application 110 is in compatibility mode 113, window manager 136 can delay resize event 168 or at key threshold. In some examples, window resize lock 156 is not enabled (or disabled by the user) (thus permitting free resize), but window manager 136 is configured to adjust the transmission of resize event 168 sent to application 110 to avoid problems caused when permitting free resize. For example, non-optimized applications for free resize can cause stability and rendering problems, as well as lower quality UI layouts. For example, non-optimized applications may not utilize (multiple) APIs that allow them to resize relatively smoothly. However, window manager 136 can implement a limited version of free resize (also called smart resize) by delaying resize event 168 or sending resize event 168 to application 110 at a key threshold. When smart resize is enabled by window manager 136, the number of resize events 168 sent to application 110 is less than the number of resize events 168 sent to application 110 during normal free resize. When application 110 is being freely resized, multiple resize events 168 (e.g., resize / move / re-render / restart requests) are sent to application 110, but in some examples, application 110 may not properly handle all resize events 168. When smart resizing is enabled by window manager 136, window manager 136 may reduce the number of resize events 168, delay the transmission of resize events 168, or send resize events 168 at certain key thresholds (e.g., when the cursor is released and the final size is determined).
[0095] In some examples, when the application 110 is in the compatibility mode 113, the window manager 136 can enable window snapping 178 while preserving the aspect ratio of the window size. In contrast, according to some conventional window snapping techniques, the user interface is repositioned and automatically resized (e.g., resized to half of the display 140). When window snapping 178 is enabled, the user interface 142 can be moved (e.g., repositioned) to an edge portion (e.g., a side or corner) of the display 140 in response to a command provided by a user (e.g., using a mouse, keyboard, and / or touch) while maintaining the same window size 146, so that the user interface 142 is automatically positioned without manually positioning the user interface 142. If the window resize lock 156 is a vertical window lock 156a, the user interface 142 has a window size 146 corresponding to a vertical layout, and the user can be prevented from freely resizing the user interface 142. However, based on a user command, user interface 142 can be automatically repositioned on display 140 at a position where user interface 142 is within a threshold distance (or contact) of an edge of display 140, where window size 146 remains the same size (e.g., a portrait layout size).
[0096] Compatibility features 138 may include other features for improving the execution of application 110 on operating system 126. In some examples, window manager 136 may detect UI elements that are controllable using touch commands, and window manager 136 may enable hot keys 170 to control UI elements or enable trackpad or computer mouse actions to control UI elements. In some examples, window manager 136 may enable text selection (e.g., highlighting text, copying / pasting text within an application or another application, etc.). For example, when application 110 is executed on operating system 126, application 110 may not support text selection, but window manager 136 may detect that text is presented in user interface 142, and window manager 136 may permit the user to select text presented in user interface 142 and / or take actions on text such as copying and / or pasting text. In some examples, application 110 may not support trackpad scrolling or mouse wheel scrolling. However, when compatibility mode 113 is enabled, window manager 136 may detect the functions of application 110 and enable trackpad scrolling or mouse wheel scrolling to perform the functions. For example, application 110 may have a menu with multiple menu items. Window manager 136 may detect the menu and enable trackpad scrolling or mouse wheel scrolling to navigate the menu items.
[0097] Figure 2A An operating system 226 according to another aspect is illustrated. The operating system 226 may be Figures 1A to 1D2 and may include any features discussed with respect to those figures. The operating system 226 may include a settings user interface (UI) 281, a storage device 234, and a window manager 236. The settings UI 281 includes a plurality of settings including a resize setting 280. The resize setting 280 is a setting indicating whether the window resize lock is enabled (or more generally whether the compatibility mode should be activated). In some examples, the resize setting 280 is more generally referred to as a compatibility mode setting. The resize setting 280 may be provided to the user via a settings UI 281 that permits the user to select and configure various settings. The storage device 234 may store a compatibility state 230 associated with the application 210. If the compatibility state 230 indicates that the compatibility mode is activated, the resize setting 280 is visible to the user. If the compatibility state 230 indicates that the compatibility mode is deactivated, the resize setting 280 is also visible to the user. However, if the compatibility state 230 indicates that the compatibility state 230 is ready to be determined or undefined, the resize setting 280 may be hidden from the user. For example, the resize settings 280 may not be presented or displayed via the settings UI 281 .
[0098] The operating system 226 may also define a software container 211 configured to launch and execute the application 210. In some examples, instead of using the software container 211, the operating system 226 defines a virtual machine configured to launch and execute the application 210. The operating system 226 may receive or obtain an indication from the software container 211 (or virtual machine) that the compatibility mode should be activated. The software container 211 may be an instance of another operating system. In some examples, the software container 211 (or virtual machine) shares the OS kernel 213 with the operating system 226. In some examples, the software container 211 (or virtual machine) does not share the OS kernel 213 with the operating system 226. The OS kernel 213 is the main interface between the hardware and the process of the computing device. The OS kernel 213 is the initial program loaded into the memory before the boot loader. The OS kernel 213 may operate on the device firmware 215, which operates on the hardware firmware 217. The software container 211 (or virtual machine) may be a runtime platform including software dependencies required by the application 210, such as a specific version of the programming language runtime and other software libraries that assist in executing the application 210. The software container 211 may include a window manager 236a. The window manager 236 and the storage device 234 may communicate with one or more components (e.g., the window manager 236a) of the software container 211 (or virtual container) via an inter-process communication (IPC) link 293. In some examples, the window manager 236a includes a state determination engine 228 configured to determine whether to activate a compatibility mode. The window manager 236 is configured to adjust the user interface and apply a window manager policy based on the determined state.
[0099] Figure 2B 2 illustrates a flow chart for determining whether to activate a compatibility mode for an application 210. In operation 221, the application 210 is installed. The operating system 226 may update the configuration state in the storage device 234. Although the flow chart relates to a newly installed application, the technique can be applied to an already installed application. The operating system 226 may update the compatibility state 230 in the storage device 234 from Figure 1C The compatibility status 130c (e.g., undefined) of Figure 1C29, the window manager 236a updates the compatibility state in the cache (e.g., storage device) within the container 211 (or virtual machine) to eligible or ready. In operation 231, the window manager 236a starts the application 210.
[0100] In operation 233, the window manager 236a determines a resize lock value or compatibility state. In some examples, the window manager 236a includes a state determination engine 228. The state determination engine 228 may be Figures 1A to 1D The state determination engine 228 may be an example of a state determination engine 128 and may include any details discussed with reference to those figures. In some examples, the state determination engine 228 may obtain an application list (e.g., Figure 1D 105) and determines whether application 210 is included on the application list. If application 210 is not on the application list, state determination engine 228 may identify a resize lock value indicating that the window resize lock is enabled or may identify a compatibility state indicating that a compatibility mode is activated (e.g., Figure 1C 230a). In addition, the state determination engine 228 may use any of the signals (or parameters) previously discussed to determine the compatibility state. In operation 239, the window manager 236a communicates with the window manager 236 via the IPC link 293 to provide the window manager 236 with the resize lock value and / or the compatibility state. In operation 243, after receiving the resize lock value and / or the compatibility state at the window manager 236, the window manager 236 sets the window attribute 290 of the user interface of the application 210 to be non-resizable (if the compatibility mode is activated). In operation 245, the window manager 236 sends a request to the storage device 234 to update the compatibility state. In operation 247, the compatibility state 230 is updated to indicate that the compatibility mode is enabled. For example, the compatibility state 230 is updated from the compatibility state 130d (e.g., eligible) to the compatibility state 130a (e.g., activated). In operation 249, the storage device 234 sends a request to the settings UI 281 to update the resize settings 280. In operation 251, the resize setting 280 becomes visible on the setting UI 281. In operation 253, the storage device 234 notifies the window manager 236 that the resize setting 280 is now available.
[0101] FIG. 3A to FIG. 3E Illustrated is a user interface 342 of an application presented on a display 340 when the application is executing in a compatibility mode in accordance with various aspects. Figure 3A and 3B User interface 342 is illustrated with the window resize lock enabled. Figure 3A illustrates a user interface 342 according to one of the predefined window sizes, and Figure 3B User interface 342 is illustrated according to another of the predefined window sizes. Figure 3C User interface 342 is illustrated in response to the window resize lock being disabled. Figure 3D The user interface 342 is illustrated in which the user interface 342 is maximized on the display 340 .
[0102] A user interface 342 of an application (eg, a mobile application) is presented on a display 340 of a computing device. The application is being operated with the window resize lock enabled (at least with respect to the Figure 3A and Figure 3B ) is executed in a compatibility mode of . In some examples, the border area 358 is changed to be semi-transparent, which indicates that dragging to adjust the size is disabled. In addition, a UI object 364 is presented on the user interface 342, wherein the UI object 364 identifies a plurality of predefined size options 385 that can be selected by the user.
[0103] The predefined size options 385 include a first window size option 385-1 and a second window size option 385-2. Furthermore, the UI object 364 includes an adjustable size option 386, which, when selected, causes the window lock to be disabled (and the free resize to be enabled). The first window size option 385-1 corresponds to a first window size (e.g., Figure 1B The first window size 158-1 of FIG. 158 is shown in FIG. 158 , and the second window size option 385-2 corresponds to the second window size (eg, Figure 1B For example, the predefined size option 385 may identify two or more predefined window sizes. In some examples, the first window size option 385-1 may correspond to a predefined size associated with a phone size (e.g., Figure 3A ), and the second window size option 385-2 may correspond to a predefined size associated with the tablet size (eg Figure 3B ). If the user selects Figure 3A The second window size option 385-2 is as follows Figure 3B As shown, user interface 342 is resized according to the second window size (e.g., tablet size). In some examples, resizable option 386 relates to an option that allows resizing. If the user selects Figure 3A or Figure 3B If the resizable option 386 is selected, the window resize lock is disabled and the user can drag and resize the user interface 342, such as Figure 3C As shown. Figure 3C , the translucency of border region 358 is removed, which will indicate to the user that user interface 142 can be dragged to resize.
[0104] In addition, if Figure 3A and Figure 3B As shown, display 340 also includes a user interface 359 of another application in the background of user interface 342. User interface 359 includes a maximize UI icon 357, which, when selected, causes user interface 359 to be resized to cover the entire display 340. However, user interface 342 does not include maximize UI icon 357. For example, when the application is placed in compatibility mode and first window size option 385-1 or second window size option 385-2 is selected, maximize UI icon 357 is removed from user interface 342. However, if the user selects resizable option 386, maximize UI icon 357 appears again to provide an option to maximize user interface 342. If the user selects Figure 3C If the maximized UI icon 357 is selected, the user interface 342 is resized to cover the display 340, such as Figure 3D Then, the maximize UI icon 357 changes to a restore UI icon 361 which, when selected, causes the user interface 342 to resize according to the window size that existed before the maximize UI icon 357 was selected.
[0105] In some examples, when the application is launched (and / or when the compatibility mode button is selected), the user interface 342 is displayed with a window size corresponding to the first window size option 385-1, such as Figure 3A as shown. In addition, the first window size option 385-1 may include a visual indicator indicating the application displayed according to the first window size option 385-1. In addition, the user interface 342 may include a selectable UI element 355, which, when selected, causes the UI object 364 to appear. The UI element 355 may be a menu item that, when selected, presents the UI object 364 in the form of a menu having items that permit selection of one of a plurality of predefined size options. In other words, a user interface 342 of an application may be presented on a display of a computing device, wherein the user interface includes a selectable user interface element (e.g., UI element 355). Presenting a user interface object (e.g., UI object 364) that defines a plurality of predefined size options for an application may be responsive to receiving (e.g., by a user) a selection of the selectable user interface element. In some examples, the UI element 355 also identifies which option is currently selected. For example, the UI element 355 may be displayed on a display of a computing device. Figure 3A indicates "phone" in the figure, and UI element 355 is in Figure 3B In addition, UI elements are Figure 3C Indicates "adjustable size" in . In some examples, when user interface 342 is initially displayed, UI object 364 is presented on user interface 342, and then disappears after a threshold time period has passed. The user will then select UI element 355 to make UI object 364 reappear.
[0106] Figure 3E 342 is illustrated for an application in compatibility mode according to an aspect, wherein the application supports only one of the predefined resizing options. Figure 3E As shown, border area 358 is translucent to indicate that the window resize lock is enabled. In addition, UI element 355 is changed to be unselectable to prevent UI object 364 from being presented (so as not to provide the user with a resize option). In addition, UI object 365 providing an indication that the application only supports one type of window size can be presented on user interface 342.
[0107] Figure 4 A user interface 442 for an application in compatibility mode according to one aspect is illustrated. The user interface 442 provides a UI object 464 including multiple resize options (e.g., phone, tablet, maximize). In addition, the UI object 464 may include a free resize option 451. In some examples, the free resize option 451 is a toggle control. When the free resize option 451 is selected, the user can drag the user interface 442 to resize. In addition, the user interface 442 may present a compatibility extension interface 453 that provides one or more additional compatibility features. In some examples, the compatibility extension interface 453 includes a touch overlay option 455 and a keyboard shortcut option 457.
[0108] Figures 5A to 5D A user interface 542 depicting various implementations of a compatibility mode indicator presented on a display 540 is illustrated according to an aspect. Figure 5A In the example, a capability mode indicator 546a is presented on the user interface 542, wherein the capability mode indicator 546a is an icon indicating that the application is in the capability mode. Figure 5B In the example, a capability mode indicator 546b is presented on the user interface 542, wherein the capability mode indicator 546b is another icon indicating that the application is in capability mode. Figure 5C In , a capability mode indicator 546c is presented on the user interface 542, wherein the capability mode indicator 546c is a label (eg, a compatibility dimension) indicating that the application is in capability mode. Figure 5D, capability mode indicator 546d is presented on user interface 542, where capability mode indicator 546d is another label indicating that the application is in capability mode (eg, not resizable).
[0109] Figures 6A to 6E A user interface 642 is illustrated presented on the display 640 in which the cursor icon is changed to a non-resizable capability icon 680. For example, the position of the cursor icon is detected on the display 640, and when the position of the cursor is detected within a threshold distance of an edge of the user interface 642, the cursor icon is changed to the non-resizable capability icon 680.
[0110] Figure 7 A user interface 742 is illustrated in which an application is being executed in compatibility mode and is presented on a display 740. For example, in response to attempting to select the maximize icon 757, a UI object 764 is presented on the user interface 742, wherein the UI object 764 provides a plurality of predefined resize options (e.g., phone, tablet, desktop). For example, the UI object 764 includes a first resize option 785-1 associated with a phone size, a second resize option 785-2 associated with a tablet size, and a third resize option 785-3 associated with a desktop size. Figure 7 , the user interface 742 has a size corresponding to the first resize option 785-1. However, the user can select the second resize option 785-2, which causes the size of the user interface 742 to be adjusted according to the second resize option 785-2. Then, the user can select the third resize option 785-3, which causes the size of the user interface 742 to be adjusted according to the third resize option 785-3. In some examples, the user interface 742 can be resized according to only three different options. In some examples, the UI object 764 includes a resize settings link 780, which, when selected, causes an interface to be presented that provides a selection option for enabling or disabling the window resize lock. If the window resize lock is disabled, the user interface 742 can be freely resized.
[0111] Figure 8 A user interface 842 is illustrated in which an application is being executed in compatibility mode on a display 840. For example, in response to receiving a selection of the maximize icon 857, a UI object 864 is presented on the user interface 842, wherein the UI object 864 provides a plurality of predefined resize options (e.g., phone, tablet, maximize). For example, the UI object 864 includes a first resize option 885-1 associated with a longitudinal size, a second resize option 885-2 associated with a lateral size, and a third resize option 885-3 associated with a maximized size. In some examples, the user interface 842 is capable of resizing according to only three different options.
[0112] Fig. 9 The user interface 942 in which the application is being executed in compatibility mode is illustrated. The user interface 942 includes a UI element 955, which, when selected, provides a UI object 964 in the form of a drop-down menu. The UI object 964 includes a plurality of predefined resizing options (e.g., phone, tablet, desktop). For example, the UI object 964 includes a first resizing option 985-1 related to the phone size, a second resizing option 985-2 related to the tablet size, and a third resizing option 985-3 related to the desktop size. The user interface 942 can be resized according to three different options. In addition, the UI object 964 can include a selectable option 951 for enabling or disabling free resizing. For example, when free resizing is disabled, the user interface 942 can only be resized according to three different options. However, when free resizing is enabled, the user interface 942 can be freely resized.
[0113] Fig.10 A user interface 1042 in which an application is executing in compatibility mode according to another aspect is illustrated. The user interface 1042 includes a UI element 1055, which, when selected, provides a UI object 1064 in the form of a drop-down menu. The UI object 1064 includes a plurality of predefined resizing options (e.g., phone, tablet, desktop). For example, the UI object 1064 includes a first resizing option 1085-1 related to the phone size, a second resizing option 1085-2 related to the tablet size, and a third resizing option 1085-3 related to the desktop size. The user interface 1042 can be resized according to three different options. In addition, the UI object 1064 can include a resizing setting link 1080, which, when selected, causes an OS settings interface to be presented on the display, wherein the OS settings interface includes an optional resizing setting for enabling or disabling the window resizing lock.
[0114] Fig.11A user interface 1142 in which an application is executing in compatibility mode according to another aspect is illustrated. The user interface 1142 includes a UI element 1155, which, when selected, provides a UI object 1164 in the form of a drop-down menu. The UI object 1164 can define multiple compatibility features (e.g., compatibility extensions). In some examples, the UI object 1164 includes a UI element that enables a user to select a window size 1171, whether to enable touch overlay 1173, and / or whether to enable keyboard shortcuts 1175. In some examples, in response to receiving the window size 1171, the UI object 1164 can provide multiple resizing options that can be selected by the user. For example, the UI object 1164 includes a first resizing option 1185-1 related to the phone size, a second resizing option 1185-2 related to the tablet size, and a third resizing option 1185-3 related to the desktop size. In addition, the UI object 1164 may include a selectable option 1151 for enabling or disabling free resizing (or a link to a settings interface to enable or disable free resizing). For example, when free resizing is disabled, the user interface 1142 can only be resized according to three different options. However, when free resizing is enabled, the user interface 1142 can be freely resized.
[0115] Fig.12 A user interface 1242 in which an application is executing in compatibility mode according to another aspect is illustrated. The user interface 1242 includes a UI element 1255, which, when selected, provides a UI object 1264 in the form of a drop-down menu. The UI object 1264 may provide a plurality of resize options (e.g., phone, tablet, maximize) that may be selected by a user. For example, the UI object 1264 includes a first resize option 1285-1 related to the phone size, a second resize option 1285-2 related to the tablet size, and a third resize option 1285-3 related to the desktop size. In addition, the UI object 1264 may include a selectable option 1251 for enabling or disabling free resize (e.g., drag resize). For example, when free resize is disabled, the user interface 1242 can only be resized according to three different options. However, when free resize is enabled, the user interface 1242 can be freely resized.
[0116] Fig.13 A user interface 1342 is illustrated in which an application is executing in compatibility mode according to another aspect. The user interface 1342 includes a UI element 1355 that, when selected, provides a plurality of resizing options. For example, in Fig.13In the example embodiment, the phone size is selected, but the user may have the ability to select other sizes (e.g., tablet, desktop, maximized, etc.). In addition, the user interface 1342 includes a selectable control 1373 for enabling or disabling the touch mouse. In addition, the user interface 1342 includes a selectable control 1375 for enabling hot keys such as using the "enter" button on the keyboard to send a message.
[0117] Fig.14 A user interface 1442 is illustrated presented on a display 1440 where an application is executing in compatibility mode. In response to launching the application in compatibility mode, the user interface 1442 may display a UI object 1464 (e.g., a splash UI screen) with a resize disable indicator 1447 indicating that free resize is disabled (and enabling free resize may cause the application to terminate abruptly). In some examples, the UI object 1464 includes a resize settings link 1488 that, when selected, causes an OS settings interface to be presented for enabling or disabling the window resize lock.
[0118] Fig.15 A user interface 1542 is illustrated as being presented on a display 1540 where an application is executing in compatibility mode. In response to launching the application in compatibility mode, the user interface 1542 may display a UI object 1564 (e.g., a splash UI screen) with a resize disabled indicator 1566 indicating that free resize is disabled (and enabling free resize may cause the application to terminate abruptly). In some examples, the UI object 1464 includes a selectable option 1552 for enabling free resize.
[0119] Fig.16 An OS settings interface 1686 is illustrated that includes resize settings 1680. For example, resize settings 1680 can enable a user to enable or disable a window resize lock (e.g., free resize). In some examples, resize settings 1680 are provided in a per-app settings interface 1687 that also provides other settings associated with the application. In some examples, resize settings 1680 include a slider control 1681 for enabling or disabling the window resize lock. However, resize settings 1680 can define any type of UI control, such as a selectable button, a toggle switch, etc.
[0120] Fig.17A A user interface 1742a of a non-optimized application is illustrated that is not operating in a compatibility mode. Fig. 17B The user interface 1742b of a non-optimized application operating in compatibility mode is illustrated. Fig.17AAs shown, display size 1762 and window size 1746 may be different. For example, some mobile applications are executed in a maximized layout in a mobile environment. However, when the mobile application is executed on a larger display, some application developers may not have considered the layout difference between the display and the window size. Fig.17A As shown, display size 1762 (e.g., display width) is greater than window size 1746 (e.g., window width). Fig. 17B As shown, when compatibility mode is activated, the window manager can adjust the display size 1762 from the application's viewpoint to correspond to the window size 1746. The display size 1762 can be the width and / or height of the text and graphics of the application displayed on the display. In some examples, the window manager can reduce the display size 1762 to correspond to the window size 1746 of the user interface 1742b.
[0121] Fig.18 The diagram shows a user interface 1842 presented on a display 1840 in which an application is executing in compatibility mode. The user interface 1842 may display a UI object 1864 (e.g., a splash UI screen) with a resize disabled indicator 1866, which indicates that free resizing is disabled (and enabling free resizing may cause the application to terminate abruptly). In some examples, the window manager may receive a resize request to resize the user interface 1842. In response to the resize request, the UI object 1864 is presented, wherein the UI object 1864 includes a restart indicator 1884 for restarting the application. Then, in response to receiving a selection of the resize indicator 1884, the window manager may restart the application so that the user interface 1842 is resized on the display 1840 according to the resize request. This allows resizing of applications that do not support dynamic resizing. The performance of the application may therefore be improved.
[0122] Fig.19A user interface 1942 is illustrated in which an application is being executed in compatibility mode on a display 1940. When the application is in compatibility mode, the window manager may enable one or more hot keys (e.g., 1970-1, 1970-2, 1970-3, etc.) to implement features associated with the application (e.g., 1971-1, 1971-2, 1971-3, etc.). In some examples, when the application is executed in a mobile environment, the features (e.g., 1971-1, 1971-2, 1971-3, etc.) may be touch features. In some examples, feature 1971-1, feature 1971-2, and feature 1971-3 are selectable controls that are touch commands in a mobile environment. In some examples, feature 1971-1 is a touch command to insert an emoticon. In some examples, feature 1971-2 is a touch command for attaching a file. However, when the application is in compatibility mode, the window manager can attach hotkeys for performing features 1971-1, 1971-2, and 1971-3. For example, the window manager can implement hotkey 1970-1 (e.g., "E" for attaching an emoticon), hotkey 1970-2 (e.g., "F" for attaching a file), and hotkey 1970-3 (e.g., "enter" for sending a message).
[0123] Fig. 20 A user interface 2042 is illustrated in which an application is being executed in compatibility mode on a display 2040. In some examples, when the application is in compatibility mode, the window manager can adjust, add, or delete one or more UI controls 2072 associated with the user interface 2042 of the application. For example, when the application is executed on an operating system that it is not optimized to execute, the user interface 2042 may provide one or more UI controls 2072 that are redundant, inapplicable, and / or insufficient to properly navigate the application. In some examples, the UI controls 2072 include a back navigation button. In some examples, the window manager may remove UI controls 2072 that may be confusing to the user when presented in the user interface 2042.
[0124] Fig.21 A user interface 2142 is illustrated as being presented on a display 2140 where an application is executing in compatibility mode. When the application is in compatibility mode, the window manager may enable a drag and drop feature 2176. The drag and drop feature 2176 may be a UI feature that allows a user to select a file or image and drag it into a drop area using a mouse so that the file or image can be received by the application.
[0125] Fig. 22 2200 is a flowchart depicting example operations of a computing device according to an aspect. Figures 1A to 1DThe System 100 explains Fig. 22 2200, but the flowchart 2200 can be applied to any embodiment discussed in this article. Fig. 22 Flowchart 2200 illustrates the operations in sequential order, but it will be understood that this is merely an example and additional or alternative operations may be included. Fig. 22 The operations and related operations may be performed in a different order than shown, or in a parallel or overlapping manner.
[0126] Operation 2202 includes installing application 110 on computing device 120. Operation 2204 includes determining whether to activate compatibility mode 113 for application 110. Operation 2206 includes determining, in response to activating compatibility mode 113, a restriction on changes to an application window size of a user interface 142 of application 110. Operation 2208 includes presenting a UI object 164 that defines a plurality of predefined size options 185 for user interface 142 of application 110. In some examples, the presentation of UI object 164 that defines a plurality of predefined size options 185 for application 110 is in response to (or in response to) determining restrictions on changes to an application window size of user interface 142 of application 110. For example, after determining that restrictions on changes to an application window size should exist, UI object 164 that defines a plurality of predefined size options 185 can be presented (for output or display to a user). These predefined size options 185 can represent one or more changes to display dimensions that are allowed under the determined restrictions. In some examples, predefined size options 185 can be based on determined limits on changes to application window sizes. Presenting UI objects 164 with predefined or predetermined size options (e.g., window sizes) can reduce application instability and / or reduce rendering issues on computing device 120 during resizing operations and / or during subsequent execution of application 110 at computing device 120. Application performance can therefore be improved.
[0127] Fig.23 2300 and computing device 2350 that can be used with the techniques described herein. Figures 1A to 1D The computing device 120 is an example of a computer device 2300 or a computing device 2350. The computing device 2300 is intended to represent various forms of digital computers, such as laptop computers, desktop computers, tablets, workstations, personal digital assistants, televisions, servers, blade servers, mainframes, and other appropriate computing devices. The computing device 2350 is intended to represent various forms of mobile devices, such as personal digital assistants, cellular phones, smart phones, and other similar computing devices. The components shown here, their connections and relationships, and their functions are merely exemplary and are not meant to limit the implementation of the inventions described and / or claimed in this document.
[0128] The computing device 2300 includes a processor 2302, a memory 2304, a storage device 2306, a high-speed interface 2308 connected to the memory 2304 and a high-speed expansion port 2310, and a low-speed interface 2312 connected to a low-speed expansion port 2314 and the storage device 2306. The processor 2302 can be a semiconductor-based processor. The memory 2304 can be a semiconductor-based memory. Each of the processor 2302, the memory 2304, the storage device 2306, the high-speed interface 2308, the high-speed expansion port 2310, and the low-speed interface 2312 uses various bus interconnections and can be installed on a common motherboard or otherwise installed appropriately. The processor 2302 can process instructions for execution within the computing device 2300, including instructions stored in the memory 2304 or on the storage device 2306, to display graphical information of a GUI on an external input / output device (such as a display 2316 coupled to the high-speed interface 2308). In other embodiments, multiple processors and / or multiple buses and multiple memories and memory types may be used as appropriate. In addition, multiple computing devices 2300 may be connected, with each device providing portions of the necessary operations (e.g., as a server group, a group of blade servers, or a multi-processor system).
[0129] The memory 2304 stores information within the computing device 2300. In one embodiment, the memory 2304 is a volatile memory unit or multiple volatile memory units. In another embodiment, the memory 2304 is a non-volatile memory unit or multiple non-volatile memory units. The memory 2304 can also be another form of computer-readable medium, such as a magnetic disk or an optical disk.
[0130] Storage device 2306 can provide mass storage for computing device 2300. In one embodiment, storage device 2306 can be or include a computer readable medium, such as a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid-state memory device, or a device array, including a device in a storage area network or other configuration. A computer program product can be tangibly embodied in an information carrier. A computer program product can also include instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer or machine readable medium, such as memory 2304, storage device 2306, or a memory on processor 2302.
[0131] The high-speed interface 2308 manages bandwidth-intensive operations for the computing device 2300, while the low-speed interface 2312 manages less bandwidth-intensive operations. This allocation of functions is exemplary only. In one embodiment, the high-speed interface 2308 is coupled to the memory 2304, the display 2316, and the high-speed expansion port 2310 (e.g., through a graphics processor or accelerator), and the high-speed expansion port 2310 can accept various expansion cards (not shown). In this embodiment, the low-speed interface 2312 is coupled to the storage device 2306 and the low-speed expansion port 2314. The low-speed expansion port, which can include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet), can be coupled to one or more input / output devices, such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or a router, for example, through a network adapter.
[0132] The computing device 2300 can be implemented in a variety of different forms, as shown. For example, it can be implemented as a standard server 2320, or multiple implementations in such a server group. It can also be implemented as part of a rack server system 2324. In addition, it can be implemented in a personal computer such as a laptop computer 2322. Alternatively, components from the computing device 2300 can be combined with other components in a mobile device (not shown) such as device 2350. Each of such devices can contain one or more of the computing devices 2300, 2350, and the entire system can be composed of multiple computing devices 2300, 2350 that communicate with each other.
[0133] The computing device 2350 includes a processor 2352, a memory 2364, an input / output device such as a display 2354, a communication interface 2366, and a transceiver 2368, among other components. The device 2350 may also be provided with a storage device, such as a microdrive or other device, to provide additional storage. Each of the computing device 2350, the processor 2352, the memory 2364, the display 2354, the communication interface 2366, and the transceiver 2368 are interconnected using various buses, and several of the components may be mounted on a common motherboard or otherwise appropriately mounted.
[0134] Processor 2352 is capable of executing instructions within computing device 2350, including instructions stored in memory 2364. The processor may be implemented as a chipset including separate and multiple analog and digital processors. For example, the processor may provide coordination of other components of device 2350, such as controls for a user interface, applications run by device 2350, and wireless communications of device 2350.
[0135] The processor 2352 can communicate with the user through the control interface 2358 and the display interface 2356 coupled to the display 2354. The display 2354 can be, for example, a TFT LCD (thin film transistor liquid crystal display) or an OLED (organic light emitting diode) display, or other appropriate display technology. The display interface 2356 may include appropriate circuits for driving the display 2354 to present graphics and other information to the user. The control interface 2358 may receive commands from the user and convert them to submit to the processor 2352. In addition, an external interface 2362 in communication with the processor 2352 may be provided to enable near-area communication of the device 2350 with other devices. For example, in some embodiments, the external interface 2362 may provide wired communication, or in other embodiments, wireless communication, and multiple interfaces may also be used.
[0136] Memory 2364 stores information within computing device 2350. Memory 2364 can be implemented as one or more of a computer-readable medium or multiple computer-readable media, a volatile memory unit or multiple volatile memory units, or a non-volatile memory unit or multiple non-volatile memory units. Expansion memory 2374 can also be provided and connected to device 2350 via expansion interface 2372, which can include, for example, a SIMM (single-line memory module) card interface. Such expansion memory 2374 can provide additional storage space for device 2350, or can also store applications or other information for device 2350. Specifically, expansion memory 2374 can include instructions for executing or supplementing the above-mentioned process, and can also include security information. Therefore, for example, expansion memory 2374 can be provided as a security module of device 2350, and can be programmed with instructions that allow safe use of device 2350. In addition, security applications can be provided via a SIMM card together with additional information, such as placing identification information on a SIMM card in a non-invasive manner.
[0137] The memory may include, for example, flash memory and / or NVRAM memory, as described below. In one embodiment, a computer program product is tangibly embodied in an information carrier. The computer program product includes instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer-readable medium or machine-readable medium, such as memory 2364, expansion memory 2374, or memory on processor 2352, which may be received, for example, via transceiver 2368 or external interface 2362.
[0138] Device 2350 can communicate wirelessly through communication interface 2366, which may include digital signal processing circuitry when necessary. Communication interface 2366 can provide communication under various modes or protocols, such as GSM voice calls, SMS, EMS or MMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000 or GPRS, etc. Such communication can occur, for example, through a radio frequency transceiver. In addition, short-range communication can occur, such as using Bluetooth, Wi-Fi or other such transceivers (not shown). In addition, GPS (global positioning system) receiver module 2370 can provide additional navigation and location-related wireless data to device 2350, which can be used appropriately by applications running on device 2350.
[0139] Device 2350 may also communicate audibly using audio codec 2360, which may receive verbal information from a user and convert it into usable digital information. Audio codec 2360 may also generate audible sounds for the user, such as through a speaker (e.g., in a cell phone of device 2350). Such sounds may include sounds from voice phone calls, may include recorded sounds (e.g., voice messages, music files, etc.), and may also include sounds generated by applications operating on device 2350.
[0140] The computing device 2350 can be implemented in many different forms, as shown in the figure. For example, it can be implemented as a cellular phone 2380. It can also be implemented as a part of a smart phone 2382, a personal digital assistant, or another similar mobile device.
[0141] In addition to the above, controls may be provided to the user that allow the user to choose whether and when the systems, programs, or features described herein may be able to collect user information (e.g., information about the user's social network, social actions or activities, occupation, the user's preferences, or the user's current location), and whether the user sends content or communications from a server. In addition, certain data may be processed in one or more ways before being stored or used to remove personally identifiable information. For example, the user's identity may be processed so that the user's personally identifiable information cannot be determined, or the user's geographic location may be summarized (e.g., to a city, zip code, or state level) where location information is obtained so that the user's specific location cannot be determined. Thus, the user can control what information is collected about the user, how the information is used, and what information is provided to the user.
[0142] Various implementations of the systems and techniques described herein can be realized in digital electronic circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and / or combinations thereof. These various implementations can include implementations in one or more computer programs executable and / or interpretable on a programmable system that includes at least one programmable processor, which can be special or general purpose, coupled to receive data and instructions from a storage system, at least one input device, and at least one output device, and to send data and instructions to the storage system, at least one input device, and at least one output device.
[0143] These computer programs (also referred to as programs, software, software applications, or code) include machine instructions for a programmable processor and can be implemented in high-level procedural and / or object-oriented programming languages and / or assembly / machine languages. As used herein, the terms "machine-readable medium" and "computer-readable medium" refer to any computer program product, apparatus, and / or device (e.g., disk, optical disk, memory, programmable logic device (PLD)) for providing machine instructions and / or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term "machine-readable signal" refers to any signal for providing machine instructions and / or data to a programmable processor.
[0144] To provide interaction with a user, the systems and techniques described herein 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 pointing device (e.g., a mouse or trackball) through which the user can provide input to the computer. Other types of devices can also be used to provide interaction with the user; for example, the 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, voice, or tactile input.
[0145] The systems and techniques described herein can be implemented in a computing system that includes a back-end component (e.g., as a data server), or includes a middleware component (e.g., an application server), or includes a front-end component (e.g., a client computer with a graphical user interface or a web browser through which a user can interact with an implementation of the systems and techniques described herein), or any combination of such back-end components, middleware components, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include a local area network ("LAN"), a wide area network ("WAN"), and the Internet.
[0146] A computing system can include clients and servers. Clients and servers are generally remote from each other and generally interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
[0147] In this specification and the appended claims, the singular forms "a", "an", and "the" do not exclude plural references unless the context clearly indicates otherwise. In addition, unless the context clearly indicates otherwise, combinations such as "and", "or", and "and / or" are inclusive. For example, "A and / or B" includes A alone, B alone, and A together with B. In addition, the connecting lines or connectors shown in the various figures presented are intended to represent exemplary functional relationships and / or physical or logical couplings between various elements. Many alternative or additional functional relationships, physical connections, or logical connections may exist in actual devices. In addition, unless the element is specifically described as "essential" or "critical", no item or component is essential to the practice of the embodiments disclosed herein.
[0148] Terms such as, but not limited to, about, substantially, generally, etc. are used herein to indicate that precise values or ranges thereof are not required and do not need to be specified. As used herein, the above terms will have the ready meaning to those of ordinary skill in the art.
[0149] Furthermore, terms such as upper, lower, top, bottom, side, end, front, rear, etc. used herein are used with reference to the orientation currently considered or illustrated. If they are considered relative to another orientation, it should be understood that these terms must be modified accordingly.
[0150] Moreover, in this specification and the appended claims, the singular forms "a", "an" and "the" do not exclude plural references unless the context clearly indicates otherwise. Furthermore, combinations such as "and", "or" and "and / or" are inclusive unless the context clearly indicates otherwise. For example, "A and / or B" includes A alone, B alone, and A together with B.
[0151] Although certain example methods, devices, and articles have been described herein, the scope of coverage of this patent is not limited thereto. It should be understood that the terms used herein are for the purpose of describing specific aspects and are not intended to be limiting. On the contrary, this patent covers all methods, devices, and articles that fairly fall within the scope of the patent claims.
Claims
1. A method comprising: installing the application on a computing device; determining whether the application has functionality that is incompatible with the computing device; In response to determining that the application has functionality that is incompatible with the computing device, activating a compatibility mode for the application in which one or more features of the application are limited; In response to activating the compatibility mode, determining a restriction on a change in an application window size or shape of a user interface of the application; as well as A user interface object is presented that defines a plurality of selectable predefined size options for the user interface of the application, wherein the selectable predefined size options are based on the determined constraints.
2. The method according to claim 1, further comprising: presenting the user interface of the application on a display of the computing device; receiving a resize request to resize or reshape the user interface on the display; as well as The resize request is not allowed.
3. The method according to claim 1, further comprising: adjusting a user interface scale of application content to be displayed within the user interface of the application; The application content is presented in the user interface according to the adjusted user interface scale.
4. The method according to claim 1, further comprising: The display size of the application content to be displayed in the user interface is adjusted to be smaller than or equal to the window size of the user interface.
5. The method according to claim 1, further comprising: A user interface control element is removed, the user interface control element being configured to be displayed within the user interface of the application.
6. The method according to claim 1, further comprising: The user interface of the application is presented on a display of the computing device, wherein the user interface object is presented in response to the user interface being presented on the display.
7. The method according to claim 1, further comprising: The user interface of the application is presented on a display of the computing device, the user interface comprising a selectable user interface element, wherein the user interface object is presented in response to receiving a selection of the selectable user interface element.
8. The method according to claim 1, further comprising: changing a region of the user interface to indicate that resizing is restricted; as well as The user interface with the changed region is presented on a display of the computing device.
9. The method according to claim 1, further comprising: hotkeys to enable functionality of said application; as well as Information about the hot key is displayed in the user interface of the application.
10. The method according to claim 1, wherein: The application is a mobile application, which is a native application configured to execute on a mobile operating system of a mobile computing device.
11. The method according to claim 1, further comprising: obtaining at least one compatibility signal, the at least one compatibility signal comprising at least one of an application list or a resize capability value; as well as Determining to activate the compatibility mode is based on the at least one compatibility signal.
12. The method according to claim 1, further comprising: sending a compatibility request to an application store platform executable by a server computer via a network; receiving a compatibility response from the application store platform via the network; as well as Determining to activate the compatibility mode is based on the compatibility response.
13. The method according to claim 1, further comprising: obtaining metadata associated with the application; as well as Determining to activate the compatibility mode is based on the metadata.
14. The method according to claim 1, further comprising: sending a compatibility request via an interprocess communication link to a software container or a virtual machine configured to execute the application on the computing device; receiving a compatibility response from the software container via the interprocess communication link; as well as Determining to activate the compatibility mode is based on the compatibility response.
15. An apparatus comprising: at least one processor; as well as A non-transitory computer-readable medium storing executable instructions that, when executed by the at least one processor, cause the at least one processor to: installing the application on a computing device; determining whether the application has functionality that is incompatible with the computing device; In response to determining that the application has functionality that is incompatible with the computing device, activating a compatibility mode for the application in which one or more features of the application are limited; In response to activating the compatibility mode, determining a restriction on a change in an application window size or shape of a user interface of the application; as well as A user interface object is presented that defines a plurality of selectable predefined size options for the user interface of the application, wherein the selectable predefined size options are based on the determined constraints.
16. The device according to claim 15, wherein: The executable instructions include instructions that, when executed by the at least one processor, cause the at least one processor to: obtaining at least one compatibility signal, the at least one compatibility signal comprising at least one of an application list or a resize capability value; and Determining to activate the compatibility mode is based on the at least one compatibility signal.
17. The device according to claim 15, wherein: The executable instructions include instructions that, when executed by the at least one processor, cause the at least one processor to: sending a compatibility request to an application store platform executable by a server computer via a network; receiving a compatibility response from the application store platform via the network; and Determining to activate the compatibility mode is based on the compatibility response.
18. The device according to claim 15, wherein: The executable instructions include instructions that, when executed by the at least one processor, cause the at least one processor to: obtaining metadata associated with the application; and Determining to activate the compatibility mode is based on the metadata.
19. The device according to claim 15, wherein: The executable instructions include instructions that, when executed by the at least one processor, cause the at least one processor to: sending a compatibility request via an interprocess communication link to a software container or a virtual machine configured to execute the application on the computing device; receiving a compatibility response from the software container via the interprocess communication link; as well as Determining to activate the compatibility mode is based on the compatibility response.
20. The device according to claim 15, wherein: The executable instructions include instructions that, when executed by the at least one processor, cause the at least one processor to: An operating system settings interface is presented, the operating system settings interface including a setting that allows a user to select whether to enable a window resize lock.
21. The device according to claim 15, wherein: The executable instructions include instructions that, when executed by the at least one processor, cause the at least one processor to: A user interface object is presented that indicates that the application lacks functionality or has functionality that is incompatible with the computing device.
22. A non-transitory computer readable medium storing executable instructions that, when executed by at least one processor, cause the at least one processor to perform operations comprising: installing the application on a computing device; determining whether the application has functionality that is incompatible with the computing device; In response to determining that the application has functionality that is incompatible with the computing device, activating a compatibility mode for the application in which one or more features of the application are limited; In response to activating the compatibility mode, determining a restriction on a change in an application window size or shape of a user interface of the application; as well as A user interface object is presented that defines a plurality of selectable predefined size options for the user interface of the application, wherein the selectable predefined size options are based on the determined constraints.
23. The non-transitory computer readable medium of claim 22, wherein: The operations also include: A user interface object is presented that defines a plurality of predefined size options for the user interface of the application.
24. The non-transitory computer readable medium of claim 22, wherein: The operations also include: receiving a resize request to resize or reshape the user interface; presenting a user interface object in response to the resize request, the user interface object including a selectable control for restarting the application; and In response to receiving a selection of the selectable control, the application is restarted such that the user interface is resized or reshaped on the display in accordance with the resize request.
25. The non-transitory computer readable medium of claim 22, wherein: The operations also include: detecting a position of a cursor icon on a display; and The shape of the cursor icon is changed in response to detecting the position of the cursor icon within a threshold distance of an edge of the user interface.
26. The non-transitory computer readable medium of claim 22, wherein: The operations also include: enabling a drag and drop feature for the functionality of the application; and A drag-and-drop interface is presented on the user interface of the application, the drag-and-drop interface being configured to allow a user to move data into the application.
Citation Information
Patent Citations
Presenting and interacting with audio-visual content in a vehicle
US20160342406A1
System and method for uniform software deployment to devices with different configurations
US20210099590A1