US20190052697A1 - Mobile-optimized file transfer mechanism based on qr code - Google Patents
Mobile-optimized file transfer mechanism based on qr code Download PDFInfo
- Publication number
- US20190052697A1 US20190052697A1 US15/674,169 US201715674169A US2019052697A1 US 20190052697 A1 US20190052697 A1 US 20190052697A1 US 201715674169 A US201715674169 A US 201715674169A US 2019052697 A1 US2019052697 A1 US 2019052697A1
- Authority
- US
- United States
- Prior art keywords
- file
- codes
- code
- server
- mobile device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000007246 mechanism Effects 0.000 title description 5
- 238000012546 transfer Methods 0.000 title description 4
- 238000004891 communication Methods 0.000 claims abstract description 50
- 230000004044 response Effects 0.000 claims abstract description 24
- 238000000034 method Methods 0.000 claims description 41
- 238000012545 processing Methods 0.000 description 16
- 238000012937 correction Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 7
- 238000004519 manufacturing process Methods 0.000 description 7
- 238000003860 storage Methods 0.000 description 6
- 238000009434 installation Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000001514 detection method Methods 0.000 description 3
- 241000699666 Mus <mouse, genus> Species 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000002195 synergetic effect Effects 0.000 description 2
- 101100521334 Mus musculus Prom1 gene Proteins 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000000859 sublimation Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/10544—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum
- G06K7/10712—Fixed beam scanning
- G06K7/10722—Photodetector array or CCD scanning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/10544—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum
- G06K7/10821—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum further details of bar or optical code scanning devices
- G06K7/10881—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum further details of bar or optical code scanning devices constructional details of hand-held scanners
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
- G06K7/1404—Methods for optical code recognition
- G06K7/1408—Methods for optical code recognition the method being specifically adapted for the type of code
- G06K7/1417—2D bar codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K2007/10524—Hand-held scanners
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W88/00—Devices specially adapted for wireless communication networks, e.g. terminals, base stations or access point devices
- H04W88/02—Terminal devices
Definitions
- the present application generally relates to transferring files to client devices.
- the present application relates to systems and methods for transferring a file to a mobile device via scanning quick response codes displayed via a display output device.
- a device may have difficult downloading or otherwise accessing files located on a data repository that is not communicatively connected to the client.
- Current techniques to retrieve the file from the data repository for the device may involve the use of specialized hardware or software or may incur security risks.
- the present disclosure is directed towards systems and methods for transferring a file to a mobile device via scanning quick response codes displayed via a display output device.
- the file may be stored at a file server or a database not directly accessible by the mobile device. If the file server is connected to the wireless network (e.g., the Internet) as the mobile device, a physical wired connected may be used to transfer the file requested by the mobile device. Such a mechanism, however, may fail without the installation of a specialized driver or support by an operating system running on the mobile device. In addition, the specific cable for the wired connection may not be readily available.
- the mobile device may not have direct access or permissions to the file server.
- the mobile device may send a request to a bridge device connected to the internal network.
- the bridge device in turn may access the file server via the internal network, copy the requested file from the file server, and then send the file to the mobile device.
- This procedure may not be secure, as the file is physically stored at the bridge device prior to delivery to the client.
- the present systems and methods may provide a mechanism for mobile devices to download files by scanning a stream of quick response (QR) code images rendered on the display output device of a target device in the presence of the mobile device.
- the QR code may dynamically change in sequence one after another to convey information or data to the mobile device.
- the target device may be the file server itself or may be a media device that may access the file server via a network. If the target device is the media device, a file converter executing on the media device may retrieve the requested file from the file server and use a file convert to convert the retrieve file to the stream of QR code images for display on the display output device.
- a file downloader running on the mobile device may interpret and generate the requested file.
- a user may attempt to access a file stored at the file server from the mobile device. With no access to the file server, the user may be unsuccessful in accessing the file in the initial attempt. The user may then use the display of the media device that may access the file server to locate the file on the file server to download from the media device.
- the media device may be the same device as the file server. The media device in turn may launch the file convert to download the file from the file server and then to convert the file into a stream of QR codes.
- the file converter of the media device may first encode the file into a long string.
- the file converter may then divide the long string into multiple portions based on a content limit of the QR code.
- the content limit of a single QR code may be 3 kilobytes at maximum.
- the file converter may convert each portion into a single QR code image and may insert sequence information into each QR code image.
- the sequence information may specify the order of the QR code image. If length of the stream of QR codes is above a threshold length, the media device may display a prompt warning the user of a potentially long download time.
- the file converter may combine all the QR code images generated for the requested file to form a stream of QR code images.
- the file converter may also generate an initial QR code image to prefix to the stream of QR code images.
- the initial QR code image may include information on an identifier of the media device (e.g., Internet Protocol (IP) address, Media Access Control (MAC) address, or a Bluetooth Universally Unique Identifier (UUID), etc.) and a total length of QR code images in the stream.
- IP Internet Protocol
- MAC Media Access Control
- UUID Bluetooth Universally Unique Identifier
- the media device may render the initial QR code image of the stream onto the display of the media device for scanning by the mobile device.
- the initial QR code image may be rendered and presented on the display of the media device for a predefined amount of time (e.g., 10 to 45 seconds).
- a predefined amount of time e.g. 10 to 45 seconds.
- an image scanner of the mobile device may be pointed by the user at the display of the media device to scan the prefixed initial QR code.
- the mobile device may initiate establishment of communications with the media device (e.g., using Internet or the Bluetooth) for downloading the request file.
- the mobile device may continue to scan the stream of QR code images from the media device in a “controlled mode.”
- the file downloader running on the mobile device may first send a start signal to the media device. Receipt of the start signal may trigger the media device to initiate playing of the stream of QR code images on the display.
- the file downloader may interpret the QR code image and construct the requested file.
- the file downloader may also send back an acknowledgement signal to the media device.
- the media device may wait for receipt of the acknowledgement signal.
- the media device may play the next QR code image in the stream. If the QR code image is sent in the wrong sequence, the file downloader may request the expected QR code image in the sequence in the stream.
- the mobile device may continue to scan the stream of QR code images from the media device in an “easy mode.” Instead of communicating acknowledgment signal each time a QR code image is scanned, the media device may play the stream of QR code images. Each time a new QR code image appears on the display, the mobile device may scan the QR code image and may interpret the scanned QR code image to compose the requested file. If any QR code image in the stream is not scanned, the mobile device may scan the stream of QR code image again when the stream is replayed at a subsequent time. In either the controlled mode or the easy mode, the mobile device may be able to construct the requested file without direct access or communicative connection with the file server storing the file.
- At least one aspect of this disclosure is directed to a method of transferring a file to a mobile device via scanning quick response codes displayed via a display output device.
- a media device in communication with a server may receive a request to access a file on the server.
- a file converter of the media device may encode the file obtained from the server into a plurality of quick response (QR) codes.
- the media device may display the plurality of QR codes via a display output device.
- a mobile device may scan each of the plurality of QR codes displayed on the display output device.
- a file downloader of the mobile device may interpret each of the scanned plurality of QR codes to form a file on the mobile device.
- the server may include the media device. In some embodiments, the mobile device may not directly access the server. In some embodiments, receiving the request to access the file on the server may further include receiving the request via selection of a user interface element displayed via the display output device.
- encoding the file obtained from the server may include encoding the file into the plurality of QR codes by encoding the file into a string. In some embodiments, encoding the file obtained from the server may include encoding the file into the plurality of QR codes by dividing the string into a plurality of parts based on a content limit of a QR code. In some embodiments, encoding the file obtained from the server may include encoding the file into the plurality of QR codes by converting each of the plurality of parts into one of the plurality of QR codes. Each one of the plurality of QR codes may include a sequence number.
- encoding the file obtained from the server may include combining the plurality of QR codes into a stream of QR codes.
- the stream of QR codes may include one of a sequence of files for each of the plurality of QR codes or a video of the plurality of QR codes.
- displaying the plurality of QR codes via the display output device may include displaying each of the plurality of QR codes sequentially for a predetermined time period.
- displaying the plurality of QR codes via the display output device may include scanning each of the plurality of QR codes via a camera of the mobile device reading each of the plurality of QR codes as displayed on the display output device.
- displaying the plurality of QR codes via the display output device may include synchronizing one of the scanning or the interpreting with the media device's displaying of the plurality of QR codes.
- interpreting each of the scanned plurality of QR codes may include combining each of the interpreted scanned plurality of QR codes to form the file.
- a media device in communication with a server may receive a request to access a file on the server.
- a file converter of the media device may encode the file obtained from the server into a plurality of quick response (QR) codes.
- the media device may display the plurality of QR codes via a display output device.
- a mobile device may scan each of the plurality of QR codes displayed on the display output device.
- a file downloader of the mobile device may interpret each of the scanned plurality of QR codes to form a file on the mobile device.
- the server may include the media device.
- the mobile device may not directly access the server.
- the media device may receive the request via selection of a user interface element displayed via the display output device.
- the file converter may encode the file into the plurality of QR codes by encoding the file into a string. In some embodiments, the file converter may encode the file into the plurality of QR codes by dividing the string into a plurality of parts based on a content limit of a QR code. In some embodiments, the file converter may encode the file into the plurality of QR codes by converting each of the plurality of parts into one of the plurality of QR codes. Each one of the plurality of QR codes may include a sequence number.
- the file converter may combine the plurality of QR codes into a stream of QR codes.
- the stream of QR codes may include one of a sequence of files for each of the plurality of QR codes or a video of the plurality of QR codes.
- the media device may display each of the plurality of QR codes sequentially for a predetermined time period.
- the mobile device may scan each of the plurality of QR codes via a camera of the mobile device reading each of the plurality of QR codes as displayed on the display output device.
- the file downloader may synchronize one of the scanning or the interpreting with the media device's displaying of the plurality of QR codes.
- the file downloader may combine each of the interpreted scanned plurality of QR codes to form the file.
- FIGS. 1A-1D are block diagrams of embodiments of a computing device
- FIGS. 2A and 2B are block diagrams of embodiments of a system for transferring a file to a mobile device via scanning quick response codes displayed via a display output device;
- FIG. 3A-3C are flow diagrams of an embodiment of a method of transferring a file to a mobile device via scanning quick response codes displayed via a display output device.
- Section A describes a computing environment which may be useful for practicing embodiments described herein;
- Section B describes systems and methods for transferring a file to a mobile device via scanning quick response codes displayed via a display output device.
- FIGS. 1A and 1B depict block diagrams of a computing device 100 useful for practicing embodiments of the systems and devices described further below in Section B.
- each computing device 100 includes a central processing unit 101 , and a main memory unit 122 .
- a computing device 100 may include a visual display device 124 , a keyboard 126 and/or a pointing device 127 , such as a mouse.
- Each computing device 100 may also include additional optional elements, such as one or more input/output devices 130 a - 130 b (generally referred to using reference numeral 130 ), and a cache memory 140 in communication with the central processing unit 101 .
- the central processing unit 101 is any logic circuitry that responds to and processes instructions fetched from the main memory unit 122 .
- the central processing unit is provided by a microprocessor unit, such as: those manufactured by Intel Corporation of Mountain View, Calif.; those manufactured by Samsung Electronics of Suwon, Korea; those manufactured by Micron Technology of Boise, Id.; those manufactured by Transmeta Corporation of Santa Clara, Calif.; those manufactured by International Business Machines of White Plains, N.Y.; or those manufactured by Advanced Micro Devices of Sunnyvale, Calif., among others.
- the computing device 100 may be based on any of these processors, or any other processor capable of operating as described herein.
- Main memory unit 122 may be one or more memory chips capable of storing data and allowing any storage location to be directly accessed by the microprocessor 101 , such as Static random access memory (SRAM), Burst SRAM or SynchBurst SRAM (BSRAM), Dynamic random access memory (DRAM), Fast Page Mode DRAM (FPM DRAM), Enhanced DRAM (EDRAM), Extended Data Output RAM (EDO RAM), Extended Data Output DRAM (EDO DRAM), Burst Extended Data Output DRAM (BEDO DRAM), Enhanced DRAM (EDRAM), synchronous DRAM (SDRAM), JEDEC SRAM, PC100 SDRAM, Double Data Rate SDRAM (DDR SDRAM), Enhanced SDRAM (ESDRAM), SyncLink DRAM (SLDRAM), Direct Rambus DRAM (DRDRAM), or Ferroelectric RAM (FRAM).
- SRAM Static random access memory
- BSRAM SynchBurst SRAM
- DRAM Dynamic random access memory
- FPM DRAM Fast Page Mode DRAM
- EDRAM Enhanced D
- the main memory 122 may be based on any of the above described memory chips, or any other available memory chips capable of operating as described herein.
- the processor 101 communicates with main memory 122 via a system bus 150 (described in more detail below).
- FIG. 1B depicts an embodiment of a computing device 100 in which the processor communicates directly with main memory 122 via a memory port 103 .
- the main memory 122 may be DRDRAM.
- FIG. 1B depicts an embodiment in which the main processor 101 communicates directly with cache memory 140 via a secondary bus, sometimes referred to as a backside bus.
- the main processor 101 communicates with cache memory 140 using the system bus 150 .
- Cache memory 140 typically has a faster response time than main memory 122 and is typically provided by SRAM, BSRAM, or EDRAM.
- the processor 101 communicates with various I/O devices 130 via a local system bus 150 .
- FIG. 1B depicts an embodiment of a computer 100 in which the main processor 101 communicates directly with I/O device 130 b via HyperTransport, Rapid I/O, or InfiniBand.
- FIG. 1B also depicts an embodiment in which local busses and direct communication are mixed: the processor 101 communicates with I/O device 130 b using a local interconnect bus while communicating with I/O device 130 a directly.
- the computing device 100 may support any suitable installation device 116 , such as a CD-ROM drive, a CD-R/RW drive, a DVD-ROM drive, tape drives of various formats, USB device, hard-drive or any other device suitable for installing software and programs.
- the computing device 100 may further comprise a storage device 128 , such as one or more hard disk drives or redundant arrays of independent disks, for storing an operating system and other related software, and for storing application software programs.
- any of the installation devices 116 could also be used as the storage device 128 .
- the operating system and the software can be run from a bootable medium, for example, a bootable CD, such as KNOPPIX®, a bootable CD for GNU/Linux that is available as a GNU/Linux distribution from knoppix.net.
- a bootable CD such as KNOPPIX®
- KNOPPIX® a bootable CD for GNU/Linux that is available as a GNU/Linux distribution from knoppix.net.
- the computing device 100 may include a network interface 118 to interface to a Local Area Network (LAN), Wide Area Network (WAN) or the Internet through a variety of connections including, but not limited to, standard telephone lines, LAN or WAN links (e.g., 802.11, T1, T3, 56 kb, X.25), broadband connections (e.g., ISDN, Frame Relay, ATM), wireless connections, or some combination of any or all of the above.
- the network interface 118 may comprise a built-in network adapter, network interface card, PCMCIA network card, card bus network adapter, wireless network adapter, USB network adapter, modem or any other device suitable for interfacing the computing device 100 to any type of network capable of communication and performing the operations described herein.
- I/O devices 130 a - 130 n may be present in the computing device 100 .
- Input devices include keyboards, mice, trackpads, trackballs, microphones, and drawing tablets.
- Output devices include video displays, speakers, inkjet printers, laser printers, and dye-sublimation printers.
- the I/O devices 130 may be controlled by an I/O controller 123 as shown in FIG. 1A .
- the I/O controller may control one or more I/O devices such as a keyboard 126 and a pointing device 127 , e.g., a mouse or optical pen.
- an I/O device may also provide storage 128 and/or an installation medium 116 for the computing device 100 .
- the computing device 100 may provide USB connections to receive handheld USB storage devices such as the USB Flash Drive line of devices manufactured by Twintech Industry, Inc. of Los Alamitos, Calif. or SanDisk Corporation of Milpitas, Calif.
- the computing device 100 may comprise or be connected to multiple display devices 124 a - 124 n , which each may be of the same or different type and/or form.
- any of the I/O devices 130 a - 130 n and/or the I/O controller 123 may comprise any type and/or form of suitable hardware, software, or combination of hardware and software to support, enable or provide for the connection and use of multiple display devices 124 a - 124 n by the computing device 100 .
- the computing device 100 may include any type and/or form of video adapter, video card, driver, and/or library to interface, communicate, connect or otherwise use the display devices 124 a - 124 n .
- a video adapter may comprise multiple connectors to interface to multiple display devices 124 a - 124 n .
- the computing device 100 may include multiple video adapters, with each video adapter connected to one or more of the display devices 124 a - 124 n .
- any portion of the operating system of the computing device 100 may be configured for using multiple displays 124 a - 124 n .
- one or more of the display devices 124 a - 124 n may be provided by one or more other computing devices, such as computing devices 100 a and 100 b connected to the computing device 100 , for example, via a network.
- These embodiments may include any type of software designed and constructed to use another computer's display device as a second display device 124 a for the computing device 100 .
- a computing device 100 may be configured to have multiple display devices 124 a - 124 n.
- an I/O device 130 may be a bridge 170 between the system bus 150 and an external communication bus, such as a USB bus, an Apple Desktop Bus, an RS-232 serial connection, a SCSI bus, a FireWire bus, a FireWire 800 bus, an Ethernet bus, an AppleTalk bus, a Gigabit Ethernet bus, an Asynchronous Transfer Mode bus, a HIPPI bus, a Super HIPPI bus, a SerialPlus bus, a SCI/LAMP bus, a FibreChannel bus, or a Serial Attached small computer system interface bus.
- an external communication bus such as a USB bus, an Apple Desktop Bus, an RS-232 serial connection, a SCSI bus, a FireWire bus, a FireWire 800 bus, an Ethernet bus, an AppleTalk bus, a Gigabit Ethernet bus, an Asynchronous Transfer Mode bus, a HIPPI bus, a Super HIPPI bus, a SerialPlus bus, a SCI/LAMP bus, a FibreChannel bus, or
- a computing device 100 of the sort depicted in FIGS. 1A and 1B typically operate under the control of operating systems, which control scheduling of tasks and access to system resources.
- the computing device 100 can be running any operating system such as any of the versions of the Microsoft® Windows operating systems, the different releases of the Unix and Linux operating systems, any version of the Mac OS® for Macintosh computers, any embedded operating system, any real-time operating system, any open source operating system, any proprietary operating system, any operating systems for mobile computing devices, or any other operating system capable of running on the computing device and performing the operations described herein.
- Typical operating systems include: WINDOWS 3.x, WINDOWS 95, WINDOWS 98, WINDOWS 2000, WINDOWS NT 3.51, WINDOWS NT 4.0, WINDOWS CE, WINDOWS XP, WINDOWS 7, and WINDOWS 10, all of which are manufactured by Microsoft Corporation of Redmond, Wash.; MacOS, manufactured by Apple Computer of Cupertino, Calif.; OS/2, manufactured by International Business Machines of Armonk, N.Y.; and Linux, a freely-available operating system distributed by Caldera Corp. of Salt Lake City, Utah, or any type and/or form of a UNIX operating system, among others.
- the computing device 100 may have different processors, operating systems, and input devices consistent with the device.
- the computer 100 may be a smartphone or a tablet, such as those developed by Apple Inc., by Samsung Electronics, by Huawei. Inc., or by Google Inc., among others.
- the smartphone or tablet may be operated under the control of an operating system (such as Android or iOS) and may include a stylus input device as well as a touch sensitive screen.
- the computing device 100 can be any workstation, desktop computer, laptop or notebook computer, server, handheld computer, mobile telephone, any other computer, or other form of computing or telecommunications device that is capable of communication and that has sufficient processor power and memory capacity to perform the operations described herein.
- the computing device 100 may comprise multiple processors and may provide functionality for simultaneous execution of instructions or for simultaneous execution of one instruction on more than one piece of data.
- the computing device 100 may comprise a parallel processor with one or more cores.
- the computing device 100 is a shared memory parallel device, with multiple processors and/or multiple processor cores, accessing all available memory as a single global address space.
- the computing device 100 is a distributed memory parallel device with multiple processors each accessing local memory only.
- the computing device 100 has both some memory which is shared and some memory which can only be accessed by particular processors or subsets of processors.
- the computing device 100 such as a multi-core microprocessor, combines two or more independent processors into a single package, often a single integrated circuit (IC).
- the computing device 100 includes a chip having a Cell Broadband Engine architecture and including a Power processor element and a plurality of synergistic processing elements, the Power processor element and the plurality of synergistic processing elements linked together by an internal high speed bus, which may be referred to as an element interconnect bus.
- the processors provide functionality for execution of a single instruction simultaneously on multiple pieces of data (SIMD). In other embodiments, the processors provide functionality for execution of multiple instructions simultaneously on multiple pieces of data (MIMD). In still other embodiments, the processor may use any combination of SIMD and MIMD cores in a single device.
- the computing device 100 may comprise a graphics processing unit.
- the computing device 100 includes at least one central processing unit 101 and at least one graphics processing unit.
- the computing device 100 includes at least one parallel processing unit and at least one graphics processing unit.
- the computing device 100 includes a plurality of processing units of any type, one of the plurality of processing units comprising a graphics processing unit.
- a first computing device 100 a executes an application on behalf of a user of a client computing device 100 b .
- a computing device 100 a executes a virtual machine, which provides an execution session within which applications execute on behalf of a user or a client computing devices 100 b .
- the execution session is a hosted desktop session.
- the computing device 100 executes a terminal services session.
- the terminal services session may provide a hosted desktop environment.
- the execution session provides access to a computing environment, which may comprise one or more of: an application, a plurality of applications, a desktop application, and a desktop session in which one or more applications may execute.
- the present disclosure is directed towards systems and methods for transferring a file to a mobile device via scanning quick response codes displayed via a display output device.
- the file may be stored at a file server or a database not directly accessible by the mobile device. If the file server is connected to the wireless network (e.g., the Internet) as the mobile device, a physical wired connected may be used to transfer the file requested by the mobile device. Such a mechanism, however, may fail without the installation of a specialized driver or support by an operating system running on the mobile device. In addition, the specific cable for the wired connection may not be readily available.
- the mobile device may not have direct access or permissions to the file server.
- the mobile device may send a request to a bridge device connected to the internal network.
- the bridge device in turn may access the file server via the internal network, copy the requested file from the file server, and then send the file to the mobile device.
- This procedure may not be secure, as the file is physically stored at the bridge device prior to delivery to the client.
- the present systems and methods may provide a mechanism for mobile devices to download files by scanning a stream of quick response (QR) code images rendered on the display output device of a target device in the presence of the mobile device.
- the QR code may dynamically change in sequence one after another to convey information or data to the mobile device.
- the target device may be the file server itself or may be a media device that may access the file server via a network. If the target device is the media device, a file converter executing on the media device may retrieve the requested file from the file server and use a file convert to convert the retrieve file to the stream of QR code images for display on the display output device.
- a file downloader running on the mobile device may interpret and generate the requested file.
- a user may attempt to access a file stored at the file server from the mobile device. With no access to the file server, the user may be unsuccessful in accessing the file in the initial attempt. The user may then use the display of the media device that may access the file server to locate the file on the file server to download from the media device.
- the media device may be the same device as the file server. The media device in turn may launch the file convert to download the file from the file server and then to convert the file into a stream of QR codes.
- the file converter of the media device may first encode the file into a long string.
- the file converter may then divide the long string into multiple portions based on a content limit of the QR code.
- the content limit of a single QR code may be 3 kilobytes at maximum.
- the file converter may convert each portion into a single QR code image and may insert sequence information into each QR code image.
- the sequence information may specify the order of the QR code image. If length of the stream of QR codes is above a threshold length, the media device may display a prompt warning the user of a potentially long download time.
- the file converter may combine all the QR code images generated for the requested file to form a stream of QR code images.
- the file converter may also generate an initial QR code image to prefix to the stream of QR code images.
- the initial QR code image may include information on an identifier of the media device (e.g., Internet Protocol (IP) address, Media Access Control (MAC) address, or a Bluetooth Universally Unique Identifier (UUID), etc.) and a total length of QR code images in the stream.
- IP Internet Protocol
- MAC Media Access Control
- UUID Bluetooth Universally Unique Identifier
- the media device may render the initial QR code image of the stream onto the display of the media device for scanning by the mobile device.
- the initial QR code image may be rendered and presented on the display of the media device for a predefined amount of time (e.g., 10 to 45 seconds).
- a predefined amount of time e.g. 10 to 45 seconds.
- an image scanner of the mobile device may be pointed by the user at the display of the media device to scan the prefixed initial QR code.
- the mobile device may initiate establishment of communications with the media device (e.g., using Internet or the Bluetooth) for downloading the request file.
- the mobile device may continue to scan the stream of QR code images from the media device in a “controlled mode.”
- the file downloader running on the mobile device may first send a start signal to the media device. Receipt of the start signal may trigger the media device to initiate playing of the stream of QR code images on the display.
- the file downloader may interpret the QR code image and construct the requested file.
- the file downloader may also send back an acknowledgement signal to the media device.
- the media device may wait for receipt of the acknowledgement signal.
- the media device may play the next QR code image in the stream. If the QR code image is sent in the wrong sequence, the file downloader may request the expected QR code image in the sequence in the stream.
- the mobile device may continue to scan the stream of QR code images from the media device in an “easy mode.” Instead of communicating acknowledgment signal each time a QR code image is scanned, the media device may play the stream of QR code images. Each time a new QR code image appears on the display, the mobile device may scan the QR code image and may interpret the scanned QR code image to compose the requested file. If any QR code image in the stream is not scanned, the mobile device may scan the stream of QR code image again when the stream is replayed at a subsequent time. In either the controlled mode or the easy mode, the mobile device may be able to construct the requested file without direct access or communicative connection with the file server storing the file.
- the system 200 may include a file server 205 , a file database 210 , a media device 215 (a smart television, a monitor, a laptop, or a computer with a monitor, etc.), and a client 220 (e.g., a smartphone, tablet, laptop, or an Internet-of-Things (IoT) device, etc.).
- the file server 205 may include a request handler 230 .
- the file database 210 may include one or more files.
- the file database 210 may include a single data repository or multiple data repositories.
- the media device 215 may include a file retrieve 235 , a file converter 240 , a code player 245 , and a display 250 (e.g., touchscreen).
- the client 220 may include an image scanner 255 (e.g., a camera, an infrared sensor, an ultraviolet sensor, a bar code scanner, etc.).
- the client 220 may also include a file downloader 260 and an application 265 .
- Each of the above-mentioned elements or entities is implemented in hardware, or a combination of hardware and software, in one or more embodiments.
- Each component of the system 200 a may be implemented using hardware or a combination of hardware or software detailed above in connection with FIGS. 1A-1D .
- each of these elements or entities can include any application, program, library, script, task, service, process or any type and form of executable instructions executing on hardware of the file server 205 , the media device 215 , the client 220 , and the file database 210 s .
- the hardware includes circuitry such as one or more processors in one or more embodiments.
- the file server 205 and the media device 215 may be connected via a network 225 , whereas the client 220 may remain unconnected to the network 225 .
- the file server 205 may be in communication with, connected to, or otherwise have direct access to the file database 210 .
- the media device 215 and the file server 205 may be connected to the network 225 , the media device 215 may access files and other data through the network 225 , such as the files stored on the file database 210 .
- the network 225 may be a private network or an Intranet network, such as a virtual private network (VPN) not accessible to the client 220 .
- VPN virtual private network
- the network 225 may be an Internet connection between the file server 205 and the media device 215 not otherwise directly accessible to the client 220 .
- the client 220 may remain unconnected to the network 225 and may not directly access the file server 205 or the file database 210 .
- the client 220 may be in the presence of, within proximity of, or otherwise have direct line of sight with the media device 215 .
- the client 220 may not have direct access to the file database 210 or the file server 205 , and may be unable to download the file.
- the client 220 may prompt the user via a display of the client 220 to use a nearby device with access to the network 225 , such as the media device 215 , to access the requested file.
- the user may approach the media device 215 and may use an input/output device of the media device 215 to access the file.
- the media device 215 and/or the client 220 may prompt the user to use the image scanner 255 of the client 220 to scan images presented on the display 250 to construct the requested file at the client 220 .
- the file retriever 235 of the media device 215 may receive a request to access a file on the file server 205 .
- the requested file may be stored on the file server 205 or the file database 210 .
- the requested file may be of any format, such as an executable (e.g., EXE, CMD, or BAT, etc.), a document (e.g., HTML, ASP, DOC, DOCX, XLS, XLS, PPT, PPTX, RTF, or TXT, etc.), and a media file (e.g., JPEG, GIF, BMP, AVI, MPG, MKA, FLV, WAV, WMA, OGG, etc.), among others.
- an executable e.g., EXE, CMD, or BAT, etc.
- a document e.g., HTML, ASP, DOC, DOCX, XLS, XLS, PPT, PPTX, RTF, or TXT, etc
- the file retriever 235 may receive the request to access the file on the file server 205 via selection of a user interface element.
- the user interface element may be displayed via the display 250 of the media device 215 .
- the user interface element may include a graphical user interface (e.g., a menu, a set of icons, a list, a directory, etc.) identifying or listing one or more files accessible by the file server 205 or stored at the file database 210 accessible by the file server 205 .
- the selection of the user interface element may be received via an input/output device (e.g., pointing device, keyboard, microphone, motion sensor, touchscreen, etc.) connected to the media device 215 or the display 250 .
- an input/output device e.g., pointing device, keyboard, microphone, motion sensor, touchscreen, etc.
- the file retriever 235 may receive the request to access the file.
- the request may include a file address corresponding to the file.
- the file address may be, for example, a Uniform Resource Locator (URL) in the form of a protocol (e.g., http, ftp, etc.), a hostname (corresponding to the file server 205 and/or the file database 210 ), and a file pathname (identifying the specific requested file).
- the request may include multiple file addresses, each corresponding to a requested file.
- the request handler 230 of the file server 205 may receive the request to access the file from the file retriever 235 . Upon receipt of the request to access the file, the request handler 230 may parse the request and may identify the requested file stored on the file database 210 .
- the file database 210 may be a part of the file server 205 , connected to the file server 205 , or otherwise accessible by the file server 205 .
- the request handler 230 may parse the file address included in the request to identify the requested file stored on the file database 210 .
- the file address may correspond to a file stored on the file database 210 .
- the one or more file addresses included in the request may each correspond to a file stored at the file database 210 .
- the request handler 230 may access the file database 210 to retrieve the requested file.
- the request handler 230 may send the request file to the media device 215 via the network 225 .
- the file converter 240 of the media device 215 may receive the file received, obtained, or retrieved from the file server 205 .
- the file converter 240 may encode the file obtained from the file server 205 into a sequence of quick response (QR) codes.
- the file converter 240 may generate a string based on the file.
- the file converter 240 may encode or convert the received file into the string.
- the converted string may include a set of alphanumeric values.
- the file may include set of data specifying instructions for a computing device (e.g., the client 220 ) or an application (e.g., the application 265 ) running on the computing device.
- the file converter 240 may identify the format of the file.
- the file converter 240 may read the requested file. While reading the set of data included in the file, the file converter 240 may the read portion of the data (e.g., binary data in the form of bytes or words) to a set of alphanumeric characters to form the string.
- the file converter 240 may the read portion of the data (e.g., binary data in the form of bytes or words) to a set of alphanumeric characters to form the string.
- the file converter 240 may divide the string into one or more parts based on a content limit of each QR code of the sequence. In some embodiments, the file converter 240 may determine the content limit for each QR code of the sequence for the file.
- the content limit for a single QR code may vary based on a module size of the QR code image to be displayed (e.g., ranging from 21 ⁇ 21 to 177 ⁇ 177) and a level of error correction applied (low, medium, quartile, high), among other factors. For example, if the module size of is 101 ⁇ 101 and the level of error correction applied is high, the content limit of the QR code image may be 3,248 for bits, 1,108 numeric-only, 672 alphanumeric, and 461 bytes.
- the file converter 240 may identify a pre-specified module size. In some embodiments, the file converter 240 may identify a pre-specified level of error correction. In some embodiments, the file converter 240 may dynamically determine the module size and/or the level of correction based on a configuration (e.g., a resolution, a size, etc.) of the display 250 . Based on the determined content limit, the file converter 240 may divide the string into the one or more parts. Each part may include a subset of the alphanumeric characters forming the converted string. Using the example above, the file converter 240 may divide the string into portions, each with 672 alphanumeric characters.
- the file converter 240 may insert additional information into one or more positions in the string based on the determined content limit.
- the additional information may include sequence numbers specifying an order that the to-be generated QR code corresponding to the part is to be presented on the display 250 .
- the first part of the string may be modified to include the sequence number of “0” and the second part of the string may be modified to include the sequence number of “1”, and so forth.
- the file converter 240 may identify the one or more positions in the string to insert the additional information based on the determined content limit.
- the one or more positions may be at an interval within the string equal to the determined content limit.
- the one or more positions may be identified to interleave the additional information such that the additional information occurs at least once in each part of the string.
- the file converter 240 may insert the additional information at the identified positions within the string. The file converter 240 may then divide the string into the one or more parts.
- the file converter 240 may convert each part into a QR code for the sequence.
- the file converter 240 may generate each QR code for the sequence using the corresponding string based on the module size and the level of error correction used in determining the content length.
- Each QR code may include a fixed pattern, format portion, and a message portion.
- the fixed portion may include a plurality of dark and light boxes.
- the format portion may include an encoding mode, a message length, and the level of error correction, among others.
- the message portion may include a pattern that may include a specified set of dark squares and a specified set of light squares.
- the file converter 240 may generate a set of binary codes, such as binary Bose-Chaudhuri-Hocquenghem (BCH) codes or binary Reed-Solomon codes, among others. In some embodiments the file converter 240 may calculate or generate the set of binary codes based on the level of error correction used to determine the content limit. With the generated set of binary codes, the file converter 240 may generate the pattern for the message portion of the QR code. The file converter 240 may apply a preset mask pattern to generate the message portion of the QR code to the set of binary codes (e.g., by using an exclusive-or operator). In some embodiments, message portion of the QR code may include the additional information, such as the sequence number for the QR code. The file converter 240 may traverse through all the parts of the string and repeat this process.
- BCH binary Bose-Chaudhuri-Hocquenghem
- Reed-Solomon codes among others.
- the file converter 240 may calculate or generate the set of binary codes based on the level of error correction
- the file converter 240 may combine the QR codes into the sequence of QR codes.
- the file converter 240 may generate a stream of QR codes by combining all the QR codes converted from the one or more parts of the string.
- the file converter 240 may generate a sequence of image files (e.g., JPG, GIF, BMP, or TIFF, etc.) for each of the QR codes in the stream.
- the file converter 240 may generate a video file (e.g., MPG, AVI, MKV, or OGG, etc.) for the stream of QR codes.
- the file converter 240 may identify the sequence number for each QR code. In accordance to the identified sequence numbers, the file converter 240 may arrange the QR codes into the stream.
- the file converter 240 may also generate an initial QR code to prefix to sequence of QR codes generated from the file, prior to or after combining the QR codes.
- the file converter 240 may generate a string for the initial QR code.
- the string may include information for the client 220 to process the subsequent sequence of QR codes.
- the information for the client 220 may be for establishing communications with the media device 215 .
- the information for establishing communications may include an identifier of the media device (e.g., Internet Protocol (IP) address, Media Access Control (MAC) address, or a Bluetooth Universally Unique Identifier (UUID), etc.) and a specified communications protocol (etc., Internet, Bluetooth, or Near Field Communications (NFC), etc.), among others.
- IP Internet Protocol
- MAC Media Access Control
- UUID Bluetooth Universally Unique Identifier
- NFC Near Field Communications
- the information may include a length of the sequence of QR codes to follow for the file.
- the file converter 240 may generate the initial QR code.
- the file converter 240 may generate the initial QR code using the string based on the module size and the level of error correction used in determining the content length.
- the initial QR code may include a fixed pattern, format portion, and a message portion.
- the file converter 240 may generate the message portion.
- the message portion may include a pattern that may include a specified set of dark squares and a specified set of light squares.
- the file converter 240 may generate binary codes, such as binary Bose-Chaudhuri-Hocquenghem (BCH) codes or binary Reed-Solomon codes, among others.
- BCH binary Bose-Chaudhuri-Hocquenghem
- the file converter 240 may calculate or generate the set of binary codes based on the level of error correction used to determine the content limit.
- the file converter 240 may apply a preset mask pattern to generate the message portion of the QR code to the set of binary codes (e.g., by using an exclusive-or operator).
- the message portion of the initial QR code may include the information for the client 220 to establish communications with the media device 215 and the length of the sequence of QR codes to follow for the file.
- the file converter 240 may then add, insert, or prefix the initial QR code prior to the sequence of QR codes generated from the file.
- the file converter 240 may set or a predetermined time limit in which the client 220 is to establish communications with the media device 215 upon scanning the initial QR code.
- the code player 245 of the media device 215 may display the sequence of QR codes via the display 250 .
- the code player 245 may first display the initial QR code, prior to presenting the sequence of QR codes for the file.
- the code player 245 may present a prompt on the display 250 notifying the user to point the image scanner 255 of the client 220 toward the display 250 .
- the code player 245 may display the initial QR code for the predetermined time limit (e.g., 10 to 60 seconds). During the predetermined time limit, the code player 245 may wait for a request to establish communications from the client 220 .
- the code player 245 may maintain a timer to keep track of time that the initial QR code is presented on the display 250 .
- the code player 245 may use the timer to determine whether the predetermined time limit has elapsed. If the client 220 and the code player 245 establish communications with each other within the predetermined time limit, the media device 215 may wait for a start signal from the client 220 prior to playing the sequence of QR codes. On the other hand, if the client 220 and the media device 225 do not establish communications with each other within the predetermined time limit, the media device 215 may proceed to play the sequence of QR codes. Functionalities of the client 220 and the media device 215 in both conditions are detailed below.
- the image scanner 255 of the client 220 may scan, capture, or otherwise acquire an image of the display 250 .
- the image may include the initial QR code.
- the image scanner 255 of the client 220 may be pointed by the user toward the display 250 of the media device 125 to scan the initial QR code.
- the file downloader 260 may parse the image of the display 250 to identify the initial QR code.
- the file downloader 260 may apply image recognition algorithms (e.g., edge or blob detection, etc.) to identify the initial QR code from the image acquired by the image scanner 255 .
- the image recognition algorithms may be applied to recognize one or more edges of the initial QR code.
- the file downloader 260 may again apply image recognition algorithms (e.g., object recognition, etc.) on the identified initial QR code to extract the information encoded therein.
- image recognition algorithms e.g., object recognition, etc.
- the image recognition algorithms may be applied to recognize the content within the edges of the initial QR code.
- the file downloader 260 may identify the fixed portion, the format portion, and the message portion of the initial QR code.
- the file downloader 260 may interpret the message portion and may extract the encoded information.
- the file downloader 260 may determine or decode the information from the message portion of the initial QR code.
- the file downloader 260 may generate or recover the binary codes (e.g., Bose-Chaudhuri-Hocquenghem (BCH) codes or Reed-Solomon codes) from the identified message portion.
- the file downloader 260 may apply a preset unmask pattern to the message portion to recover the binary codes (e.g., by using an exclusive-or operator).
- the file downloader 260 may then generate or recover the alphanumeric characters forming the string.
- the file downloader 260 may apply the level of the error correction specified in the format portion of the initial QR code to the message portion to recover the alphanumeric characters.
- the file downloader 260 may identify the information for establishing communications with the media device 215 .
- the file downloader 260 may identify the length of the sequence of QR codes.
- the client 220 may initiate communications with the media device 215 .
- the file downloader 260 may identify the identifier of the media device 215 (e.g., Internet Protocol (IP) address, Media Access Control (MAC) address, or a Bluetooth Universally Unique Identifier (UUID), etc.).
- IP Internet Protocol
- MAC Media Access Control
- UUID Bluetooth Universally Unique Identifier
- the file downloader 260 may identify the communications protocol for establishing the communications.
- the client 220 may then initiate communications using the specified communications protocol.
- the client 220 may establish communications with the media device 215 using the identifier for the media device 215 identified from the initial QR code.
- the client 220 may send an initialization signal to request establishing communications with the media device 215 .
- the code player 245 may receive the initialization signal.
- the code player 245 of the media device 215 may in turn send a confirmation signal back to the client 220 to complete establishment of the communications between the media device 215 and the client 220 .
- the code player 245 and/or the file downloader 260 may determine whether communications is successfully established between the media device 215 and the client 220 .
- the code player 245 and the file downloader 260 both may enter a first mode of operation (sometimes referred to as a “controlled mode”).
- the file downloader 260 may synchronize scanning and/or interpreting of the sequence of QR codes displayed on the display 250 of the media device 215 with the code player 245 .
- the file downloader 260 may transmit a start signal via the established communications.
- the code player 245 may start playing the sequence of QR codes.
- the code player 245 may transmit the start signal to the file downloader 260 to indicate to the file downloader 260 to expect starting of playing of the sequence of QR codes.
- the code player 245 may initiate playing of the sequence of QR codes.
- the code player 245 may sequentially display via the display 250 each QR code in the sequence.
- Each the QR code is presented on the display 250 , the code player 245 may wait for an acknowledgement from the file downloader 260 .
- the media device 245 may sequentially display the image files generated for each QR code in the stream via the display 250 .
- the code player 245 may play the video file generated for the stream of QR codes via the display 250 .
- the image scanner 255 of the client 220 may scan, capture, or otherwise acquire an image of the display 250 .
- the image may include the QR code.
- the file downloader 260 may parse the image of the display 250 to identify the QR code.
- the file downloader 260 may apply image recognition algorithms (e.g., edge or blob detection, etc.) to identify the QR code from the image acquired by the image scanner 255 .
- the image recognition algorithms may be applied to recognize one or more edges of the QR code.
- the file downloader 260 may again apply image recognition algorithms (e.g., object recognition, etc.) on the identified QR code to extract the information encoded therein.
- the image recognition algorithms may be applied to recognize the content within the edges of the initial QR code.
- the file downloader 260 may identify the fixed portion, the format portion, and the message portion of the QR code.
- the file downloader 260 may interpret the message portion and may extract the encoded information.
- the file downloader 260 may determine or decode the information from the message portion of the QR code.
- the file downloader 260 may generate or recover the binary codes (e.g., Bose-Chaudhuri-Hocquenghem (BCH) codes or Reed-Solomon codes) from the identified message portion.
- the file downloader 260 may apply a preset unmask pattern to the message portion to recover the binary codes (e.g., by using an exclusive-or operator).
- the file downloader 260 may then generate or recover the alphanumeric characters forming the corresponding part of the string originally encoded from the requested file.
- the file downloader 260 may apply the level of the error correction specified in the format portion of the QR code to the message portion to recover the alphanumeric characters.
- the file downloader 260 may construct the corresponding part of data to form the file (e.g., binary data in the form of bytes or words).
- the file downloader 260 may identify the sequence number of the QR code from the alphanumeric characters recovered from the message portion. The file downloader 260 may repeat this functionality as more and more QR codes are scanned and processed to reconstruct the entirety of the requested file at the client 220 .
- the file downloader 260 may transmit an acknowledgement signal via the communications established with the media device 215 .
- the acknowledgement signal may indicate to the code player 245 that the file downloader 260 successfully decoded the currently presented QR code.
- the acknowledgement signal may indicate whether the current QR code scanned is in order or out of order.
- the file downloader 260 may determine whether the sequence number identified from the scanned QR code is in order for the sequence of QR codes.
- the file downloader 260 may compare the identified sequence number with an expected sequence number.
- the file downloader 260 may determine that the currently identified sequence number may be two or greater than the previously identified sequence number, and based on the determination identify that the scanned QR code is out of order.
- the file downloader 260 may determine the expected sequence number each time the QR code is scanned.
- the file downloader 260 may maintain a counter by incrementing the sequence number from the previously scanned QR code.
- the file downloader 260 may maintain a buffer for the expected sequence number.
- the file downloader 260 may transmit the acknowledgment signal with an indicator that current QR code scanned is in order.
- the acknowledgment signal may include the expected sequence number incremented from the sequence number identified from the current QR code acquired by the image scanner 255 . If the identified sequence number and the expected sequence number do not match, the file downloader 260 may determine the expected sequence number.
- the file downloader 260 may also transmit the acknowledgement signal with an indicator that the current QR code scanned is out of order.
- the acknowledgement signal may include the expected sequence number. In some embodiments, the acknowledgement signal may include a request for the QR code of the expected sequence number.
- the code player 245 may receive the acknowledgment signal from the file downloader 260 . Upon receipt of the acknowledgement signal, the code player 245 may identify the next QR code to present on the display 250 . In some embodiments, the identification of the next QR code to present may be based on the counter maintained by the code player 245 . The code player 245 may update or increment the counter each time the QR code of the sequence is presented on the display 250 . In some embodiments, the code player 245 may identify the sequence number of the QR code within the sequence currently presented on the display 250 . Once the sequence number is identified, the code player 245 may then increment the sequence number to determine the next sequence number for the next QR code to be presented on the display 250 .
- the code player 245 may identify the next QR code to be presented on the display 245 .
- the code player 245 may determine whether the file downloader 260 processed the QR code in order or out of order based on the acknowledgment signal.
- the code player 245 may parse the acknowledgement signal to identify indicator.
- the code player 245 may identify the next QR code to present based on the expected sequence number indicated in the acknowledgement signal.
- the code player 245 may compare the expected sequence number indicated in the acknowledgement signal with a value of the counter.
- the code player 245 may determine that the file downloader 260 processed the QR code in order and may increment the counter to identify the next sequence number of the QR code to be presented on the display 250 . If the value of the counter does not match the expected sequence number, the code player 245 may determine that the file downloader 260 processed the QR code out of order and may use the expected sequence number from the acknowledgement signal to identify the next QR code to present on the display 250 . In some embodiments, upon the receipt of the next acknowledgement signal from the file downloader 260 , the code player 245 may continue again from the QR code subsequent to the previously scanned QR code.
- the code player 245 may determine whether all the QR codes in the sequence have been scanned and processed by the file downloader 260 . In some embodiments, the code player 245 may compare the sequence number with the length of the sequence of QR codes. If the identified sequence number is less than the length of the sequence of QR codes, the code player 245 may identify the QR code corresponding to the identified sequence number. Once identified, the code player 245 may present the QR code on the display 250 . Furthermore, the above detailed functionalities of the client 220 and the media player 215 in the first mode of operation may be repeated for the subsequent QR code.
- the code player 245 may transmit a termination signal indicating to the file downloader 260 that the sequence of QR codes scanned is complete.
- the file downloader 260 may construct the entirety of the requested file from the aggregated information extracted from all of the scanned and processed QR codes.
- the code player 245 and the file downloader 260 both may enter a second mode of operation (sometimes referred to as an “easy mode”).
- the second mode of operation may different from the first mode of operation, in that no start signal, acknowledgement signals, or termination signals are exchanged.
- the file downloader 260 may continue scanning and/or interpreting of the sequence of QR codes displayed on the display 250 of the media device 215 without any synchronization with the code player 245 .
- the code player 245 may initiate playing of the sequence of QR codes, each for a predetermined time period (e.g., 5 to 45 seconds).
- the code player 245 may sequentially display via the display 250 each QR code in the sequence for the predetermined time period. In some embodiments, the media device 245 may sequentially display the image files generated for each QR code in the stream via the display 250 for the predetermined time period. In some embodiments, the code player 245 may play the video file generated for the stream of QR codes via the display 250 .
- the image scanner 255 of the client 220 may scan, capture, or otherwise acquire an image of the display 250 .
- the image may include the QR code.
- the file downloader 260 may parse the image of the display 250 to identify the QR code.
- the file downloader 260 may apply image recognition algorithms (e.g., edge or blob detection, etc.) to identify the QR code from the image acquired by the image scanner 255 .
- the image recognition algorithms may be applied to recognize one or more edges of the QR code.
- the file downloader 260 may again apply image recognition algorithms (e.g., object recognition, etc.) on the identified QR code to extract the information encoded therein.
- the image recognition algorithms may be applied to recognize the content within the edges of the initial QR code.
- the file downloader 260 may identify the fixed portion, the format portion, and the message portion of the QR code.
- the file downloader 260 may interpret the message portion and may extract the encoded information.
- the file downloader 260 may determine or decode the information from the message portion of the QR code.
- the file downloader 260 may generate or recover the binary codes (e.g., Bose-Chaudhuri-Hocquenghem (BCH) codes or Reed-Solomon codes) from the identified message portion. Using the generated binary codes, the file downloader 260 may then generate or recover the alphanumeric characters forming the corresponding part of the string originally encoded from the requested file.
- BCH Bose-Chaudhuri-Hocquenghem
- the file downloader 260 may apply a preset unmask pattern to the message portion to recover the binary codes (e.g., by using an exclusive-or operator). In some embodiments, the file downloader 260 may apply the level of the error correction specified in the format portion of the QR code to the message portion to recover the alphanumeric characters. From the part of the string extracted from the message portion of the QR code, the file downloader 260 may construct the corresponding part of data to form the file (e.g., binary data in the form of bytes or words). In addition, the file downloader 260 may identify the sequence number of the QR code from the alphanumeric characters recovered from the message portion. The file downloader 260 may repeat this functionality as more and more QR codes are scanned and processed to reconstruct the entirety of the requested file at the client 220 .
- the file downloader 260 may apply a preset unmask pattern to the message portion to recover the binary codes (e.g., by using an exclusive-or operator). In some embodiments, the file downloader 260 may apply the level
- the file downloader 260 may determine whether the sequence number identified from the scanned QR code is in order for the sequence of QR codes. In some embodiments, the file downloader 260 may compare the identified sequence number with an expected sequence number. For example, the file downloader 260 may determine that the currently identified sequence number may be two or greater than the previously identified sequence number, and based on the determination identify that the scanned QR code is out of order. The file downloader 260 may determine the expected sequence number each time the QR code is scanned. In some embodiments, the file downloader 260 may maintain a counter by incrementing the sequence number from the previously scanned QR code. In some embodiments, the file downloader 260 may maintain a buffer for the expected sequence number.
- the file downloader 260 mark the sequence of QR codes as in order or complete. On the other hand, if the identified sequence number and the expected sequence number do not match, the file downloader 260 may mark the sequence of QR codes as out of order or incomplete. In some embodiments, the file downloader 260 may determine the expected sequence number. The file downloader 260 may store the sequence numbers not received and processed for the sequence of QR codes for the requested file. In some embodiments, the file downloader 260 may store the sequence numbers successfully received and processed for the sequence of QR codes for the requested file.
- the code player 245 may continue to present the sequence of QR codes on the display 250 .
- the code player 245 may identify the next QR code in the sequence to present on the display 250 .
- the code player 245 may determine whether all the QR codes in the sequence have been scanned and processed by the file downloader 260 .
- the code player 245 may compare the sequence number with the length of the sequence of QR codes. If the identified sequence number is less than the length of the sequence of QR codes, the code player 245 may identify the next QR code and may present the identified QR code on the display 250 .
- the above detailed functionalities of the client 220 and the media player 215 in the second mode of operation may be repeated for the subsequent QR code.
- the code player 245 may present a terminal image on the display 250 .
- the terminal image may be the original graphical user interface prior to playing of the sequence of QR codes.
- the terminal image may be a predefined QR code.
- the message portion of the predefined QR code may include information indicating to the file downloader 260 that the sequence of QR codes is complete.
- the image scanner 255 of the client may scan, capture, or acquire the terminal image.
- the file downloader 260 may identify information indicating that the sequence of QR codes is complete.
- the file downloader 260 may determine whether all of the QR codes in the sequence were scanned and processed.
- the file downloader 260 may identify the one or more sequence numbers not received and processed for the sequence of numbers. If there are any sequence numbers identified as not received and processed, the file downloader 260 may determine that not all of the QR codes in the sequence were received and processed. In addition, the file downloader 260 may mark the constructed data for the requested file as incomplete. The file downloader 260 may wait for another replay of the sequence of QR codes for the requested file to complete reconstruction of the file. If no sequence numbers are identified as not received and processed, the file downloader 260 may determine that all of the QR codes in the sequence were received and processed. In addition, the file downloader 260 may mark the constructed data for the requested file as complete. The file downloader 260 may also reconstruct the entirety of the requested file from the aggregated information extracted from all of the scanned and processed QR codes.
- the application 265 of the client 220 may open the requested file reconstructed by the file downloader 260 .
- the application 265 may identify the format of the reconstructed file. In accordance to the specifications of the identified format, the application 265 may open and play the reconstructed file.
- the client 220 itself e.g., using an operating system running on the processor
- FIG. 2B depicted is a block diagram of another embodiment of a system 200 B for transferring a file to a mobile device via scanning quick response codes displayed via a display output device.
- the system 200 B may be similar to the system 200 A, but may lack a file server 205 separate from the media device 215 .
- the file server 205 or the file database 210 may be a part of the media device 215 .
- the file server 205 may include the media device 215 .
- the file database 210 may be connected to the media device 215 or may be otherwise directly accessible from the media device 215 (e.g., via the network 225 ).
- the file retriever 235 ′ of the media device 215 may include functionalities of the file server 205 , such as those of the request handler 230 .
- a server may receive a request to access a file.
- the file may not be directly accessible to the client.
- the server may retrieve the file specified in the request.
- the server may encode the file into a string.
- the server may divide the string into multiple portions.
- the server may convert each portion of the string into a quick response (QR) code image.
- the server may combine all the QR code images each corresponding to the portion of the string to form a stream of QR code images.
- the server may prefix a first QR code image into the stream of QR code images.
- the first QR code image may include information for establishing communications between the client and the server.
- the server may display the first QR code image of the stream.
- the client may scan the first QR code image.
- the client may interpret the first QR code image to extract information therefrom.
- the client may initialize communications with the server using the information extracted from the first QR code.
- the client may determine whether the client is able to establish communications with the server. In some embodiments, the functionalities of step 322 and/or 324 may be performed at the server.
- the client may enter into a controlled mode.
- the client may transmit a start signal.
- the server may receive the start signal from the client.
- the server may display the next QR code in the stream.
- the client may scan the QR code image displayed at the server.
- the client may interpret the QR code image to decode and extract the string corresponding to the QR code image.
- the client may identify the sequence number from the QR code image.
- the client may determine whether the sequence number is in order in the stream of QR code images.
- the client may determine an expected sequence number.
- the expected sequence number may be the next number in sequence in the stream of QR code images.
- the client may transmit an acknowledgement signal with the expected sequence number for the next QR code image.
- the server may in turn receive the acknowledgement signal from the client.
- the server may identify the sequence number from the acknowledgement signal. In some embodiments, the server may identify the sequence number from an internal counter maintained to keep track of the stream of QR code images.
- the server may determine whether the end of the stream of QR code images is reached.
- the server may identify the QR code image in the stream as specified by the sequence number and may repeat the functionalities of steps 330 - 348 . If so, at step 352 , the server may transmit a termination signal to the client. At step 354 , the client in turn may receive the termination signal. At step 356 , the client may open a file constructed from the scanned QR code image stream.
- the client may enter into an easy mode.
- the server may display the next QR code image in the stream, without any communication link established between the client and the server.
- the client may scan the QR code image.
- the client may interpret the QR code image to extract information to construct the requested file.
- the client may determine whether the sequence number of the scanned QR code image is in order. If not, at step 366 , the client may mark the QR code image stream as incomplete.
- the client may mark the QR code image stream as so far complete.
- the server may determine whether a time limit for display of the current QR code image has elapsed. If not, the server may wait until the limit elapsed. Once the time limit elapsed, at step 372 , the server may determine whether the end of the stream of QR code images is reached. If not, at step 374 , the server may identify the next QR code image and may repeat the functionality of steps 358 and 370 . If so, at step 376 , the server may display a terminal image indicating that the stream of QR code images has ended. At step 378 , the client may scan the terminal image.
- the client may identify the terminal image as the end of the stream of the QR code images.
- the client may determine whether the scanned QR code image stream is complete. If marked as incomplete, at step 384 , the client may wait for rescan of the stream of QR code images again until opening of the file.
- the client may open the file constructed from the QR code image stream.
- systems described above may provide multiple ones of any or each of those components and these components may be provided on either a standalone machine or, in some embodiments, on multiple machines in a distributed system.
- the systems and methods described above may be implemented as a method, apparatus or article of manufacture using programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof.
- the systems and methods described above may be provided as one or more computer-readable programs embodied on or in one or more articles of manufacture.
- article of manufacture is intended to encompass code or logic accessible from and embedded in one or more computer-readable devices, firmware, programmable logic, memory devices (e.g., EEPROMs, ROMs, PROMs, RAMs, SRAMs, etc.), hardware (e.g., integrated circuit chip, Field Programmable Gate Array (FPGA), Application Specific Integrated Circuit (ASIC), etc.), electronic devices, a computer readable non-volatile storage unit (e.g., CD-ROM, USB Flash memory, hard disk drive, etc.).
- the article of manufacture may be accessible from a file server providing access to the computer-readable programs via a network transmission line, wireless transmission media, signals propagating through space, radio waves, infrared signals, etc.
- the article of manufacture may be a flash memory card or a magnetic tape.
- the article of manufacture includes hardware logic as well as software or programmable code embedded in a computer readable medium that is executed by a processor.
- the computer-readable programs may be implemented in any programming language, such as LISP, PERL, C, C++, C#, PROLOG, PYTHON, BASIC, or in any byte code language such as JAVA.
- the software programs may be stored on or in one or more articles of manufacture as object code.
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Electromagnetism (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Toxicology (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Information Transfer Between Computers (AREA)
Abstract
Description
- The present application generally relates to transferring files to client devices. In particular, the present application relates to systems and methods for transferring a file to a mobile device via scanning quick response codes displayed via a display output device.
- A device may have difficult downloading or otherwise accessing files located on a data repository that is not communicatively connected to the client. Current techniques to retrieve the file from the data repository for the device may involve the use of specialized hardware or software or may incur security risks.
- The present disclosure is directed towards systems and methods for transferring a file to a mobile device via scanning quick response codes displayed via a display output device. The file may be stored at a file server or a database not directly accessible by the mobile device. If the file server is connected to the wireless network (e.g., the Internet) as the mobile device, a physical wired connected may be used to transfer the file requested by the mobile device. Such a mechanism, however, may fail without the installation of a specialized driver or support by an operating system running on the mobile device. In addition, the specific cable for the wired connection may not be readily available. Furthermore, if the file server is deployed in an internal network (e.g., an enterprise Intranet such as a virtual private network (VPN)) not accessible to the mobile device, the mobile device may not have direct access or permissions to the file server. In such situations, the mobile device may send a request to a bridge device connected to the internal network. The bridge device in turn may access the file server via the internal network, copy the requested file from the file server, and then send the file to the mobile device. This procedure, however, may not be secure, as the file is physically stored at the bridge device prior to delivery to the client.
- To download the file from the file server without such encumbrances, the present systems and methods may provide a mechanism for mobile devices to download files by scanning a stream of quick response (QR) code images rendered on the display output device of a target device in the presence of the mobile device. The QR code may dynamically change in sequence one after another to convey information or data to the mobile device. The target device may be the file server itself or may be a media device that may access the file server via a network. If the target device is the media device, a file converter executing on the media device may retrieve the requested file from the file server and use a file convert to convert the retrieve file to the stream of QR code images for display on the display output device. Using the stream of QR code images, a file downloader running on the mobile device may interpret and generate the requested file.
- In one scenario, a user may attempt to access a file stored at the file server from the mobile device. With no access to the file server, the user may be unsuccessful in accessing the file in the initial attempt. The user may then use the display of the media device that may access the file server to locate the file on the file server to download from the media device. In some embodiments, the media device may be the same device as the file server. The media device in turn may launch the file convert to download the file from the file server and then to convert the file into a stream of QR codes.
- To generate the stream of QR codes, the file converter of the media device may first encode the file into a long string. The file converter may then divide the long string into multiple portions based on a content limit of the QR code. The content limit of a single QR code may be 3 kilobytes at maximum. With the long string divided into multiple portions, the file converter may convert each portion into a single QR code image and may insert sequence information into each QR code image. The sequence information may specify the order of the QR code image. If length of the stream of QR codes is above a threshold length, the media device may display a prompt warning the user of a potentially long download time. The file converter may combine all the QR code images generated for the requested file to form a stream of QR code images. The file converter may also generate an initial QR code image to prefix to the stream of QR code images. The initial QR code image may include information on an identifier of the media device (e.g., Internet Protocol (IP) address, Media Access Control (MAC) address, or a Bluetooth Universally Unique Identifier (UUID), etc.) and a total length of QR code images in the stream.
- Once the QR code images are combined, the media device may render the initial QR code image of the stream onto the display of the media device for scanning by the mobile device. The initial QR code image may be rendered and presented on the display of the media device for a predefined amount of time (e.g., 10 to 45 seconds). During the predefined amount of time, an image scanner of the mobile device may be pointed by the user at the display of the media device to scan the prefixed initial QR code. Using the information imprinted in the initial QR code, the mobile device may initiate establishment of communications with the media device (e.g., using Internet or the Bluetooth) for downloading the request file.
- If the attempt to establish communications with the media device is successful, the mobile device may continue to scan the stream of QR code images from the media device in a “controlled mode.” With communications established with the media device, the file downloader running on the mobile device may first send a start signal to the media device. Receipt of the start signal may trigger the media device to initiate playing of the stream of QR code images on the display. Each time the mobile device scans the QR code image, the file downloader may interpret the QR code image and construct the requested file. The file downloader may also send back an acknowledgement signal to the media device. In the meanwhile, the media device may wait for receipt of the acknowledgement signal. Upon receipt of the acknowledgement signal, the media device may play the next QR code image in the stream. If the QR code image is sent in the wrong sequence, the file downloader may request the expected QR code image in the sequence in the stream.
- On the other hand, if the attempt to establish communications with the media device is unsuccessful, the mobile device may continue to scan the stream of QR code images from the media device in an “easy mode.” Instead of communicating acknowledgment signal each time a QR code image is scanned, the media device may play the stream of QR code images. Each time a new QR code image appears on the display, the mobile device may scan the QR code image and may interpret the scanned QR code image to compose the requested file. If any QR code image in the stream is not scanned, the mobile device may scan the stream of QR code image again when the stream is replayed at a subsequent time. In either the controlled mode or the easy mode, the mobile device may be able to construct the requested file without direct access or communicative connection with the file server storing the file.
- At least one aspect of this disclosure is directed to a method of transferring a file to a mobile device via scanning quick response codes displayed via a display output device. A media device in communication with a server may receive a request to access a file on the server. A file converter of the media device may encode the file obtained from the server into a plurality of quick response (QR) codes. The media device may display the plurality of QR codes via a display output device. A mobile device may scan each of the plurality of QR codes displayed on the display output device. A file downloader of the mobile device may interpret each of the scanned plurality of QR codes to form a file on the mobile device.
- In some embodiments, the server may include the media device. In some embodiments, the mobile device may not directly access the server. In some embodiments, receiving the request to access the file on the server may further include receiving the request via selection of a user interface element displayed via the display output device.
- In some embodiments, encoding the file obtained from the server may include encoding the file into the plurality of QR codes by encoding the file into a string. In some embodiments, encoding the file obtained from the server may include encoding the file into the plurality of QR codes by dividing the string into a plurality of parts based on a content limit of a QR code. In some embodiments, encoding the file obtained from the server may include encoding the file into the plurality of QR codes by converting each of the plurality of parts into one of the plurality of QR codes. Each one of the plurality of QR codes may include a sequence number.
- In some embodiments, encoding the file obtained from the server may include combining the plurality of QR codes into a stream of QR codes. The stream of QR codes may include one of a sequence of files for each of the plurality of QR codes or a video of the plurality of QR codes. In some embodiments, displaying the plurality of QR codes via the display output device may include displaying each of the plurality of QR codes sequentially for a predetermined time period.
- In some embodiments, displaying the plurality of QR codes via the display output device may include scanning each of the plurality of QR codes via a camera of the mobile device reading each of the plurality of QR codes as displayed on the display output device. In some embodiments, displaying the plurality of QR codes via the display output device may include synchronizing one of the scanning or the interpreting with the media device's displaying of the plurality of QR codes. In some embodiments, interpreting each of the scanned plurality of QR codes may include combining each of the interpreted scanned plurality of QR codes to form the file.
- Another aspect of this disclosure is directed to a system for transferring a file to a mobile device via scanning quick response codes displayed via a display output device. A media device in communication with a server may receive a request to access a file on the server. A file converter of the media device may encode the file obtained from the server into a plurality of quick response (QR) codes. The media device may display the plurality of QR codes via a display output device. A mobile device may scan each of the plurality of QR codes displayed on the display output device. A file downloader of the mobile device may interpret each of the scanned plurality of QR codes to form a file on the mobile device.
- In some embodiments, the server may include the media device. In some embodiments, the mobile device may not directly access the server. In some embodiments, the media device may receive the request via selection of a user interface element displayed via the display output device.
- In some embodiments, the file converter may encode the file into the plurality of QR codes by encoding the file into a string. In some embodiments, the file converter may encode the file into the plurality of QR codes by dividing the string into a plurality of parts based on a content limit of a QR code. In some embodiments, the file converter may encode the file into the plurality of QR codes by converting each of the plurality of parts into one of the plurality of QR codes. Each one of the plurality of QR codes may include a sequence number.
- In some embodiments, the file converter may combine the plurality of QR codes into a stream of QR codes. The stream of QR codes may include one of a sequence of files for each of the plurality of QR codes or a video of the plurality of QR codes. In some embodiments, the media device may display each of the plurality of QR codes sequentially for a predetermined time period.
- In some embodiments, the mobile device may scan each of the plurality of QR codes via a camera of the mobile device reading each of the plurality of QR codes as displayed on the display output device. In some embodiments, the file downloader may synchronize one of the scanning or the interpreting with the media device's displaying of the plurality of QR codes. In some embodiments, the file downloader may combine each of the interpreted scanned plurality of QR codes to form the file.
- The foregoing and other objects, aspects, features, and advantages of the present solution will become more apparent and better understood by referring to the following description taken in conjunction with the accompanying drawings, in which:
-
FIGS. 1A-1D are block diagrams of embodiments of a computing device; -
FIGS. 2A and 2B are block diagrams of embodiments of a system for transferring a file to a mobile device via scanning quick response codes displayed via a display output device; and -
FIG. 3A-3C are flow diagrams of an embodiment of a method of transferring a file to a mobile device via scanning quick response codes displayed via a display output device. - The features and advantages of the present solution will become more apparent from the detailed description set forth below when taken in conjunction with the drawings, in which like reference characters identify corresponding elements throughout. In the drawings, like reference numbers generally indicate identical, functionally similar, and/or structurally similar elements.
- For purposes of reading the description of the various embodiments below, the following descriptions of the sections of the specification and their respective contents may be helpful:
- Section A describes a computing environment which may be useful for practicing embodiments described herein; and
- Section B describes systems and methods for transferring a file to a mobile device via scanning quick response codes displayed via a display output device.
- A. Computing Environment
- Prior to discussing the specifics of embodiments of the systems and methods of an appliance and/or client, it may be helpful to discuss the computing environments in which such embodiments may be deployed.
FIGS. 1A and 1B depict block diagrams of acomputing device 100 useful for practicing embodiments of the systems and devices described further below in Section B. As shown inFIGS. 1A and 1B , eachcomputing device 100 includes acentral processing unit 101, and amain memory unit 122. As shown inFIG. 1A , acomputing device 100 may include a visual display device 124, akeyboard 126 and/or apointing device 127, such as a mouse. Eachcomputing device 100 may also include additional optional elements, such as one or more input/output devices 130 a-130 b (generally referred to using reference numeral 130), and acache memory 140 in communication with thecentral processing unit 101. - The
central processing unit 101 is any logic circuitry that responds to and processes instructions fetched from themain memory unit 122. In many embodiments, the central processing unit is provided by a microprocessor unit, such as: those manufactured by Intel Corporation of Mountain View, Calif.; those manufactured by Samsung Electronics of Suwon, Korea; those manufactured by Micron Technology of Boise, Id.; those manufactured by Transmeta Corporation of Santa Clara, Calif.; those manufactured by International Business Machines of White Plains, N.Y.; or those manufactured by Advanced Micro Devices of Sunnyvale, Calif., among others. Thecomputing device 100 may be based on any of these processors, or any other processor capable of operating as described herein. -
Main memory unit 122 may be one or more memory chips capable of storing data and allowing any storage location to be directly accessed by themicroprocessor 101, such as Static random access memory (SRAM), Burst SRAM or SynchBurst SRAM (BSRAM), Dynamic random access memory (DRAM), Fast Page Mode DRAM (FPM DRAM), Enhanced DRAM (EDRAM), Extended Data Output RAM (EDO RAM), Extended Data Output DRAM (EDO DRAM), Burst Extended Data Output DRAM (BEDO DRAM), Enhanced DRAM (EDRAM), synchronous DRAM (SDRAM), JEDEC SRAM, PC100 SDRAM, Double Data Rate SDRAM (DDR SDRAM), Enhanced SDRAM (ESDRAM), SyncLink DRAM (SLDRAM), Direct Rambus DRAM (DRDRAM), or Ferroelectric RAM (FRAM). Themain memory 122 may be based on any of the above described memory chips, or any other available memory chips capable of operating as described herein. In the embodiment shown inFIG. 1A , theprocessor 101 communicates withmain memory 122 via a system bus 150 (described in more detail below).FIG. 1B depicts an embodiment of acomputing device 100 in which the processor communicates directly withmain memory 122 via amemory port 103. For example, inFIG. 1B themain memory 122 may be DRDRAM. -
FIG. 1B depicts an embodiment in which themain processor 101 communicates directly withcache memory 140 via a secondary bus, sometimes referred to as a backside bus. In other embodiments, themain processor 101 communicates withcache memory 140 using thesystem bus 150.Cache memory 140 typically has a faster response time thanmain memory 122 and is typically provided by SRAM, BSRAM, or EDRAM. In the embodiment shown inFIG. 1B , theprocessor 101 communicates with various I/O devices 130 via alocal system bus 150. Various busses may be used to connect thecentral processing unit 101 to any of the I/O devices 130, including a VESA VL bus, an ISA bus, an EISA bus, a MicroChannel Architecture (MCA) bus, a PCI bus, a PCI-X bus, a PCI-Express bus, or a NuBus. For embodiments in which the I/O device is a video display 124, theprocessor 101 may use an Advanced Graphics Port (AGP) to communicate with the display 124.FIG. 1B depicts an embodiment of acomputer 100 in which themain processor 101 communicates directly with I/O device 130 b via HyperTransport, Rapid I/O, or InfiniBand.FIG. 1B also depicts an embodiment in which local busses and direct communication are mixed: theprocessor 101 communicates with I/O device 130 b using a local interconnect bus while communicating with I/O device 130 a directly. - The
computing device 100 may support anysuitable installation device 116, such as a CD-ROM drive, a CD-R/RW drive, a DVD-ROM drive, tape drives of various formats, USB device, hard-drive or any other device suitable for installing software and programs. Thecomputing device 100 may further comprise astorage device 128, such as one or more hard disk drives or redundant arrays of independent disks, for storing an operating system and other related software, and for storing application software programs. Optionally, any of theinstallation devices 116 could also be used as thestorage device 128. Additionally, the operating system and the software can be run from a bootable medium, for example, a bootable CD, such as KNOPPIX®, a bootable CD for GNU/Linux that is available as a GNU/Linux distribution from knoppix.net. - Furthermore, the
computing device 100 may include anetwork interface 118 to interface to a Local Area Network (LAN), Wide Area Network (WAN) or the Internet through a variety of connections including, but not limited to, standard telephone lines, LAN or WAN links (e.g., 802.11, T1, T3, 56 kb, X.25), broadband connections (e.g., ISDN, Frame Relay, ATM), wireless connections, or some combination of any or all of the above. Thenetwork interface 118 may comprise a built-in network adapter, network interface card, PCMCIA network card, card bus network adapter, wireless network adapter, USB network adapter, modem or any other device suitable for interfacing thecomputing device 100 to any type of network capable of communication and performing the operations described herein. - A wide variety of I/O devices 130 a-130 n may be present in the
computing device 100. Input devices include keyboards, mice, trackpads, trackballs, microphones, and drawing tablets. Output devices include video displays, speakers, inkjet printers, laser printers, and dye-sublimation printers. The I/O devices 130 may be controlled by an I/O controller 123 as shown inFIG. 1A . The I/O controller may control one or more I/O devices such as akeyboard 126 and apointing device 127, e.g., a mouse or optical pen. Furthermore, an I/O device may also providestorage 128 and/or aninstallation medium 116 for thecomputing device 100. In still other embodiments, thecomputing device 100 may provide USB connections to receive handheld USB storage devices such as the USB Flash Drive line of devices manufactured by Twintech Industry, Inc. of Los Alamitos, Calif. or SanDisk Corporation of Milpitas, Calif. - In some embodiments, the
computing device 100 may comprise or be connected to multiple display devices 124 a-124 n, which each may be of the same or different type and/or form. As such, any of the I/O devices 130 a-130 n and/or the I/O controller 123 may comprise any type and/or form of suitable hardware, software, or combination of hardware and software to support, enable or provide for the connection and use of multiple display devices 124 a-124 n by thecomputing device 100. For example, thecomputing device 100 may include any type and/or form of video adapter, video card, driver, and/or library to interface, communicate, connect or otherwise use the display devices 124 a-124 n. In one embodiment, a video adapter may comprise multiple connectors to interface to multiple display devices 124 a-124 n. In other embodiments, thecomputing device 100 may include multiple video adapters, with each video adapter connected to one or more of the display devices 124 a-124 n. In some embodiments, any portion of the operating system of thecomputing device 100 may be configured for using multiple displays 124 a-124 n. In other embodiments, one or more of the display devices 124 a-124 n may be provided by one or more other computing devices, such as computing devices 100 a and 100 b connected to thecomputing device 100, for example, via a network. These embodiments may include any type of software designed and constructed to use another computer's display device as asecond display device 124 a for thecomputing device 100. One ordinarily skilled in the art will recognize and appreciate the various ways and embodiments that acomputing device 100 may be configured to have multiple display devices 124 a-124 n. - In further embodiments, an I/O device 130 may be a
bridge 170 between thesystem bus 150 and an external communication bus, such as a USB bus, an Apple Desktop Bus, an RS-232 serial connection, a SCSI bus, a FireWire bus, a FireWire 800 bus, an Ethernet bus, an AppleTalk bus, a Gigabit Ethernet bus, an Asynchronous Transfer Mode bus, a HIPPI bus, a Super HIPPI bus, a SerialPlus bus, a SCI/LAMP bus, a FibreChannel bus, or a Serial Attached small computer system interface bus. - A
computing device 100 of the sort depicted inFIGS. 1A and 1B typically operate under the control of operating systems, which control scheduling of tasks and access to system resources. Thecomputing device 100 can be running any operating system such as any of the versions of the Microsoft® Windows operating systems, the different releases of the Unix and Linux operating systems, any version of the Mac OS® for Macintosh computers, any embedded operating system, any real-time operating system, any open source operating system, any proprietary operating system, any operating systems for mobile computing devices, or any other operating system capable of running on the computing device and performing the operations described herein. Typical operating systems include: WINDOWS 3.x, WINDOWS 95, WINDOWS 98, WINDOWS 2000, WINDOWS NT 3.51, WINDOWS NT 4.0, WINDOWS CE, WINDOWS XP, WINDOWS 7, and WINDOWS 10, all of which are manufactured by Microsoft Corporation of Redmond, Wash.; MacOS, manufactured by Apple Computer of Cupertino, Calif.; OS/2, manufactured by International Business Machines of Armonk, N.Y.; and Linux, a freely-available operating system distributed by Caldera Corp. of Salt Lake City, Utah, or any type and/or form of a UNIX operating system, among others. - In other embodiments, the
computing device 100 may have different processors, operating systems, and input devices consistent with the device. For example, in one embodiment thecomputer 100 may be a smartphone or a tablet, such as those developed by Apple Inc., by Samsung Electronics, by Xiaomi. Inc., or by Google Inc., among others. In this embodiment, the smartphone or tablet may be operated under the control of an operating system (such as Android or iOS) and may include a stylus input device as well as a touch sensitive screen. Moreover, thecomputing device 100 can be any workstation, desktop computer, laptop or notebook computer, server, handheld computer, mobile telephone, any other computer, or other form of computing or telecommunications device that is capable of communication and that has sufficient processor power and memory capacity to perform the operations described herein. - As shown in
FIG. 1C , thecomputing device 100 may comprise multiple processors and may provide functionality for simultaneous execution of instructions or for simultaneous execution of one instruction on more than one piece of data. In some embodiments, thecomputing device 100 may comprise a parallel processor with one or more cores. In one of these embodiments, thecomputing device 100 is a shared memory parallel device, with multiple processors and/or multiple processor cores, accessing all available memory as a single global address space. In another of these embodiments, thecomputing device 100 is a distributed memory parallel device with multiple processors each accessing local memory only. In still another of these embodiments, thecomputing device 100 has both some memory which is shared and some memory which can only be accessed by particular processors or subsets of processors. In still even another of these embodiments, thecomputing device 100, such as a multi-core microprocessor, combines two or more independent processors into a single package, often a single integrated circuit (IC). In yet another of these embodiments, thecomputing device 100 includes a chip having a Cell Broadband Engine architecture and including a Power processor element and a plurality of synergistic processing elements, the Power processor element and the plurality of synergistic processing elements linked together by an internal high speed bus, which may be referred to as an element interconnect bus. - In some embodiments, the processors provide functionality for execution of a single instruction simultaneously on multiple pieces of data (SIMD). In other embodiments, the processors provide functionality for execution of multiple instructions simultaneously on multiple pieces of data (MIMD). In still other embodiments, the processor may use any combination of SIMD and MIMD cores in a single device.
- In some embodiments, the
computing device 100 may comprise a graphics processing unit. In one of these embodiments depicted inFIG. 1D , thecomputing device 100 includes at least onecentral processing unit 101 and at least one graphics processing unit. In another of these embodiments, thecomputing device 100 includes at least one parallel processing unit and at least one graphics processing unit. In still another of these embodiments, thecomputing device 100 includes a plurality of processing units of any type, one of the plurality of processing units comprising a graphics processing unit. - In some embodiments, a first computing device 100 a executes an application on behalf of a user of a client computing device 100 b. In other embodiments, a computing device 100 a executes a virtual machine, which provides an execution session within which applications execute on behalf of a user or a client computing devices 100 b. In one of these embodiments, the execution session is a hosted desktop session. In another of these embodiments, the
computing device 100 executes a terminal services session. The terminal services session may provide a hosted desktop environment. In still another of these embodiments, the execution session provides access to a computing environment, which may comprise one or more of: an application, a plurality of applications, a desktop application, and a desktop session in which one or more applications may execute. - B. Systems and Methods for Transferring a File to a Mobile Device Via Scanning Quick Response Codes Displayed Via a Display Output Device
- The present disclosure is directed towards systems and methods for transferring a file to a mobile device via scanning quick response codes displayed via a display output device. The file may be stored at a file server or a database not directly accessible by the mobile device. If the file server is connected to the wireless network (e.g., the Internet) as the mobile device, a physical wired connected may be used to transfer the file requested by the mobile device. Such a mechanism, however, may fail without the installation of a specialized driver or support by an operating system running on the mobile device. In addition, the specific cable for the wired connection may not be readily available. Furthermore, if the file server is deployed in an internal network (e.g., an enterprise Intranet such as a virtual private network (VPN)) not accessible to the mobile device, the mobile device may not have direct access or permissions to the file server. In such situations, the mobile device may send a request to a bridge device connected to the internal network. The bridge device in turn may access the file server via the internal network, copy the requested file from the file server, and then send the file to the mobile device. This procedure, however, may not be secure, as the file is physically stored at the bridge device prior to delivery to the client.
- To download the file from the file server without such encumbrances, the present systems and methods may provide a mechanism for mobile devices to download files by scanning a stream of quick response (QR) code images rendered on the display output device of a target device in the presence of the mobile device. The QR code may dynamically change in sequence one after another to convey information or data to the mobile device. The target device may be the file server itself or may be a media device that may access the file server via a network. If the target device is the media device, a file converter executing on the media device may retrieve the requested file from the file server and use a file convert to convert the retrieve file to the stream of QR code images for display on the display output device. Using the stream of QR code images, a file downloader running on the mobile device may interpret and generate the requested file.
- In one scenario, a user may attempt to access a file stored at the file server from the mobile device. With no access to the file server, the user may be unsuccessful in accessing the file in the initial attempt. The user may then use the display of the media device that may access the file server to locate the file on the file server to download from the media device. In some embodiments, the media device may be the same device as the file server. The media device in turn may launch the file convert to download the file from the file server and then to convert the file into a stream of QR codes.
- To generate the stream of QR codes, the file converter of the media device may first encode the file into a long string. The file converter may then divide the long string into multiple portions based on a content limit of the QR code. The content limit of a single QR code may be 3 kilobytes at maximum. With the long string divided into multiple portions, the file converter may convert each portion into a single QR code image and may insert sequence information into each QR code image. The sequence information may specify the order of the QR code image. If length of the stream of QR codes is above a threshold length, the media device may display a prompt warning the user of a potentially long download time. The file converter may combine all the QR code images generated for the requested file to form a stream of QR code images. The file converter may also generate an initial QR code image to prefix to the stream of QR code images. The initial QR code image may include information on an identifier of the media device (e.g., Internet Protocol (IP) address, Media Access Control (MAC) address, or a Bluetooth Universally Unique Identifier (UUID), etc.) and a total length of QR code images in the stream.
- Once the QR code images are combined, the media device may render the initial QR code image of the stream onto the display of the media device for scanning by the mobile device. The initial QR code image may be rendered and presented on the display of the media device for a predefined amount of time (e.g., 10 to 45 seconds). During the predefined amount of time, an image scanner of the mobile device may be pointed by the user at the display of the media device to scan the prefixed initial QR code. Using the information imprinted in the initial QR code, the mobile device may initiate establishment of communications with the media device (e.g., using Internet or the Bluetooth) for downloading the request file.
- If the attempt to establish communications with the media device is successful, the mobile device may continue to scan the stream of QR code images from the media device in a “controlled mode.” With communications established with the media device, the file downloader running on the mobile device may first send a start signal to the media device. Receipt of the start signal may trigger the media device to initiate playing of the stream of QR code images on the display. Each time the mobile device scans the QR code image, the file downloader may interpret the QR code image and construct the requested file. The file downloader may also send back an acknowledgement signal to the media device. In the meanwhile, the media device may wait for receipt of the acknowledgement signal. Upon receipt of the acknowledgement signal, the media device may play the next QR code image in the stream. If the QR code image is sent in the wrong sequence, the file downloader may request the expected QR code image in the sequence in the stream.
- On the other hand, if the attempt to establish communications with the media device is unsuccessful, the mobile device may continue to scan the stream of QR code images from the media device in an “easy mode.” Instead of communicating acknowledgment signal each time a QR code image is scanned, the media device may play the stream of QR code images. Each time a new QR code image appears on the display, the mobile device may scan the QR code image and may interpret the scanned QR code image to compose the requested file. If any QR code image in the stream is not scanned, the mobile device may scan the stream of QR code image again when the stream is replayed at a subsequent time. In either the controlled mode or the easy mode, the mobile device may be able to construct the requested file without direct access or communicative connection with the file server storing the file.
- Referring now to
FIG. 2A , depicted is a block diagram of an embodiment of asystem 200A for transferring a file to a mobile device via scanning quick response codes displayed via a display output device. In brief summary, the system 200 may include afile server 205, a file database 210, a media device 215 (a smart television, a monitor, a laptop, or a computer with a monitor, etc.), and a client 220 (e.g., a smartphone, tablet, laptop, or an Internet-of-Things (IoT) device, etc.). Thefile server 205 may include arequest handler 230. The file database 210 may include one or more files. The file database 210 may include a single data repository or multiple data repositories. Themedia device 215 may include a file retrieve 235, afile converter 240, acode player 245, and a display 250 (e.g., touchscreen). Theclient 220 may include an image scanner 255 (e.g., a camera, an infrared sensor, an ultraviolet sensor, a bar code scanner, etc.). Theclient 220 may also include afile downloader 260 and anapplication 265. - Each of the above-mentioned elements or entities is implemented in hardware, or a combination of hardware and software, in one or more embodiments. Each component of the system 200 a may be implemented using hardware or a combination of hardware or software detailed above in connection with
FIGS. 1A-1D . For instance, each of these elements or entities can include any application, program, library, script, task, service, process or any type and form of executable instructions executing on hardware of thefile server 205, themedia device 215, theclient 220, and the file database 210 s. The hardware includes circuitry such as one or more processors in one or more embodiments. - In this context, the
file server 205 and themedia device 215 may be connected via anetwork 225, whereas theclient 220 may remain unconnected to thenetwork 225. Thefile server 205 may be in communication with, connected to, or otherwise have direct access to the file database 210. As themedia device 215 and thefile server 205 may be connected to thenetwork 225, themedia device 215 may access files and other data through thenetwork 225, such as the files stored on the file database 210. In some embodiments, thenetwork 225 may be a private network or an Intranet network, such as a virtual private network (VPN) not accessible to theclient 220. In some embodiments, thenetwork 225 may be an Internet connection between thefile server 205 and themedia device 215 not otherwise directly accessible to theclient 220. On the other hand, as theclient 220 may remain unconnected to thenetwork 225 and may not directly access thefile server 205 or the file database 210. Theclient 220 may be in the presence of, within proximity of, or otherwise have direct line of sight with themedia device 215. - As such, when a user of the
client 220 attempts to access a file stored on the file database 210, theclient 220 may not have direct access to the file database 210 or thefile server 205, and may be unable to download the file. Theclient 220 may prompt the user via a display of theclient 220 to use a nearby device with access to thenetwork 225, such as themedia device 215, to access the requested file. In turn, the user may approach themedia device 215 and may use an input/output device of themedia device 215 to access the file. Themedia device 215 and/or theclient 220 may prompt the user to use theimage scanner 255 of theclient 220 to scan images presented on thedisplay 250 to construct the requested file at theclient 220. The following details the process, method, and functionalities of thefile server 205, themedia device 215, and theclient 220 to allow theclient 220 access to the file stored at the file database 210 not directly accessible to theclient 220. - In further detail, the
file retriever 235 of themedia device 215 may receive a request to access a file on thefile server 205. The requested file may be stored on thefile server 205 or the file database 210. The requested file may be of any format, such as an executable (e.g., EXE, CMD, or BAT, etc.), a document (e.g., HTML, ASP, DOC, DOCX, XLS, XLS, PPT, PPTX, RTF, or TXT, etc.), and a media file (e.g., JPEG, GIF, BMP, AVI, MPG, MKA, FLV, WAV, WMA, OGG, etc.), among others. In some embodiments, thefile retriever 235 may receive the request to access the file on thefile server 205 via selection of a user interface element. In some embodiments, the user interface element may be displayed via thedisplay 250 of themedia device 215. The user interface element may include a graphical user interface (e.g., a menu, a set of icons, a list, a directory, etc.) identifying or listing one or more files accessible by thefile server 205 or stored at the file database 210 accessible by thefile server 205. In some embodiments, the selection of the user interface element may be received via an input/output device (e.g., pointing device, keyboard, microphone, motion sensor, touchscreen, etc.) connected to themedia device 215 or thedisplay 250. Through selection of one of the files identified in the graphical user interface, thefile retriever 235 may receive the request to access the file. The request may include a file address corresponding to the file. The file address may be, for example, a Uniform Resource Locator (URL) in the form of a protocol (e.g., http, ftp, etc.), a hostname (corresponding to thefile server 205 and/or the file database 210), and a file pathname (identifying the specific requested file). In some embodiments, the request may include multiple file addresses, each corresponding to a requested file. Once the request to access the file is received, thefile retriever 235 may send the request to thefile server 230 via thenetwork 225. - Subsequently, the
request handler 230 of thefile server 205 may receive the request to access the file from thefile retriever 235. Upon receipt of the request to access the file, therequest handler 230 may parse the request and may identify the requested file stored on the file database 210. The file database 210 may be a part of thefile server 205, connected to thefile server 205, or otherwise accessible by thefile server 205. In some embodiments, therequest handler 230 may parse the file address included in the request to identify the requested file stored on the file database 210. The file address may correspond to a file stored on the file database 210. In some embodiments, the one or more file addresses included in the request may each correspond to a file stored at the file database 210. Once the requested file is identified, therequest handler 230 may access the file database 210 to retrieve the requested file. Upon retrieval of the file from the file database 210, therequest handler 230 may send the request file to themedia device 215 via thenetwork 225. - In turn, the
file converter 240 of themedia device 215 may receive the file received, obtained, or retrieved from thefile server 205. Thefile converter 240 may encode the file obtained from thefile server 205 into a sequence of quick response (QR) codes. In some embodiments, thefile converter 240 may generate a string based on the file. In some embodiments, thefile converter 240 may encode or convert the received file into the string. The converted string may include a set of alphanumeric values. The file may include set of data specifying instructions for a computing device (e.g., the client 220) or an application (e.g., the application 265) running on the computing device. In some embodiments, thefile converter 240 may identify the format of the file. In accordance to the identified format, thefile converter 240 may read the requested file. While reading the set of data included in the file, thefile converter 240 may the read portion of the data (e.g., binary data in the form of bytes or words) to a set of alphanumeric characters to form the string. - Using the string converted from the file, the
file converter 240 may divide the string into one or more parts based on a content limit of each QR code of the sequence. In some embodiments, thefile converter 240 may determine the content limit for each QR code of the sequence for the file. The content limit for a single QR code may vary based on a module size of the QR code image to be displayed (e.g., ranging from 21×21 to 177×177) and a level of error correction applied (low, medium, quartile, high), among other factors. For example, if the module size of is 101×101 and the level of error correction applied is high, the content limit of the QR code image may be 3,248 for bits, 1,108 numeric-only, 672 alphanumeric, and 461 bytes. In some embodiments, thefile converter 240 may identify a pre-specified module size. In some embodiments, thefile converter 240 may identify a pre-specified level of error correction. In some embodiments, thefile converter 240 may dynamically determine the module size and/or the level of correction based on a configuration (e.g., a resolution, a size, etc.) of thedisplay 250. Based on the determined content limit, thefile converter 240 may divide the string into the one or more parts. Each part may include a subset of the alphanumeric characters forming the converted string. Using the example above, thefile converter 240 may divide the string into portions, each with 672 alphanumeric characters. - Prior to dividing the string, in some embodiments, the
file converter 240 may insert additional information into one or more positions in the string based on the determined content limit. The additional information may include sequence numbers specifying an order that the to-be generated QR code corresponding to the part is to be presented on thedisplay 250. For example, the first part of the string may be modified to include the sequence number of “0” and the second part of the string may be modified to include the sequence number of “1”, and so forth. Thefile converter 240 may identify the one or more positions in the string to insert the additional information based on the determined content limit. In some embodiments, the one or more positions may be at an interval within the string equal to the determined content limit. In some embodiments, the one or more positions may be identified to interleave the additional information such that the additional information occurs at least once in each part of the string. Once the one or more positions are identified, thefile converter 240 may insert the additional information at the identified positions within the string. Thefile converter 240 may then divide the string into the one or more parts. - Having divided the string into one or more parts, the
file converter 240 may convert each part into a QR code for the sequence. In some embodiments, thefile converter 240 may generate each QR code for the sequence using the corresponding string based on the module size and the level of error correction used in determining the content length. Each QR code may include a fixed pattern, format portion, and a message portion. The fixed portion may include a plurality of dark and light boxes. The format portion may include an encoding mode, a message length, and the level of error correction, among others. The message portion may include a pattern that may include a specified set of dark squares and a specified set of light squares. For each divided part of the string, thefile converter 240 may generate a set of binary codes, such as binary Bose-Chaudhuri-Hocquenghem (BCH) codes or binary Reed-Solomon codes, among others. In some embodiments thefile converter 240 may calculate or generate the set of binary codes based on the level of error correction used to determine the content limit. With the generated set of binary codes, thefile converter 240 may generate the pattern for the message portion of the QR code. Thefile converter 240 may apply a preset mask pattern to generate the message portion of the QR code to the set of binary codes (e.g., by using an exclusive-or operator). In some embodiments, message portion of the QR code may include the additional information, such as the sequence number for the QR code. Thefile converter 240 may traverse through all the parts of the string and repeat this process. - Once all of the one or more parts are converted into the respective QR code, the
file converter 240 may combine the QR codes into the sequence of QR codes. In some embodiments, thefile converter 240 may generate a stream of QR codes by combining all the QR codes converted from the one or more parts of the string. In some embodiments, thefile converter 240 may generate a sequence of image files (e.g., JPG, GIF, BMP, or TIFF, etc.) for each of the QR codes in the stream. In some embodiments, thefile converter 240 may generate a video file (e.g., MPG, AVI, MKV, or OGG, etc.) for the stream of QR codes. In some embodiments, thefile converter 240 may identify the sequence number for each QR code. In accordance to the identified sequence numbers, thefile converter 240 may arrange the QR codes into the stream. - The
file converter 240 may also generate an initial QR code to prefix to sequence of QR codes generated from the file, prior to or after combining the QR codes. In some embodiments, thefile converter 240 may generate a string for the initial QR code. The string may include information for theclient 220 to process the subsequent sequence of QR codes. In some embodiments, the information for theclient 220 may be for establishing communications with themedia device 215. The information for establishing communications may include an identifier of the media device (e.g., Internet Protocol (IP) address, Media Access Control (MAC) address, or a Bluetooth Universally Unique Identifier (UUID), etc.) and a specified communications protocol (etc., Internet, Bluetooth, or Near Field Communications (NFC), etc.), among others. The information may include a length of the sequence of QR codes to follow for the file. Once the string is generated, thefile converter 240 may generate the initial QR code. In some embodiments, thefile converter 240 may generate the initial QR code using the string based on the module size and the level of error correction used in determining the content length. The initial QR code may include a fixed pattern, format portion, and a message portion. Thefile converter 240 may generate the message portion. The message portion may include a pattern that may include a specified set of dark squares and a specified set of light squares. - For the string including the information for the initial QR code, the
file converter 240 may generate binary codes, such as binary Bose-Chaudhuri-Hocquenghem (BCH) codes or binary Reed-Solomon codes, among others. In some embodiments thefile converter 240 may calculate or generate the set of binary codes based on the level of error correction used to determine the content limit. Thefile converter 240 may apply a preset mask pattern to generate the message portion of the QR code to the set of binary codes (e.g., by using an exclusive-or operator). The message portion of the initial QR code may include the information for theclient 220 to establish communications with themedia device 215 and the length of the sequence of QR codes to follow for the file. Thefile converter 240 may then add, insert, or prefix the initial QR code prior to the sequence of QR codes generated from the file. In some embodiments, thefile converter 240 may set or a predetermined time limit in which theclient 220 is to establish communications with themedia device 215 upon scanning the initial QR code. - With the requested file converted to the sequence of QR codes, the
code player 245 of themedia device 215 may display the sequence of QR codes via thedisplay 250. Thecode player 245 may first display the initial QR code, prior to presenting the sequence of QR codes for the file. In some embodiments, thecode player 245 may present a prompt on thedisplay 250 notifying the user to point theimage scanner 255 of theclient 220 toward thedisplay 250. In some embodiments, thecode player 245 may display the initial QR code for the predetermined time limit (e.g., 10 to 60 seconds). During the predetermined time limit, thecode player 245 may wait for a request to establish communications from theclient 220. In some embodiments, thecode player 245 may maintain a timer to keep track of time that the initial QR code is presented on thedisplay 250. Thecode player 245 may use the timer to determine whether the predetermined time limit has elapsed. If theclient 220 and thecode player 245 establish communications with each other within the predetermined time limit, themedia device 215 may wait for a start signal from theclient 220 prior to playing the sequence of QR codes. On the other hand, if theclient 220 and themedia device 225 do not establish communications with each other within the predetermined time limit, themedia device 215 may proceed to play the sequence of QR codes. Functionalities of theclient 220 and themedia device 215 in both conditions are detailed below. - As the initial QR code is presented on the
display 250 for the duration of the predetermined time limit, theimage scanner 255 of theclient 220 may scan, capture, or otherwise acquire an image of thedisplay 250. The image may include the initial QR code. Theimage scanner 255 of theclient 220 may be pointed by the user toward thedisplay 250 of the media device 125 to scan the initial QR code. Once the image is acquired, thefile downloader 260 may parse the image of thedisplay 250 to identify the initial QR code. In some embodiments, thefile downloader 260 may apply image recognition algorithms (e.g., edge or blob detection, etc.) to identify the initial QR code from the image acquired by theimage scanner 255. In some embodiments, the image recognition algorithms may be applied to recognize one or more edges of the initial QR code. Thefile downloader 260 may again apply image recognition algorithms (e.g., object recognition, etc.) on the identified initial QR code to extract the information encoded therein. In some embodiments, the image recognition algorithms may be applied to recognize the content within the edges of the initial QR code. - With the initial QR code identified from the image, the
file downloader 260 may identify the fixed portion, the format portion, and the message portion of the initial QR code. Thefile downloader 260 may interpret the message portion and may extract the encoded information. In some embodiments, thefile downloader 260 may determine or decode the information from the message portion of the initial QR code. Thefile downloader 260 may generate or recover the binary codes (e.g., Bose-Chaudhuri-Hocquenghem (BCH) codes or Reed-Solomon codes) from the identified message portion. In some embodiments, thefile downloader 260 may apply a preset unmask pattern to the message portion to recover the binary codes (e.g., by using an exclusive-or operator). Using the generated binary codes, thefile downloader 260 may then generate or recover the alphanumeric characters forming the string. In some embodiments, thefile downloader 260 may apply the level of the error correction specified in the format portion of the initial QR code to the message portion to recover the alphanumeric characters. Using the string extracted from the message portion, thefile downloader 260 may identify the information for establishing communications with themedia device 215. In some embodiments, thefile downloader 260 may identify the length of the sequence of QR codes. - Using the information for establishing communications with the
media device 215, theclient 220 may initiate communications with themedia device 215. In some embodiments, thefile downloader 260 may identify the identifier of the media device 215 (e.g., Internet Protocol (IP) address, Media Access Control (MAC) address, or a Bluetooth Universally Unique Identifier (UUID), etc.). In some embodiments, thefile downloader 260 may identify the communications protocol for establishing the communications. Theclient 220 may then initiate communications using the specified communications protocol. Once initiated, theclient 220 may establish communications with themedia device 215 using the identifier for themedia device 215 identified from the initial QR code. In some embodiments, theclient 220 may send an initialization signal to request establishing communications with themedia device 215. Thecode player 245 may receive the initialization signal. Thecode player 245 of themedia device 215 may in turn send a confirmation signal back to theclient 220 to complete establishment of the communications between themedia device 215 and theclient 220. In some embodiments, thecode player 245 and/or thefile downloader 260 may determine whether communications is successfully established between themedia device 215 and theclient 220. - If the
client 220 establishes communications with themedia device 215 within the duration of the predetermined time limit, thecode player 245 and thefile downloader 260 both may enter a first mode of operation (sometimes referred to as a “controlled mode”). In some embodiments, thefile downloader 260 may synchronize scanning and/or interpreting of the sequence of QR codes displayed on thedisplay 250 of themedia device 215 with thecode player 245. To begin this mode of operation, in some embodiments, thefile downloader 260 may transmit a start signal via the established communications. Upon receipt of the start signal from theclient 220, thecode player 245 may start playing the sequence of QR codes. In some embodiments, thecode player 245 may transmit the start signal to thefile downloader 260 to indicate to thefile downloader 260 to expect starting of playing of the sequence of QR codes. - Subsequently, the
code player 245 may initiate playing of the sequence of QR codes. In some embodiments, thecode player 245 may sequentially display via thedisplay 250 each QR code in the sequence. Each the QR code is presented on thedisplay 250, thecode player 245 may wait for an acknowledgement from thefile downloader 260. In some embodiments, themedia device 245 may sequentially display the image files generated for each QR code in the stream via thedisplay 250. In some embodiments, thecode player 245 may play the video file generated for the stream of QR codes via thedisplay 250. - Each time the QR code is presented on the
display 250, theimage scanner 255 of theclient 220 may scan, capture, or otherwise acquire an image of thedisplay 250. The image may include the QR code. Once the image is acquired, thefile downloader 260 may parse the image of thedisplay 250 to identify the QR code. In some embodiments, thefile downloader 260 may apply image recognition algorithms (e.g., edge or blob detection, etc.) to identify the QR code from the image acquired by theimage scanner 255. In some embodiments, the image recognition algorithms may be applied to recognize one or more edges of the QR code. Thefile downloader 260 may again apply image recognition algorithms (e.g., object recognition, etc.) on the identified QR code to extract the information encoded therein. In some embodiments, the image recognition algorithms may be applied to recognize the content within the edges of the initial QR code. - With the QR code identified from the image, the
file downloader 260 may identify the fixed portion, the format portion, and the message portion of the QR code. Thefile downloader 260 may interpret the message portion and may extract the encoded information. In some embodiments, thefile downloader 260 may determine or decode the information from the message portion of the QR code. Thefile downloader 260 may generate or recover the binary codes (e.g., Bose-Chaudhuri-Hocquenghem (BCH) codes or Reed-Solomon codes) from the identified message portion. In some embodiments, thefile downloader 260 may apply a preset unmask pattern to the message portion to recover the binary codes (e.g., by using an exclusive-or operator). Using the generated binary codes, thefile downloader 260 may then generate or recover the alphanumeric characters forming the corresponding part of the string originally encoded from the requested file. In some embodiments, thefile downloader 260 may apply the level of the error correction specified in the format portion of the QR code to the message portion to recover the alphanumeric characters. From the part of the string extracted from the message portion of the QR code, thefile downloader 260 may construct the corresponding part of data to form the file (e.g., binary data in the form of bytes or words). In addition, thefile downloader 260 may identify the sequence number of the QR code from the alphanumeric characters recovered from the message portion. Thefile downloader 260 may repeat this functionality as more and more QR codes are scanned and processed to reconstruct the entirety of the requested file at theclient 220. - Upon construction of the part of the data for the file corresponding to the information extracted from the QR code presented on the
display 250, thefile downloader 260 may transmit an acknowledgement signal via the communications established with themedia device 215. The acknowledgement signal may indicate to thecode player 245 that thefile downloader 260 successfully decoded the currently presented QR code. The acknowledgement signal may indicate whether the current QR code scanned is in order or out of order. In some embodiments, thefile downloader 260 may determine whether the sequence number identified from the scanned QR code is in order for the sequence of QR codes. In some embodiments, thefile downloader 260 may compare the identified sequence number with an expected sequence number. For example, thefile downloader 260 may determine that the currently identified sequence number may be two or greater than the previously identified sequence number, and based on the determination identify that the scanned QR code is out of order. Thefile downloader 260 may determine the expected sequence number each time the QR code is scanned. In some embodiments, thefile downloader 260 may maintain a counter by incrementing the sequence number from the previously scanned QR code. In some embodiments, thefile downloader 260 may maintain a buffer for the expected sequence number. - If the identified sequence number and the expected sequence number match, the
file downloader 260 may transmit the acknowledgment signal with an indicator that current QR code scanned is in order. The acknowledgment signal may include the expected sequence number incremented from the sequence number identified from the current QR code acquired by theimage scanner 255. If the identified sequence number and the expected sequence number do not match, thefile downloader 260 may determine the expected sequence number. Thefile downloader 260 may also transmit the acknowledgement signal with an indicator that the current QR code scanned is out of order. The acknowledgement signal may include the expected sequence number. In some embodiments, the acknowledgement signal may include a request for the QR code of the expected sequence number. - Subsequently, the
code player 245 may receive the acknowledgment signal from thefile downloader 260. Upon receipt of the acknowledgement signal, thecode player 245 may identify the next QR code to present on thedisplay 250. In some embodiments, the identification of the next QR code to present may be based on the counter maintained by thecode player 245. Thecode player 245 may update or increment the counter each time the QR code of the sequence is presented on thedisplay 250. In some embodiments, thecode player 245 may identify the sequence number of the QR code within the sequence currently presented on thedisplay 250. Once the sequence number is identified, thecode player 245 may then increment the sequence number to determine the next sequence number for the next QR code to be presented on thedisplay 250. - In some embodiments, by parsing the acknowledgment signal, the
code player 245 may identify the next QR code to be presented on thedisplay 245. Thecode player 245 may determine whether thefile downloader 260 processed the QR code in order or out of order based on the acknowledgment signal. In some embodiments, thecode player 245 may parse the acknowledgement signal to identify indicator. In some embodiments, thecode player 245 may identify the next QR code to present based on the expected sequence number indicated in the acknowledgement signal. In some embodiments, thecode player 245 may compare the expected sequence number indicated in the acknowledgement signal with a value of the counter. If the value of the counter matches the expected sequence number, thecode player 245 may determine that thefile downloader 260 processed the QR code in order and may increment the counter to identify the next sequence number of the QR code to be presented on thedisplay 250. If the value of the counter does not match the expected sequence number, thecode player 245 may determine that thefile downloader 260 processed the QR code out of order and may use the expected sequence number from the acknowledgement signal to identify the next QR code to present on thedisplay 250. In some embodiments, upon the receipt of the next acknowledgement signal from thefile downloader 260, thecode player 245 may continue again from the QR code subsequent to the previously scanned QR code. - Using the sequence number identified from the counter or from the acknowledgment signal, the
code player 245 may determine whether all the QR codes in the sequence have been scanned and processed by thefile downloader 260. In some embodiments, thecode player 245 may compare the sequence number with the length of the sequence of QR codes. If the identified sequence number is less than the length of the sequence of QR codes, thecode player 245 may identify the QR code corresponding to the identified sequence number. Once identified, thecode player 245 may present the QR code on thedisplay 250. Furthermore, the above detailed functionalities of theclient 220 and themedia player 215 in the first mode of operation may be repeated for the subsequent QR code. In contrast, if identified sequence number equals the length of the sequence of QR codes, thecode player 245 may transmit a termination signal indicating to thefile downloader 260 that the sequence of QR codes scanned is complete. Upon receipt of the termination signal, thefile downloader 260 may construct the entirety of the requested file from the aggregated information extracted from all of the scanned and processed QR codes. - On the other hand, if the client does 220 does not establish communications with the
media device 215 within the duration of the predetermined time limit, thecode player 245 and thefile downloader 260 both may enter a second mode of operation (sometimes referred to as an “easy mode”). The second mode of operation may different from the first mode of operation, in that no start signal, acknowledgement signals, or termination signals are exchanged. In some embodiments, thefile downloader 260 may continue scanning and/or interpreting of the sequence of QR codes displayed on thedisplay 250 of themedia device 215 without any synchronization with thecode player 245. Subsequently, thecode player 245 may initiate playing of the sequence of QR codes, each for a predetermined time period (e.g., 5 to 45 seconds). In some embodiments, thecode player 245 may sequentially display via thedisplay 250 each QR code in the sequence for the predetermined time period. In some embodiments, themedia device 245 may sequentially display the image files generated for each QR code in the stream via thedisplay 250 for the predetermined time period. In some embodiments, thecode player 245 may play the video file generated for the stream of QR codes via thedisplay 250. - Each time the QR code is presented on the
display 250, theimage scanner 255 of theclient 220 may scan, capture, or otherwise acquire an image of thedisplay 250. The image may include the QR code. Once the image is acquired, thefile downloader 260 may parse the image of thedisplay 250 to identify the QR code. In some embodiments, thefile downloader 260 may apply image recognition algorithms (e.g., edge or blob detection, etc.) to identify the QR code from the image acquired by theimage scanner 255. In some embodiments, the image recognition algorithms may be applied to recognize one or more edges of the QR code. Thefile downloader 260 may again apply image recognition algorithms (e.g., object recognition, etc.) on the identified QR code to extract the information encoded therein. In some embodiments, the image recognition algorithms may be applied to recognize the content within the edges of the initial QR code. - With the QR code identified from the image, the
file downloader 260 may identify the fixed portion, the format portion, and the message portion of the QR code. Thefile downloader 260 may interpret the message portion and may extract the encoded information. In some embodiments, thefile downloader 260 may determine or decode the information from the message portion of the QR code. Thefile downloader 260 may generate or recover the binary codes (e.g., Bose-Chaudhuri-Hocquenghem (BCH) codes or Reed-Solomon codes) from the identified message portion. Using the generated binary codes, thefile downloader 260 may then generate or recover the alphanumeric characters forming the corresponding part of the string originally encoded from the requested file. In some embodiments, thefile downloader 260 may apply a preset unmask pattern to the message portion to recover the binary codes (e.g., by using an exclusive-or operator). In some embodiments, thefile downloader 260 may apply the level of the error correction specified in the format portion of the QR code to the message portion to recover the alphanumeric characters. From the part of the string extracted from the message portion of the QR code, thefile downloader 260 may construct the corresponding part of data to form the file (e.g., binary data in the form of bytes or words). In addition, thefile downloader 260 may identify the sequence number of the QR code from the alphanumeric characters recovered from the message portion. Thefile downloader 260 may repeat this functionality as more and more QR codes are scanned and processed to reconstruct the entirety of the requested file at theclient 220. - The
file downloader 260 may determine whether the sequence number identified from the scanned QR code is in order for the sequence of QR codes. In some embodiments, thefile downloader 260 may compare the identified sequence number with an expected sequence number. For example, thefile downloader 260 may determine that the currently identified sequence number may be two or greater than the previously identified sequence number, and based on the determination identify that the scanned QR code is out of order. Thefile downloader 260 may determine the expected sequence number each time the QR code is scanned. In some embodiments, thefile downloader 260 may maintain a counter by incrementing the sequence number from the previously scanned QR code. In some embodiments, thefile downloader 260 may maintain a buffer for the expected sequence number. If the identified sequence number and the expected sequence number match, thefile downloader 260 mark the sequence of QR codes as in order or complete. On the other hand, if the identified sequence number and the expected sequence number do not match, thefile downloader 260 may mark the sequence of QR codes as out of order or incomplete. In some embodiments, thefile downloader 260 may determine the expected sequence number. Thefile downloader 260 may store the sequence numbers not received and processed for the sequence of QR codes for the requested file. In some embodiments, thefile downloader 260 may store the sequence numbers successfully received and processed for the sequence of QR codes for the requested file. - Without any communications established between the
client 220 and themedia device 215, thecode player 245 may continue to present the sequence of QR codes on thedisplay 250. Thecode player 245 may identify the next QR code in the sequence to present on thedisplay 250. In some embodiments, thecode player 245 may determine whether all the QR codes in the sequence have been scanned and processed by thefile downloader 260. In some embodiments, thecode player 245 may compare the sequence number with the length of the sequence of QR codes. If the identified sequence number is less than the length of the sequence of QR codes, thecode player 245 may identify the next QR code and may present the identified QR code on thedisplay 250. Furthermore, the above detailed functionalities of theclient 220 and themedia player 215 in the second mode of operation may be repeated for the subsequent QR code. - In contrast, if identified sequence number equals the length of the sequence of QR codes, the
code player 245 may present a terminal image on thedisplay 250. In some embodiments, the terminal image may be the original graphical user interface prior to playing of the sequence of QR codes. In some embodiments, the terminal image may be a predefined QR code. The message portion of the predefined QR code may include information indicating to thefile downloader 260 that the sequence of QR codes is complete. Theimage scanner 255 of the client may scan, capture, or acquire the terminal image. Using image recognition algorithms, thefile downloader 260 may identify information indicating that the sequence of QR codes is complete. Upon recognition of the terminal image, thefile downloader 260 may determine whether all of the QR codes in the sequence were scanned and processed. In some embodiments, thefile downloader 260 may identify the one or more sequence numbers not received and processed for the sequence of numbers. If there are any sequence numbers identified as not received and processed, thefile downloader 260 may determine that not all of the QR codes in the sequence were received and processed. In addition, thefile downloader 260 may mark the constructed data for the requested file as incomplete. Thefile downloader 260 may wait for another replay of the sequence of QR codes for the requested file to complete reconstruction of the file. If no sequence numbers are identified as not received and processed, thefile downloader 260 may determine that all of the QR codes in the sequence were received and processed. In addition, thefile downloader 260 may mark the constructed data for the requested file as complete. Thefile downloader 260 may also reconstruct the entirety of the requested file from the aggregated information extracted from all of the scanned and processed QR codes. - Once the processing of the sequence of QR codes is complete in the first or second mode operation, the
application 265 of theclient 220 may open the requested file reconstructed by thefile downloader 260. Theapplication 265 may identify the format of the reconstructed file. In accordance to the specifications of the identified format, theapplication 265 may open and play the reconstructed file. In some embodiments, theclient 220 itself (e.g., using an operating system running on the processor) may execute the file reconstructed by thefile downloader 260. In this manner, theclient 220 may open, play, or otherwise execute files stored at the file database 210 not directly accessible to theclient 220. In some cases, theclient 220 may be able to access the requested from the database 210 quicker than otherwise. - Referring now to
FIG. 2B , depicted is a block diagram of another embodiment of asystem 200B for transferring a file to a mobile device via scanning quick response codes displayed via a display output device. Thesystem 200B may be similar to thesystem 200A, but may lack afile server 205 separate from themedia device 215. In some embodiments, thefile server 205 or the file database 210 may be a part of themedia device 215. In some embodiments, thefile server 205 may include themedia device 215. In some embodiments, the file database 210 may be connected to themedia device 215 or may be otherwise directly accessible from the media device 215 (e.g., via the network 225). In such embodiments, thefile retriever 235′ of themedia device 215 may include functionalities of thefile server 205, such as those of therequest handler 230. - Referring now to
FIGS. 3A-3C , depicted is a flow diagram of an embodiment of amethod 300 for deploying updates to multiple entities. The operations and functionalities of themethod 300 may be performed by thesystem 200A orsystem 200A detailed above, such as thefile server 205, the file database 210, themedia device 215, and/or theclient 220. Starting fromFIG. 3A , atstep 302, a server may receive a request to access a file. The file may not be directly accessible to the client. Atstep 304, the server may retrieve the file specified in the request. Atstep 306, the server may encode the file into a string. Atstep 308, the server may divide the string into multiple portions. Atstep 310, the server may convert each portion of the string into a quick response (QR) code image. Atstep 312, the server may combine all the QR code images each corresponding to the portion of the string to form a stream of QR code images. Atstep 314, the server may prefix a first QR code image into the stream of QR code images. The first QR code image may include information for establishing communications between the client and the server. Atstep 316, the server may display the first QR code image of the stream. In turn, atstep 318, the client may scan the first QR code image. Atstep 320, the client may interpret the first QR code image to extract information therefrom. Atstep 322, the client may initialize communications with the server using the information extracted from the first QR code. Atstep 324, the client may determine whether the client is able to establish communications with the server. In some embodiments, the functionalities ofstep 322 and/or 324 may be performed at the server. - If the communications is successfully established between the server and the client, the client may enter into a controlled mode. Moving onto
FIG. 3B , atstep 326, the client may transmit a start signal. In turn, atstep 328, the server may receive the start signal from the client. Atstep 330, the server may display the next QR code in the stream. Atstep 332, the client may scan the QR code image displayed at the server. Atstep 334, the client may interpret the QR code image to decode and extract the string corresponding to the QR code image. Atstep 336, the client may identify the sequence number from the QR code image. Atstep 338, the client may determine whether the sequence number is in order in the stream of QR code images. If not, atstep 340, the client may determine an expected sequence number. The expected sequence number may be the next number in sequence in the stream of QR code images. Atstep 342, the client may transmit an acknowledgement signal with the expected sequence number for the next QR code image. Atstep 344, the server may in turn receive the acknowledgement signal from the client. Atstep 346, the server may identify the sequence number from the acknowledgement signal. In some embodiments, the server may identify the sequence number from an internal counter maintained to keep track of the stream of QR code images. Atstep 348, the server may determine whether the end of the stream of QR code images is reached. If not, atstep 350, the server may identify the QR code image in the stream as specified by the sequence number and may repeat the functionalities of steps 330-348. If so, atstep 352, the server may transmit a termination signal to the client. Atstep 354, the client in turn may receive the termination signal. Atstep 356, the client may open a file constructed from the scanned QR code image stream. - On the other hand, if the communications is not successfully established between the server and the client, the client may enter into an easy mode. Moving onto
FIG. 3C , atstep 358, the server may display the next QR code image in the stream, without any communication link established between the client and the server. In turn, atstep 360, the client may scan the QR code image. Atstep 362, the client may interpret the QR code image to extract information to construct the requested file. Atstep 364, each time the QR code image is scanned and interpreted, the client may determine whether the sequence number of the scanned QR code image is in order. If not, atstep 366, the client may mark the QR code image stream as incomplete. Otherwise, if so, atstep 368, the client may mark the QR code image stream as so far complete. In the meanwhile, atstep 370, the server may determine whether a time limit for display of the current QR code image has elapsed. If not, the server may wait until the limit elapsed. Once the time limit elapsed, atstep 372, the server may determine whether the end of the stream of QR code images is reached. If not, atstep 374, the server may identify the next QR code image and may repeat the functionality ofsteps step 376, the server may display a terminal image indicating that the stream of QR code images has ended. Atstep 378, the client may scan the terminal image. Atstep 380, the client may identify the terminal image as the end of the stream of the QR code images. Atstep 382, the client may determine whether the scanned QR code image stream is complete. If marked as incomplete, atstep 384, the client may wait for rescan of the stream of QR code images again until opening of the file. Atstep 386, the client may open the file constructed from the QR code image stream. - It should be understood that the systems described above may provide multiple ones of any or each of those components and these components may be provided on either a standalone machine or, in some embodiments, on multiple machines in a distributed system. The systems and methods described above may be implemented as a method, apparatus or article of manufacture using programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof. In addition, the systems and methods described above may be provided as one or more computer-readable programs embodied on or in one or more articles of manufacture. The term “article of manufacture” as used herein is intended to encompass code or logic accessible from and embedded in one or more computer-readable devices, firmware, programmable logic, memory devices (e.g., EEPROMs, ROMs, PROMs, RAMs, SRAMs, etc.), hardware (e.g., integrated circuit chip, Field Programmable Gate Array (FPGA), Application Specific Integrated Circuit (ASIC), etc.), electronic devices, a computer readable non-volatile storage unit (e.g., CD-ROM, USB Flash memory, hard disk drive, etc.). The article of manufacture may be accessible from a file server providing access to the computer-readable programs via a network transmission line, wireless transmission media, signals propagating through space, radio waves, infrared signals, etc. The article of manufacture may be a flash memory card or a magnetic tape. The article of manufacture includes hardware logic as well as software or programmable code embedded in a computer readable medium that is executed by a processor. In general, the computer-readable programs may be implemented in any programming language, such as LISP, PERL, C, C++, C#, PROLOG, PYTHON, BASIC, or in any byte code language such as JAVA. The software programs may be stored on or in one or more articles of manufacture as object code.
- While various embodiments of the methods and systems have been described, these embodiments are illustrative and in no way limit the scope of the described methods or systems. Those having skill in the relevant art can effect changes to form and details of the described methods and systems without departing from the broadest scope of the described methods and systems. Thus, the scope of the methods and systems described herein should not be limited by any of the illustrative embodiments and should be defined in accordance with the accompanying claims and their equivalents.
Claims (20)
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/674,169 US11012496B2 (en) | 2017-08-10 | 2017-08-10 | Mobile-optimized file transfer mechanism based on QR code |
EP18762427.5A EP3665894B1 (en) | 2017-08-10 | 2018-08-08 | Mobile-optimized file transfer mechanism based on qr code |
PCT/US2018/045730 WO2019032655A1 (en) | 2017-08-10 | 2018-08-08 | Mobile-optimized file transfer mechanism based on qr code |
CA3072046A CA3072046C (en) | 2017-08-10 | 2018-08-08 | Mobile-optimized file transfer mechanism based on qr code |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/674,169 US11012496B2 (en) | 2017-08-10 | 2017-08-10 | Mobile-optimized file transfer mechanism based on QR code |
Publications (2)
Publication Number | Publication Date |
---|---|
US20190052697A1 true US20190052697A1 (en) | 2019-02-14 |
US11012496B2 US11012496B2 (en) | 2021-05-18 |
Family
ID=63442782
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/674,169 Active 2038-01-01 US11012496B2 (en) | 2017-08-10 | 2017-08-10 | Mobile-optimized file transfer mechanism based on QR code |
Country Status (4)
Country | Link |
---|---|
US (1) | US11012496B2 (en) |
EP (1) | EP3665894B1 (en) |
CA (1) | CA3072046C (en) |
WO (1) | WO2019032655A1 (en) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190166078A1 (en) * | 2017-11-27 | 2019-05-30 | Speed 3D Inc. | Social-network information connection system |
US10929731B2 (en) * | 2019-07-12 | 2021-02-23 | Cyberline, Inc. | Optical signature generation, distribution and display |
US11074424B2 (en) * | 2018-03-29 | 2021-07-27 | Advanced New Technologies Co., Ltd. | Displaying and recognizing two-dimensional code |
WO2021218090A1 (en) * | 2020-04-28 | 2021-11-04 | 聚好看科技股份有限公司 | Display device, mobile terminal, and server |
CN114896219A (en) * | 2022-07-15 | 2022-08-12 | 深圳市沃特沃德信息有限公司 | Method and device for storing resource data, computer equipment and storage medium |
US11516192B2 (en) * | 2019-12-19 | 2022-11-29 | Augustine Fou | System and method for combinatorial security |
US11526685B1 (en) * | 2021-06-16 | 2022-12-13 | Outlayr, Inc. | Systems and methods to determine a machine-readable optical code based on a stored screen-captured image |
US20220398050A1 (en) * | 2020-06-08 | 2022-12-15 | Lexmark International, Inc. | Print release to imaging device from mobile computing device |
US11551019B2 (en) | 2019-08-09 | 2023-01-10 | Outlayr, Inc. | Systems and methods to determine a machine-readable optical code based on screen-captured video |
US11589107B2 (en) | 2019-08-09 | 2023-02-21 | Outlayr, Inc. | Systems and methods to determine a machine-readable optical code based on screen-captured video |
US11943219B1 (en) * | 2018-09-12 | 2024-03-26 | Massachusetts Mutual Life Insurance Company | Systems and methods for secure display of data on computing devices |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110309688A (en) * | 2019-07-05 | 2019-10-08 | 安徽京瀚科技有限公司 | Household appliances big data acquires two-dimensional code identification method |
CN116614490B (en) * | 2023-04-28 | 2023-12-26 | 广州市良策网络技术有限公司 | Cross-device data transmission method, device and computer readable storage medium |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7124953B2 (en) * | 2003-12-29 | 2006-10-24 | Nokia Corporation | Visual encoding of a content address to facilitate data transfer in digital devices |
US7575168B2 (en) * | 2004-10-01 | 2009-08-18 | Nokia Corporation | Methods, devices and computer program products for generating, displaying and capturing a series of images of visually encoded data |
JP4520935B2 (en) | 2005-12-07 | 2010-08-11 | シャープ株式会社 | Information transfer system and information transfer method |
KR101522004B1 (en) * | 2008-10-29 | 2015-05-20 | 삼성전자 주식회사 | Apparatus and method for transmitting data using visual code and apparatus and method for receiving data using visual code |
CN102860117B (en) * | 2010-04-19 | 2017-03-15 | 联想创新有限公司(香港) | Communication system, communication terminal, communication equipment, communication control method |
US9276921B2 (en) * | 2011-03-31 | 2016-03-01 | Sony Corporation | System and method for establishing a communication session |
US8998076B2 (en) * | 2011-06-03 | 2015-04-07 | Arthur Chang | Establishing connections among electronic devices |
GB2497580A (en) * | 2011-12-16 | 2013-06-19 | Intercede Ltd | Data transmission using a plurality of barcodes displayed in a loop |
US8770484B2 (en) * | 2012-09-21 | 2014-07-08 | Alcatel Lucent | Data exchange using streamed barcodes |
WO2016128019A1 (en) * | 2015-02-09 | 2016-08-18 | OJ Electronics A/S | Control unit for a hvac system comprising a display |
US10069785B2 (en) * | 2015-06-05 | 2018-09-04 | Apple Inc. | Network messaging for paired devices |
US9600701B1 (en) * | 2015-12-30 | 2017-03-21 | Dropbox, Inc. | Inter-device data transfer based on barcodes |
US10007826B2 (en) * | 2016-03-07 | 2018-06-26 | ShoCard, Inc. | Transferring data files using a series of visual codes |
US10509932B2 (en) * | 2016-03-07 | 2019-12-17 | ShoCard, Inc. | Large data transfer using visual codes with feedback confirmation |
-
2017
- 2017-08-10 US US15/674,169 patent/US11012496B2/en active Active
-
2018
- 2018-08-08 CA CA3072046A patent/CA3072046C/en active Active
- 2018-08-08 WO PCT/US2018/045730 patent/WO2019032655A1/en unknown
- 2018-08-08 EP EP18762427.5A patent/EP3665894B1/en active Active
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190166078A1 (en) * | 2017-11-27 | 2019-05-30 | Speed 3D Inc. | Social-network information connection system |
US11074424B2 (en) * | 2018-03-29 | 2021-07-27 | Advanced New Technologies Co., Ltd. | Displaying and recognizing two-dimensional code |
US11250229B2 (en) | 2018-03-29 | 2022-02-15 | Advanced New Technologies Co., Ltd. | Displaying and recognizing two-dimensional code |
US11943219B1 (en) * | 2018-09-12 | 2024-03-26 | Massachusetts Mutual Life Insurance Company | Systems and methods for secure display of data on computing devices |
US10929731B2 (en) * | 2019-07-12 | 2021-02-23 | Cyberline, Inc. | Optical signature generation, distribution and display |
US11551019B2 (en) | 2019-08-09 | 2023-01-10 | Outlayr, Inc. | Systems and methods to determine a machine-readable optical code based on screen-captured video |
US11589107B2 (en) | 2019-08-09 | 2023-02-21 | Outlayr, Inc. | Systems and methods to determine a machine-readable optical code based on screen-captured video |
US11516192B2 (en) * | 2019-12-19 | 2022-11-29 | Augustine Fou | System and method for combinatorial security |
WO2021218090A1 (en) * | 2020-04-28 | 2021-11-04 | 聚好看科技股份有限公司 | Display device, mobile terminal, and server |
US20220398050A1 (en) * | 2020-06-08 | 2022-12-15 | Lexmark International, Inc. | Print release to imaging device from mobile computing device |
US11526685B1 (en) * | 2021-06-16 | 2022-12-13 | Outlayr, Inc. | Systems and methods to determine a machine-readable optical code based on a stored screen-captured image |
CN114896219A (en) * | 2022-07-15 | 2022-08-12 | 深圳市沃特沃德信息有限公司 | Method and device for storing resource data, computer equipment and storage medium |
Also Published As
Publication number | Publication date |
---|---|
CA3072046A1 (en) | 2019-02-14 |
CA3072046C (en) | 2022-11-29 |
EP3665894A1 (en) | 2020-06-17 |
EP3665894B1 (en) | 2023-07-19 |
WO2019032655A1 (en) | 2019-02-14 |
US11012496B2 (en) | 2021-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11012496B2 (en) | Mobile-optimized file transfer mechanism based on QR code | |
US11086962B2 (en) | Webpage loading method, client and server | |
KR20210120978A (en) | Use of an on-demand application for generating virtual numbers for contactless cards for secure autofilling of forms | |
US8914767B2 (en) | Systems and methods for using quick response codes to activate software applications | |
US20140250158A1 (en) | Method and device for obtaining file | |
US20120089706A1 (en) | Mobile file uploader | |
TWI637279B (en) | Method, system and web server for uploading form attachments | |
US9208392B2 (en) | Methods and apparatus for progressive pattern matching in a mobile environment | |
US11099889B2 (en) | Method-call-chain tracking method, electronic device, and computer readable storage medium | |
US9442720B2 (en) | Adding on-the-fly comments to code | |
US10055583B2 (en) | Method and apparatus for processing file | |
WO2015172616A1 (en) | Method, device and system for uploading file to cloud disk, and cloud disk server | |
CN108846129B (en) | Storage data access method, device and storage medium | |
CN110019873B (en) | Face data processing method, device and equipment | |
US20190005031A1 (en) | Accessing cloud based document libraries over unreliable networks | |
CN103631916A (en) | Method and device for downloading downloadable resources | |
WO2015051728A1 (en) | Method and device for acquiring application matching terminal | |
CN111382123A (en) | File storage method, device, equipment and storage medium | |
CN110928571A (en) | Business program development method and device | |
WO2017215650A1 (en) | Automatic login method and device for micro-game client, program, and medium | |
WO2016101735A1 (en) | Drawing data based instant messaging method, client and system | |
CN110191176B (en) | Rapid electronic evidence obtaining method and system | |
CN114553863A (en) | File transmission method and device, storage medium and electronic equipment | |
US9449194B2 (en) | Secure access to running client application features from a browser application | |
US20150074223A1 (en) | Information processing system, information processing method, communication terminal, server, and control methods and control programs thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: CITRIX SYSTEMS, INC., FLORIDA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:WU, HAO;REEL/FRAME:043263/0314 Effective date: 20170809 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE AFTER FINAL ACTION FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT RECEIVED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: AWAITING TC RESP, ISSUE FEE PAYMENT VERIFIED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: WILMINGTON TRUST, NATIONAL ASSOCIATION, DELAWARE Free format text: SECURITY INTEREST;ASSIGNOR:CITRIX SYSTEMS, INC.;REEL/FRAME:062079/0001 Effective date: 20220930 |
|
AS | Assignment |
Owner name: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT, NEW YORK Free format text: SECOND LIEN PATENT SECURITY AGREEMENT;ASSIGNORS:TIBCO SOFTWARE INC.;CITRIX SYSTEMS, INC.;REEL/FRAME:062113/0001 Effective date: 20220930 Owner name: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT, DELAWARE Free format text: PATENT SECURITY AGREEMENT;ASSIGNORS:TIBCO SOFTWARE INC.;CITRIX SYSTEMS, INC.;REEL/FRAME:062113/0470 Effective date: 20220930 Owner name: BANK OF AMERICA, N.A., AS COLLATERAL AGENT, NORTH CAROLINA Free format text: PATENT SECURITY AGREEMENT;ASSIGNORS:TIBCO SOFTWARE INC.;CITRIX SYSTEMS, INC.;REEL/FRAME:062112/0262 Effective date: 20220930 |
|
AS | Assignment |
Owner name: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.), FLORIDA Free format text: RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001);ASSIGNOR:GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT;REEL/FRAME:063339/0525 Effective date: 20230410 Owner name: CITRIX SYSTEMS, INC., FLORIDA Free format text: RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001);ASSIGNOR:GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT;REEL/FRAME:063339/0525 Effective date: 20230410 Owner name: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT, DELAWARE Free format text: PATENT SECURITY AGREEMENT;ASSIGNORS:CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.);CITRIX SYSTEMS, INC.;REEL/FRAME:063340/0164 Effective date: 20230410 |
|
AS | Assignment |
Owner name: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT, DELAWARE Free format text: SECURITY INTEREST;ASSIGNORS:CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.);CITRIX SYSTEMS, INC.;REEL/FRAME:067662/0568 Effective date: 20240522 |