Archiv | Mai 2011

Phone Designer Tips

Das nicht nur die richtige und gute Idee für eine App wichtig sind, sondern auch das UI wissen mittlerweile auch die Developer. Also habe ich mich mal kundgetan und habe eine Silverlight Designer Website gefunden. SilverZine.com zeigt in einem Post, wichtige Regeln für eine gute WP7 App.

Quelle :

SilverZine.com

WP7 Mango Sockets Entwicklung

Im aktuellen Stand ist es fast nicht möglich Chatclients für WP7 zu entwickeln. Nach vielen Post von Entwicklern hat Microsoft nachgebessert, und im Mango Update die Socket Netzwerkstruktur eingeführt. Im Blog von Mister Goodcat gibt es für Einsteiger einen kleinen Message Client/Server mit Sockets.

image

Abb.: Server Console

 

Es ist nun wirklich einfach mit einigen Zeilen Code eine Socket Kommunikation aufzubauen:

// create endpoint
var ipAddress = IPAddress.Parse(host);
var endpoint = new IPEndPoint(ipAddress, port);

// convert text to send (prefix with length)
var message = string.Format("{0};{1}", Message.Text.Length, Message.Text);
var buffer = Encoding.UTF8.GetBytes(message);

// create event args
var args = new SocketAsyncEventArgs();
args.RemoteEndPoint = endpoint;
args.Completed += SocketAsyncEventArgs_Completed;
args.SetBuffer(buffer, 0, buffer.Length);

// create a new socket
var socket = new Socket(AddressFamily.InterNetwork,
    SocketType.Stream,
    ProtocolType.Tcp);

// connect socket
bool completesAsynchronously = socket.ConnectAsync(args);

// check if the completed event will be raised.
// if not, invoke the handler manually.
if (!completesAsynchronously)
{
    SocketAsyncEventArgs_Completed(args.ConnectSocket, args);
}

private void SocketAsyncEventArgs_Completed(object sender, SocketAsyncEventArgs e)
{
    // check for errors
    if (e.SocketError != SocketError.Success)
    {
        Dispatcher.BeginInvoke(() => MessageBox.Show("Error during socket operation: "
            + e.SocketError));

        // do some resource cleanup
        CleanUp(e);
        return;
    }

    // check what has been executed
    switch (e.LastOperation)
    {
        case SocketAsyncOperation.Connect:
            HandleConnect(e);
            break;
        case SocketAsyncOperation.Send:
            HandleSend(e);
            break;
    }
}

Hier nun die Client Ansicht im Phone 7 Emulator:

image

 

Sehr schön gelungen finde ich auch das Flussdiagramm dieser Implementierung:

image

Quelle:

GoodCat

Mango Update: Neue Möglichkeiten mit Bing Maps

Laurent Bugnion(Galasoft) MVVM Light Entwickler, hat in seinem Blog eine Mango Serie für Entwickler angefangen. Im Part 2 nun zeigt er wie einfach man jetzt mit Bing Maps Navigieren kann, mit nur ein paar Zeilen Code:

ar bingMapsDirectionsTask = new BingMapsDirectionsTask();

var end = new LabeledMapLocation(
    "Shop #1234",
    shopGeocoordinate);

var start = new LabeledMapLocation(
    "My location",
    myGeoCoordinate);

bingMapsDirectionsTask.Start = start;
bingMapsDirectionsTask.End = end;
bingMapsDirectionsTask.Show();

Hier entstehen Möglichkeiten, besonders im Bereich Logistik und Location Based Services. Die sozialen Netze werden wohl auch nicht verschont. Aber schaut einfach mal in den Blog Post

Quelle:

Galasoft

					

Mango geht auf Trainingstour

Auf MSDN ist jetzt das Trainingskit Offline auch mit dem Mango Features verfügbar. Dieses Update der schon bestehenden Trainingskits führt in alle neuen Möglichkeiten der Tools ein.

  • Die neuen XNA & Silverlight Möglichkeiten
  • Bing Neuerungen
  • Sensoren
    • Compass
    • Virtuell Motions
  • Multitasking
    • App Switching
  • Backround Agents
  • Calender & Contact Managment

In den nächsten Tagen folgen von mir erste Beiträge nur zu den neuen Möglichkeiten von Mango

Quelle :

