Il presente articolo è stato tradotto automaticamente.

Windows Phone 7

Windows Phone e la cloud: introduzione

Ramon Arjona

Sto apprendimento leggere e scrivere in spagnolo. Causa di in cui trova, è possibile esercitarsi mio spagnolo tentando di leggere i segni bilingui visualizzate in molti luoghi pubblici. La cosa è talvolta rimanere bloccato su una particolare parola e non figura non o talvolta sono confusi da un'intera frase. È inoltre difficile essere certi che ho compreso cosa che ho letto senza una traduzione inglese parallela per fare riferimento a. È possibile eseguire un dizionario inglese spagnolo con me ma sfogliando tutte queste pagine è talmente analogica.

Cosa realmente, poiché sempre sembrano avere telefono nella mia mano è un modo semplice per telefono agevolare la traduzione. Passando a Bing con il telefono e utilizzando il convertitore di Microsoft basata su aree è utile, ma richiede una grande quantità di sequenze di tasti per visualizzare la schermata di traduzione. Se solo esistesse un modo, ovvero con facilità, in qualche modo ottenere il convertitore al telefono. Bene, con l'avvento di Windows telefono 7 è disponibile.

Questo articolo costituisce un'introduzione allo sviluppo di applicazioni Windows telefono e viene illustrato come associare ad un'applicazione in un servizio Web nell'area. È necessario avere familiarità con C# e Visual Studio e sarebbe utile se si dispone di almeno alcune esperienza nello sviluppo di applicazioni con XAML (Extensible Application Markup Language), ma non è obbligatorio. Dopo aver utilizzato aggiornamento aprile dell'anteprima tecnologia community (CTP) di strumenti Windows Phone. Nel momento in cui si legge questa operazioni potrebbe essere stato modificato, quindi passare di developer.windowsphone.com per leggere la documentazione più recente e scaricare gli strumenti più recenti.

Prima cosa prima: Ottenere un AppID

Se si intende interagire con traduttore, o i servizi Bing Web, il primo passaggio consiste nell'ottenere un AppID. Viene utilizzato dal servizio API per convalidare che una richiesta proveniente da uno sviluppatore di applicazioni Bing registrato.

Vai a bing.com/developers/createapp.aspx e accedi con Windows Live ID. Compilare quindi il modulo richiesto per l'applicazione nome e descrizione, nonché dettagli quali società indirizzo di posta elettronica e nome. Indirizzo di posta elettronica viene utilizzato per notificare quando queste API modificare, ad esempio, vengono implementate le nuove versioni o versioni precedenti non in linea. Per l'API di conversione in particolare, al momento della stesura di questo articolo la documentazione dice che versioni precedenti rimane in linea per 90 giorni dopo il rilascio di una nuova versione.

Successivamente, leggere le condizioni di utilizzo, selezionare la casella per indicare accettarli e scegliere il pulsante “ accetta ” e verrà da intraprendere per una pagina con l'AppID appena minted in essa contenuti. Può sempre tornare a questa pagina di riferimento, ma in genere di copiare e incollare l'AppID nel file di origine dell'applicazione quando si crea.

Leggere sempre le condizioni di utilizzo per qualsiasi servizio Web che si intende utilizzare in un'applicazione. Seriamente, resistere alla tentazione di analizzarli immediatamente, soprattutto se si intende distribuire l'applicazione agli utenti tramite Marketplace. Si deve ai clienti per comprendere gli obiettivi del livello di servizio e altre condizioni di partner che forniscono i servizi che dell'applicazione utilizza l'impostazione. Assicurarsi pertanto che aver letto e compreso i termini di utilizzo, se l'applicazione che utilizza un servizio da Microsoft o da terzi.

Ora che si dispone di un AppID, siamo pronti per iniziare la creazione di applicazioni mobili traduttore.

Definizione dello scenario

