ComputerLand

Tu sei qui: Articoli

Notizie dal web

Guest post: Microsoft Translator, traduzioni automatiche (o quasi) semplici

E-mail Stampa PDF

Questo Guest Post è stato scritto da Massimo Bonanni, MVP Visual Basic Development

Introduzione

In questo post vorrei occuparmi di Microsoft Translator, la piattaforma che Microsoft mette a disposizione per la traduzione automatica (o quasi) di testi.

Prima di entrare nel vivo dell’aspetto tecnico, vorrei cercare di individuare quali sono gli scenari in cui Microsoft Translator, ed in genere la traduzione automatica, può avere senso.

Microsoft Translator non ha lo scopo di sostituire un traduttore professionale e il suo obiettivo è quello di favorire la comunicazione e la comprensione di testi scritti in una lingua da parte di chi quella lingua non la parla. Tale comprensione può avvenire anche con una traduzione non accuratissima come accade per i traduttori automatici.

Scenari adattissimi al’utilizzo di Microsoft Translator sono, quindi, quelli dei blog, dei siti tecnici o delle news.

Se abbiamo, bisogno invece, di fornire contenuti in lingua straniera in cui la sola comprensione non basta ma serve incisività e dettaglio di traduzione (ad esempio campagne di marketing o contenuti altamente professionali), dovremo, evidentemente, ricorrere al buon traduttore umano.

Gli Strumenti

Abbiamo due possibili strumenti a disposizione:

  • il web widget
  • le API (JSON, REST o SOAP)

Il web widget è un controllo web (un pezzo di codice HTML) che i web master possono inserire nel proprio sito e che consente tradurre la pagina.

Le API, invece, sono dei web services che lo sviluppatore (di un sito web, di una applicazione desktop o, perchè no, di una applicazione mobile) può richiamare per ottenere dei servizi di traduzione.

Il web Widget

Il web widget, come detto in precedenza, permette, in maniera semplice ed immediata, la traduzione delle nostre pagine semplicemente inserendo uno snippet di codice all’interno del nostro HTML.

La versione base del widget è utilizzabile senza registrazioni di sorta, mentre per le funzioni avanzate dello stesso è necessario registrarsi (gratuitamente). L’utilizzo del Widget è, comunque, gratuito (Microsoft mette il suo logo nell’HTML e “sfrutta” la visibilità).

Per configurare ed ottenere l’HTML necessario alla visualizzaione del widget è sufficiente andare all’indirizzo http://www.microsofttranslator.com/widget/.

La pagina di generazione dello snippet è molto semplice, come mostrato nella seguente figura:

clip_image002[1]

Per ottenere l’HTML da inserire nel nostro sito, è sufficiente:

  1. inserire l’indirizzo del sito che si intende tradurre;
  2. inserire la lingua del sito;
  3. configurare il tipo di traduzione tra manuale, notifica e automatica:
    1. manuale: nella nostra pagina apparirà il widget e sarà l’utente, se vorrà, a tradurre il contenuto premendo il tasto apposito;
    2. notifica: all’utente verrà notificato (tramite una bar ra in alto nella pagina) del fatto che è possibile tradurre il contenuto e sarà, comunque, lui a tradurlo se vuole;
    3. automatica : il contenuto verrà automaticamente tradotto nella lingua dell’utente che visita il sito e questo potrà, se vuole, vedere il contenuto originale;
  4. scegliere colore e dimensione del widget
  5. accettare i termini di utilizzo
  6. generare l’HTML da inserire nel proprio sito.

La seguente pagina mostra come si presenta il widget all’interno di una pagina web:

clip_image004[1]

In realtà il widget è formato di due controlli: uno è quello indicato nella precedente figura mentre l’altro è costituito da una barra orizzontale che compare in alto nella pagina e che segnala lo stato di avanzamento della traduzione o la notifica della stessa:

clip_image006[1]

Se non eseguiamo modifiche al nostro HTML, tutto il contenuto viene tradotto. Se vogliamo evitare che parte del nostro contenuto sia tradotto, è sufficiente inserire nel tag da non tradurre l’attributo custom translate=on oppure la classe di stile notranslate.

La pagina tradotta (sia in automatico che in manuale) ha la peculiarità di permettere la visualizzazione del contenuto originale semplicemente passando il cursore al di sopra dello stesso.

