Abbonati al feed o alla newsletter,
ovviamente è gratis.

Java - Tutorial sui Microsoft Tags

Per chi lavora con questi dispositivi o per chi ha letto un mio vecchio articolo questo sicuramente non sarà una novità, da un po' però MS sta rilasciando la compatibilità sempre su più cellulari.

Di conseguenza le opportunità di utilizzo si estendono e soprattutto nascono le prime librerie per essere utilizzate dai più svariati programmi. Oggi vedremo delle semplici e davvero molto intuitive librerie per integrare questo MSTag con i nostri programmi Java.

Prima di tutto abbiamo bisogno di un ambiente di sviluppo che supporti il jdk 1.6 (fortemente consigliato per diverse ragioni) e la libreria di base MSTag che risulta molto piccola e quindi utile anche per applicazioni da scaricare su dispositivi portabili o su applicazioni richiamabili da internet.


La libreria di base la trovate sul sito dello sviluppatore, vi consiglio ovviamente l'ultima versione. Prima di continuare date una lettura anche alla licenza di tipo MIT, ossia una GPL compatibile. Per maggiori informazioni guardate anche su Wikipedia.

Prima di iniziare e bene sapere che un Tag contiene delle informazioni, ma di che tipo? Attualmente possiamo trovare informazioni di varia natura:

  • URITag: contiene un indirizzo Web
  • FreeTextTag: contiene del testo libero
  • DialerTag: contiene un numero di telefono
  • VCardTag: contiene un biglietto da visita elettronico