Prima di iniziare a lavorare sulla mia prima applicazione, impiegato a esaminare alcune applicazioni mobili sul mercato. Esaminato le applicazioni per Windows telefoni e altri Smartphone per avere un'idea di ciò che rende un'applicazione mobile veramente successo. Ho letto le revisioni del prodotto. Interpellati persone. Pestered miei amici a giocare con i telefoni è possibile.

Dopo questa ricerca, concluso che la chiave per una corretta applicazione mobile è la semplicità. Ogni applicazione popolari soddisfa una o due scenari chiave utente e li soddisfa anche. Ad esempio, ho scoperto un'intera classe di applicazioni cui unico scopo è quello di generare rumori rude. In pratica, si tratta fondamentalmente una reimplementazione del whoopee includere un telefono. Le persone sembrano trovarli divertenti, almeno sufficiente a pagare denaro per caricarli nella loro telefoni.

Analogamente, sono applicazioni che ripristino dadi simulato, consigliare un ristorante per cena e anche di calcolare l'importo di suggerimento per quel particolare cena. Tutti questi sono uno scenario utente attivo ed eseguire in tale scenario in modo semplice e intuitivo. Questo approccio non è univoco per ogni particolare marchio di smartphone. L'idea che dovrebbe abbiamo un'esperienza elegante e intuitivo viene rafforzato da Windows Phone UI Design e interazione manuale pubblicato in developer.windowsphone.com/windows-phone-7 .

Così quando ho iniziato a lavorare nella mia applicazione traduttore, è importante concentrarsi su esattamente ciò che volevo app eseguire e nient'altro. A questo scopo, ho dovuto prima immagine chiara di ciò che volevo. Una volta ho avuto questa immagine presente, potesse resistere alla tentazione di aggiungere nuovi interessante funzionalità che, mentre interessante, non servono lo scenario utente principale. Ho deciso di che applicazione deve convertire tra italiano e spagnolo. Dovrebbero passare facilmente le modalità di conversione da spagnolo inglese o inglese spagnolo e deve affrontare solo singole parole o frasi semplici. Inoltre, solo cared su spagnolo e italiano, pertanto la mia applicazione dovrebbe ignorare altre lingue.

Creazione di applicazioni

Per iniziare a generare l'applicazione traduttore, aprire Visual Studio Express 2010 per telefono Windows. Scegliere “ Nuovo progetto... ” e selezionare “ telefono Windows Application. ”  Consente di aprire il progetto di telefono Windows predefinito con uno schermo suddiviso in due sezioni: Titolo e contenuto. Queste sezioni sono delineate con un oggetto XAML Grid, che consente di definire una serie di righe e colonne in cui è possibile posizionare gli elementi di interfaccia utente figlio, ad esempio pulsanti e TextBlock (vedere di Figura 1).

image: Default Windows Phone Project with Display and Code Views

Figura 1 Windows predefinito telefono Project con visualizzazioni codice e visualizza

In primo luogo, modificare il nome dell'applicazione e il titolo della pagina selezionando questi elementi dell'interfaccia utente nella finestra di progettazione. Consente di evidenziare il codice XAML correlati nella finestra di visualizzazione del codice di progettazione, che mostra l'elemento a cui si desidera modificare. Quindi, aprire la casella degli strumenti e trascinare alcuni elementi dell'interfaccia utente per la griglia inferiore della pagina, denominato ContentGrid. Scegliere un controllo TextBox, dove si potrà inserire le parole che si desidera convertire, quindi un TextBlock, dove la traduzione verrà eseguito il rendering. Infine, aggiungere due pulsanti (vedere di Figura 2).

image: Adding TextBox, TextBlock and Button UI Elements

Figura 2 Aggiunta TextBox, TextBlock ed elementi di interfaccia Button

Un pulsante eseguirà la conversione e la seconda verrà alternare la direzione della traduzione da spagnolo inglese o nuovamente.

XAML: l'interfaccia utente moderna

