Wireless connections are sometimes lost due to an action of a user of a computing device. For example, a user may have wireless control settings that disable wireless connections outside of a given set of access points or wireless networks. As another example, a user may choose to work in off-line mode, thus selecting to not be on the Internet. In either case, a new wireless connection may ultimately be desired, and this presents some difficulty for users lacking requisite knowledge of wireless configurations.
Particular embodiments detect that a wireless connection is desired for a computing device, and automatically create the connection for the user.
In one embodiment, a method can include: determining that a first wireless connection for a computing device has been lost; receiving a browser indication from a browser running on the computing device that a second wireless connection is desired for the computing device; providing, in response to the browser indication, an automatic connection indication to a user of the computing device via a user interface; receiving an acceptance indication from the user interface in response to the automatic connection indication; and establishing the second wireless connection for the computing device in response to the acceptance indication from the user interface.
A further understanding of the nature and the advantages of particular embodiments disclosed herein may be realized by reference of the remaining portions of the specification and the attached drawings.
Wireless connection may be a problem for computing device users from time to time. For such users who may not have knowledge about wireless configurations and connections, an automatic connection approach may be desirable. In particular embodiments, automatic wireless connection of a computing device for the user can occur in response to a detection of a user's request for a web page being denied due to lack of an Internet connection.
Particular embodiments can employ application software, which may be implemented in the form of a service and/or a plug-in. A service can be a long-running executable that performs specific functions without substantial user intervention. For example, Windows services may start when the operating system is booted and run in the background as long as Windows is running, or such services can be started manually when required. Such services may resemble a daemon, which is a computer program that runs in the background, rather than under the direct control of a user. A plug-in is a set of software components that adds specific abilities to a larger software application. By using plug-ins, application functionality can be customized. For example, plug-ins (e.g., Adobe Flash Player, QuickTime, etc.) are commonly used in web browsers to play video, scan for viruses, and display new file types.
In particular embodiments, a service can run in the background to check for launches of browsers (e.g., Internet Explorer, Chrome, Firefox, etc.). Once a browser launch is detected, the background service can determine if an Internet connection exists or not. If a desired Internet connection does not exist, a wireless (e.g., Wi-Fi) connection may automatically be created for the user. Because such wireless connections may be automatically created, the user does not need extensive knowledge of wireless connection procedures.
Referring now to
Processor 110 can be any general-purpose microprocessor or central processing unit (CPU), or a specialized microcontroller, and may control display 106 and wireless connection manager 108. Wireless connection manager 108 can include different configurations for various wireless networks or access points for accessing Internet 104. For example, user profiles for the operating system (OS) (e.g., Windows 7, Android, etc.) can include a list of wireless networks or access points configured and managed by wireless connection manager 108. Also, while the Internet 104 is shown in the particular example of
Automatic connection application 112 can run on processor 110, and may include a background service and/or a plug-in application. For example, such a plug-in application can plug into a browser running on computing device 102 for navigating Internet 104. In certain embodiments, automatic connection application 112 can detect when a user of computing device 102 indirectly indicates a desire to access Internet 104. One example of such an indirect indication of a desire to access Internet 104 is activation of a browser on computing device 102 because browser activation is typically done in order to navigate the Internet.
Automatic connection application 112 may prompt the user to convey an awareness of this detected desire to use the Internet, and to ascertain whether the user wants the application to help arrange a wireless Internet connection. Automatic connection application 112 may also let the user know that the Internet connection issue has been resolved after such wireless connection. For example, if the user launches a browser (e.g., Internet Explorer) and doesn't have an Internet connection, a standard/default pop-up message that is normally provided by the browser may be overridden by automatic connection application 112.
For example, automatic connection application 112 may be a service that indicates that the user does not have any Internet connection, and the application aims to repair the connection problem, such as by forming a new wireless connection. As another example, automatic connection application 112 may be a plug-in inside the browser, and the plug-in may be used to replace the standard/default error message of the browser with an automatic connection message. The replacement automatic connection message may convey to the user the understanding that there is no Internet connection, and ascertain whether the user would like the connection to be created.
Referring now to
Automatic connection application 112 can include connection library 136 and connection service 138. Connection service 138 may be a background service that detects a connection status for computing device 102. For example, connection service 138 may determine that a user of computing device 102 desires that a connection before to Internet 104, such as by detecting activation of at least one of browsers 140, instant messaging applications 142, or other network applications 144. Connection library 136 may be used to create the automatic wireless connection in response to the detection made by connection service 138. For example, connection library 136 can include various implementations and steps that an advanced user might take in order to establish a wireless connection, such as by obtaining user names and passwords from logs of approved connections from user profiles maintained by operating system 134 and/or wireless connection manager 108. In this fashion, previously profiled wireless networks can be utilized by connection library 136 to make the wireless connection.
Referring now to
In 208, in response to the browser indication, an automatic connection indication may be provided to a user of the computing device via a user interface. A user may then indicate in 210 whether to allow the application (e.g., a service, a plug-in, etc.) to automatically connect computing device 102 to the Internet via an acceptance indication from the user interface. For example, the user may make a selection (e.g., via a mouse click, touchscreen selection, etc.) of an automatic connection box on the user interface in order to generate the acceptance indication (or to indicate not to use the automatic connection process). If the user does not want the wireless connection to be automatically established using the application (210), the flow can return to the beginning (202).
However, if the user does want the application to automatically establish the wireless connection, this can be performed in response to the acceptance indication from the user interface in 212, thus completing the flow 214. Various steps may also be modified in the flow or order in accordance with particular embodiments. For example, after establishing the new wireless connection in 212, the flow may return to determine that a wireless connection has been lost in 204. Also, step 208 may be skipped in some cases, such as when a user has indicated a desire to always automatically connect when a loss connection is detected (204) and a browser is activated (e.g., 206). Thus, a user may provide the automatic connection indication of 208 as a default setting. Further, the default setting can be made in advance of any wireless connection activity, or as a result of a first encounter of a problem with a wireless connection being lost. In this case, subsequent automatic wireless connections would not prompt the user front automatic connection indication.
A wireless connection may be determined as lost (e.g., 204) by a variety of ways. In one example, the user may not be connected because the user has explicitly chosen to disconnect from the Internet. In such a case, computing device 102 may not automatically get reconnected without use of automatic connection application 112. In another example, the user may have a preference selected whereby the user does not want to always connect to an available wireless network. In another example, there may be different access gateways from different buildings between which the user is transporting computing device 102, and a release/renew of the Internet protocol (IP) address may be needed when going from one building to another.
In certain embodiments, a background service (e.g., automatic connection application 112) may prompt the user to ask if the user needs help establishing a wireless connection (e.g., step 208). Such a background service may be an “event” service that can be implemented to detect events (e.g., browser launch or activation, Internet connection failure message events) for various browsers. The background event service may still allow the user to see a default message from the browser that indicates a connection error. There may also be an event service that includes a pop-up user interface (UI) that informs the user of a possibility or attempt for automatically connecting to the Internet.
The browser can report to the service that there is an Internet connection desired but missing (e.g., step 206), and then the event service may produce the pop-up UI. In another example, the wireless connection problem may be detected and automatically fixed, followed by a UI to inform the user. Another option is to let the user know that there is an ongoing attempt to fix the wireless connection via a UI, and the user is allowed to cancel the operation if desired. Yet another option is to have the user indicate from the beginning (as a default selection) that they want the wireless connection problem fixed whenever the connection problem occurs.
In certain embodiments, plug-in application (e.g., automatic connection application 112) inside the browser can be used to detect that no Internet connection exists when one is desired. In this case, a standard or default browser error message to that effect (e.g., with a selector button to diagnose connection errors) may be intercepted and replaced with a message driven by automatic connection application 112. The plug-in can perform such browser message replacement to control what the browser looks like, but a service implementation may not be equipped to perform this replacement function. However, the service may be aware of what the browser is doing when a plug-in is not utilized. Also, the plug-in may be implemented for a specific browser (e.g., IE 9), but the service may operate independently of the particular browser that is employed.
Particular embodiments can support various forms of automatic connection application 112. For example, pure service, pure plug-in, or hybrid service/plug-in applications can be accommodated. For example, one hybrid flow may start off using a plug-in and then proceed to a service thereafter. In any event, particular embodiments can utilize a trigger for the automatic wireless connecting of a connection error message from the browser, a launching/activation of the browser, or any other suitable browser-based trigger. Thus for example, only when there is an error message (e.g., a no connection message) generated by the browser can the automatic connection procedure be invoked.
Particular embodiments may utilize the browser generating an error message (as opposed to strictly browser launching) to trigger possible automatic connection to accommodate other browser-based functions, such as the off-line mode that can be selected from the tools menu. For example, if the user has selected off-line mode, and then launches the browser, no error message (and no automatic connection trigger) will be generated because the browser knows that the user wants to work in off-line mode. However, the browser does generate an error message in such a case if the browser is looking for a uniform resource locator (URL) found on the Internet (e.g., http://www.sony.com). In this case, the browser figures out that the user does desire Internet access even though the user has selected the option of working in off-line mode, and as a result the error message is generated by the browser, thus triggering the automatic connection process. Alternatively, if the user is only trying to work locally (e.g., C:\Documents) in the off-line mode, the browser may not generate such an error message, and the automatic connection process is thus not invoked.
Thus if the user already has a browser open and the Internet connection gets lost, and the user types in a URL for an Internet address, then the browser generated error message will be sent, and the automatic connection service is invoked. However, if the user is only accessing a local “C:” directory, such as navigating a local computer disc, no error message may be generated by the browser. For example, such local directory structures that might look like online addresses might be used when someone is developing an application, and the user is relying on the browser to tell the automatic connection application when the wireless connection is needed so as to not interfere with the user's intended operation of the browser.
Thus, particular embodiments actually wait for the browser operation to convey that the user needs a connection, in order to invoke the automatic connection application (e.g., at the application layer). Accordingly, if a user has selected off-line mode, when the user opens a browser, the browser is not concerned about the status of the wireless connection because the browser assumes the user is trying to work off-line. It is only when the user attempts to actually access an Internet address where the browser would then send the error message, thus invoking the automatic connection application.
Referring now to
If the user either selects not to launch the automatic connection application in a user selection option displayed at 304, or the user cancels the attempted connection during the attempt at 306, a browser message can be displayed to indicate that the requested web page cannot be connected to or displayed at 310. For example, this browser message displayed at 310 may be the default browser message indicating a lack of connection when a web page is requested. However, the requested web page can be displayed on the browser at 312 when the connection is successful.
In order to display the automatic connection options for user selection at 304, a plug-in to the browser can be used for replacing the default browser error message, such as for the first time the connection error occurs. Via this plug-in replacement message at 304, the user may choose to continue with the automatic connection (and proceed to 306) or not (and proceed to 310, which is the default browser message that was initially replaced). After a successful resolution of the connection problem, the service may then indicate this connection status to the user (e.g., via the display at 306, via a separate pop-up, etc.). In addition, the user may be aware of the automatic connection application being a friendly service type of application that resolves the connection issue (e.g., for future considerations).
Particular embodiments may thus operate substantially at the application level, as opposed to the link level. In an example case, the user somehow has previously indicated a desire for the wireless connection to be stopped, but now is opening a browser or otherwise indicating a desire to presently connect to the Internet. Thus, a previous disconnection event might be that the user has done something to disrupt the normal connection, so the user would have had a connection, but the connection was defeated or broken. Now, the user is doing something to indicate that the user obviously wants a connection again, such as a browser access operation. In this fashion, particular embodiments react to user actions, whereby the user has previously broken a connection, but wants the same or a new connection now, and perhaps has since forgotten that the connection was previously disabled.
In making the wireless connection, a library (e.g., connection library 136) may be utilized that includes implementations and steps that an advanced user might take in order to establish a wireless connection. For example, user names and passwords can be obtained from logs of approved connections from user profiles maintained by the OS (e.g., Windows 7) and/or wireless connection manager 108. Calls can thus be performed to make the wireless connections based on previously profiled wireless networks. Thus, standard approaches for setting up a wireless connection may be utilized in an automated fashion, and triggered by browser events, in certain embodiments. The automatic connection application 112 may thus check for at least one such profile, and set up the wireless connection accordingly. For example, multiple profiles may already be ranked by wireless connection manager 108 and/or the OS in an order from strongest signal to weakest, with the strongest being chosen for the Wi-Fi connection.
In this fashion, wireless connections can be automatically created in response to browser-based events. Example browser-based events include browser generated error messages that indicate no Internet connection in response to user actions expressing a desire to connect to the Internet. Particular embodiments may detect browser launching and/or URL searching while in off-line mode, as well as any other suitable browser events, to trigger an automatic connection application.
Although the description has been described with respect to particular embodiments thereof, these particular embodiments are merely illustrative, and not restrictive. For example, while a certain computing device and network access structure has been shown, any suitable wireless network capable computing devices and/or networks can be accommodated in particular embodiments.
Any suitable programming language can be used to implement the routines of particular embodiments including C, C++, C#, Java, assembly language, etc. Different programming techniques can be employed such as procedural or object oriented. The routines can execute on a single processing device or multiple processors. Although the steps, operations, or computations may be presented in a specific order, this order may be changed in different particular embodiments. In some particular embodiments, multiple steps shown as sequential in this specification can be performed at the same time.
Particular embodiments may be implemented in a computer-readable storage medium for use by or in connection with the instruction execution system, apparatus, system, or device. Particular embodiments can be implemented in the form of control logic in software or hardware or a combination of both. The control logic, when executed by one or more processors, may be operable to perform that which is described in particular embodiments.
Particular embodiments may be implemented by using a programmed general purpose digital computer, by using application specific integrated circuits, programmable logic devices, field programmable gate arrays, optical, chemical, biological, quantum or nanoengineered systems, components and mechanisms may be used. In general, the functions of particular embodiments can be achieved by any means as is known in the art. Distributed, networked systems, components, and/or circuits can be used. Communication, or transfer, of data may be wired, wireless, or by any other means.
It will also be appreciated that one or more of the elements depicted in the drawings/figures can also be implemented in a more separated or integrated manner, or even removed or rendered as inoperable in certain cases, as is useful in accordance with a particular application. It is also within the spirit and scope to implement a program or code that can be stored in a machine-readable medium to permit a computer to perform any of the methods described above.
A “processor” includes any suitable hardware and/or software system, mechanism or component that processes data, signals or other information. A processor can include a system with a general-purpose central processing unit, multiple processing units, dedicated circuitry for achieving functionality, or other systems. Processing need not be limited to a geographic location, or have temporal limitations. For example, a processor can perform its functions in “real time,” “offline,” in a “batch mode,” etc. Portions of processing can be performed at different times and at different locations, by different (or the same) processing systems. A computer may be any processor in communication with a memory. The memory may be any suitable processor-readable storage medium, such as random-access memory (RAM), read-only memory (ROM), magnetic or optical disk, or other tangible media suitable for storing instructions for execution by the processor.
As used in the description herein and throughout the claims that follow, “a”, “an”, and “the” includes plural references unless the context clearly dictates otherwise. Also, as used in the description herein and throughout the claims that follow, the meaning of “in” includes “in” and “on” unless the context clearly dictates otherwise.
Thus, while particular embodiments have been described herein, latitudes of modification, various changes, and substitutions are intended in the foregoing disclosures, and it will be appreciated that in some instances some features of particular embodiments will be employed without a corresponding use of other features without departing from the scope and spirit as set forth. Therefore, many modifications may be made to adapt a particular situation or material to the essential scope and spirit.