The present disclosure relates to user interfaces of electronic devices, and more particularly, to providing an application program package pre-installation user interface at an electronic device.
A continually increasing number of software applications are being made available for use on computing and/or mobile devices. In some instances, before a user can use a software application, the software application may first be installed and configured on the computing device. A typical software application installation may involve a transfer of the files that comprise the software application onto the computing device, and the configuration of the software application and various components of the computing device to recognize and interact with each other. For example, the configuration of the computing device may include the addition or modification of registry settings, the configuration of one or more device drivers, and/or the configuration of operating system settings.
Further, a conventional installation program may be used to install the software application, which may first be saved locally at the computing device. Nonetheless, the conventional installation program may not provide any software application information to the user prior to installation. As such, a user may unknowingly install an incorrect or unintended software application. Moreover, the installation program may have a predefined set of user interfaces or pages that are presented to a user during the installation process. The predefined set of pages may not, however, cover all installation scenarios that may arise during the installation of a software application.
Thus, there is a need in the art for improvements in application program package installation.
The following presents a simplified summary of one or more implementations in order to provide a basic understanding of such implementations. This summary is not an extensive overview of all contemplated implementations, and is intended to neither identify key or critical elements of all implementations nor delineate the scope of any or all implementations. Its purpose is to present some concepts of one or more implementations in a simplified form as a prelude to the more detailed description that is presented later.
In one example, a method of presenting application program information on a display of an electronic device may include receiving an indication corresponding to a selection of a first user interface element associated with an application program package that includes a set of package information. The method may further include retrieving a subset of package information from the set of package information by executing one or more packaging application program interfaces (APIs) to extract the subset of package information from the set of package information. Additionally, the method may include displaying, within a user interface of the display, an application installation request window that includes the subset of package information.
In another example, an electronic device for presenting application program information comprising a memory configured to store data and instructions, a display configured to present information and a processor in communication with the memory and the display. The processor may be configured to receive an indication corresponding to a selection of a first user interface element associated with an application program package that includes a set of package information. The processor may further be configured to retrieve a subset of package information from the set of package information by executing one or more packaging application program interfaces (APIs) to extract the subset of package information from the set of package information. Additionally, the processor may be configured to display, within a user interface of the display, an application installation request window that includes the subset of package information.
In a further example, a computer-readable medium storing instructions executable by an electronic device for presenting application program information. The computer-readable medium may include at least one instruction for causing the computer device to receive an indication corresponding to a selection of a first user interface element associated with an application program package that includes a set of package information. The computer-readable medium may further include at least one instruction for causing the computer device to retrieve a subset of package information from the set of package information by executing one or more packaging application program interfaces (APIs) to extract the subset of package information from the set of package information. Additionally, the computer-readable medium may include at least one instruction for causing the computer device to display, within a user interface of a display, an application installation request window that includes the subset of package information.
Additional advantages and novel features relating to implementations of the present disclosure will be set forth in part in the description that follows, and in part will become more apparent to those skilled in the art upon examination of the following or upon learning by practice thereof.
The specific features, implementations, and advantages of the disclosure will become better understood with regard to the following description, appended claims, and accompanying drawings where:
The detailed description set forth below in connection with the appended drawings is intended as a description of various configurations and is not intended to represent the only configurations in which the concepts described herein may be practiced. The detailed description includes specific details for the purpose of providing a thorough understanding of various concepts. However, it will be apparent to those skilled in the art that these concepts may be practiced without these specific details. In some instances, well known components are shown in block diagram form in order to avoid obscuring such concepts. In some implementations, examples may be depicted with references to one or more components and one or more methods that may perform the actions or operations described herein, where components and/or actions/operations in dashed line may be optional.
The present disclosure relates to providing an application program package pre-install user interface at an electronic device. Currently, application programs may be installed on an electronic device without much information being provided to the user prior to, or during installation. Even more, the installation programs used to install such application programs may merely be an application program interface (API) (e.g., set of routines, protocols, and tools for building software applications) of or specific to a particular operating system that initiates an application program installation upon detecting a selection of a locally saved application program package at the electronic device. That is, such installation programs may not provide information related to the application program package in such a way so as to assist the user in determining whether to the install the application program package. Instead, the user may knowingly or unknowingly download an unintended application program package and initiate installation without any knowledge of the contents or details of the application program package prior to initiating installation. As such, it would be beneficial to extract such useful information from the application program package without downloading the entire package, and to present such useful information to the user prior to installation.
For instance, a user may search for a given application program using a search engine within a web browser. The user may locate the given application program for download at a webpage. The user may select a user interface element (e.g., hypertext link) triggering initiation of a download of the given application program. However, using the present implementations, rather than downloading the full application program upon selecting the user interface element, a subset of information may be extracted from the given application program and presented to the user without downloading the full application program. For example, to enable quick identification of the application program, the subset of information may include, but is not limited to, a title or name, a publisher, a version, application capabilities, and/or a logo of the application program. Based on the presentation of the subset of information, the user may make a more informed determination as to whether or not they wish to install the given application program on their computing or mobile device. As such, the present implementations provide a pre-installation user interface including a subset of application program package information presented to the user.
Referring now to
In some implementations, the electronic device 100 may include or may otherwise be coupled with a processor 104 and/or a memory 106, where the processor 104 and/or the memory 106 may be configured to execute or store programs, instructions or other parameters, such as the application program installer 110, which may be an application including one or more APIs, application program package 164, which may be received from a first server 130, and/or an application program 156, which may be an installed application of the application program package 164. For example, the application program installer 110 may correspond to an operating system 170 of the electronic device 100 (e.g., a mobile operating system) or an application executing on the operating system 170 of the electronic device 100.
In some implementations, the electronic device 100 may also include a display 112 having a presentation area, such as a screen, for presenting one or more graphical interfaces (e.g., graphical user interfaces (GUI)), such as to provide information for consumption by a user of the electronic device 100. For example, the display 112 may be or may include a liquid crystal display (LCD), light emitting diode (LED), organic LED (OLED), high-contrast electronic ink (E-Ink), a fabric including light pipes, or a micro-LED array, and may display graphical interfaces as instructed by processor 104 (e.g., based on execution of the application program installer 110).
The electronic device 100 may also include display interface 124 that couples to display 112 to provide instructions, parameters, or signals, for example, for displaying the graphical interfaces. In some implementations, the display 112 and/or the display interface 124 may form a touch-sensitive display that may detect touch inputs on the display 112 (e.g., for interacting with a user interface) and also output data in the form of graphical representations (e.g., on the user interface). Further, display interface 124 may be a user interface component configured to receive inputs and further configured to generate outputs for presentation. Display interface 124 may include one or more input devices, including but not limited to a keyboard, a number pad, a mouse, a touch-sensitive display, a navigation key, a function key, a microphone, a voice recognition component, any other mechanism capable of receiving an input from a user, or any combination thereof. Further, display interface 124 may include one or more output devices, including but not limited to a display, a speaker, a haptic feedback mechanism, a printer, any other mechanism capable of presenting an output to a user, or any combination thereof.
In some implementations, the electronic device 100 may also include one or more communication component(s) 114 (e.g., modems) for communicating with another device via a wired or wireless interface (Bluetooth, radio frequency identification (RFID), near field communication (NFC)). For example, the electronic device 100 may communicate with one or more devices via a network 108 (e.g., local area network, wireless network, Internet, and/or intranet). The electronic device 100 may also include a battery 122 for providing power to various components and/or subcomponents of the electronic device 100.
In addition, the electronic device 100 may include one or more additional components 102 for providing additional functionality to the electronic device 100. For example, the one or more additional components 102 may include but are not limited to a global positioning system (GPS) radio, a microphone, a memory, a processor, or a communication interface, such as an RFID radio, Bluetooth radio, or a Wi-Fi radio, one or more input devices (keyboard, mouse, etc.).
In some implementations, the electronic device 100 may include an operating system 170 executed by the processor 104 and/or the memory 106 of the electronic device 100. The memory 106 may be configured for storing data and/or computer-executable instructions defining and/or associated with the operating system 170 (and/or firmware), and the processor 104 may execute the operating system 170 and/or one or more associated components such as the application program installer 110. An example of the memory 106 can include, but is not limited to, a type of memory usable by a computer, such as random access memory (RAM), read only memory (ROM), tapes, magnetic discs, optical discs, volatile memory, non-volatile memory, and any combination thereof. An example of the processor 104 may include, but is not limited to, any processor specially programmed as described herein, including a controller, microcontroller, application specific integrated circuit (ASIC), field programmable gate array (FPGA), system on chip (SoC), or other programmable logic or state machine.
Referring more specifically to
For example, the electronic device 100 may display, within display interface 124, an application window 116 associated with a particular (installed) application program providing access to an application program package 164 residing or stored at the first server 130. The first server 130 may be a third party server that stores and makes available one or more application program packages including the application program package 164. For example, the application window 116 associated with the particular application program 156 may include, but is not limited to, a web browser, an email application program, or a local application window of an operating system 170.
Within the application window 116, for instance, at least one user interface element may provide access to, or otherwise permit acquisition or downloading of the application program package 164 upon selection. For example, the user interface element displayed within the application window 116 may be at least one of a hypertext link within a web browser window corresponding to the application window 116, a selectable item/affordance referencing the application program 156 within an email message including the application program package 164, and/or an icon/affordance within a local drive window (e.g., application window 116) representing a location of the application program package 164. For example, a selectable item, icon, and/or affordance may be a user perceptible user interface element that, upon selection or interaction therewith, may trigger a subsequent action.
During presentation of the application window 116, which may request a user input in order to provide access to the application program package 164, the electronic device 100 may receive an indication corresponding to a selection of the user interface element corresponding to a download request user interface element referencing to the application program package 164. However, rather than immediately downloading to the entirety of the application program package 164 from the first server 130 and on to the memory 106 via network 108, the electronic device 100 may be configured to activate or launch the application program installer 110.
To activate or launch the application program installer 110 prior to a full downloading of the application program package 164, the application program installer 110 may be associated, via a file-type-association, with one or more application extension types. That is, in order to activate or launch the application program installer 110 without downloading the entirety of the application program package 164 upon detecting a selection of the user interface element, the operating system 170 may detect that the application program installer 110 is associated with certain file type extensions (e.g., .appx) and may launch the application program installer 110 accordingly. For example, the application program installer 110 may run or be triggered by selection of certain types of files or application programs, such as, but not limited to .appx packages.
The application program installer 110, once launched or activated, may extract, using one or more APIs 166, a subset of package information 152 from a set of package information 150 forming the application program package 164. The APIs 166 may interact with (e.g., identify, location, and/or obtain) the subset of package information 152 from the different parts of the set of package information 150 and modify it, if necessary, for presentation to the user. For example, the set of package information 150 may be an entire set of files and resources, some or all of which may be compressed, forming the application program package 164. Specifically, the application program installer 110 may forego downloading the entire application program package 164 corresponding to the set of package information 150 and instead may initially locate, extract, and download/acquire the subset of package information 152 to allow the user to obtain some details about the application program before it is completely downloaded. Suitable examples of the subset of package information 152 may include, but are not limited to, data representing a name or title 154, a version 156, application capabilities 158, a logo 160, and a publisher 162 of the application program package 164, or any other information that may be useful to a user in determining whether or not the download the application program package 164.
The title 154 may be a description of the name of the application program package (
In an example, as the application program package 164 may be formed based on a standard file structure, and information such as, but not limited to, a block map file may be initially downloaded to identify and extract certain fields, or metadata (e.g., a set of data that describes and gives information about other data) that contains the subset of package information 152. Specifically, a block map file may be a representation of various portions of the application program package 164. The block map file may correspond to a block level representation of the files forming the application program package 164, where each block includes a hash value corresponding to an address identifier. As such, the subset of package information 152 may be located and extracted using the address identifier to obtain the desired blocks of information. In some implementations, the block map file may be part of the subset of package information 152.
For example, a header of the block map file may include one or more header fields that define operating parameters of the application program package 164. More specifically, the application program installer 110 may be configured to use the APIs 166 to read the application program package 164 metadata. For instance, a manifest file, which may include metadata for a group of accompanying files that are part of a set or coherent unit, may be accessed and/or acquired using or based on the header of the block map file. In particular, the application program installer 110 may locate and extract the subset of package information 152 using at least the manifest file, . The manifest file may include information such as, but not limited to, the application capabilities 158, an extension and framework 132, and the name or title 154 of the application program 156 , or any other ones of the subset of package information 152. In some implementations, the metadata (e.g., header and/or manifest file) and/or the subset of package information 152 may be stored or cached in a temporary file in memory 106.
Further, within the set of package information 150, the application program package 164 may include one or more language-specific subsets of information (e.g., a language-specific version of the subset of package information 152) associated with various languages or locales/regions (which may also be part of the metadata). The application program installer 110 may identify the language or locale of the electronic device 100 and acquire the subset of package information 152 for the language and/or locale. For example, the application program installer 110 may read or obtain a value representing the language and/or the locale (e.g., geographic location, country . . . ) stored in the memory 106 of the operating system 170 and acquire those resources corresponding to language or locale (e.g., the language-specific version of the subset of package information 152). If the title 154 of the application program 156 is different depending on which language or locale the application program package 164 is run or executed, then application program installer 110 may acquire or download the language or locale information. In other words, rather than downloading the entire application program package 164, based on identifying a language or locale setting for electronic device 100, application program installer 110 may only download a subset of information corresponding to the identified language or locale, thereby saving download overhead and/or local memory resources.
In the manifest file, the title 154 of the application program package 164 may not be explicitly listed. Instead, the title 154 may be a key word or variable within the manifest file that is not the title 154 that nonetheless links to the title 154. Depending on a value of the language or locale, the application program installer 110 may correlate the key word or variable to display the title 154 or any other portion of the set of package information 152 of the application program package 164 to user. In other words, the key word or variable may be language-specific, so that application program installer 110 may identify the language, and then identifies a language-specific key word or variable that matches the identified language.
In some implementations, referring back to
The application program installer 110 may launch and initiate extraction of the subset of package information 152 after the user interface element is selected (e.g., detection of click on hypertext link), or after the trust procedure 136 is performed and the user elects to continue if a warning window is presented on display 112.
Upon extracting the subset of package information 152 from the application program package 164, which may include any combination of the title 154, the version 156, the application capabilities 158, the logo 160, and/or the publisher 162 of the application program 156, the application program installer 110 may provide the subset of package information 152 to the display 112 for presentation, within the display interface 124, such as via the application installation request window 168. Specifically, the application installation request window 168 may be a user interface presenting at least the subset of package information 152 and an installation user interface element 172 for selection to proceed with or otherwise trigger installation or to abort the installation. For instance, examples of the application installation request window 168 are illustrated and described herein with respect to
Installation of all or relevant portions of the application program package 164 may rely or be dependent upon at least one framework 132 associated with the operating system 170. A framework 132 may be a reusable software environment or interface that provides particular functionality as part of a larger platform (e.g., the operating system 170). If the electronic device 100 does not include the framework 132 that provides for operation of the application program 156 within the operating system 170, installation or operation of the application program 156 via the application program package 164 may fail.
To address such scenario, the application program installer 110 may also obtain the framework 132 (or frameworks) that provide functionality for the application program package 164. For example, upon detecting a selection of the installation user interface element 172 within the application installation request window 168, the application program installer 110 may check whether the framework 132 is present at the electronic device 100. In the event the framework 132 is not present or available at the electronic device 100, the application program installer 110 may retrieve and download, via the network 108, the framework 132 from the second server 134, which may be a first party (e.g., entity directly associated with the operation system 170 and/or application program package 164) or third party (e.g. entity not directly associated with the operating system 170 and/or application program package 164) server remote from the electronic device 100, in order to proceed with download of the set of package information 150 and installation of the application program package 164.
For instance, referring to
The application installation request window 168 may also include at least one user interface element corresponding to an install 202 button (e.g., may be similar to the installation user interface element 172,
Upon detecting a selection of the install 202 button, the application program installer 110 may provide information related to a progress of the download and installation via display 112. For example, referring to
Further, referring to
Moreover, referring to
Referring to
Referring to
Referring to
The framework sub-window 274 also provides user interface elements that identify a location (e.g., a location in memory 106 of electronic device 100 for a framework currently residing on the electronic device 100, or a location or web address of a server on a network where the framework may be downloaded if not present on the electronic device 100). Further, the framework sub-window 274 may also include an ability to change where to obtain the frameworks, such as via a change 264 button and/or a browse computer 266 button, respectively. The framework sub-window may also include a cancel 270 button and a continue 272 button to terminate the installation procedure or proceed with the installation procedure, respectively.
Referring to
Referring to
Referring now to
Specifically, MIME types may describe a media type of content either in email or served by web servers or web applications and are intended to help guide a web browser in how the content is to be processed and displayed. An X-MS-InvokeApp may indicate that a server is requesting that the direct invoke 304 configured application be used. Further, a X-MS-InvokeApp hypertext transfer protocol (HTTP) response header may be used as part of the server support 306. As part of the webpage support 308, an HTTP or HTTP secure (HTTPS) uniform resource identifier (URI) may be utilized, where in some instance, an opt-in flag may be provided by the webpage. Post-processing the uniform resource identifier (URI) 302 may not be performed to be used by application program packaging and deployment APIs. A URI may be a location or address identifying where documents/files may be located on a network or the Internet.
For the URI 302 approach, all browsers 320 may be supported for the browser users 310 resulting in a browser independent approach. However, a webpage may be changed to refer to the application program package 164 (
Each of server support 306, webpage support 308, and browser users 310 may also have, in some instances, no coverage 324, 326, and 328, respectively. In some implementations, the application program installer 110 (
Further, the legend illustrated in
At block 402, the method 400 may launch an application installer from a file-type-association to an application extension. For instance, the electronic device 100 (
At block 404, the method 400 may open a stream to the application program package. For example, the electronic device 100 (
At block 406, the method 400 may obtain application program package metadata using the application program interfaces. For example, the electronic device 100 (
At block 408, the method 400 may copy one or more resources and a logo to a local application folder. For example, the electronic device 100 (
At block 410, the method 400 may present the user with the application program package metadata in the application installation request window. For example, the electronic device 100 (
At block 412, the method 400 may begin a deployment operation in response to detecting a selection of an install user interface element. For example, the electronic device 100 (
At block 414, the method 400 may use deployment APIs to locate the installed application program package. For example, the electronic device 100 (
At block 416, the method 400 may optionally (as represented by the dashed line box) launch the application program. For example, the electronic device 100 (
At block 422, the method 420 may launch an application program installer based on a file-type-association to an application extension. For example, the electronic device 100 (
At block 424, the method 420 may obtain a framework package family name. For example, the electronic device 100 (
At block 426, the method 420 may determine whether the framework is a first party framework. For example, the electronic device 100 (
The method 420 may proceed to block 428 based on a determination that the framework is not a first party framework. At block 428, the method 420 may pass through to deployment with third party framework URI. For example, the electronic device 100 (
Otherwise, the method 420 may proceed to block 430 based on a determination that the framework is a first party framework. At block 430, the method 420 may call a first party server with the framework package family name using the framework URI. For example, the electronic device 100 (
At block 432, the method 420 may launch a framework deployment operation. For example, the electronic device 100 (
At block 434, the method 420 may install the application program package. For example, the electronic device 100 (
At block 442, the method 440 may receive an indication corresponding to a selection of a first user interface element associated with an application program package that includes a set of package information. For example, the electronic device 100 (
At block 444, the method 440 may optionally (as represented by the dashed line decision diamond) determine whether the application program package satisfies a package trust procedure. For example, the electronic device 100 (
The method 440 may proceed to block 446 in accordance with a determination that the application program package does not satisfy a package trust procedure. At block 446, the method 440 may display a warning window requesting a selection of one of a second user interface element representing an instruction to run the application program package or a third user interface element representing an instruction not to run the application program package. For example, the electronic device 100 (
Otherwise, the method 440 may proceed to block 448 in accordance with a determination that the application program package satisfies a package trust procedure, or if block 444 is not implemented. At block 448, the method 440 may activate an application program installer corresponding to an operation system level application including one or more packaging APIs. For example, the electronic device 100 (
At block 450, the method 440 may receive an indication corresponding to a selection of the third user interface element (e.g., abort/cancel button). For example, the electronic device 100 (
At block 452, the method 440 may forgo installation of the application program package in response to the indication corresponding to the selection of the third user interface element. For example, the electronic device 100 (
At block 454, the method 440 may receive an indication corresponding to a selection of the second user interface element. For example, the electronic device 100 (
Further, at block 456, the method 440 may retrieve a subset of package information from the set of package information by executing one or more packaging APIs to extract the subset of package information from the set of package information. For example, the electronic device 100 (
In some implementations, the subset of package information 152 (
At block 458, the method 440 may display an application installation request window that includes the subset of package information. For example, the electronic device 100 (
In some implementations, displaying the application installation request window 168 (
At block 460, the method 440 may receive an indication corresponding to a selection of the installation user interface element. For example, the electronic device 100 (
At block 462, optionally, the method 440 may determine whether the electronic device includes at least one framework associated with the application program package. For example, the electronic device 100 (
The method 440 may proceed to block 464 in accordance with a determination that the electronic device does not include at least one framework associated with the application program package. At block 464, the method 440 may acquire the at least one framework from a remote server. For example, the electronic device 100 (
Otherwise, the method 440 may proceed to block 466 in accordance with a determination that the electronic device includes at least one framework associated with the application program package, or if the determination of block 462 is not performed (e.g., if the application program package 164 does not require a framework). At block 466, the method 440 may install the application program package by retrieving the set of package information. For example, the electronic device 100 (
As used in this application, the terms “component,” “system” and the like are intended to include a computer-related entity, such as but not limited to hardware, firmware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on a computer device and the computer device can be a component. One or more components can reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers. In addition, these components can execute from various computer readable media having various data structures stored thereon. The components may communicate by way of local and/or remote processes such as in accordance with a signal having one or more data packets, such as data from one component interacting with another component in a local system, distributed system, and/or across a network such as the Internet with other systems by way of the signal.
Furthermore, various implementations are described herein in connection with a device (e.g., electronic device 100 and/or computer device 500), which can be a wired device or a wireless device. A wireless device may be a wearable electronic device, a cellular telephone, a satellite phone, a cordless telephone, a Session Initiation Protocol (SIP) phone, a wireless local loop (WLL) station, a personal digital assistant (PDA), a handheld device having wireless connection capability, a computer device, or other processing devices connected to a wireless modem.
Moreover, the term “or” is intended to mean an inclusive “or” rather than an exclusive “or.” That is, unless specified otherwise, or clear from the context, the phrase “X employs A or B” is intended to mean any of the natural inclusive permutations. That is, the phrase “X employs A or B” is satisfied by any of the following instances: X employs A; X employs B; or X employs both A and B. In addition, the articles “a” and “an” as used in this application and the appended claims should generally be construed to mean “one or more” unless specified otherwise or clear from the context to be directed to a singular form.
Various implementations or features will be presented in terms of systems that may include a number of devices, components, modules, and the like. It is to be understood and appreciated that the various systems may include additional devices, components, modules, etc., and/or may not include all of the devices, components, modules, etc., discussed in connection with the figures. A combination of these approaches may also be used.
The various illustrative logics, logical blocks, and actions of methods described in connection with the embodiments disclosed herein may be implemented or performed with a specially-programmed one of a general purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general-purpose processor may be a microprocessor, but, in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computer devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Additionally, at least one processor may comprise one or more components operable to perform one or more of the steps and/or actions described above.
Further, the steps and/or actions of a method or algorithm described in connection with the implementations disclosed herein may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. A software module may reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, a hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art. An exemplary storage medium may be coupled to the processor, such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor. Further, in some implementations, the processor and the storage medium may reside in an ASIC. Additionally, the ASIC may reside in a user terminal. In the alternative, the processor and the storage medium may reside as discrete components in a user terminal. Additionally, in some implementations, the steps and/or actions of a method or algorithm may reside as one or any combination or set of codes and/or instructions on a machine readable medium and/or computer readable medium, which may be incorporated into a computer program product.
In one or more implementations, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored or transmitted as one or more instructions or code on a computer-readable medium. Computer-readable media includes both computer storage media and communication media including any medium that facilitates transfer of a computer program from one place to another. A storage medium may be any available media that can be accessed by a computer. By way of example, and not limitation, such computer-readable media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to carry or store desired program code in the form of instructions or data structures and that can be accessed by a computer. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc where disks usually reproduce data magnetically, while discs usually reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.
While implementations of the present disclosure have been described in connection with examples thereof, it will be understood by those skilled in the art that variations and modifications of the implementations described above may be made without departing from the scope hereof. Other implementations will be apparent to those skilled in the art from a consideration of the specification or from a practice in accordance with implementations disclosed herein.