Per utilizzare i MSTag è necessario registrarsi sul sito microsoft tag dove basta possedere un account hotmail e richiedere la chiave per generare i codici Tag (c'è un modulo sempre sul loro sito). la risposta generalmente è molto veloce da poche ore a un paio di giorni massimo.

Bene ora che abbiamo tutti i strumenti possiamo iniziare, l'esempio è stato preso e semplificato da quello presente sul sito di riferimento. Di fatto, utilizzerò solo i tag di tipo URI ci aggiungo le note e modifico leggermente dei metodi per renderlo riusabile come classe di interfaccia unica di appoggio a queste librerie. Ecco il codice completo:

import java.io.File;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

import net.suddenelfilio.ws.tag.BarcodeGenerationSettings;
import net.suddenelfilio.ws.tag.ImageTypes;
import net.suddenelfilio.ws.tag.MSTagService;
import net.suddenelfilio.ws.tag.TagDecorations;
import net.suddenelfilio.ws.tag.URITag;

public class TestMyTag
{

    /**
     * @param args
     */
    public static void main(String[] args)
    {
        TestMyTag tmt = new TestMyTag();
        
        tmt.setUp();
        URITag tag = tmt.createURITag();
        tmt.activateURITag(tag);
        tmt.createURITagImage(tag);
    }

    public URITag createURITag()
    {
        MSTagService svc = new MSTagService();

        URITag tag = new URITag();
        tag.CategoryName = "Main";
        tag.Title = "Ondare Blog";
        tag.MedFiUrl = "http://ondare.blogspot.com";
        Date now = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss");
        sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
        tag.UTCStartDate = sdf.format(now);

        try
        {
            String result = svc.Create(tag);
            System.out.println("createURITag : "+result);
        }
        catch (Exception e)
        {
            e.printStackTrace();
            return null;
        }
        
        return tag;
    }

    public boolean activateURITag(URITag tag)
    {
        if (tag == null)
            return false;

        MSTagService svc = new MSTagService();

        try
        {
            String result = svc.Activate(tag);
            System.out.println("activateURITag : "+result);
            return true;
        }
        catch (Exception e)
        {
            e.printStackTrace();
            return false;
        }
    }

    public boolean createURITagImage(URITag tag)
    {
        if (tag == null)
            return false;
        
        MSTagService svc = new MSTagService();

        BarcodeGenerationSettings settings = new BarcodeGenerationSettings();
        
        settings.CategoryName = tag.CategoryName;
        settings.TagTitle = tag.Title;
        settings.ImageType = ImageTypes.Jpeg;
        settings.Decoration = TagDecorations.HCCBRP_DECORATION_NONE;
        settings.Size = 0.75;

        try
        {

            byte[] barcode = svc.GenerateBarcode(settings);

            FileOutputStream fos = new FileOutputStream(System.getProperty("user.dir")+"/barcode.jpg");

            fos.write(barcode);
            fos.close();

            File f = new File(System.getProperty("user.dir")+"/barcode.jpg");
            System.out.println("createURITagImage : "+f.exists());
            
            return f.exists();
        }
        catch (Exception e)
        {
            e.printStackTrace();
            return false;
        }
    }
    
    protected void setUp()
    {
        MSTagService.SVCAPITOKEN = "<MY-PRIVATE-CODE-FROM-MICROSOFT>"; //codice privato assegnato da MS
    }
}
Okay, l'esempio risulta abbastanza semplice tuttavia porto alcune considerazioni sui diversi blocchi di codice per meglio spiegare funzioni e caratteristiche. Non ho usato un package di riferimento e ho anche minimizzato le classi importate per non appesantire inutilmente l'esempio, come vedete le classi della libreria MSTag usata fa riferimento al package net.suddenelfilio.ws.tag. Potete anche importare tutto il package ma trovo interessante "esploderli" e utilizzare sempre e solo el vere classi coinvolte.

import java.io.File;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

import net.suddenelfilio.ws.tag.BarcodeGenerationSettings;
import net.suddenelfilio.ws.tag.ImageTypes;
import net.suddenelfilio.ws.tag.MSTagService;
import net.suddenelfilio.ws.tag.TagDecorations;
import net.suddenelfilio.ws.tag.URITag;

public class TestMyTag
{

// Codice tolto solo per spiegazione

}
Il metodo createURITag è molto semplice e si presta per essere implementato, per esempio accettando in ingresso il tipo di Tag da creare (URI, vCard, FreeText o Dialer):


public URITag createURITag()
    {
        MSTagService svc = new MSTagService();

        URITag tag = new URITag();
        tag.CategoryName = "Main";
        tag.Title = "Ondare Blog";
        tag.MedFiUrl = "http://ondare.blogspot.com";
        Date now = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss");
        sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
        tag.UTCStartDate = sdf.format(now);

        try
        {
            String result = svc.Create(tag);
            System.out.println("createURITag : "+result);
        }
        catch (Exception e)
        {
            e.printStackTrace();
            return null;
        }
        
        return tag;
    }

Col metodo precedente abbiamo quindi creato il tag, una volta che questo avviene correttamente creato è necessario attivarlo, questo viene fatto tramite la classe MSTagService che eseguirà una chiamata (tramite l'indirizzo http://tag.ws.suddenelfilio.net/mstagrest.svc/ ) al servizio MS.


    public boolean activateURITag(URITag tag)
    {
        if (tag == null)
            return false;

        MSTagService svc = new MSTagService();

        try
        {
            String result = svc.Activate(tag);
            System.out.println("activateURITag : "+result);
            return true;
        }
        catch (Exception e)
        {
            e.printStackTrace();
            return false;
        }
    }

Di fatto il nostro Tag se l'attivazione è avvenuto correttamente, risulta presente nel repository della MS. Infatti, se ci colleghiamo sul sito tag.microsoft.com troviamo nella categoria "Main" il tag "Ondare Blog". Di fatto il tag è quindi registrato e utilizzabile, se vogliamo possiamo creare


    public boolean createURITagImage(URITag tag)
    {
        if (tag == null)
            return false;
        
        MSTagService svc = new MSTagService();

        BarcodeGenerationSettings settings = new BarcodeGenerationSettings();
        
        settings.CategoryName = tag.CategoryName;
        settings.TagTitle = tag.Title;
        settings.ImageType = ImageTypes.Jpeg;
        settings.Decoration = TagDecorations.HCCBRP_DECORATION_NONE;
        settings.Size = 0.75;

        try
        {

            byte[] barcode = svc.GenerateBarcode(settings);

            FileOutputStream fos = new FileOutputStream(System.getProperty("user.dir")+"/barcode.jpg");

            fos.write(barcode);
            fos.close();

            File f = new File(System.getProperty("user.dir")+"/barcode.jpg");
            System.out.println("createURITagImage : "+f.exists());
            
            return f.exists();
        }
        catch (Exception e)
        {
            e.printStackTrace();
            return false;
        }
    }

Come vedete è possibile specificare il formato dell'immagine da creare e come "decorare" il tag, per la precisione:

Formati file disponibili: (Classe ImageTypes) Jpeg, Gif, Png, Pdf, Tiff, Wmf.

1) Decorazione immagine: TagDecorations.HCCBRP_DECORATION_NONE

Viene visualizzata solo l'immagine del Tag.



2) Decorazione immagine: TagDecorations.HCCBRP_DECORATION_FRAMEPLAIN

