O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
Xamarin
Focus su Xamarin.Android
Focus
 Xamarin.Android espone la versione completa di Android
SDK per gli sviluppatori .NET.
 Permette di creare app And...
Activity Lifecycle
 Activity o schermata è una concetto specifico di
android
 Activity possiede un metodo onCreate da do...
Stati delle Activity
 Active or Running: entrano in questo stato quando vengono poste un foreground. Sono considerate al ...
Lifecycle delle activity
Metodi delle Activity (1)
 OnCreate è il metodo che viene chiamato subito dopo la creazione dell’activity
 Bundle un diz...
Metodi delle Activity (2)
 OnStart() viene chiamato quando l’activity diventa visibile all’utente
 OnResume() viene chia...
Es. Start Activity (1)
 Qui riporto un esempio di come poter implementare una
parte dell’applicazione in maniera nativa n...
Metodi delle Activity (4)
 Ora vado ad implementare l’interfaccia aggiungendo nel
progetto Android la classe, aggiungendo...
Metodi delle Activity (5)
 Nel progetto PCL MainPage.xaml aggiungo un pulsante
<ContentPage xmlns="http://xamarin.com/sch...
Metodi delle Activity (6)
 Nel progetto PCL in MainPage.cs aggiunto
l’implementazione dell’evento che lancia l’activity
p...
Metodi delle Activity (7)
Xamarin.Essentials (1)
 Xamarin presenta una serie di API che permetto di accedere a feature e hardware dei sistemi in ma...
Xamarin.Essentials (2)
 FlashLight permette di utilizzare il flash
 Geocoding permette di geocoding e il reverse geocodi...
Invio Email Xamarin.Essential (1)
 Requisti Android
 Xamarin.Essentials supporta Android 4.4 o superiori
 Target Androi...
Invio Email Xamarin.Essential (2)
 Scaricare e installare se non già presente
Xamarin.essentials da Nuget su tutti i prog...
Invio Email Xamarin.Essential (3)
 Aggiungere nel progetto PCL la classe EmailSenderusing System;
using System.Collection...
Invio Email Xamarin.Essential (4)
 Nel progetto PCL in MainPage.xaml
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage...
Invio Email Xamarin.Essential (4)
 Nel progetto PCL in MainPage.xaml.cs
