Oktober 2018

Band 33, Nummer 10

Dieser Artikel wurde maschinell übersetzt.

Xamarin - Augmented Reality-Modus in Xamarin.Forms

Durch Rajeev K K

Augmented Reality-Modus (AR) entwickelt als ein äußerst nützliches Tool zur Lösung alltäglicher Probleme schnell. AR ist eine interaktive, Reality-basierte Darstellung-Umgebung, die wie virtuelle Objekte mit echten Werten, die eine beeindruckende benutzererfahrung erstellen Aktiviert erweiterte Hardware wie Microsoft HoloLens, setzt es virtuelle 2-D/3-D-Objekte, Sound, Text, Auswirkungen und Überwachung.

AR ein bereit-Startseite in mobilen Geräten und -Smartphones Dank mit hoher Auflösung Kameras, schnellen Prozessoren und drahtlose Netzwerke mit großer Bandbreite gefunden. Unterstützung für AR-Funktionalität in mobile Betriebssysteme wie iOS und Android unten die Grenze für den Eintrag. Umfassende Unterstützung von mobilen Geräten stellt AR ein attraktives Ziel für Xamarin.Forms-Entwickler, die können die gemeinsame Verwendung von Code Vorteile des Frameworks und Reife Tools alle überzeugende Vorteile von AR.

Unternehmen sind bereits AR verwenden, um Kontakte zu Unternehmenskunden und Erfahrungen zu verbessern. Harley-Davidson hat eine iPad-app erstellt, die eine virtuelle Einkaufserlebnis, mit dem Kunden anzeigen bereitstellt, Text-Typen, Arbeitsplätze, Lichter und andere Optionen für ihre benutzerdefinierte Bike Entwürfe hinzufügen können. Die Hyundai virtuellen Reiseführer app verwendet AR, um Besitzer zu vermitteln, wie die Auto funktioniert zwar endlich eine app entwickelt hat, mit dem Kunden finden Sie unter wie Möbel in ihren Lebensunterhalt Leerzeichen aussehen könnte.

AR ist derzeit eine gerätespezifische-Funktion, die eine native Plattform zum Ausführen benötigt. iOS macht für Entwickler über ARKit, AR verfügbar, während die Android über ARCore tut. ARKit ist erforderlich, ein iOS-Gerät mit iOS 11 oder höher und mindestens einem A9-Prozessor. ARCore erfordert Android 7.0 oder höher und Zugriff auf die Google Play Store. Sehen Sie sich die offizielle Dokumentation von Google (bit.ly/2BY68oS) und Apple (apple.co/2PcSVdm) Weitere Informationen zu den Hardware- und softwareanforderungen.

Beim Lernen einer neuen Technologie, ist es wichtig zu verstehen, die grundlegenden Konzepte dahinter. Betrachten wir diese Konzepte für AR.

Nachverfolgung sucht Ihr Gerät Position in der realen Welt in Echtzeit. ARKit verwendet eine Technik namens Visual-eingestellten Odometry (VOI), während ARCore gleichzeitige Odometry verwendet und Zuordnung (COM) zum Erstellen einer Echtzeit Beziehung zwischen physischen und virtuellen Leerzeichen.

Environmental Verständnis ist der Prozess der Feature-Punkten und Ebenen in der realen Welt erkennen. ARCore und ARKit sind kann jeder Ebene an der Grenze zu ermitteln. Dies kann für die Platzierung eines virtuellen Objekts in einer realen Ebene Grenze verwendet werden.

Anker bezieht sich auf die Position und Ausrichtung im physischen Raum. Wir müssen eine tatsächliche Position in der realen Welt zu finden, zu eine Szene platzieren. ARKit und ARCore sind beide für den Unterhalt dieser Position die Kamera auf verschoben werden können.

Hell Schätzung bestimmt die Menge an Licht in der physischen Umgebung und virtuelle Objekte, die in einen realistischeren Effekt erzeugt eingebettet, die richtige Menge an Beleuchtung gilt. ARKit und ARCore verwenden die Kamerasensoren, um das Licht zu schätzen.