Oltre all'immagine del Tag, vengono riportate anche le istruzioni testuali e il sito da cui scaricare l'applicativo per la lettura da dispositivo mobile.



3) Decorazione immagine: TagDecorations.HCCBRP_DECORATION_DOWNLOAD

Oltre all'immagine del Tag, vengono riportate anche le istruzioni testuali e grafiche e il sito da cui scaricare l'applicativo per la lettura da dispositivo mobile. Come dimensioni risulta un compromesso fra i due precedenti.



 

C'è anche un metodo che si chiama setUp() che di fatto serve solo per impostare il codice assegnatovi da MSTag, quindi per rendere funzionante tutto l'esempio nel metodo è necessario sostituire il testo presente fra doppi apici proprio con la stringa inviatovi via email.

    protected void setUp()
    {
        MSTagService.SVCAPITOKEN = "<MY-PRIVATE-CODE-FROM-MICROSOFT>"; //codice privato assegnato da MS
    }
Ma ora che abbiamo generato il codice come possiamo testarlo? Semplice basta collegarsi - ad esempio - tramite un cellulare che abbia una fotocamera integrata al sito gettag.mobi (sito Microsoft) e automaticamente verrà scaricata l'applicazione.

Dalle prove mi sono stupito dalla velocità di acquisizione, davvero interessante soprattutto perché è possibile acquisirlo in movimento (sena correre mi raccomando), da angolazioni non proprio perpendicolari e soprattutto non dovendo eseguire fastidiosi zoom o elaborazioni dell'immagine.

Se non volete generare un codice ma volete verificare la compatibilità del vostro cellulare una volta installato l'applicazione sul cellulare scansionate l'immagine dell'articolo (richiama a un sito sicuro.. questo!)

Buona scansione!

Collegamenti esterni: Microsoft Tag | Librerie MSTagJava | Gettag (Per dispositivi Mobile) | Licenza MIT (Wikipedia)

Pubblicato da: nickel il martedì 15 giugno 2010 alle 10:38
Argomenti: Freeware, Informatica, Java, Microsoft, tags, Tutorial, web2.0
 

Post più recente Post più vecchio Home page

ondare

là, quando ondando vanno le campane

Link List 2

  • AdSense
  • Android
  • Apple
  • Arte
  • Attualità
  • blockUI
  • blog
  • Email
  • Fax
  • Feste
  • Festività
  • Film
  • FloatingDialog
  • Free
  • Freeware
  • Giochi
  • Google
  • Graffiti
  • idTabs
  • Impresa
  • Informatica
  • Java
  • jNice
  • jQuery
  • jTruncate
  • Libri
  • Lightbox
  • Marketing
  • Masterizzare
  • Medicina
  • Microsoft
  • nofollow
  • Notizie
  • Olocausto
  • Opensource
  • PHP
  • progressBar
  • Recensioni
  • Running
  • Salute
  • SEO
  • Sicurezza
  • Skype
  • Sports
  • Storia
  • tags
  • Torino
  • Traduttore
  • Tutorial
  • Varie
  • Video
  • Voip
  • web2.0
  • Webdesign

Link List 1

  • AdSense
  • Android
  • Apple
  • Arte
  • Attualità
  • blockUI
  • blog
  • Email
  • Fax
  • Feste
  • Festività
  • Film
  • FloatingDialog
  • Free
  • Freeware
  • Giochi
  • Google
  • Graffiti
  • idTabs
  • Impresa
  • Informatica
  • Java
  • jNice
  • jQuery
  • jTruncate
  • Libri
  • Lightbox
  • Marketing
  • Masterizzare
  • Medicina
  • Microsoft
  • nofollow
  • Notizie
  • Olocausto
  • Opensource
  • PHP
  • progressBar
  • Recensioni
  • Running
  • Salute
  • SEO
  • Sicurezza
  • Skype
  • Sports
  • Storia
  • tags
  • Torino
  • Traduttore
  • Tutorial
  • Varie
  • Video
  • Voip
  • web2.0
  • Webdesign
  • no image Blog - aggregatori web sono gioie o dolori?
  • Android AVD lento? Mettigli le ali col RAMDisk Android AVD lento? Mettigli le ali col RAMDisk
  • no image Internet - Libertà e sicurezza nella rete? Amore e odio.
  • no image Freeware - Codec unico per film e video: CCCP
  • no image Oops, il Natale si avvicina..
  • no image Colpire il presidente, si può... e non è il primo attentato!
  • no image Capodanno Due Zero Zero Nove
  • no image Salute - AIDS / HIV: anche i virus tremano
  • no image jQuery: slideshow su blogger? semplice e implementabile!
  • no image Blog - essere o non essere nofollow questo è il dilemma!
  • Home page

