Archiv | Windows Phone 7.1(Mango) RSS for this section

Anleitung zur Planung einer App

Wie jeder gute Entwickler weiss, um gute Software zuschreiben benötigt es guter Planung. Dieses ist auch bei der Entwicklung von Apps für WP7 und WP8 nötig. Aber für die Windows Phone Plattform werden sehr gute Tools angeboten. Einen Vorschlag wie eine Entwicklung vonstatten gehen kann, zeigt der Blogbeitrag Metro App Diary.

Es werden verschiedene Tool mit angesprochen, schaut einfach diesen Post mal an.

Quelle:

Metro App Diary

 

Advertisements

Die Wolke liefert Daten

Für zukünftige Aktivitäten im Business Bereich bietet Microsoft ja SQL Azure auf seiner Cloud Windows Azure an. Seit einer gewissen Zeit arbeite ich mich so ein wenig dort ein. Jetzt habe ich gestern einen Post gefunden wie man die Datenhaltung aufbaut in Verbindung mit WP7.

image

Abb.: Datenhaltung SQL Azure nach WP7

In einer Step für Step Anleitung wird vom Service Contract über den Service hin zur fertigen Anwendung alles ausführlich beschrieben. Der Transfer geht über JSON DTO Service. Es ist wirklich nicht so schwer dieses zuverstehen. Hier noch ein paar Zeilen Code:
using System.Runtime.Serialization;

namespace RESTJSONStudentsData
{
[DataContract]
public class PersonDTO
{
[DataMember]
public string StudentId { get; set; }
[DataMember]
public string FirstName { get; set; }
[DataMember]
public string LastName { get; set; }

}
}

Abb.: Data Contract

Und jetzt nich die WCF Verbindung kurz beschrieben:
using System.Collections.Generic;
using System.ServiceModel;
using System.ServiceModel.Web;