Interaktive Environmentenables ARCore und ARKit um den Bildschirm des Geräts die physische Umgebung zuzuordnen, verwenden den Treffertest durchführen um zu bestimmen, X, Y-Koordinaten auf dem Bildschirm. Dies bietet Benutzern die Möglichkeit zur Interaktion mit der Umgebung über die Bildschirm-Schnittstelle verwenden, z. B. Gesten wie tippen und wischen.

Geben Sie Xamarin.Forms

Xamarin ist eines der am häufigsten verwendeten plattformübergreifenden Tools für Unternehmen entwickeln von mobilen Anwendungen. Dank der Einführung von Xamarin.Forms können Unternehmen für iOS und Android mithilfe einer einzigen, freigegebene C#-Codebasis native Benutzeroberflächen erstellen können, lösen einen Schlüssel Hindernis für die Einführung und somit eine überzeugende Plattform für die Entwicklung von unternehmensanwendungen. ARKit und ARCore werden vollständig von Xamarin unterstützt, und die Xamarin-Website bietet ausführliche Dokumentationen für ARKit und ARCore.

Meiner Erfahrung in der Entwicklung mobiler Anwendungen ist es möglich, die eine erhebliche Reduzierung in beiden Zeilen des Codes und Anzahl von Fehlern zu erreichen, indem Sie weitere achten, in der Entwurfsphase von Xamarin.Forms-Anwendungen. Ein ordnungsgemäßer Architekturentwurf in Xamarin.Forms ermöglicht die Wiederverwendung von Code im größtmöglichen über Plattformen hinweg. Darüber hinaus können die schnelleren Entwicklung, einfache Automatisierung testen, Integration von Änderungen, die Verringerung von Fehlern und vieles mehr. In der Agile-Welt in der Reihenfolge für eine Anwendung erfolgreich ausgeführt werden kann sollten sie einfaches Hinzufügen von Funktionalität mit minimalen codeänderungen, ohne neue Fehler aktivieren. Daher ist Xamarin.Forms eine bevorzugte Methode für die Entwicklung für mobile Geräte, insbesondere, wenn Sie mit der Agile-Methodik ausgeführt.

Als Entwickler Xamarin ist es interessant, sehen, wie die Leistungsfähigkeit von C#- und die Vorteile von Xamarin.Forms Entwicklung interessante AR-basierten Anwendungen verbessern können.

Betrachten Sie die AR als eine UI-Ebene in Xamarin, die alle Benutzerinteraktionen behandelt. Da AR ein Feature, der gerätespezifischen und Hardware-vertraulich ist ist, gibt es häufig möglicherweise Situationen, in denen die Native AR-Plattform-Funktionen sind nicht in der Forms-API implementiert. Dies ist, in dem der größte Vorteil von Xamarin.Forms praktisch.

Um Xamarin-Anwendungen zu entwickeln, muss Visual Studio auf dem Computer installiert werden. Ich kann Xamarin auf einem Windows-Computer mit Visual Studio code, aber ich benötigen einen Mac ausführen und Debuggen von iOS-Anwendungen. Installieren Sie die neuesten iOS und Android-SDKs in Entwicklungscomputer an.

Xamarin Live Player zum Testen von Xamarin.Forms-Anwendungen verwendet werden können, ist kein Tool professionellem und unterstützt nicht die benutzerdefinierte Renderer, Effekte oder Drittanbieterprodukten ModelView-View-Model (MVVM). Microsoft empfiehlt die Verwendung von Emulatoren zum Testen von Anwendungen mit Xamarin in Visual Studio integriert. Viele Entwickler können auch Genymotion verwenden. Für Tests, hat es empfohlen, um iOS und Android-AR-basierten Anwendungen auf physischen mobilen Geräte zu installieren.

Erstellen von Xamarin.Forms AR-Projekt

