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.comWP7 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.
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:
Sehr schön gelungen finde ich auch das Flussdiagramm dieser Implementierung:
Quelle:
GoodCatMango 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:
GalasoftMango 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 :
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.
So kann der XNA Entwickler jetzt auch Expression Blend benutzen, um sehr einfach z.B. Menüstrukturen zu erstellen.
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 UsergroupEndlich 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:
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 ExampleBilder 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.
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;
}
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