Download Offline Training Kit

Spieleentwicklung mit Silverlight und XNA unter einer Mango

Das mit dem Mango Update XNA und Silverlight nicht mehr zwei getrennte Frameworks sind, und sich der Entwickler vorher immer für eine Seite entscheiden musste ist ja bekannt. Aber wie nutzt man als Developer nun diese neuen Möglichkeiten.

Auf dem Blog von XNA-UK Usergroup wird anhand einer kleinen App gezeigt wie man diese beiden Frameworks vereint nutzen kann.

Endlich sind die 3D Rendermöglichkeiten unter Silverlight möglich, was für Game Developer sehr entscheidend ist. In diesem Post wird erst auf die neuen Frameworks ein wenig eingegangen, so das jeder erstmal weiß wie die Handhabung sich jetzt geändert hat.

image

So kann der XNA Entwickler jetzt auch Expression Blend benutzen, um sehr einfach z.B. Menüstrukturen zu erstellen.

image

Schaut euch mal die Projektstruktur an, dort kann man noch viel lernen ums sich das Leben zu vereinfachen.

Hier noch zum Abschluss das Video :

Quelle:

XNA UK Usergroup

Endlich Windows Phone Developer Tools 7.1 Beta

Nachdem gestern mit großem Medieninteresse das Mango(Windows Phone7.1) Update offiziell vorgestellt wurde, kommen die Developer Tools 7.1 Beta herraus. Hiermit erfüllen sich viele aber nicht alle Entwicklerwünsche um die WP7 Phone mit brauchbaren Apps zuversorgen.

The Windows Phone Developer Tools includes the following

  • Microsoft Windows Phone Developer Tools 7.1 (Beta)
  • Windows Phone Emulator (Beta)
  • Silverlight 4 SDK and DRT
  • Microsoft XNA Game Studio 4.0 Referesh Windows Phone Extensions
  • Microsoft Expression Blend SDK Preview for Windows Phone 7.1
  • WCF Data Services Client for Window Phone 7.1

Ein Hinweis der bei mir zu Problemen geführt hat. Wer in VB für WP7 entwickelt bekommt zum jetztigen Zeitpunkt die neuen Tools nicht installiert. Da frage ich mich was soll so ein Patzer. Hier muss Microsoft dringend nachlegen, den auch die VB Entwickler sind sehr wichtig für das Durchstarten der neuen Plattform.

Ich werde die Tools ausführlich testen und berichten.

Quelle:

Developer Tools 7.1 Beta

MVVM Tombstoning in WP7

Das Tombstoning ein komplexes Thema ist wissen wir alle, die für WP7 Entwickeln. Noch schlimmer wird es wenn wir MVVM und komplexe Strukturen in unserer APP besitzen. Einen Lösungsansatz hat Colin Eberhardt bei ScottLogic im Blog beschrieben. Er zeigt auf wie man diesem Problem zur Leibe rückt.

Als Beispiel setzt er auf einen Twitter Feed:

Abb. : Ohne Tombstoning mit dem Back Button

Wie man sieht, gehen alle Daten des Feeds verloren und der User wäre verunsichert. Mit folgenden paar Zeilen Sourcecode könnten wir anfangen um den State vom Model zusichern.

private readonly string ModelKey = "Key";

private void Application_Deactivated(object sender, DeactivatedEventArgs e)
{
  PhoneApplicationService.Current.State[ModelKey] = ViewModel;
}

private void Application_Activated(object sender, ActivatedEventArgs e)
{
  if (PhoneApplicationService.Current.State.ContainsKey(ModelKey))
  {
    ViewModel = PhoneApplicationService.Current.State[ModelKey] as FeedViewModel;
    RootFrame.DataContext = ViewModel;
  }
}

Abb.: Ansatz vom Tombstoning.

Jetzt gehen zumindest die Daten nicht mehr verloren. Der perfekte Weg ist es, die States in einer Datei 
auf dem IsolatedStorage zu speichern und zu laden.

// Code to execute when the application is closing (eg, user hit Back)
// This code will not execute when the application is deactivated
private void Application_Closing(object sender, ClosingEventArgs e)
{
    // persist the data using isolated storage
    using (var store = IsolatedStorageFile.GetUserStoreForApplication())
    using (var stream = new IsolatedStorageFileStream("data.txt",
                                                    FileMode.Create,
                                                    FileAccess.Write,
                                                    store))
    {
      var serializer = new XmlSerializer(typeof(FeedViewModel));
      serializer.Serialize(stream, ViewModel);
    }
}