Il nucleo dell'esperienza utente di Windows telefono 7 è che il sistema di progettazione, nome in codice “ metro. ”  E il nucleo dell'implementazione di un'interfaccia utente in base al sistema metro è XAML. Se si è lavorato con Silverlight o Windows Presentation Foundation (WPF) prima, XAML è probabilmente familiare. In caso contrario, in questa sezione viene fornita una breve introduzione.

XAML è un modo per strutturare in modo dichiarativo l'interfaccia utente, offrendo una rigorosa separazione tra la logica dell'applicazione e il relativo aspetto. Si noterà che il codice per la pagina principale dell'applicazione, ad esempio, è contenuto in mainpage.xaml.cs, ma il layout di base dell'applicazione è contenuto in mainpage.xaml. A differenza tradizionale sviluppo in Windows Form, non vi è alcuna combinazione di codice di applicazione con layout dell'interfaccia utente di applicazione. Ogni elemento dell'interfaccia utente dell'applicazione è modellata come elemento XML in un file XAML.

Questo è un vantaggio perché consente una sola persona lavorare in modo indipendente aspetto dell'applicazione durante un'altra funziona sulla logica dell'applicazione. Ad esempio, dopo che è stato descritto l'interfaccia utente di base della nostra applicazione traduttore, è possibile invece XAML a un'interfaccia utente esperta mentre è possibile continuare a lavorare sul codice. Nella finestra di progettazione non sarebbe necessario conoscere l'implementazione dell'applicazione e non è necessario conoscere la tavolozza dei colori che viene scelto.

Naturalmente, preventivo non è disponibile una finestra di progettazione dell'interfaccia utente, ma ho MSPaint e che è sufficiente per dimostrare quanto sia semplice aggiornare le risorse grafiche che accompagnano la mia applicazione.

Fornendo una nuova icona del convertitore

Doppio clic su predefinito ApplicationIcon.png aggiunto automaticamente al progetto quando creato. Verrà aperto del software di modifica delle immagini, ovvero MSPaint nella mia macchina di sviluppo. È possibile sostituire l'icona gear interessante con una lettera maiuscola. Quindi è possibile cancellare lo sfondo nero e riempirlo con un colore rosa monocromatico. Probabilmente non vincere i premi per la progettazione grafica, ma piace (vedere di Figura 3).

image: A New Project Icon Created with MSPaint

Figura 3 di una nuova icona di progetto creato con MSPaint

Per rivedere le modifiche, è possibile premere il pulsante inizio per distribuire il rcorso ­ appli all'emulatore Windows telefono 7. Se si è lavorato con versioni precedenti di Windows Phone emulatori, si noterà immediatamente quanto l'esperienza dello sviluppatore è migliorata. Utilizzo dell'emulatore per Windows Phone 6.5 può essere un problematiche e implica la procedura di configurazione manuale per avviare e connettere il debugger all'emulatore. Qui nell'ambiente di sviluppo di Windows 7 telefono tutto semplicemente funziona quando raggiunto il pulsante start verde. Sono felice anche con rapidità l'emulatore viene caricata e visualizzata un'interfaccia utente principale dell'applicazione (vedere di Figura 4).

image: The App Displayed by the Windows Phone 7 Emulator

Figura 4 dell'applicazione visualizzata dall'emulatore di Windows telefono 7

Per visualizzare l'icona dell'applicazione, è possibile uscire dall'interfaccia utente principale e passare alla schermata principale dell'emulatore. Grafica convertitore è disponibile e appare OK (vedere di Figura 5).

image: Checking the New App Icon in the Emulator

Figura 5 nuova icona applicazione nell'emulatore di controllo

Il manifesto di applicazione

L'icona dell'applicazione viene definito in un file denominato WMAppManifest.xml, che si trova nella cartella di proprietà del progetto. Per rinominare l'icona dell'applicazione, modificare il nome di ApplicationIcon.png nel progetto e verificare che qui, la modifica si rifletta nell'elemento IconPath:

<IconPath IsRelative="true"
   IsResource="false">myicon.png
   </IconPath>

Se l'applicazione non è presente l'icona, verrà assegnato il valore predefinito di runtime, che è simile a un cerchio bianco su sfondo nero.

Un altro elemento di questo file porta esame è l'elemento ities Capabil ­, che contiene le funzionalità specifiche dell'applicazione si desidera utilizzare. È buona norma richiedere esattamente ciò che l'applicazione deve, niente di più. Se la scansione del file, si noterà che ha numerose funzionalità che abbiamo probabilmente occuperemo da utilizzare nell'applicazione traduttore.

Ad esempio, ID_CAP_GAMERSERVICES dichiara che l'applicazione deve interagire con le API di gioco XBox. La funzionalità ID_CAP_LOCATION afferma che l'applicazione si renderà necessario apportare utilizzo della funzionalità di posizione del dispositivo. E ID_CAP_PUSH_ ­ notifica indica che l'applicazione desideri interagire con la funzionalità di notifica push di Windows 7 telefono. Tutti questi sono ottime funzionalità, ma è non necessari per l'applicazione in modo da rientrano. Infatti, è probabilmente necessario solo la funzionalità ID_CAP_NETWORKING, che indica che l'applicazione deve utilizzare la rete per inviare e ricevere dati.

Il convertitore Microsoft API

Convertitore Microsoft espone tre tipi di API. L'API SOAP consente la tipizzazione forte consumer e facilità d'uso. L'API di AJAX è utile soprattutto per gli sviluppatori di pagine Web che desiderano incorporare la traduzione nell'interfaccia utente. L'API HTTP è utile quando SOAP e l'API AJAX non è appropriato.

Ci concentreremo scegliere l'interfaccia SOAP, poiché è più semplice da utilizzare per i nostri scopi. Accedere a Esplora soluzioni e fare riferimenti. Quindi scegliere “ Aggiungi un riferimento al servizio ” e l'endpoint per l'interfaccia SOAP API traduttore di input: http://api.microsofttranslator.com/V2/Soap.svc . Assegnare il nome TranslatorService nella casella di testo dello spazio dei nomi di endpoint del servizio e scegliere OK (vedere di Figura 6).

image: Adding a SOAP Service Reference

Figura 6 Aggiunta di un riferimento a un servizio SOAP

In Visual Studio si occupa del resto, generazione del codice client interfaccia SOAP.

Aggiungere codice all'applicazione. Aggiungere l'AppID e un riferimento al client TranslatorService nella dichiarazione della classe MainPage dell'applicazione:

string appID = <<your appID>>;
  TranslationService.LanguageServiceClient client = 
    new TranslationService.LanguageServiceClient();

IntelliSense visualizza noi il servizio traduttore dispone di numerose interessanti metodi disponibili. La prima cosa da notare è che tutti i metodi asincroni. In questo senso, perché non esiste un motivo valido per il blocco dell'applicazione client mentre ci stiamo in attesa completare un'operazione di rete. Significa che è necessario registrare un delegato per ogni specifica operazione che si esegue. Nel nostro caso, ci interessano solo il metodo TranslateAsync e l'evento TranslateAsyncComplete esposto mediante il linguaggio ­ ServiceClient. Ma gli altri metodi certamente hanno l'aspetto interessanti. Let’s dare un'occhiata e vedere se rientrano in questo scenario utente.

Sono due metodi che distinguono GetLanguagesForTranslateAsync e GetLanguageNamesAsync. Il primo metodo viene fornito un elenco dei codici lingua supportata dal servizio di conversione. Chiamando questo metodo, è possibile visualizzare che il codice lingua spagnola è “ es. ”  Il metodo GetLanguageNamesAsync restituisce un elenco dei nomi delle lingue per una determinata serie di codici di lingua localizzate per determinate impostazioni locali. Ad esempio, se si passa “ es ” in questo metodo come le impostazioni internazionali e il codice lingua, si ottiene la stringa “ spagnolo. ” Se è stato un traduttore multilingue, questi entrambi sarebbe utili.