Link List 4

  • AdSense
  • Android
  • Apple
  • Arte
  • Attualità
  • blockUI
  • blog
  • Email
  • Fax
  • Feste
  • Festività
  • Film
  • FloatingDialog
  • Free
  • Freeware
  • Giochi
  • Google
  • Graffiti
  • idTabs
  • Impresa
  • Informatica
  • Java
  • jNice
  • jQuery
  • jTruncate
  • Libri
  • Lightbox
  • Marketing
  • Masterizzare
  • Medicina
  • Microsoft
  • nofollow
  • Notizie
  • Olocausto
  • Opensource
  • PHP
  • progressBar
  • Recensioni
  • Running
  • Salute
  • SEO
  • Sicurezza
  • Skype
  • Sports
  • Storia
  • tags
  • Torino
  • Traduttore
  • Tutorial
  • Varie
  • Video
  • Voip
  • web2.0
  • Webdesign

Link List 3

  • AdSense
  • Android
  • Apple
  • Arte
  • Attualità
  • blockUI
  • blog
  • Email
  • Fax
  • Feste
  • Festività
  • Film
  • FloatingDialog
  • Free
  • Freeware
  • Giochi
  • Google
  • Graffiti
  • idTabs
  • Impresa
  • Informatica
  • Java
  • jNice
  • jQuery
  • jTruncate
  • Libri
  • Lightbox
  • Marketing
  • Masterizzare
  • Medicina
  • Microsoft
  • nofollow
  • Notizie
  • Olocausto
  • Opensource
  • PHP
  • progressBar
  • Recensioni
  • Running
  • Salute
  • SEO
  • Sicurezza
  • Skype
  • Sports
  • Storia
  • tags
  • Torino
  • Traduttore
  • Tutorial
  • Varie
  • Video
  • Voip
  • web2.0
  • Webdesign


In evidenza

Ti è piaciuto qualcosa del mio blog?
Hai trovato degli articoli interessanti?

Allora perché non fai una donazione? ad esempio a una di queste organizzazioni:

Ultimi articoli e commenti

Ultimi commenti

Argomenti

  • Arte (1)
  • Attualità (10)
  • Film (2)
  • Free (9)
  • Informatica (24)
  • Notizie (7)
  • Recensioni (10)
  • Salute (4)
  • Storia (1)
  • Tutorial (10)
  • Varie (21)

Contattami

Se avete suggerimenti, consigli, segnalazioni di errori o semplicemente mi volete scrivere.. potete farlo a
QUESTO INDIRIZZO

Oppure se volete potete leggervi qualcosa in più su questo sito e in particolare
SU DI ME

Qualcosa da leggere

  • PHP - Sicurezza: Captcha e le macchine ribelli!
  • jQuery: slideshow su blogger? semplice e implementabile!
  • jQuery - lightBox e Blogger anche in galleria
  • Android AVD lento? Mettigli le ali col RAMDisk
  • Java - Tutorial sui Microsoft Tags
  • Internet - Libertà e sicurezza nella rete? Amore e odio.
  • Freeware - Codec unico per film e video: CCCP
  • Freeware - Masterizzare gratuitamente.. sempre!
  • SEO - Le varie emozioni del Web(design)
  • Disqus - il commento conviene

Da non perdere


www.dizionariodellacorsa.it

2008-2012 / ondare.org, theme designed and pimped by nickel / Ondare Blog

Vuoi abbonarti tramite feed?
Vuoi pubblicare un tuo articolo?
Vuoi aggiornarti tramite email?
Vuoi inviare dei suggerimenti?

Vuoi tornare alla pagina principale?
Vuoi collaborare con ondare?
Vuoi scaricare l'antipixel?
Vuoi conoscermi meglio?