namespace RESTJSONStudentsData
{
[ServiceContract]
public interface IService1
{
[OperationContract]
[WebGet(UriTemplate=“/Persons“,
RequestFormat=WebMessageFormat.Json,
ResponseFormat=WebMessageFormat.Json]
List<PersonDTO> GetPersons();
}
}

Hier sollte hervorgehoben werden die Json Format Einstellungen. Diese können dann ganz einfach per DataContractJsonSerializer konvertiert werden. So ist es echt einfach geworden.

Quelle:

Data from Cloud on Windows Phone

 

MetroFlow ein Control der neuen Generation

Wer Apps mit vielen Bildern oder Video Anzeige hat sollte sich mal das neue MetroFlow Control vom Coding4Fun toolkit beschäftigen. Auf WindowsPhoneGeek, wir in einem ersten Beispiel beschrieben wie dieses Control funktioniert.

Alles was benötigt wird ist die neuste Version des Coding4Fun Toolkits.

Mit nur wenigen Zeilen Code ist schon eine erste Anzeige des Controls möglich,

<c4f:MetroFlow>
    <c4f:MetroFlowData Title="Sample 1" />
    <c4f:MetroFlowData
                    ImageUri="Images/bmw1.jpg"
                    Title="BMW 1" />
    <c4f:MetroFlowData ImageUri="Images/bmw1.jpg"/>
</c4f:MetroFlow>
Xaml-Code

image

Abb.: Control in Action

Viele weitere Beispiel findet ihr unter den Ouellen

Quellen:

Coding4Fun Toolkit
 
Getting Started with the Coding4Fun toolkit MetroFlow Control
 

Augmented Reality XAML Control für WP7 und WinRT

Ich habe ja schon über Augmented Reality Theorie berichtet, aber jetzt hat Morten Nielsen in seinem Blog einen Post erstellt, wie man ein XAML Control erstellt. Das Besondere daran ist, das es nicht nur das Windows Phone unterstützt sondern auch die kommende Windows Version 8 oder besser bekannt für Entwickler Win RT.

Mit diesem Control baue ich eine Informations App für Industrieanlagen. Nun zeige ich noch einige Codeauschnitte:

<ar:ARPanel>
    <TextBlock Text="North" ar:ARPanel.Direction="0,0" />
    <TextBlock Text="East"  ar:ARPanel.Direction="0,90" />
    <TextBlock Text="South" ar:ARPanel.Direction="0,180" />
    <TextBlock Text="West"  ar:ARPanel.Direction="0,270" />
    <TextBlock Text="Up"    ar:ARPanel.Direction="90,0" />
    <TextBlock Text="Down"  ar:ARPanel.Direction="-90,0" />
</ar:ARPanel>

Abb.: AR Control Panel in Xaml

Nachfolgend noch ein Beispiel wie man den Motion Sensor in Win RT und Windows Phone gemeinsam nutzen kann.

#if WINDOWS_PHONE
    if (Microsoft.Devices.Sensors.Motion.IsSupported)
    {
        motion = new Microsoft.Devices.Sensors.Motion();
        motion.CurrentValueChanged += motion_CurrentValueChanged;
        motion.Start();
#elif WINRT
    motion = Windows.Devices.Sensors.OrientationSensor.GetDefault();
    if (motion != null)
    {
        motion.ReadingChanged += motion_CurrentValueChanged;
#endif
    }
    else
    {
        throw new InvalidOperationException("Motion sensor not supported on this device");
    }
#endif

Quellen:

Augmented Reality on Windows Phone and Windows 8 Metro style apps

 

Splash Screen mit ProgressBar und Backroundworker

hat auf seinem Blog debug mode….. einen Post erstellt, mit einem Designvorschlag für einen Splash Screen mit ProgressBar. Diese Vorgehensweise erlaubt es dem Entwickler seine benötigten Daten für die App geschickt zu verstecken und somit den User nicht nervt mit ständigen Nachladen von Daten. Diese vorgehensweise ist meist aber nur sinnvoll wenn es sich um eine Online App handelt.

image

Abb.: Aufbau des Design Vorschlags

Der Aufbau ist als Usercontrol implementiert, und recht einfach nachvollziehbar.

<Grid x:Name=“LayoutRoot“ Height=“800″ Width=“640″>
<Image Source=“waitsymbol.jpg“
Margin=“0,0,0,0″
VerticalAlignment=“Top“
Height=“650″
HorizontalAlignment=“Left“
Width=“400″
Stretch=“Fill“/>
<TextBlock
Text=“loading….“
HorizontalAlignment=“Left“
Style=“{StaticResource PhoneTextTitle2Style}“
Margin=“185,656,0,97″
/>
<ProgressBar x:Name=“SpalshScreenProgressbar“
Width=“380″
HorizontalAlignment=“Left“
IsIndeterminate=“True“
Margin=“49,707,0,74″ />
</Grid>

Das Control wird einfach in ein PopUp als Child Objekt hinzugefügt.

image

Nun noch den Backround Service einbauen und fertig ist Splash Screen.

clip_image001

Abb.: Fertiges Control im Einsatz

Quelle:

How to create Splash Screen with Progress Bar in Windows Phone 7

Windows Phone Starter Kit for Schools

Microsoft hat ein neues Startkit für Schulen auf MSDN eingestellt. Hier soll interessierten Schülern der Einstieg in die Programmierung von Apps für die Windows Phone Plattform schmackhaft gemacht werden.

Abb; Schul App Beispiel

Ganz einfach  wird anhand eines App für eine Schule beschrieben wie eine App entwickelt werden kann. Da sollten sich die Herren der Apfel und Android  Fraktion mal ein Beispiel dran nehmen.

Quelle:

MSDN

Anbindung vom Microphone mit XNA

Für eine aktuell in Entwicklung befindliche App benötige ich das Microphone vom WP7 Handy. Mit dem Mango Update ist es ja möglich XNA und Silverlight zumischen. Einen super Post habe ich gefunden bei .net speaks. Hier wird ein Einstieg geboten wie man ganz einfach ein Micro ansprechen kann.

Windows Phone 7 - Microphone Repeater

Abb: Einfache Demo mit einem Button

Mit folgenden paar Zeilen kann das Micro eingebunden.

using Microsoft.Xna.Framework;
using
Microsoft.Xna.Framework.Audio;
using
System.IO;
using System.Windows.Threading;

Referenzen setzen.

 

Microphone mic = Microphone.Default;
byte[] data = null
;
MemoryStream audio = null;

Micro Init.

private void btnRecord_Click(object sender, RoutedEventArgs e)
{
   if (mic.State == MicrophoneState
.Stopped)
{
mic.BufferDuration = TimeSpan
.FromMilliseconds(100);
data = new byte
[mic.GetSampleSizeInBytes(mic.BufferDuration)];
audio = new MemoryStream
();
mic.Start();
      this.PageTitle.Text = „Recording…“
;
btnRecord.Content = „Stop“
;
}
   else
   {
mic.Stop();
      this.PageTitle.Text = „Playing….“
;
btnRecord.Content = „Record“
;
btnRecord.IsEnabled = false
;
PlayRecordedAudio();
      this.PageTitle.Text = „ready“
;
}
}

Schaut euch den Post mal genau an. Es ist kein großes Problem dieses in einer eigenen App einzusetzen.

Quelle:

Part 24: Windows Phone 7 – Mircophone Repeater

Die Mango App, Microsofts Referenz App

Wie eine moderne App im Mangostyle inklusive Sql Server CE 4.0 Anbindung erstellt wird, hat jetzt das MSDN Magazin in einem Beitrag dagestellt.

Mangolicious Panorama Main Page

Abb.: App für Rezepte und Coktails

Um eine App noch aufzuwerten, ist ein XNA Spiel mit ins App integriert. Dieses ist wirklich eine super Idee und steigert sicher den Benutzerwert eine App. Weil fast jeder Smartphone Nutzter ein kleinen Spielsinn hat.

Hier noch ein Code Snippet wie die Datenbank eingebunden wurde.

public class MangoDataContext : DataContext 
{   public MangoDataContext()     : base("Data Source=isostore:/Mangolicious.sdf") { }     
 public Table<Recipe> Recipes;
   public Table<Fact> Facts;
   public Table<Cocktail> Cocktails; 
}

Hier noch eine Abbildung vom XNA Game.

The XNA Game in Progress

Quelle:

Building a ‚Mango‘ App

WP7 Cam als Backround Behavior

Eine nette Idee hatte Joost van Schaik, er hat ein Behavior geschrieben damit die Cam im Phone als Backround Video Streaming genutzt werden kann.

/// A behavior that shows a camera view on the background of a panel
  /// </summary>
  public class CameraViewBackgroundBehavior : Behavior<Panel>
  {
    private PhotoCamera camera;
    private PhoneApplicationFrame parentPage;
    private Uri pageSource;
    private VideoBrush backgroundBrush;

    // Setup and cleanup according to http://bit.ly/dZb6D9

    #region Setup
    protected override void OnAttached()
    {
      base.OnAttached();
      AssociatedObject.Loaded += AssociatedObjectLoaded;
      AssociatedObject.Unloaded += AssociatedObjectUnloaded;
    }
private void AssociatedObjectLoaded(object sender, RoutedEventArgs e)
    {
      DoInit();
    }
    #endregion

    #region Cleanup
    private bool isCleanedUp;

    private void Cleanup()
    {
      if (!isCleanedUp)
      {
        isCleanedUp = true;
        AssociatedObject.Loaded -= AssociatedObjectLoaded;
        AssociatedObject.Unloaded -= AssociatedObjectUnloaded;
        DoCleanup();
      }
    }

    protected override void OnDetaching()
    {
      Cleanup();
      base.OnDetaching();
    }

    private void AssociatedObjectUnloaded(object sender, RoutedEventArgs e)
    {
      Cleanup();
    }
    #endregion
  }

Quelle :

A behavior to show the Windows Phone 7 camera as background

Google Analytics für WP7 Apps

Ich habe einen coolen Post mal wieder gefunden, über den Einsatz von Google Analytics und dem Silverlight Analytics Framework .

image

Abb.: Analyse von App Nutzungen

Mit etwas Aufwand ist dieses Framework schnell in die eigene App eingebaut.  Nach dem Download der Tools müssen als erstes die Referenzen gesetzt werden.

  • Microsoft.WebAnalytics.dll
  • Microsoft.WebAnalytics.Behaviors.dll
  • System.ComponentModel.Composition.dll
  • System.ComponentModel.Composition.Initialization.dll
  • System.Windows.Interactivity.dll

Also nächtes sollte dich der Developer einen Google Analytics Account anlegen und einen sogenannten WebPropertyId von Google besorgen. Danach noch die einige Zeilen Code und das Tool ist fertig eingebaut.

public class AnalyticsService : IApplicationService
{
    private readonly IApplicationService _innerService;
    private readonly GoogleAnalytics _googleAnalytics;
    public AnalyticsService()
    {
        _googleAnalytics = new GoogleAnalytics();
        _googleAnalytics.CustomVariables.Add(new PropertyValue { PropertyName = "Device ID", Value = AnalyticsProperties.DeviceId });
        _googleAnalytics.CustomVariables.Add(new PropertyValue { PropertyName = "Application Version", Value = AnalyticsProperties.ApplicationVersion });
        _googleAnalytics.CustomVariables.Add(new PropertyValue { PropertyName = "Device OS", Value = AnalyticsProperties.OsVersion });
        _googleAnalytics.CustomVariables.Add(new PropertyValue { PropertyName = "Device", Value = AnalyticsProperties.Device });
        _innerService = new WebAnalyticsService
                            {
                                IsPageTrackingEnabled = false,
                                Services = { _googleAnalytics, }
                            };
    }
    public string WebPropertyId
    {
        get { return _googleAnalytics.WebPropertyId; }
        set { _googleAnalytics.WebPropertyId = value; }
    }
    #region IApplicationService Members
    public void StartService(ApplicationServiceContext context)
    {
        CompositionHost.Initialize(
            new AssemblyCatalog(
                Application.Current.GetType().Assembly),
            new AssemblyCatalog(typeof(AnalyticsEvent).Assembly),
            new AssemblyCatalog(typeof(TrackAction).Assembly));
        _innerService.StartService(context);
    }
    public void StopService()
    {
        _innerService.StopService();
    }
    #endregion
}
Also Beispiel Tracker wird unter Einsatz von MEF, dieser wie folgt implementiert:
public class AnalyticsTracker
{
    public AnalyticsTracker()
    {
        CompositionInitializer.SatisfyImports(this);
    }
    [Import("Log")]
    public Action<AnalyticsEvent> Log { get; set; }
    public void Track(string category, string name)
    {
        Track(category, name, null);
    }
    public void Track(string category, string name, string actionValue)
    {
        Log(new AnalyticsEvent { Category = category, Name = name, ObjectName = actionValue });
    }
}
Diese Analyse sollte man als App Entwickler unbedingt nutzen um die App noch zu verbessern und welche Funktionen den meisten Traffic haben.
Quelle: