Archive | Oktober 2011

Audio und WP7

Einen neuen Post hat Jesse Liberty erstellt, heute geht es um das kopieren von Audiodateien auf das Isolated Storage vom Handy. Dieses ist wohlbemerkt ein Einsteiger Beispiel, aber eben wieder in gewohnt guter Qualität.

private void CopyToIsolatedStorage()
{
    using (IsolatedStorageFile storage =
        IsolatedStorageFile.GetUserStoreForApplication())
    {
        string[ ] files = new string[ ]
        {
            "Kalimba.mp3",
            "Maid with the Flaxen Hair.mp3",
            "Sleep Away.mp3"
        };
        foreach (var _fileName in files)
        {
            if (!storage.FileExists( _fileName ))
            {
                string _filePath = "Audio/" + _fileName;
                StreamResourceInfo resource =
                    Application.GetResourceStream(
                    new Uri( _filePath, UriKind.Relative ) );
                using (IsolatedStorageFileStream file =
                    storage.CreateFile( _fileName ))
                {
                    int chunkSize = 4096;
                    byte[ ] bytes = new byte[chunkSize];
                    int byteCount;
                    while ((byteCount =
                        resource.Stream.Read(
                        bytes, 0, chunkSize )) > 0)
                    {
                        file.Write( bytes, 0, byteCount );
                    }
                }
            }
        }
    }
}

Quelle :

Jesse Liberty Blog

Cross-Platform Projectbeispiel

Damit man nicht alles neu programmieren muss, wenn man für WP7 oder WPF entwickelt, zeigt ein Post auf der Website The Code Project wie eine Solution aufgebaut werden sollte.

Abb.: Youtube Video eine Xaml Finance App

Diese Anwendung ist verfügbar für WP7, Silverlight, und WPF.

XAMLFinanceSilverlightSmall.jpg

Abb.: Silverlight Version Online

Es wird wirklich alles beleuchtet in diesem Post, wie z.B. die Marktverteilung von Xaml Anwendung. Sehr gut wird erklärt wie Projekteigenschaften angepasst werden müssen und wie die Views und die Models aufgebaut werden können.

XamlFinanceWPFDesign.png

 

Quelle:

XAMLFinance – A Cross-platform WPF, Silverlight & WP7 Application

HTML5 auf WP7 Mango

Mit dem Mango Update kommt nun auch der IE9 mit HTML5 Unterstützung aufs WP7 Handy. Auf Codeplex ist dafür nun eine HTML5 Toolsunterstützung DLL Daenet.WidgetLibrary.dll erschienen. Jetzt ist es ein leichtes bestehenden Webcontent uws. auf WP7 umzustellen, besonders hervorzuheben ist die JQuery Einbindung.

pic2

Mit nur wenigen Zeilen Code ist die Erste Website auf dem Phone.

pic5

In einem Post beschreibt der Entwickler des Tools wie diese Lib arbeitet. In 2 weiterführenden Post wird dieses Wissen vertieft, Quellen siehe unten.

Quellen:

Codeplex
HTML5 for Windows Phone 7.1+ – Episode I : HTML5 Support
HTML5 for Windows Phone 7.1+ – Episode II : Browsing HTML content
 

Mango’s Agenten ein Designansatz

Über die Agents in Mango Update habe ich ja schon berichtet, wie man nur Code gemeinsam benutzen kann, also in der Normalen App und im Agent, zeigt Shawn Wildermuth.

10-15-2011 7-31-44 PM

Der Ansatz ist mir durch WCF schon bekannt aber die Idee fand ich sehr smart. Ich habe auch einen Update Agenten momentan im Einsatz und baue jetzt aber das um wie in diesem Demo. Wieder zeigt sich das man nie auslernen tun.

Quelle:

Confusion Around WP7.1 Periodic Agents

 

HubTile Visual States Beispiel

Weil ich gerade sowieso damit in meiner aktuellen APP rumspiele, fand ich den Post auf WindowsPhoneGeek Blog sehr interessant.

Es geht um HubTiles und dem Visual State.

image

Diese Flipping und Expand States werten ein App wirklich auf.

image

Abb: Verschiedene State

Mit den Windows Phone Toolkit sind das nur wenige Zeilen Code. Hier ein Beispiel Code:

<StackPanel x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0" Orientation="Vertical">
        <toolkit:HubTile x:Name="hubTile" Background="Green" Source="wpglogo.png" Title="Hold Here" Message="This is HubTile message!" Margin="10"/>
        <Button x:Name="btnGoToExpanded" Content=" Go To Expanded State" Click="btnGoToExpanded_Click" />
        <Button x:Name="btnGoToSemiexpanded" Content="Go To Semiexpanded State" Click="btnGoToSemiexpanded_Click" />
        <Button x:Name="btnGoToFlipped" Content="Go To Flipped State" Click="btnGoToFlipped_Click" />
        <Button x:Name="btnGoToCollapsed" Content="Go To Collapsed State" Click="btnGoToCollapsed_Click" />
</StackPanel>

Und hier die Steuerung des Visual State Manager in C#:

private void btnGoToSemiexpanded_Click(object sender, RoutedEventArgs e)
{
    VisualStateManager.GoToState(this.hubTile, "Semiexpanded", true);
}

