Mit Hilfe der ZXing .Net API http://zxingnet.codeplex.com/ kann man recht einfach und unkompliziert einen Barcodescanner für eine Windows Store App erstellen.
Hier nun ein kleines Beispiel mit Hilfe des CameraCatureUI Dialoges, dieser Dialog steht uns unter Windows Phone 8.1 nicht zur Verfügung hier müssen wir die Methoden der MediaCature Klasse verwenden weiter Informationen unter Aufnehmen und Speichern von Fotos aus der Kamera
Zunächst erstellen wir mit dem CameraCaturUI Dialog eine StorageFile die unser aufgenommenes Foto hält.
Die Datei reichen wir an eine von mir erstellte BarcodeScanner klasse weiter die den Barcode mit Hilfe des ZXing.Net API den Barcode ausliest und mir über das Event BarcodeScanCompleted den ausgelesenen Barcode mitteilt.. Die geschieht in der Methode ScannBarcodeAsync.
Um in der jeweiligen Aufrufs Seite auf den Abschluss des Scans reagieren zu könne wurde von mir in der Klasse noch ein Event erstellt welches dem ausgelesen Barcode und ein Flag zurückgibt ob der Scan erfolgreich war.
Schon haben wir einen Barcode Scanner implementiert und könne die Barcode die über die ZXing.Net APIT erkannt werden können. Auslesen.
Ich wünsche euch viel Spaß und bis zum nächsten mal.
Information zur Entwicklung von Windows Store, Windows Phone App und ASP.NET MVC Anwendungen
Posts mit dem Label Windows 8 werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Windows 8 werden angezeigt. Alle Posts anzeigen
Freitag, 18. Juli 2014
Mittwoch, 25. Juni 2014
Speicher einer Generischen Liste in den Application Storage
Im letzten Post haben ich gezeigt wie wir eine Klasse in ein
XML Serializieren und Deserializieren können, nun wollen wir unsere erzeugten
XML Daten auch als StorageFile im Lokalen Applikation Verzeichnis Speicher.
//Vergeben des Dateinamen string fileName = „TrackinData“; //Erzeugen des XML string localData = ObjectSerializer>.ToXml(list); if (!string.IsNullOrEmpty(localData)) { //Erstellen der Datei und Speichern im Lokalen Verzeichnis StorageFile localFile = await ApplicationData.Current.LocalFolder.CreateFileAsync(string.Format("{0}.xml", fileName), CreationCollisionOption.ReplaceExisting); await FileIO.WriteTextAsync(localFile, localData); }
Um die Daten wieder zu laden muss die Entsprechende Datei
aus dem Lokalen Applikation Verzeichnis geladen werden und das erhaltene XML
wieder Deserializieren werden.
StorageFile localFile; ObservableCollectionitemCollection = new ObservableCollection (); Try { localFile = await ApplicationData.Current.LocalFolder.GetFileAsync("localData.xml"); } catch (FileNotFoundException) { localFile = null; } if (localFile != null) { string localData = await FileIO.ReadTextAsync(localFile); itemCollection = ObjectSerializer >.FromXml(localData); }
Serializing / Deserializing objects in und aus einem XML
Zum Speicher und Austausch von Daten und Einstellungen greife ich gerne auf XML-Dateien zurück. Um diese zu erstellen habe ich bei http://www.getcodesamples.com/ eine recht elegante Lösung gefunden.
Mit Hilfe der ObjectSerializer Klasse kann man ganz einfach eine Klasse oder eine generische Liste in ein XML umwandeln.
ObjectSerializer Klasse
internal static class ObjectSerializer
{
// Serialize to xml
public static string ToXml(T value)
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
StringBuilder stringBuilder = new StringBuilder();
XmlWriterSettings settings = new XmlWriterSettings()
{
Indent = true,
OmitXmlDeclaration = true,
};
using (XmlWriter xmlWriter = XmlWriter.Create(stringBuilder, settings))
{
serializer.Serialize(xmlWriter, value);
}
return stringBuilder.ToString();
}
// Deserialize from xml
public static T FromXml(string xml)
{
T value;
object empty = null;
value = (T)empty;
Try
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
using (StringReader stringReader = new StringReader(xml))
{
object deserialized = serializer.Deserialize(stringReader);
value = (T)deserialized;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
[XmlRoot(ElementName = " XMLExampleClass ")]
public class XMLExampleClass
{
Entsprechend kann dann die Klasse unter Verwendung der
Methode ToXml in ein XML Serializiert werde und mit der Methode FromXml wieder
Deserializiert.
XMLExampleClass instance = new XMLExampleClass();
instance.Id = 0;
instance.Name = “Test”
// Serialize to xml
string localXml = ObjectSerializer.ToXml(instance);
// Deserialize from xml
XMLExampleClass instanceFromXml = ObjectSerializer.FromXml(localXml);
Donnerstag, 27. März 2014
Datenschutzrichtlinien zur Windows Settings Charm hinzufügen.
Wie es so schon in den App-Zertifizierungsanforderungen für
den Windows Store heißt:
Sowie Ihr diese Zeilen in euer App integriert habt sollten
Eure App-Einstellungen in der Windows Setting Charm den Punkt „Datenschutzrichtlinien“
enthalten.
4.1.1 Ihre App muss über eine Datenschutzrichtlinie
verfügen, sofern sie netzwerkfähig ist.
Sofern Ihre App über die technischen Möglichkeiten zur
Datenübertragung verfügt, benötigen Sie eine Datenschutzrichtlinie. Sie müssen
auf der Seite Beschreibung der App sowie in den App-Einstellungen (angezeigt
über den Windows-Charm "Einstellungen") Zugriff auf Ihre
Datenschutzrichtlinie ermöglichen.
http://msdn.microsoft.com/de-DE/library/windows/apps/hh694083.aspx
Hierfür sollte man seine Datenschutzrichtlinie als eigene Webseite bereitzustellen. Der Vorteil der eigenen Seite ist es das man so auch gleich eventuelle Lokalisierungen für mehrere Sprachen selbst hinterlegen kann.
http://msdn.microsoft.com/de-DE/library/windows/apps/hh694083.aspx
Hierfür sollte man seine Datenschutzrichtlinie als eigene Webseite bereitzustellen. Der Vorteil der eigenen Seite ist es das man so auch gleich eventuelle Lokalisierungen für mehrere Sprachen selbst hinterlegen kann.
Anschließend muss man in seiner App die App.xlam.cs um folgende Einträge ergänzen:
protected override void OnWindowCreated(WindowCreatedEventArgs args)
{
SettingsPane.GetForCurrentView().CommandsRequested += (s, e) => e.Request.ApplicationCommands.Add(new SettingsCommand("privacypolicy", "Datenschutzrichtlinien“, ShowPrivacyPolicy));
}
private async void ShowPrivacyPolicy(IUICommand c)
{
Uri uri = new Uri("http://www.MyPrivacyPolicy.org/privacyPolicyWin8App/“);
await Windows.System.Launcher.LaunchUriAsync(uri);
}
protected override void OnWindowCreated(WindowCreatedEventArgs args)
{
SettingsPane.GetForCurrentView().CommandsRequested += (s, e) => e.Request.ApplicationCommands.Add(new SettingsCommand("privacypolicy", "Datenschutzrichtlinien“, ShowPrivacyPolicy));
}
private async void ShowPrivacyPolicy(IUICommand c)
{
Uri uri = new Uri("http://www.MyPrivacyPolicy.org/privacyPolicyWin8App/“);
await Windows.System.Launcher.LaunchUriAsync(uri);
}
Abonnieren
Posts (Atom)