Un'altra interessante metodo denominato LetturaAsincrona. Accetta una stringa e le impostazioni internazionali e restituisce un URL a un file WAV è la pronuncia nativa che di una parola. Si tratta di una funzionalità awesome. Ad esempio, potrebbe digitare una stringa, ottenere la traduzione e passare questa stringa al metodo LetturaAsincrona per ottenere un file WAV che potrebbe utilizzare per comunicare con altri utenti in spagnolo. O se certi della pronuncia di una parola specifica, potrebbe utilizzare il metodo LetturaAsincrona ascoltare cosa si doveva suono simile.

Questi sono piuttosto interessanti ed è difficile resistere alla tentazione di inserire nell'applicazione semplicemente perché sono interessanti. Per ora, ci dovrebbe sono confermati e concentrarsi solo su soddisfare lo scenario utente che abbiamo descritto all'inizio. Con questo quadro nella mente rende più semplice quando legati alla tentazione di aggiungere “ una sola ulteriori funzionalità ”.  Sono certo che verrà finisce utilizzando le funzionalità offerte nell'API di conversione a un certo punto, semplicemente non subito.

Cablaggio il codice per rendere la nostra applicazione traduttore è semplice. In primo luogo, si registra i delegati per TranslateCompleted:

client.TranslateCompleted += new
  EventHandler<TranslationService.TranslateCompletedEventArgs>
  
(client_TranslateCompleted);

Quindi è possibile implementare il gestore eventi per TranslateCompleted, che imposta il testo del nostro TextBlock per il testo tradotto:

void client_TranslateCompleted(object sender,
   TranslationService.TranslateCompletedEventArgs e)
 {
   TranslatedTextBlock.Text = e.Result;
 }
We wire up the button to submit the text we’ve entered for translation:
 private void TranslateButton_Click(object sender, 
   RoutedEventArgs e)
 {
   client.TranslateAsync(appID, TranslateTextBox.Text, fromLanguage,
     toLanguage);             
 }

Quindi, aggiungere codice semplice per il secondo pulsante per alternare le modalità di conversione da “ spagnolo per inglese ” o da “ inglese spagnolo ”. Questo pulsante gestisce una variabile globale dello stato e il testo del pulsante nostra conversione per indicare che lo stato viene modificato.

Infine, abbiamo distribuire l'applicazione nell'emulatore di prova. Ora abbiamo un'applicazione traduttore completamente funzionale, con solo poche righe di codice e di un'ora o scopo della fase di sviluppo.

Espansione dell'applicazione di conversione

Applicazione semplice convertitore è bello, ma è possibile utilizzare ulteriormente espandendo questo scenario utente. Sarebbe ideale è possibile associare più lingue offerte dall'API traduttore nella nostra applicazione in modo che si adatta alle linee guida di progettazione del tracciato. E, sarebbe meglio se è possibile eliminare il pulsante che gestisce la direzione di conversione e sono invece di gestire la direzione della traduzione in modo più semplice e più intuitivo. Qualsiasi operazione, deve essere descrittivo a una persona con le dita per interagire con il dispositivo e dispone di sentirsi facile e veloce.

Che cosa abbiamo eseguito? Si genera un'applicazione che utilizza il progetto di elenco predefinito. Avviare un nuovo progetto e selezionare “ Windows telefono elenco Application. ” In questo modo uno schermo predefinito con un controllo ListBox nel ContentGrid. Il controllo ListBox contiene sei lingue che si desidera tradurre il testo, sostituendo il testo fittizio (vedere di Figura 7).

image: The Default Windows Phone List Application

Figura 7 dell'applicazione di elenco telefono Windows predefinito

Si potrà modificare il file MainViewModelSampleData.xaml, contenuta nella cartella SampleData nel progetto. Si noterà che alcuni XML simile al seguente:

<local:ItemViewModel LineOne="design one" LineTwo="Maecenas praesent accumsan bibendum" LineThree="Maecenas praesent accumsan bibendum dictumst eleifend facilisi faucibus habitant inceptos interdum lobortis nascetur"/>