Quelle:

WindowPhoneGeek Blog
How to Programmatically Switch between the HubTile Visual States

Tool des Monats Schnappschuss im Livebetrieb einer APP

Mr. Wilcox hat mal wieder eine Tools Klasse gemacht, für zeitgesteuertes Aufnehmen von Fotos der eigenen APP. Ich erweitere diese noch um eine Webservice Klasse für meine eigenen Apps.

Diese werde ich dann hier anbieten, wenn Mr. Wilcox da nichts gegen hat.

        private DispatcherTimer _dt;
        private double _interval;
        private IsolatedStorageFile _isf;
        private static ScreenShots _instance;
        public static void BeginTakingPictures(double interval = 2.0)
        {
            if (_instance == null)
            {
                _instance = new ScreenShots();
                _instance.Start(interval);
            }
            else if (_instance._dt != null)
            {
                _instance._dt.Start();
            }
        }
Auszug von Sourcecode.
Mit einem weiteren Tool kann man diese Bilder auch auslesen mit den Powertools auf Codeplex.

CaptureTool

Dieses Tool kann dann auf der App die Daten auslesen.
Quellen:
Jeff Wilcox Blog
Codeplex
 

Windows Phone Marketplace Test Kit

Ein neues Toolkit ist für WP7 erschienen. Das Windows Phone Marketplace Test Kit.

Mit diesem Tool können Developer schon vorab ihre Abnahme für den Marketplace testen. Was man auf anderen Mobilen Plattformen schmerzlich vermisst bringt Microsoft jetzt schon herraus. Verfügbar ist es über das Windows Phone SDK. Die Benutzung ist denkbar einfach.

Nach dem installieren des SDK ist es automatisch unter dem Menüpunkt Projekt verfügbar. Es sind folgende 4 Optionen verfügbar:

  • Application Details
  • AP_Con_TestKitAppDetails
  • Automated Tests
  • AP_Con_TestKitAutomatedTests
  • Monitored Tests
  • AP_Con_TestKitMonitoredTests
  • Manual Tests
  • AP_Con_TestKitManualTests

 

Es werden je nach Option die UI, die Zugriffmöglichkeiten der App getestet und ob alles korrekt implemtiert wurde.

Quelle:

MSDN

 

HubTile Event Binding mit MVVM Light Toolkit

HubTiles sind im neuen WP7 Mango noch deutlich aufgewertet worden und der Developer hat viel mehr Möglichkeiten die UI seiner APP zu verbessern. Viele Entwickler benutzen wie auch ich das MVVM Light Toolkit um MVVM in der APP umzusetzen. Um nun im HubTile EventToCommand Binding richtig umzusetzen ist auf WindowsPhoneGeek ein Post erschienen wo beschrieben wird wie einfach das ist.

Ein Command erstellen:

 public ICommand TapCommand

    {
        get;
        set;
    }
Eine Action Methode:
private void HubTileTapAction(string param)
{
    string message = string.Format("{0} was tapped", param);
    MessageBox.Show(message);
}
Und ein wenig Code und XAML:
public MainPage()
{
    InitializeComponent();
    ICommand tapCommand = new RelayCommand<string>(this.HubTileTapAction);
    //...
}
<ListBox Grid.Row="0" x:Name="tileList">
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <toolkit:WrapPanel Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <toolkit:HubTile Title="{Binding Title}" Margin="3"
                             Notification="{Binding Notification}"
                             DisplayNotification="{Binding DisplayNotification}"
                             Message="{Binding Message}"
                             GroupTag="{Binding GroupTag}" Source="{Binding ImageUri}">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="Tap">
                        <cmd:EventToCommand Command="{Binding TapCommand}" CommandParameter="{Binding Title}" />
                    </i:EventTrigger>
                </i:Interaction.Triggers>
            </toolkit:HubTile>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
Und hier das Ergebnis:
imageimage
Quelle:
WindowsPhoneGeek

MetroGridHelperClass Hilfe für Developer und Designer

Jeff Wilcox, als bekennender WP7 Fan hat eine Helper Class für XAML Grids geschrieben. Diese hilft beim Erstellen von korrekten Metro Design Feeling. Es ist so leichter auch für den Designer Fehler frühzeitig im Design einer App zu erkennen.

PhoneMetro

Abb.: Zeigt die Class in einer Demo App

Noch einen Vorteil gibt es die Sourcen sind NuGet verfügbar.

Quelle:

Jeff Willcox Blog

 

Expander Control Kurzvorstellung

Gestern hat mir ein guter Freund ein cooles Control gezeigt, was genau in die aktuelle App Entwicklung passt.

Ein Expander Control, das schöne an diesen Post auf der Website von CESPage.com ist das genau beschrieben wird wie so ein Usercontrol aufgebaut wird. Mit alles Template und Animations und Styles.

Mit nur wenigen Zeilen Code  XAML kann diese Control erstellt werden.

MainPage XAML Pane

Und so sieht das Control im Einsatz aus:

Application Running
Und noch eine Abbildung im geschlossenen Modus:
Expander Control

Quelle:

CESPage.com