// Code to execute when the application is launching (eg, from Start)
// This code will not execute when the application is reactivated
private void Application_Launching(object sender, LaunchingEventArgs e)
{
  // load the view model from isolated storage
  using (var store = IsolatedStorageFile.GetUserStoreForApplication())
  using (var stream = new IsolatedStorageFileStream("data.txt", FileMode.OpenOrCreate, FileAccess.Read, store))
  using (var reader = new StreamReader(stream))
  {
    if (!reader.EndOfStream)
    {
      var serializer = new XmlSerializer(typeof(FeedViewModel));
      ViewModel = (FeedViewModel)serializer.Deserialize(reader);
    }
  }

  // if the view model is not loaded, create a new one
  if (ViewModel == null)
  {
    ViewModel = new FeedViewModel();
    ViewModel.Update();
  }

  // set the frame DataContext
  RootFrame.DataContext = ViewModel;

Abb.: Tombstoning wie es sein sollte

Quelle:

A Simple Windows Phone 7 MVVM Tombstoning Example

Bilder Erfassung Grundlagen

In seiner Beispielreihe Windows Phone from Scratch stellt Jesse Liberty wieder eine wichtige Grundlage vor.

Bilderfassung und das Anzeigen und Speichern auf dem Storage.

PicturePicture

Anhand einer Userklasse beschrieben wie die Daten von der Kamera auf das Isolated Storage kommen.

public class Person
{
    public string FullName { get; set; }
    public byte[] Thumbnail { get; set; }
}
private readonly CameraCaptureTask camera =
    new CameraCaptureTask();
private readonly Dictionary<string, Person> people =
    new Dictionary<string, Person>();
private byte[] thumbnail;
public MainPage()
{
    InitializeComponent();
    camera.Completed +=  camera_Completed ;
    TakePicture.Click += ( o, e ) => { camera.Show(); };
    FullName.TextChanged += ( o, e ) =>
    {
        Find.IsEnabled = Save.IsEnabled =
            String.IsNullOrEmpty( FullName.Text ) ? false : true;
    };
    Save.Click += Save_Click;
    Find.Click += Find_Click;
}
Schaut euch mal den Beitrag an
Quelle:

SandwichFlow Design auf WP7

Schon öfter habe ich über die neuen Metro Design Animations berichtet. ScottLogic hat einen neuen Post über Fluid List Animations, ‚Peel‘ Animations und Flying Titels Effects geschrieben.

Es ist denke ich sehr wichtig sich mit diesen Thema auseinanderzusetzen weil so gute Apps entstehen die vom User gut angenommen werden.

Um sich eine Vorstellung zumachen wie einfach diese Animationen in eigene Apps zu implementieren hier ein kleiner Ausschnitt an Sample Code:

<DataTemplate x:Key="SandwichTemplate">
  <StackPanel Orientation="Vertical"
 Margin="0,5,0,5"
 mim:MetroInMotion.Tilt="3">
    <TextBlock Text="{Binding Title}"
 mim:MetroInMotion.AnimationLevel="1"
 x:Name="Title"
 Foreground="Black"
 FontSize="{StaticResource PhoneFontSizeLarge}"/>
    <TextBlock Text="{Binding KeywordSummary}"
 mim:MetroInMotion.AnimationLevel="2"
 FontSize="{StaticResource PhoneFontSizeNormal}"
 Foreground="#888"/>
  </StackPanel>
</DataTemplate>


Quelle und Sourcecode:


Metro In Motion #5 – SandwichFlow
SandwichFlow.zip
 

Office 365 auf WP7 ab Mango Update

Immer mehr Funktionen werden für das Mango Update von WP7 bekannt.

  • Im Messaging Hub kommt Facebook’s Chat in den Live Messenger
  • Gruppen Messaging wird unterstützt,was wirklich nützlich ist und ein großes Problem in der jetztigen Version ist
  • Sharepoint wird auch noch besser integriert

Quellen:

New Mango Features Revealed: Facebook Chat, Office 365, Group Messaging And More
Podcast