In diesem Beispiel zeige ich Ihnen ein 3-d Flugzeuge-Image in einem physischen Adressraum, der mit Xamarin.Forms und ARKit zu versetzen. Sie erfahren, wie diese 3D-Objekts zu animieren. Abbildung 1 zeigt die endgültige AR-app unter iOS.

Ausführen der Anwendung auf iOS
Abbildung 1 – Ausführen der Anwendungs unter iOS

Ich beginne, durch das Erstellen einer Xamarin.Forms-Anwendung mit dem Namen ARApp. Siehe abbildung2, ein Standard-Xamarin.Forms-Projekt mit dem Namen ARApp für .NET Standard, zusammen mit den plattformspezifischen Projekten ARApp.iOS und ARApp.Android generiert. Ich können als Nächstes erstellen Sie einen Ordner mit dem Namen art.scnassets und 3D- und texturdateien zum Projekt ARApp.iOS hinzufügen. Diese Objekte werden zum Laden der AR-Szene.

Struktur des Projekts
Abbildung 2 – Projektstruktur

Nun erstelle ich die Benutzeroberfläche für das Initiieren der AR-Funktionalität. Zu Demonstrationszwecken definiere ich eine Schaltfläche in der Datei "MainPage.xaml" wie folgt:

<Button Text="Click Me" VerticalOptions="Center" HorizontalOptions="Center"
  Clicked="OnButtonClick"></Button>

Anschließend implementiere ich das Schaltflächen-Klickereignis in Codebehind, durch den folgenden Code:

public partial class MainPage : ContentPage
{
  public MainPage()

  {
    InitializeComponent();
  }
  private void OnButtonClick(object sender, EventArgs e)
  {
    // Handle the button click from XAML UI here
  }
}

Ich habe jetzt die Xamarin.Forms-UI-bereit. Jetzt werde ich für die native Implementierung der AR-Ebene verschieben.

Clientplattform-spezifische AR-Implementierung

Es ist Zeit, AR mit plattformspezifischen APIs für ARKit oder ARCore, abhängig von der Plattform implementieren. Zunächst erstellen eine plattformspezifische Benutzeroberfläche mit der AR-UI-Implementierung, die mithilfe von DependencyService, die Xamarin-Implementierung der Abhängigkeitsinjektion (DI), die apps plattformspezifische Funktionalität von freigegebenem Code aufrufen kann aufgerufen werden kann.

Ich werde eine Implementierung für die Benutzeroberfläche unter iOS nutzen. Zunächst ich eine ViewController im iOS-Projekt erstellen, und fügen Sie den Code in Abbildung 3.

Abbildung 3: Implementieren einer Benutzeroberflächenautomatisierungs für iOS

public override void ViewDidLoad ()
{
  base.ViewDidLoad();
  startAR();
}
// Initialize AR scene view
public void startAR()
{
  // Create the scene view for displaying the 3-D scene
  sceneView = new ARSCNView();
  sceneView.Frame = View.Frame;
  View = sceneView;
  CreateARScene(sceneView);
  PositionScene(sceneView);
}
// Configure AR scene with 3-D object
public void CreateARScene(ARSCNView sceneView)
{
  // lLoading the 3-D asset from file
  var scene = SCNScene.FromFile("art.scnassets/ship");
  // Attaching the 3-D object to the scene
  sceneView.Scene = scene;
  // This is for debugging purposes
  sceneView.DebugOptions = ARSCNDebugOptions.ShowWorldOrigin | 
    ARSCNDebugOptions.ShowFeaturePoints;
}
// Position AR scene
public void PositionScene(ARSCNView sceneView)
{
  // ARWorldTrackingConfiguration uses the back-facing camera,
  // tracks a device's orientation and position, and detects
  // real-world surfaces, and known images or objects
  var arConfiguration = new ARWorldTrackingConfiguration
  {
    PlaneDetection = ARPlaneDetection.Horizontal,
    LightEstimationEnabled = true
  } ;
  // Run the AR session
  sceneView.Session.Run(arConfiguration, ARSessionRunOptions.ResetTracking);
  var sceneNode = sceneView.Scene.RootNode.FindChildNode("ship", true);
  sceneNode.Position = new SCNVector3(0.0f, 0.0f, -30f);
    sceneView.Scene.RootNode.AddChildNode(sceneNode);
  // Add some animation
  sceneNode.RunAction(SCNAction.RepeatActionForever(
    SCNAction.RotateBy(0f, 6f, 0, 5)));
}