clip_image008[1]

Il widget permette di abilitare anche la funzionalità di traduzione collaborativa. Questa funzionalità consente agli utenti definiti come contributors di suggerire delle traduzioni alternative a quela automatica.

Per attivare questa funzionalità è necessario loggarsi alla pagina del widget tramite il proprio live id,e inserire il codice di invito che si può richiedere all’indirizzo: http://go.microsoft.com/?linkid=9713557&ProgramID=4678&SurveyID=10539

Una volta ricevuto il codice di invito si può accedere al pannello di attivazione della traduzione collaborativa. Questo richiede l’access token di Bing di cui parleremo in seguito e permette di abilitare le traduzioni automatiche alla revisione degli utenti.

clip_image009[1]

Gli utenti possono proporre o modificare le traduzioni alternative (loggandosi con il proprio liveid) ma solo il web master può moderarle. Quest’ultimo può abilitare alla moderazione anche altri utenti utilizzando l’apposito pannello di controllo.

clip_image010[1]

L’invito avviene tramite un link inviato tramite mail ed ha una scadenza temporale ben definita.

Attivare la suttoscrizione a Microsoft Translator

Per poter utilizzare le funzionalità di Microsoft Translator è necessario sottoscrivere un abbonamento sull’Azure Data Marketplace (https://datamarket.azure.com/dataset/1899a118-d202-492c-aa16-ba21c33c06cb) utilizzando il proprio LiveId.

clip_image012[1]

Abbiamo a disposizione numerose offerte tra cui una gratuita che permette di avere 2000 traduzioni mensili. Oltre le 2000 traduzioni mensili è necessario un abbonamento a pagamento. Per grossi volumi di traduzioni si può contattare il supporto clienti per offerte specifiche.

Una volta che abbiamo sottoscritto un abbonamento (per le prove va benissimo quello gratuito), dobbiamo registrare la nostra applicazione all’indirizzo https://datamarket.azure.com/developer/applications/.

clip_image014[1]

Il tasto Register permette di registrare una nuova applicazione:

clip_image016[1]

Il client id ed il nome dell’applicazione sono obbligatori, la descrizione è facoltativa mentre, nel caso del Translator, ll Redirect URI non è utilizzato (anche se va inserito). Il clientId identifica la nostra applicazione e la sua scelta è a nostra discrezione.

Autenticazione

I servizi esposti da Microsoft Translator prevedono due possibili modi per autenticarsi: uno di tipo “legacy” (sfruttando l’autenticazione già esistente nei vecchi servizi di Bing) e uno oAuth.

Microsoft Translator è, di fatto, il successore di Bing Translator e, per tale motivo, prevede una autenticazione basata su appId come per tutti i servizi Bing (vedere il post http://codetailor.blogspot.com/2009/08/integrare-le-funzionalita-di-bing-nei.html per dettagli su come creare una appId).

Tutti i singoli metodi SOAP, le chiamate Http o Ajax prevedono, infatti, un argomento appId che contiene, appunto, il valore generato dal sito Bing per developer.

Oltre a questa modalità, Microsoft Translator prevede anche una autenticazione di tipo oAuth.

oAuth (Open Authorization) è, in parole povere, uno standard per l'autorizzazione che permette agli utenti di condividere le loro risorse private (ad esempio, foto, video, liste di contatti) memorizzati su un sito con un altro sito senza dover consegnare a quest’ultimo le credenziali.

Il meccanismo è, quello di recuperare un access token (con una scadenza precisa) da Microsoft Translator ed utilizzarlo per la/le successive richieste al server.

Per recuperare l’access token è sufficiente eseguire una richiesta POST all’indirizzo:

https://datamarket.accesscontrol.windows.net/v2/OAuth2-13.

utilizzando i seguenti dati di POST:

grant_type=client_credentials&client_id={clientId}&client_secret={clientSecret}=&scope=http://api.microsofttranslator.com

dove clientId e clientSecret sono i valori presenti nella pagina di registrazione dell’applicazione vista in precedenza. La risposta del server è di tipo JSON, e si presenta in questo modo:

{"access_token":"http%3a%2f%2fschemas.xmlsoap.org%2fws%2f2005%2f05%2fidentity%2fclaims%2fnameidentifier=TestTranslator1&http%3a%2f%2fschemas.microsoft.com%2faccesscontrolservice%2f2010%2f07%2fclaims%2fidentityprovider=https%3a%2f%2fdatamarket.accesscontrol.windows.net%2f&Audience=http%3a%2f%2fapi.microsofttranslator.com&ExpiresOn=1322642739&Issuer=https%3a%2f%2fdatamarket.accesscontrol.windows.net%2f&HMACSHA256=e%2bwcAA%2b53YAHGyNyKdoGWV6x7k1Ench7EG3vuiaJIK0%3d", "token_type":"http://schemas.xmlsoap.org/ws/2009/11/swt-token-profile-1.0", "expires_in":"599", "scope":"http://api.microsofttranslator.com"}

La classe riportata di seguito espone un metodo per recuperare l’access token a partire dal clientId e dal secretClient:

Public Class TranslatorTokenService
Private Const AccessControlUri As String = "https://datamarket.accesscontrol.windows.net/v2/OAuth2-13"
Private Function GetAccessControlPostData(clientId As String, clientSecret As String) As String
Return String.Format("grant_type=client_credentials&client_id={0}&client_secret={1}&scope=http://api.microsofttranslator.com", clientId, HttpUtility.UrlEncode(clientSecret))
End Function

Public Function GetAccessToken(clientId As String, clientSecret As String) As AccessToken
Dim request As WebRequest = CreateRequest(clientId, clientSecret)
Try
Dim response = request.GetResponse()
If response Is Nothing Then Return Nothing
Dim serializer = New DataContractJsonSerializer(GetType(AccessToken))
Dim token = CType(serializer.ReadObject(response.GetResponseStream()),AccessToken)
Return token
 Catch ex As Exception
Throw
End Try
Return Nothing
End Function

Private Function CreateRequest(clientId As String, clientSecret As String) As WebRequest
Dim request = WebRequest.Create(AccessControlUri)
request.ContentType = "application/x-www-form-urlencoded"
request.Method = "POST"
Dim bytes = Encoding.ASCII.GetBytes(GetAccessControlPostData(clientId, clientSecret))
request.ContentLength = bytes.Length
Try
Using os As Stream = request.GetRequestStream()
os.Write(bytes, 0, bytes.Length)
End Using
Catch ex As Exception
Throw
End Try
Return request
End Function
End Class

La classe AccessToken contiene i dati relativi al token recuperato:

<DataContract()>

Public Class AccessToken

<DataMember(Name:="access_token")>

Public Property Token As String

<DataMember(Name:="token_type")>

Public Property Type As String

<DataMember(Name:="expires_in")>

Public Property Duration As Integer

<DataMember(Name:="scope")>

Public Property Scope As String

End Class

Gli attributi DataContract() e DataMember() permettono la deserializzazione dal formato JSON.

Le API

Le funzionalità di Microsoft Translator sono esposte con tre diversi protocolli:: Ajax, Http e Soap.

La modalità Ajax è adatta per un utilizzo all’interno di pagine Web, mentre le altre due hanno il loro naturale utilizzo in tutti gli altri scenari.

La modalità ; Http prevede chiamate GET o POST a seconda delle funzionalità richieste (ad esempio la traduzione di un testo è una chiamata GET mentre il metodo per recuperare le descrizioni delle lingue di traduzione è una chiamata POST) ed è indicata nell’utilizzo con quei linguaggi in cui non è semplice l’interazione con web services.

Le API Soap, infine, sono delle classiche chiamate a Web Services.

I metodi messi a disposizione sono i seguenti:

AddTranslation

Permette di suggerire un traduzione alternative per un testo.

AddTranslationArray

Permette di suggerire un insieme di traduzioni alternative per un insieme di testi.

BreakSentences

Consente di suddividere la stringa in ingress in single frasi.

Detect

Esegue il riconoscimento della lingua di un testo.

DetectArray

Esegue il riconoscimento della lingua di un insieme di testi.

GetAppIdToken

Restituisce l’appId da utilizzare nelle chiamate ai servizi.

GetLanguageNames

Recupera l’elenco delle lingue supportate dal Translator.

GetLanguagesForSpeak

Recupera l’elenco delle lingue supportate dal Translator per la sintesi vocale.

GetLanguagesForTranslate

Recupera l’elenco dei codici delle lingue supportate dal Translator.

GetTranslations

Restituisce un elenco di traduzioni alternative per un testo.

GetTranslationsArray

Restituisce un elenco di traduzioni alternative per un insieme di testi.

Speak

Restituisce l’url (in caso di Ajax o Soap) o lo stream (in caso di Http) del file wave con la pronuncia della traduzione di un testo in un lingua.

Translate

Esegue la traduzione da un lingua ad un’altra di un testo passato come parametro.

TranslateArray

Esegue la traduzione da un lingua ad un’altra di un insieme di testi passati come parametro.

Nell’esempio che vedremo in questo post utilizzeremo il protocollo Soap ed in particolare creeremo un metodo per tradurre un testo da una lingua ad un altra e un metodo per recuperare il file wave della pronuncia di un testo.

Per prima cosa referenziamo il web service Soap il cui url è:

http://api.microsofttranslator.com/V2/Soap.svc

utilizzando il menù “Add Service Reference” di Visual Studio:

clip_image017[1]

Possiamo, ad esempio, richiedere la traduzione di un testo attraverso l’uso del metodo:

Function Translate(appId As String, text As String, from As String, to As String, contentType As String, category As String) As String

Un esempio di utilizzo di questo metodo è:

Public Function Translate(sourceText As String,
sourceLanguage As String,
targetLanguage As String) As String
Dim targetText As String
Try
' Aggiungo l'header oAuth
Dim httpRequestProperty = New HttpRequestMessageProperty()
httpRequestProperty.Method = "POST"
httpRequestProperty.Headers.Add("Authorization", String.Format("Bearer {0}", AccessToken.Token))
Using scope = New OperationContextScope(_MTService.InnerChannel)
OperationContext.Current.OutgoingMessageProperties(HttpRequestMessageProperty.Name) = httpRequestProperty
' Eseguo la chiamata al servizio
targetText = _MTService.Translate("", sourceText, sourceLanguage, targetLanguage, "text/plain", "general")
End Using
Catch ex As Exception
Throw
End Try
Return targetText
End Function

_MTService è un’istanza del proxy generato tramite il menù “Add Service Reference”.

Possiamo osservare che, prima di eseguire l’effettiva chiamata al metodo Translate, viene riempito l’header oAuth con il token recuperato dal server. In questo caso il campo appId del metodo Translate viene lasciato vuoto (non è necessario se si utilizza l’autenticazione oAuth).

SourceLanguage e TargetLanguage sono i codici, rispettivamente, della lingua di partenza e di destinazione. L’elenco delle lingue a disposizione per le traduzioni è recuperabile tramite il metodo GetLanguagesForTranslate o all’indirizzo http://msdn.microsoft.com/en-us/library/hh456380.aspx

In questo caso si è scelto come ContentType “text/plain” (ma pu&ogr ave; anche essere “text/html”) e Category “general” (attualmente l’unica supportata).

Interessante l’utilizzo del metodo Speak per recuperare l’url del file wave contenente la pronuncia di un testo. Nel seguente metodo vediamo come utilizzarlo, questa volta scegliendo l’autenticazione “

Public Function GetSpeakAudioUrl(text As String, targetLanguage As String) As String
Dim speakUrl As String
Try
speakUrl = _MTService.Speak("MyApp", text, targetLanguage, "audio/wav", Nothing)
Catch ex As Exception
Throw
End Try
Return speakUrl
End Function

Conclusioni

La piattaforma di traduzione automatica Microsoft fornisce interessanti funzionalità per tutti quegli scenari in cui una traduzione automatica, con tutte le limitazioni del caso, può essere utilizzata tranquillamente (news, blog, documentazione tecnica). I contenuti tradotti automaticamente possono, poi, essere arricchiti da contributors che possono migliorare il risultato. Il tutto in maniera molto semplice e soprattutto con un ventaglio di protocolli che la rendono fruibile anche da linguaggio non Microsoft.


read full article

Le novità di inizio anno per Windows Phone

E-mail Stampa PDF

Ecco alcune novità del mondo Windows Phone di inizio anno:

  • Nuovi paesi comportano nuove responsabilità Sorriso
    Il Marketplace di Windows Phone si sta allargando sempre di più, e per tre di questi paesi (Cina, Indonesia e Malesia) ci sono nuovi requisiti. Per maggiori informazioni potete leggere tutto qui.
  • Laboratori su Windows Phone
    Oltre ai Laboratori di Roma (18 Gennaio) e Milano (durante i Community Days) stiamo organizzando per febbraio un laboratorio a Napoli, e altri arriveranno in altre città. Stay tuned!
    Per partecipare ai laboratori vi ricordo che dovete venire con il portatile, e con il Windows Phone 7.1 SDK e il client di Zune installati. Se avete il vostro Windows Phone portatelo, se no vi presteremo noi un fantastico Nokia Lumia 800 per tutto il lab, e se siete bravi anche oltre!
  • Vincitore estrazione del concorso Vinci con Windows Phone
    Prima di Natale c'è stata la sesta estrazione del concorso Vinci con Windows Phone  e ha vinto l'applicazione BestItalianCuisine. E voi cosa aspettate a partecipare?
  • Prestito device Windows Phone
    Molti sviluppatori ci chiedono come poter provare le loro applicazioni su telefoni reali e non sull'emulatore. In collaborazione con Nokia abbiamo a disposizione molti Lumia 800 da prestare agli sviluppatori che stanno per pubblicare la loro applicazione sul Marketplace. Per maggiori informazioni e per presentarci le applicazioni che avete in sviluppo potete scrivere a Questo indirizzo e-mail è protetto dallo spam bot. Abilita Javascript per vederlo.  
  • Nuovi giochi per Windows Phone
    Visto che non si vive di solo codice, volevo segnalarvi anche una serie di nuovi giochi di prossima uscita per Windows Phone! Buon divertimento!

read full article

ASP.NET Security Update:importante

E-mail Stampa PDF

E' disponibile un aggiornamento importante per la sicurezza di siti che utilizzano ASP.NET.

Il security update (MS11-100) è stato rilasciato ed è disponibile in modo automatico via Windows Update, Windows Server Update e dal download center di Microsoft. Trovate i link direttamente nel security update che vi ho indicato, oppure consultando l'articolo KB2638420 trovate il link diretto per il download a seconda delle varie versioni del framework .NET e sistema operativo usato.

Questo security update è stato rilasciato il 29 Dicembre e risolve un problema presente in tutte le versioni di ASP.NET.

Il 28 Dicembre durante una conferenza sulla sicurezza è stata mostrata una tecnica per compromettere strutture dati di tipo hash-table usate da diversi framework web, tra cui anche ASP.NET. Questo tipo di attacco non è specifico di un linguaggio di programmazione o di un particolare sistema operativo ed è noto come "hash collision attack". Un attacco di questo tipo può portare a bloccare l'utilizzo del server causando il noto "denial of service" (DoS), poiché il server non è più responsivo alle richieste http che arrivano.

Il consiglio è di installare l'aggiornamento anche se non sono stati riportati attacchi di questo tipo e in caso di problemi di consultare il forum dedicato. E' inoltre possibile seguire tutte le ultime informazioni seguendo MSRC team su Twitter at @MSFTSecResponse.


read full article

Buone feste da MSDN Italia

E-mail Stampa PDF

Tanti auguri a tutti da MSDN Italia! Torneremo a tempo pieno a partire dal 9 di gennaio, con tante iniziative su Kinect, Windows, Windows Phone, Web, Windows Azure, i giochi, gli eventi, i lab, il tour in giro per l'Italia, etc: etc:

Mi raccomando, se non sapete cosa fare durante le vacanze potete studiare o ripassare, o potete sviluppare applicazioni per Windows Phone e partecipare al concorso che mette ancora in palio migliaia di euro in buoni acquisto MediaWorld.

image

-Lorenzo e il team di MSDN Italia


read full article

Video su SharePoint 2010 per sviluppatori ASP.NET

E-mail Stampa PDF

SharePoint 2010 è un'incredibile piattaforma applicativa, molto utilizzata in ambito enterprise.

Ogni sviluppatore ASP.NET vi si può avvicinare e l'integrazione con Visual Studio 2010 dell' ambiente di sviluppo ne rende facile l'utilizzo.

In questi video fatti da Giuseppe Marchi, Microsoft MVP, scoprirete tutto quello che serve per svilupparci e capire la piattaforma.

Buona visione


read full article

Guest post: I nuovi launcher e chooser di Windows Phone 7.5

E-mail Stampa PDF

Questo Guest Post è stato scritto da Matteo Pagani, MVP Device Application Development

La versione 7.1 dell’SDK di Windows Phone (quella che consente di sviluppare applicazioni per Mango, ormai conosciuto con il nome ufficiale di Windows Phone 7.5) non ha introdotto solamente nuove API e nuove feature (come il Fast Application Switching o i background agents), ma ha anche espanso le funzionalità già esistenti.

E’ il caso dei launcher e chooser: oltre a quelli già presenti nella versione 7.0, ne abbiamo infatti di nuovi, che aprono nuovi scenari per le nostre applicazioni.

Ma facciamo un passo indietro e vediamo brevemente cosa sono i launcher e i chooser: le applicazioni Windows Phone girano in una sorta di sandbox, ovvero isolate l’una dall’altra. Questo significa che non hanno modo di accedere l’una ai dati dell’altra: questo vale ovviamente anche per le applicazioni native.

Per dare perciò la possibilità agli sviluppatori di interagire con il sistema sono stati creati i launcher e i chooser, ovvero dei meccanismi per demandare al sistema operativo stesso l’interazione con le applicazioni native. Questo significa che quando useremo una di queste API la nostra applicazione verrà sospesa, lasciando il controllo a quella nativa.

Che differenza c’è tra queste due tipologie? I launcher vengono utilizzati quando non ci sono informazioni di ritorno da restituire alla nostra applicazione, ma vogliamo semplicemente demandare un’operazione al sistema (ad esempio, la visualizzazione di una mappa); i chooser, invece, servono nel caso in cui è necessario importare dei dati da un’applicazione nativa verso la nostra (ad esempio, una foto o un contatto).

Già dalla versione 7.0 il numero di launcher e chooser disponibili era piuttosto nutrito: grazie ad essi era possibile importare foto dall’hub Pictures, contatti dall’hub People, spedire mail o sms, lanciare una ricerca sul Marketplace o su Bing, ecc. Potete leggere qui una panoramica sui launcher e qui sui chooser disponibili già dalla versione 7.0 di Windows Phone.

Tutti i launcher e chooser condividono la medesima struttura: si crea una nuova instanza di una delle classi facenti parte del namespace Microsoft.Phone.Tasks, si valorizzano una o più proprietà che servono per definire le informazioni richieste dal launcher / chooser e si chiama il metodo Show, che lo esegue.

Nel caso dei chooser solitamente occorre registrarsi anche ad un evento asincrono Completed, che viene scatenato nel momento in cui il chooser ha terminato il suo compito e dobbiamo recuperarne i dati restituiti.

Nel resto dell’articolo ci concentreremo solo sui nuovi launcher e chooser introdotti in Mang o, tralasciando quelli per la condivisione sui social network che sono già stati trattati da Lorenzo in un post precedente.

I launcher

Bing Maps Direction Task

L’applicazione Maps di Windows Phone, come saprete, offre la possibilità di calcolare il percorso da percorrere per raggiungere un determinato luogo.

Questo launcher vi permette di lanciare una ricerca di questo tipo dalla vostra applicazione, semplicemente specificando il punto di partenza e quello di arrivo. Vediamo un esempio:

  BingMapsDirectionsTask task = new BingMapsDirectionsTask

                                              {

                                                  Start = new LabeledMapLocation(StartAddress.Text, null),

                                      &nb sp;           End = new LabeledMapLocation(EndAddress.Text, null)

                                              };

            task.Show();

 

La classe BingMapsDirectionsTask espone due proprietà, Start e End, che rappresentano rispettivamente il punto di partenza e il punto di arrivo del nostro percorso. Entrambe le proprietà sono di tipo LabeledMapLocation e, in fase di inizializzazione, possiamo specificare due parametri:

  • ·         L’indirizzo, sotto forma di stringa.
  • ·         Le coordinate geografiche, sotto forma di oggetto di tipo GeoCoordinate.

Nessuno dei due parametri è obbligatorio: possiamo lanciare il calcolo del percorso solo specificando l’indirizzo (e impostando a null le coordinate, come nell’esempio) oppure solo le coordinate geografiche (lasciando vuoto il primo parametro).

Bing Maps Task

Se abbiamo la necessità di mostrare informazioni di tipo geografico il controllo Map di Windows Phone può sicuramente dare un grande valore aggiunto alle nostre applicazioni. A volte , però, l’implementazione di tale controllo può essere troppo onerosa se, ad esempio, dobbiamo solo mostrare uno specifico luogo sulla mappa.

In queste situazioni ci viene in aiuto il BingMapsTask, che permette di demandare questa operazione all’applicazione Maps nativa: date le coordinate del luogo che vogliamo mostrare, l’utente verrà portato direttamente in Bing Maps per visualizzarlo.

Vediamo un esempio:

BingMapsTask task = new BingMapsTask
                                    {
                                        SearchTerm = Address.Text,
                                        ZoomLevel = 10
                                    };
            task.Show();

 

Questo launcher supporta tre propriet& agrave;:

  • ·         SearchTerm rappresenta la parola chiave di ricerca, ad esempio un indirizzo o il nome di una città
  • ·         ZoomLevel rappresenta il livello di zoom che vogliamo utilizzare di default.
  • ·         Center: se conosciamo le coordinate precise del luogo che vogliamo mostrare, possiamo valorizzare questa proprietà, che è di tipo GeoCoordinate. All’apertura, la mappa verrà centrata su questa posizione. Attenzione che se avete valorizzato anche la proprietà SearchTerm la proprietà Center sarà praticamente ignorata: la mappa verrà centrata nel punto definito, ma si sposterà subito dopo nel luogo risultante dalla ricerca.

ConnectionSettingsTask

Se avete già installato Mango sul vostro device vi sarete imbattuti in applicazioni come Network Dashboard o Connectivity Shortcuts, che offrono la possibilità di avere direttamente in home delle tile per accedere velocemente alle varie impostazioni di rete (Wi-Fi, Bluetooth, ecc.)

Queste appl icazioni sono basate proprio su questo task, che permette da un’applicazione di aprire direttamente una specifica schermata dell’hub Impostazioni relativa alle connessioni.

Vediamo un esempio:

  ConnectionSettingsTask task = new ConnectionSettingsTask();
            if (WiFi.IsChecked.Value)
            {
                task.ConnectionSettingsType = ConnectionSettingsType.WiFi;
            }
            if (Cellular.IsChecked.Value)
            {
                task.ConnectionSettingsType = ConnectionSettingsType.Cellular;
            }
            if (AirplaneMode.IsChecked.Value)
            {
                task.ConnectionSettingsType = ConnectionSettingsType.AirplaneMode;
       &nbs
p;    }
            if (Bluetooth.IsChecked.Value)
            {
                task.ConnectionSettingsType = ConnectionSettingsType.Bluetooth;
            }
            task.Show();

 

Il launcher espone solamente una proprietà, chiamata ConnectionSettingsType, che è un emumeratore, il quale contiene un valore per ogni tipo di connessione disponibile.

  • ·         WiFi: per accedere alle impostazioni della connessione wireless.
  • ·         Cellular: per accedere alle impostazioni della connessione dati su rete cellulare.
  • ·         AirplaneMode: per attivare o disattivare la modalità aereo (la quale spegne in automatico tutti i tipi di connessione del telefono).
  • ·         Bluetooth: per accedere alle impostazioni del bluetooth

I chooser

SaveRingtoneTask

Windows Phone 7.5 ha introdotto la tanto attesa possibilità di utilizzare suonerie personalizzate. Ma non solo! Grazie a questo chooser, potremo consentire alla nostra applicazione di salvare dei file audio direttamente tra le suonerie di sistema.

Vediamo un esempio:

   SaveRingtoneTask task = new SaveRingtoneTask

                                        {

                                           Source = new Uri("appdata:/Assets/Ringtones/Ringtone01.wma"),

                                           DisplayName = "Ringtone 1"

                                        };

            task.Completed += (obj, args) =>

                                   {

                                      if (args.TaskResult == TaskResult.OK)

                                      {

                                          MessageBox.Show("La suoneria è stata salvata!");

                                      }

                                      else

                                      {

                                          MessageBox.Show("La suoneria non è stata salvata");

               ;                        }

                                  };

            task.Show();

Questo chooser supporta le proprietà:

  • ·         Source: è l’URI della suoneria da salvare. Possiamo utilizzare, come nell’esempio, il prefisso appdata:/ per identificare un percorso all’interno del progetto, oppure isostore:/ nel caso il file sia salvato nell’isolated storage.
  • ·         DisplayName: il nome della suoneria, che verrà visualizzato nell’elenco della sezione Impostazioni.

Chiamando il metodo Show l’utente avrà comunque la possibilità di cambiarne il nome e di impostarla come suoneria predefinita. Una volta che l’operazione è completata, torneremo alla nostra applicazione e verrà scatenato l’evento Completed. L’unica informazione restituita sarà l’esito dell’operazione, sotto forma di enumeratore di tipo TaskResult e valorizzato nella proprietà TaskResult.

Nell’esempio, ci limitamo a mostrare un semplice messaggio di conferma in base all’esito dell’operazione.

Importante! Affinchè un file audio sia utilizzabile come suoneria devono essere soddisfatte le seguenti condizioni:

  • ·         Deve essere un file di tipo MP3 o WMA
  • ·         Deve durare meno di 40 secondi
  • ·         Deve avere una dimensione inferiore a 1 MB
  • ·         Non deve essere protetto da sistemi di DRM


read full article

Windows Phone Lab con Nokia e Microsoft il 18 gennaio 2012 a Roma

E-mail Stampa PDF

Un piccolo post di servizio per segnalare una nuova edizione del Windows Phone Lab il 18 gennario a Roma dedicato a chi vuole sviluppare, migliorare e testare le proprie applicazioni per Windows Phone e provarle su dei fantastici Nokia Lumia 800!

Ecco il link per l'iscrizione: http://communitydevtool.com/public/frmdetailevent.aspx?eventid=0203DKENTLDKJPRGRSCLPI

Per chi vuole invece partecipare ad un lab di mezza giornata e seguire un'altra mezza giornata di sessioni su Windows Phone a Milano a febbraio, vi consiglio la prima giornata dei Community Days 2012.


read full article

Per Natale regalati Visual Studio 2010

E-mail Stampa PDF

Questo Natale sei pronto a liberare la tua creatività?

Acquistando  un nuovo Visual Studio 2010  con MSDN, puoi scegliere uno dei regali che i nostri partner hanno pensato per te.

Comparex ti offre la possiibilità di acquistare Visual Studio 2010 con MSDN, con contratto di  tre anni, ad un prezzo davvero conveniente. E in più, con la versione Premium, una Kinect per XBOX 360 in omaggio; con la Ultimate, ben due Kinect per XBOX 360.

Il divertimento è doppio: cominci a sviluppare per le sfide di nuova generazione e, se possiedi una XBOX 360, ti diverti in compagnia, collegando il Kinect alla tua XBOX 360 e giocando senza controller con la piena libertà del corpo. Contatta Questo indirizzo e-mail è protetto dallo spam bot. Abilita Javascript per vederlo. per maggiori informazioni.

Gorilla.it invece pensa alla tua formazione: acquistando un contratto a 2 o 3 anni di Visual Studio 2010 Professional o Premium con MSDN, usufruisci di imperdibili sconti.  In aggiunta,compreso nel prezzo 1 libro per ogni abbonamento Professional e 3 libri per ogni abbonamento Premium a tua scelta tra oltre 70 libri tra i piu' recenti e di riferimento tra i migliori editori. Contatta Questo indirizzo e-mail è protetto dallo spam bot. Abilita Javascript per vederlo. per i dettagli.

Sei  invece già utente di Visual Studio 2008 o 2010 Professional ma non hai una sottoscrizione MSDN? Abbiamo pensato anche a te!
Puoi risparmiare il 35%* sull’acquisto di Visual Studio 2010 con MSDN o il 15%* su Visual Studio Premium con MSDN. Scopri i dettagli dell’offerta.

Non fermare la tua creatività, con Visual Studio 2010 questo Natale puoi!

*La percentuale di sconto è calcolata sul prezzo stimato di vendita utente finale. Microsoft non impone alcuna condizione ai rivenditori che decidono liberamente


read full article

Pagina 48 di 83

 
 
 
 
Certificazioni