public partial class MainPage : ContentPage
{
pub...
Invio Email Xamarin.Essentials (5)
Es. Lettore barcode (1)
 Il lettore barcode non è presente su Xamarin.Essentials.
 Questo esempio sfrutta un pacchetto N...
Es. Lettore barcode (2)
 Nel progetto Android inserire nel metodo onCreate della
MainActivity
 Zxing.Net.Mobile.Forms.An...
Es. Lettore barcode (3)
 Aggiunta della richiesta di permessi nel progetto Android
protected override void OnResume()
{
b...
Es. Lettore barcode (4)
 Nel progetto PCL MainPage.xaml imposto la pagina a full screen per la scansione barcode e impost...
Es. Lettore barcode (5)
 Nel progetto PCL MainPage.xaml.cs intecetto il codice
risultante e lo mostro a schermo
public pa...
Es. Lettore barcode (6)
Próximos SlideShares
Carregando em…5
×

Xamarin.android

135 visualizações

Publicada em

Come usare Xamarin.Android, Xamarin Essentials, lettore barcode in xamarin

Publicada em: Engenharia
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Xamarin.android

  1. 1. Xamarin Focus su Xamarin.Android
  2. 2. Focus  Xamarin.Android espone la versione completa di Android SDK per gli sviluppatori .NET.  Permette di creare app Android completamente native con C# o F# in Visual Studio.
  3. 3. Activity Lifecycle  Activity o schermata è una concetto specifico di android  Activity possiede un metodo onCreate da dove parte il programma di ogni activity  Ogni Activity può lanciare un’altra activity  Ogni applicazione ha un’activity principale che viene impostata come punto di ingresso dell’app
  4. 4. Stati delle Activity  Active or Running: entrano in questo stato quando vengono poste un foreground. Sono considerate al top dello stack delle activity. Possono essere terminate dal sistema solo se UI diventa non responsiva o per eccesso di allocazione di memoria  Paused: un’activity entra in questo stato se il device entra nello stato di sleep mode o quando viene era in forgreound e viene sostituita da un’altra. Le activity nello stato Paused sono sempre vive e mantengono loro stato. L’activity viene parzialmente oscurata all’utente.  Stopped: un’activity paused può entrare e nello stato stopped se ha completato la sua esecuzione e non è più visibile dall’utente, il sistema tende a scegliere le activity per liberare risorse necessarie al sistema  Restarted: una qualsiasi activity stopped o paused può essere ripristinata se l’utente lo richiede viene ripristinata con lo stato che aveva memorizzato
  5. 5. Lifecycle delle activity
  6. 6. Metodi delle Activity (1)  OnCreate è il metodo che viene chiamato subito dopo la creazione dell’activity  Bundle un dizionario viene utilizzato per lo scambio dati e per salvare lo stato dell’activity e per lo scambio dati tra activity  In questa fase viene impostato il layout tramite il metodo SetContentView e nome della risorsa di layout protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); }
  7. 7. Metodi delle Activity (2)  OnStart() viene chiamato quando l’activity diventa visibile all’utente  OnResume() viene chiamato quando l’utent inizia a interagire con l’activity  OnPause() viene chiamato quando app entra nello stato paused  OnStop() viene chiamato quando l’app non è più visibile all’utente  OnRestart() viene chiamato quando un’activity riparte dopo essere stata fermata
  8. 8. Es. Start Activity (1)  Qui riporto un esempio di come poter implementare una parte dell’applicazione in maniera nativa nel caso la libreria di Xamarin forms non fosse sufficiente a rispettare le specifiche applicative  In questi casi si fa uso DependencySevice come visto in precedenza, in modo da implementare diversamente la parte che stiamo costruendo su i vari sistemi
  9. 9. Metodi delle Activity (4)  Ora vado ad implementare l’interfaccia aggiungendo nel progetto Android la classe, aggiungendola come servizio di dependecy injection using Android.Content; using AppXamarinAndroid.Droid; using Xamarin.Forms; [assembly: Dependency(typeof(NativePages))] namespace AppXamarinAndroid.Droid { public class NativePages : INativePages { public NativePages() { } public void StartAc() { var intent = new Intent(Forms.Context, typeof(ActivityTwo)); Forms.Context.StartActivity(intent); } } }
  10. 10. Metodi delle Activity (5)  Nel progetto PCL MainPage.xaml aggiungo un pulsante <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:AppXamarinAndroid" x:Class="AppXamarinAndroid.MainPage"> <StackLayout> <Button Text="Go to native" Clicked="Button_Clicked"></Button> </StackLayout> </ContentPage>
  11. 11. Metodi delle Activity (6)  Nel progetto PCL in MainPage.cs aggiunto l’implementazione dell’evento che lancia l’activity public partial class MainPage : ContentPage { public MainPage() { InitializeComponent(); } private void Button_Clicked(object sender, EventArgs e) { Xamarin.Forms.DependencyService.Register<INativePages>(); DependencyService.Get<INativePages>().StartAc(); } }
  12. 12. Metodi delle Activity (7)
  13. 13. Xamarin.Essentials (1)  Xamarin presenta una serie di API che permetto di accedere a feature e hardware dei sistemi in maniera unificata, le più importanti sono  Accelerometer permette di ottenere dati nello spazio tridimensionale  App Information permette di recuperare le informazioni riguardanti l’applicazione  Barometer monitorare i dati del barometro per la pressione  Battery conoscere il livello e lo stato della batteria  Clipboard per leggere o scrivere facilmente sulla clipboard  Color Converter convertitore di codici di colore nelle varie codifiche  Connectivity controllare lo stato e cambiamenti di connettività  Detect shake intercettare un movimento di shake  Device Display Information conoscere le metriche dello schermo  Device information trovare le informazioni del device  Email inviare email in maniera semplice
  14. 14. Xamarin.Essentials (2)  FlashLight permette di utilizzare il flash  Geocoding permette di geocoding e il reverse geocoding  Geolocation recuperare la posizione tramite GPS  Gyroscope rotazione del device attorno ai tre assi primari  Launcher permette di chiamare un URI nel device, utilizzando un custom uri scheme ad es. per lanciare un app disponibile su device  Magnetometer conoscere l’orientamento rispetto all’asse magnetico terrestre  Connectivity controllare lo stato e cambiamenti di connettività  Open Browser aprire il browser a una determinata URL  Orientation Sensor conoscere l’orientamento del device nello spazio 3D  Preferences memorizzare e leggere in maniera persistente le impostazioni di un’applicazione  Secure Storage memorizzare dai in maniera sicura  Share condividere testo o URI con altre app
  15. 15. Invio Email Xamarin.Essential (1)  Requisti Android  Xamarin.Essentials supporta Android 4.4 o superiori  Target Android version 8.1, API level 27.  Un’app di invio mail come Gmail o Outlook disponibile su device
  16. 16. Invio Email Xamarin.Essential (2)  Scaricare e installare se non già presente Xamarin.essentials da Nuget su tutti i progetti  Impostare in MainActivity.cs nel progetto Android protected override void OnCreate(Bundle savedInstanceState) { TabLayoutResource = Resource.Layout.Tabbar; ToolbarResource = Resource.Layout.Toolbar; base.OnCreate(savedInstanceState); Xamarin.Essentials.Platform.Init(this, savedInstanceState); global::Xamarin.Forms.Forms.Init(this, savedInstanceState); LoadApplication(new App()); } public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults) { Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults); base.OnRequestPermissionsResult(requestCode, permissions, grantResults); } }
  17. 17. Invio Email Xamarin.Essential (3)  Aggiungere nel progetto PCL la classe EmailSenderusing System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; using Xamarin.Essentials; namespace AppSentEmail { public class EmailSender { public async Task SendEmail(string subject, string body, List<string> recipients) { var message = new EmailMessage { Subject = subject, Body = body, To = recipients, }; await Email.ComposeAsync(message); } } }
  18. 18. Invio Email Xamarin.Essential (4)  Nel progetto PCL in MainPage.xaml <?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:AppSentEmail" x:Class="AppSentEmail.MainPage"> <StackLayout> <Button Text="Send" Clicked="Button_Clicked"> </Button> </StackLayout> </ContentPage>
  19. 19. Invio Email Xamarin.Essential (4)  Nel progetto PCL in MainPage.xaml.cs public partial class MainPage : ContentPage { public MainPage() { InitializeComponent(); } private async void Button_Clicked(object sender, EventArgs e) { EmailSender emailSender = new EmailSender(); List<string> list = new List<string>(); list.Add("yourname@yourdomain"); try { await emailSender.SendEmail("test", "this is a test from xamarin ", list); } catch (FeatureNotSupportedException fbsEx) { // Email is not supported on this device await DisplayAlert("Alert", "Please install app supports send email feature", "OK"); } catch (Exception ex) { // Some other exception occurred await DisplayAlert("Error", ex.Message, "OK"); }
  20. 20. Invio Email Xamarin.Essentials (5)
  21. 21. Es. Lettore barcode (1)  Il lettore barcode non è presente su Xamarin.Essentials.  Questo esempio sfrutta un pacchetto Nuget  Requisiti  Pacchetto nuget Zxing.Net.Mobile e Zxing.Net.Mobile.Forms  Permessi Android  <uses-permission android:name="android.permission.CAMERA" />  <uses-permission android:name="android.permission.FLASHLIGHT" />
  22. 22. Es. Lettore barcode (2)  Nel progetto Android inserire nel metodo onCreate della MainActivity  Zxing.Net.Mobile.Forms.Android.Platform.Init(); protected override void OnCreate(Bundle savedInstanceState) { TabLayoutResource = Resource.Layout.Tabbar; ToolbarResource = Resource.Layout.Toolbar; base.OnCreate(savedInstanceState); ZXing.Net.Mobile.Forms.Android.Platform.Init(); Xamarin.Essentials.Platform.Init(this, savedInstanceState); global::Xamarin.Forms.Forms.Init(this, savedInstanceState); LoadApplication(new App()); }
  23. 23. Es. Lettore barcode (3)  Aggiunta della richiesta di permessi nel progetto Android protected override void OnResume() { base.OnResume(); if (ZXing.Net.Mobile.Android.PermissionsHandler.NeedsPermissionRequest(this)) ZXing.Net.Mobile.Android.PermissionsHandler.RequestPermissionsAsync(this); } public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults) { Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults); base.OnRequestPermissionsResult(requestCode, permissions, grantResults); global::ZXing.Net.Mobile.Android.PermissionsHandler.OnRequestPermissionsResult(requestCode, permissions, grantResults); }
  24. 24. Es. Lettore barcode (4)  Nel progetto PCL MainPage.xaml imposto la pagina a full screen per la scansione barcode e imposto come metodo che intercetta il risultato Handle_OnScanResult <?xml version="1.0" encoding="utf-8" ?> <zxing:ZXingScannerPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:AppBarcode" xmlns:zxing="clr-namespace:ZXing.Net.Mobile.Forms;assembly=ZXing.Net.Mobile.Forms" x:Class="AppBarcode.MainPage" Title="Full screen" OnScanResult="Handle_OnScanResult" IsScanning="true"> </zxing:ZXingScannerPage>
  25. 25. Es. Lettore barcode (5)  Nel progetto PCL MainPage.xaml.cs intecetto il codice risultante e lo mostro a schermo public partial class MainPage : ZXingScannerPage { public MainPage() { InitializeComponent(); } public void Handle_OnScanResult(Result result) { Device.BeginInvokeOnMainThread(async () => { await DisplayAlert("Scanned result", result.Text, "OK"); }); } }
  26. 26. Es. Lettore barcode (6)

×