Ich bin jetzt zum Aufrufen von AR von Xamarin.Forms festgelegt. Aber wie? Dies kommt die wahre Leistungsfähigkeit von Xamarin.Forms. DI dient zum Aufrufen von systemeigenen Plattform-Code in .NET Standard oder optional eine Portable Klassenbibliothek (PCL). Sehen wir uns an, wie dies implementiert wird.

Abhängigkeitsdienste

Die Funktionalität DependencyService kann apps plattformspezifische Funktionalität aus freigegebenem Code aufrufen. Diese Funktionalität ermöglicht das Xamarin.Forms-apps, nichts tun, die eine native app ausführen können. Es gibt vier Komponenten, die für die Verwendung von DependencyService erforderlich sind:

  • Schnittstelle: Definieren Sie die Funktionalität als eine Schnittstelle im freigegebenen Code an.
  • Die Implementierung pro Plattform: Fügen Sie die Klassen implementieren die Schnittstelle für jede plattformprojekt hinzu.
  • Registrierung: Registrieren Sie jede implementierende Klasse mit DependencyService über ein Metadatenattribut. Registrierung ermöglicht DependencyService die implementierende Klasse suchen und anstelle der Schnittstelle zur Laufzeit bereitstellen.
  • Rufen Sie zum DependencyService: Fordern Sie Implementierungen der Schnittstelle durch explizites Aufrufen von DependencyService von Code.

Dependency Services verwende in einer Anwendung Xamarin.Form ich zum Implementieren von AR.

Schnittstelle muss eine Schnittstelle für die Interaktion mit ARKit/ARCore plattformspezifische APIs definieren entworfen werden. Es ist wichtig, um mehr Aufmerksamkeit auf dieser Ebene in den Entwurf zu gewähren, wie sie die API-Schicht für externe Klassen verfügbar gemacht wird. Sie können beispielsweise erstellen Sie eine Schnittstelle, die mit dem Namen IARApp und definieren Sie eine Methode mit dem Namen LaunchAR:

public interface IARApp{
  void LaunchAR (  ); // Note that interface members are public by default
}

Clientplattform-spezifische Implementierung für AR-Schnittstelle die Schnittstelle muss implementiert werden, in dem Projekt für jede Zielplattform angibt. Da die Implementierung in einer freigegebenen Umgebung erfolgt, kann die Schnittstelle aus allen Plattformen aufgerufen werden. Jede Plattform, die fehlen, für der Implementierung wird eine "NullReferenceException" generiert.

Sehen Sie den Code für die Implementierung für IARApp-Schnittstelle auf IOS-Feature in Abbildung 4. Der Code zum Implementieren der gleichen Schnittstelle unter Android ist hier:

[assembly: Xamarin.Forms.Dependency(typeof(ARDemo.Droid.ARAppImpl))] 
namespace ARDemo.Droid
{
  public class ARAppImpl:IARApp
  {
    public void LaunchAR()
    { 
      // Launch AR in Android
    }
  }
}

Abbildung 4: Implementierung für IARApp-Schnittstelle auf iOS

[assembly: Xamarin.Forms.Dependency(typeof(ARDemo.iOS.ARAppImpl))]
namespace ARDemo.iOS
{
  public class ARAppImpl:IARApp
  {
    public void LaunchAR()
    {
      // This is in native code; invoke the native UI
        ARViewController viewController = new ARViewController();
        UIApplication.SharedApplication.KeyWindow.RootViewController.
          PresentViewController(viewController, true, null);
    }
  }
}

