the following detailed description refers to the accompanying drawings . wherever possible , the same reference numbers are used in the drawings and the following description to refer to the same or similar parts . while several exemplary embodiments and features of the invention are described herein , modifications , adaptations , and other implementations are possible , without departing from the spirit and scope of the invention . accordingly , the following detailed description does not limit the invention . instead , the proper scope of the invention is defined by the appended claims . fig1 depicts an exemplary , conventional qr code , consistent with certain disclosed embodiments . in the qr code 100 , information representing a url 110 is encoded as a series of black and white boxes arranged in two dimensions . fig2 is a diagram depicting an exemplary device for generating multi - mode barcodes , consistent with certain disclosed embodiments . device 200 may be essentially any kind of computing device capable of inputting information ; manipulating that information , such as formatting it into a text - delimited or xml - delimited textual scheme ; and translating the formatted text into a graphical barcode , such as a qr code . for example , device 200 may be a general purpose computer , comprising one or more micro processors 210 of varying core configurations and clock frequencies ; one or more hard disk drives 220 of varying physical dimensions and storage capacities ; one or more random access memory ( ram ) modules 230 of varying clock frequencies and memory bandwidth ; one or more input / output network connections 240 ; and one or more peripheral connections or interfaces 250 . device 200 may include or be operatively connected — e . g ., by network or wireless connection — to printing device 270 capable of printing any generated barcodes on a number of physical materials , such as paper , plastic , billboard material , etc . those skilled in the art will appreciate that device 200 or the owner or operator associated with device 200 need not necessarily print or graphically render any barcodes that it generates , but instead may provide electronic or digital data representative of generated barcodes to third parties for printing or distributing the barcodes in other manners . fig3 is a flow diagram illustrating an exemplary method of generating a multi - mode barcode , consistent with certain disclosed embodiments . in step 310 , a plurality of data items are input and / or retrieved from memory by device 200 . a data item may comprise any distinct collection of data that may be encoded in a barcode , such as , a text string , an email address , a phone number , a web address , an image , an audio or video segment , etc . in some embodiments , one or more data items may specify an action to be taken , such as sending an email to a particular email address containing a particular message , downloading a webpage indicated by a url , calling or sending a text message to a particular phone number , displaying an image , playing an audio or video clip , posting a message to a social networking website , adding a particular event to a calendar , initiating a financial transaction , etc . in step 320 , device 200 arranges the plurality of data items into a formatted binary or textual string of barcode information for subsequent encoding in a barcode . for example , as depicted in fig4 , a text string 420 may include data items 421 and 423 . data item 421 may represent a uniform resource identifier (“ uri ”) 421 b , as flagged by textual identifier 421 a . data item 423 may represent a uri in the form of an instruction 423 b to send a text message to telephone number 423 c that includes text 423 d . in step 330 , device 200 adds a multi - mode identifier to the barcode information to indicate that the barcode information includes multiple data items of different types . for example , barcode information 420 may include a textual multi - mode identifier 425 located at the beginning of the barcode information that indicates that the barcode information include multiple data items of different types . multi - mode identifier 425 may indicate the “ schema ” or format of the following textual information , and thus indicate to devices that read the barcode associated with barcode information 420 that multiple data items of different types may be found in the barcode , as delimited in a particular manner , such as by semicolon . in some embodiments , device 200 may further add information to the barcode information to specify a particular order in which a scanning device reading a barcode that contains barcode information 420 may take actions with respect to the different data items contained therein . for example , although not depicted in fig4 , barcode information 420 could include information to indicate that a scanning device should launch a browser to view the webpage associated with uri 421 b if it has web browsing capabilities , and , if the scanning device does not have web browsing capabilities , to send a text message in accordance with data item 423 as a second option . therefore , in step 340 , device 200 may determine whether it has been instructed to include a preference order in the barcode that it is generating . if device 200 is instructed to add a preference order to the barcode ( step 340 , yes ), then device 200 may add a preference order identifier to one or more data items in the barcode information ( step 350 ). alternatively , rather than adding preference order to data to each and every data item in the barcode information , device 200 may instead simply add a single section of textual data , such as at the beginning of the barcode information , to indicate an ordering of the data items that follow . if device 200 is not instructed to add a preference order to the barcode ( step 340 , no ), or after device 200 has added preference order information to the barcode , device 200 may then generate a graphical barcode pattern , such as barcode 410 , that encodes the barcode information , such as barcode information 420 . although depicted as a qr code in fig4 , barcode 410 may be any type of barcode such as a two - dimensional universal product code (“ upc ”) barcode ; a stacked barcode , such as a “ codablock ” or pdf 417 barcode , a high capacity color barcode , dataglyphs , etc . fig5 is a diagram depicting an exemplary device for reading and taking action in response to a multi - mode barcode , consistent with certain disclosed embodiments . device 500 may be essentially any kind of computing device capable of optically reading graphical bar code data ; decoding the graphical bar code data to derive bar code information ; and operating on that information by performing various operations such as one or more of displaying text or images , initiating a telephone call , sending a text message , accessing a webpage , playing audio or video content , etc . for example , device 500 may be a commercially available mobile device such as a mobile phone or smartphone with optical camera componentry and one or more software applications for decoding images of barcodes captured by the camera componentry . device 500 may further comprise one or more micro processors 510 of varying core configurations and clock frequencies ; one or more flash drives 520 of varying physical dimensions and storage capacities ; one or more random access memory ( ram ) modules 530 of varying clock frequencies and memory bandwidth ; one or more wireless transceivers 540 ; and one or more peripheral connections or interfaces 550 . device 500 may communicate with other devices via cellular wireless access , such as using code division multiple access (“ cdma ”), via wireless ethernet protocols , or via a serial wire interface such as usb , etc . fig6 is a flow diagram illustrating an exemplary method of reading and authenticating a multi - mode barcode , consistent with certain disclosed embodiments . in step 610 , scanning device 500 optically reads a barcode such as multi - mode bar code 710 . those skilled in the art will appreciate that device 500 may include functionality or logic for reading multiple types of barcodes and , for each type of barcode , determining whether the barcode is a multi - mode barcode , consistent with disclosed embodiments of this invention , or a conventional type of barcode . in step 620 , scanning device 500 decodes barcode 710 to translate the graphical patterns of the physical barcode into the information encoded within the barcode — e . g ., barcode information 720 — according to the standards of the relevant barcode type , for example using a dedicated barcode decoding software or hardware component . in step 630 , scanning device 500 , through analyzing barcode information 720 or otherwise , detects that barcode 710 is a multi - mode barcode , consistent with disclosed embodiments of the invention . for example , scanning device 500 may detect the presence of multiple distinct data items 722 - 727 of different types in barcode information 720 . alternatively , scanning device 500 may detect the presence of an identifier , such as identifier 721 , that indicates that barcode 710 is a multi - mode barcode . scanning device 500 may respond to the present of multiple data items in a number of different ways . in one embodiment , scanning device 500 may choose to perform an action specified by a data item according to the capabilities of the scanning device ( steps 640 and 650 ). for example , as depicted fig7 , barcode information 720 is encoded as xml encoded text containing separate xml elements representing separate data items 722 - 727 . data item 722 may represent a data item of type “ web_address ” in the form of a domain name . if device 500 is able to connect to the internet to access the webpage specified by the domain name ( and , e . g ., if the device is associated with an appropriate data plan for such internet access ), device 500 may elect to retrieve the specified webpage using standard hypertext transfer protocol (“ http ”) operations and display the webpage to the user on a screen or other output means . if scanning device 500 is not capable of accessing webpages , or if scanning device 500 is not associated with an appropriate data plan for such internet access , scanning device 500 may instead execute the action specified by data item 723 . that is , scanning device 500 may send a text message to the specified phone number that includes the text “ video clip of the day .” in response , scanning device 500 may receive a multimedia messaging service (“ mms ”) text message containing a video clip . because data item 723 is of the type “ mms_text_message ,” scanning device 500 may elect to take the action specified by data item 723 only if it is capable of receiving mms text messages . if scanning device 500 is not capable of receiving mms text messages , or if scanning device 500 is not associated with an appropriate data plan for mms text messages , scanning device 500 may instead execute the action specified by data item 724 . that is , scanning device 500 may send a text message to the specified phone number that includes the text “ upcoming events .” in response , scanning device 500 may receive a short message service (“ sms ”) text message containing plain text about upcoming events or other news . if scanning device 500 is not capable of receiving sms text messages , or if scanning device 500 is not associated with an appropriate data plan for sms text messages , scanning device 500 may instead execute the action specified by data item 725 . that is , scanning device 500 may initiate a standard voice telephone call to the telephone number specified by data item 725 . for example , the specified telephone number may provide pre - recorded news or product information , or may connect the user to a person capable of providing information or answering questions about the subject matter or author of the barcode . if scanning device 500 is not capable of initiating telephone calls , or if scanning device 500 is not associated with an appropriate service plan for telephone calls , scanning device 500 may instead execute the action specified by data item 726 . that is , scanning device 500 may play an audio clip , the contents of which are specified by the hexadecimal data provided by data item 726 . if scanning device 500 is not capable of decoding audio data or playing audio clips , scanning device 500 may instead execute the action specified by data item 727 . that is , scanning device 500 may simply display the textual data provided by data item 727 . although not depicted in fig7 , additional types of data items that may be encoded in a multi - mode barcode , consistent with this invention , include an email address to which to send an email ; an email message that may be sent to an email address of the scanning device &# 39 ; s or the user &# 39 ; s choosing ; contact details , such as a vcard ; an event that may be added to an electronic calendar ; an address or other location information that may be input into an electronic or mobile mapping program ; a link or other mechanism for enabling a user to make a purchase , donate to a cause , or otherwise effect monetary transactions ; a link or other mechanism to post or share an item using a social networking website or platform ; a video clip ; etc . as described above , scanning device 500 could elect to execute an action associated with a scanning device based on a capability of the scanning device . if scanning device 500 is capable of executing more than one type of data item included in the multi - mode barcode , scanning device may elect to execute the action associated with the richest type of data experience for the user . for example , scanning device 500 could be configured to always elect to access webpages , if specified by a multi - mode barcode , over other data communication actions , such as text messages or phone calls . scanning device 500 could also be configured to always elect to access resources that require data connectivity to other devices , such as receiving text messages or placing phone calls , over actions that involve purely local actions , such as playing audio or video clips or displaying text . scanning device 500 could also be configured to always elect to display or play media or multimedia , such as audio or video clips or pictures , over data items that specify only plain text to display . scanning device 500 may maintain an internal preference order indicating which types of data items should receive preference over which other types of data items in the event that multiple data items of different types are encoded in a multi - mode barcode , consistent with this invention . scanning device 500 may also allow a user to specify a preference order for data item types . for example , a user may instruct scanning device 500 to access webpages as a first preference , if a web address is specified by the barcode , and to display plain text as a second preference . the user may configure scanning device 500 to take actions specified by data items according to a simplest to most complex fashion , according to an order that will result in the lowest amount of data transfer that will charged against the user &# 39 ; s account , or according to media preference order ( e . g ., videos , whether through web access or as provided by the barcode , are to be preferred , over audio , which itself is to be preferred over images and over text ). scanning device 500 may also provide functionality for prompting the user to select which action to take when multiple types of data items are included in a multi - mode barcode . as depicted in fig7 , a multi - mode barcode itself may specify a preference order for its multiple data items . for example , multi - mode identifier 721 not only indicates that barcode is of type “ multi - mode ,” but also indicates that the actions specified by the following data items 722 - 727 have a preference ranking according to the order in which they occur in the barcode information 720 . alternatively , although not depicted in fig7 , barcode information 720 could provide a separate preference identifier for each data item 722 - 727 . scanning device 500 may detect the preference identifier 721 specified by barcode information 720 and execute the action specified by the first data item in the sequence of data items for which scanning device is capable of taking the specified action . scanning device 500 could also choose to ignore any preference information provided by barcode information 720 and elect instead to follow a preference order specified by scanning device 500 , such as a default device - specific preference order , a user - supplied preference order , or a real - time user indication of which action to take in response to a user prompt . in another embodiment , a barcode may include a data item that instructs the user &# 39 ; s scanning device to communicate with a separate external device , such as a server . the scanning device , after decoding the barcode , may communicate with the server and may indicate information specified by the barcode , such as a unique number or other identifier and / or information regarding the capabilities of the scanning device . in response , the server may transmit information back to the scanning device . for example , the server may present the scanning device , and thus the user , with a series of options for accessing various types of information , such as webpages , text message information , audio or video content , plain text , etc . the user may then select which type of data the user would like to access , or the scanning device may make a selection automatically for the user . alternatively , the server may determine one or more appropriate types of data to provide to the scanning device in accordance with the capabilities of the scanning device , and may send only those appropriate types of data back to the scanning device , or may present only those options to the scanning device . using this technique , a multi - mode barcode in accordance with the invention may indirectly specify multiple data types by providing an index or other kind of identifier in the barcode , and that index may be resolved by a separate server to specify the multiple actions specified by the barcode . also , using this technique , the author of the barcode , or the operator of the resolution server , may dynamically change the data items associated with a given barcode at a later time without having to modify the barcode itself . those skilled in the art will appreciate that , although described primarily in the context of barcodes for optical scanning , the present invention may be applied to any situation in which physical objects or phenomena in which machine - readable information has been encoded are converted to digital or electronic data by a scanning , listening , or other detection advice . for example , the present invention may be applied to information encoded within magnetic strips , audio signals , rfid signals , near field communication ( nfc ) signals , and other real - world “ hardlinks .” the foregoing description of the invention , along with its associated embodiments , has been presented for purposes of illustration only . it is not exhaustive and does not limit the invention to the precise form disclosed . those skilled in the art will appreciate from the foregoing description that modifications and variations are possible in light of the above teachings or may be acquired from practicing the invention . for example , the steps described need not be performed in the same sequence discussed or with the same degree of separation . likewise various steps may be omitted , repeated , or combined , as necessary , to achieve the same or similar objectives . accordingly , the invention is not limited to the above - described embodiments , but instead is defined by the appended claims in light of their full scope of equivalents .