Modificando il file XML, è possibile modificare la visualizzazione Design-Time del controllo ListBox per includere tutte le lingue che si desidera utilizzare: Spagnolo, tedesco, italiano, portoghese, italiano e francese. Si noti che dopo aver salvato il file, visualizzazione della fase di progettazione rifletteranno le modifiche apportate. Infatti, il controllo ListBox è associato all'elemento di elementi definiti in MainViewModelSampleData.xaml. Questa è controllata dall'attributo ItemsSource del controllo ListBox.

È inoltre possibile aggiornare il contenuto del controllo ListBox in fase di esecuzione. Esaminare il file generato da Visual Studio, si vedrà un Observable ­ insieme <ItemViewCollection> riempita con dati segnaposto simili a quella contenuta nel MainViewModelSample ­ Data.xaml file. Ad esempio, se si desidera generare dinamicamente l'elenco delle lingue dell'interfaccia utente in base alle lingue restituite dal metodo GetLanguageNamesAsync, sarebbe modificare il file MainViewModel.cs per popolare l'insieme di elementi. È preferibile specificare un elenco statico di lingue per ora e semplicemente modificare direttamente l'insieme di oggetti ItemViewModel. Ora quando si esegue l'applicazione di elenco, è opportuno osservare un'interfaccia utente ad esempio di Figura 8.

image: The List Application UI

Figura 8 di applicazione l'elenco UI

Quando l'utente accede a uno di questi pulsanti, verrà eseguito a una pagina dettagli è essenzialmente la stessa come l'interfaccia utente della nostra semplice ­ traduttore. È presente un controllo TextBox per immettere le parole per tradurre un TextBlock per contenere il testo tradotto e un pulsante per inviare la traduzione. Invece di aggiungere un altro pulsante per gestire la direzione della traduzione, tuttavia, si verrà affidarsi API traduttore. Conversione bidirezionale della nostra applicazione SimpleTranslator non ha senso in questo scenario multilingue e aggiunta di ulteriori livelli dell'interfaccia utente renderebbe l'applicazione inizia a sentire clunky invece di continuo. Fortunatamente, l'API traduttore fornisce un modo per rilevare automaticamente la lingua passata.

Abbiamo aggiungere codice per chiamare prima il metodo DetectAsync del client traduttore, passando il testo che si desidera convertire, quindi chiamare TranslateAsync dal gestore eventi DetectAsyncComplete. Il gestore dell'evento sarà simile al seguente:

void client_DetectCompleted(object sender, 
  TranslationService.DetectCompletedEventArgs e)
{
  string languageCode = e.Result;
  client.TranslateAsync(appID, TranslateTextBox.Text, fromLanguage, tolanguage);
}

Sappiamo che la lingua che si desidera vengano tradotte in causa del pulsante selezionato dall'utente. Sappiamo la lingua che si desidera tradurre da perché l'API di conversione ha autodetected esso. Siamo in grado di creare un traduttore multilingue, semplice che consente di ottenere una traduzione con due soli ritocchi, senza contare digitando — e meno di un'ora di codifica.

Semplicità

Semplicità è il nucleo di sviluppo per Windows telefono 7. Un'applicazione deve concentrarsi su che soddisfano uno scenario utente e soddisfare anche. Gli strumenti forniti con Windows telefono 7 SDK CTP rendono possibili non solo, ma facile da distribuire applicazioni semplice sono potente. Inoltre, abbiamo visto che l'interazione con la nuvola è semplice e che il servizio Microsoft Translator Web può essere cablato in un'applicazione Windows telefono con solo un piccolo investimento di tempo di sviluppo. Utilizzando strumenti familiari come Visual Studio e linee guida chiare come tracciato cloud e telefono Windows si uniscono per aprire un mondo di nuove opportunità per sviluppatori e utenti.

Ramon Arjona è un responsabile della verifica senior lavora nel team di Windows presso Microsoft.

Grazie ai seguenti esperti tecnici per la revisione di questo articolo: VikramDendi e di Sandor Maurice