Beachten Sie, dass die [Assembly:]-Attribut muss über dem Namespace deklariert werden. Andernfalls wird nicht Abhängigkeitsdienst aufgerufen werden. Mit all dies erfolgt kann ich jetzt AR aus einer Xamarin.Forms-Schaltflächenklick aufrufen, Aufrufen des Diensts Abhängigkeit mit dem folgenden Code:

public partial class MainPage : ContentPage
{
  public MainPage()
  {
    InitializeComponent();
  }
  private void OnButtonClick(object sender, EventArgs e)
  {
    DependencyService.Get<IARApp>().LaunchAR(); // Launch AR
  }
}

Zusammenfassung

Abbildung 5 bietet einen Blick auf die Anwendungsarchitektur für die Beispiel-app. Die AR-Implementierung für iOS ist abgeschlossen, und können Sie die Android-Implementierung die gleiche Weise abschließen.

Die Anwendungsarchitektur
Abbildung 5: die Anwendungsarchitektur

Hier ist ein Tipp für diejenigen, die beabsichtigen, dies für Android zu implementieren: Verwenden Sie ARCore über Abhängigkeitsdienste für die Implementierung von AR in Android. HelloAR ist ein Google-AR-Projekt für Android-Plattformen implementiert, die auf Xamarin portiert werden. Dieses Projekt helfen Sie die AR-Implementierung in Android zu starten. Finden Sie in den folgenden Links Weitere Informationen: bit.ly/2ojBZq4 und bit.ly/2PKcomX.

Eine letzte Sache: Für das Entwerfen einer ansprechende beeindruckende benutzererfahrung mit AR in Mobile, ist es wichtig, Sie entwerfen die Benutzer zu priorisieren. ARKit und ARCore bietet nützliche Tipps und Richtlinien zum Erstellen von optimale faszinierende Oberflächen für Endbenutzer. Hier sind einige wichtige Interaktion Entwurfsrichtlinien für AR:

  • Interaktionen sollte intuitiv und einfach. Vermeiden Sie unnötige Komplexität.
  • Verwenden Sie audio und Übermitteln von haptischem Feedback zur Verbesserung der eintauchen.
  • Verwenden Sie die gesamte Bildschirmfläche (anzeigen), um den Benutzer zu erfassen.
  • Im Hintergrund, Objekte und Animationen sollten für den Benutzer eingefügt werden.
  • Beachten Sie, wie Personen halten ihr Gerät aus, wenn Ihre app verwenden müssen, und stellen Sie sicher, dass es eine optimale beeindruckende Leistung bietet.
  • Bieten Sie intuitive kontextbasierte Anleitungen für den Benutzer bei Bedarf.

AR ist bahnbrechend. Es ist der Hauptbestandteil von neuen Technologien rund um digitaler Kenntnisse, die physische Assets, Prozesse und Systeme, um eine Vielzahl von Aktivitäten zu profitieren digital Replikate nutzt. Das Wachstum dieser Technologie im Unternehmen erfolgt sehr schnell und Xamarin.Forms steht ein wichtiger Faktor der digitaler Kenntnisse, die in Zukunft sein. Achten Sie darauf, um die Magie von AR auf verschiedenen Plattformen zu untersuchen, und besorgen Sie sich die ausgestattet.

Viel Spaß beim Programmieren!


Rajeev K Rals Solution Architect bei TCS interaktiv in Tata Consultancy Services ist. Er wird hauptsächlich zu beschreiben, ableiten von End-to-End-Enterprise digital Channel-Strategie und die Architektur auf Unternehmensniveau für mobile Lösungen erstellen. Er ist die neuesten Technologien für die digitale Leidenschaft und Experimente interessiert durch das Mischen von faszinierende Technologien in Mobile mit künstliche Intelligenz/ML und conversational UI-Plattformen.

Unser Dank gilt dem folgenden technischen Experten bei Microsoft für die Durchsicht dieses Artikels: Dan Hermes


Diesen Artikel im MSDN Magazine-Forum diskutieren