ISensorEventListener

Slides:



Advertisements
Verwante presentaties
KINN 2010 •OOP •O Object •O Georiënteerd •P Programmeren.
Advertisements

Van domeinklasse tot implementatie
Inleiding Informatica Prof. Dr. O. De Troyer Hoofdstuk 10: Omgaan met problemen.
Hoofdstuk 2 Hallo, C# !.
Hoofdstuk 8 Objecten en klassen.
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
Consoletoepassing Variabelen Klassen
Algoritmiek Object-georiënteerd Programmeren
Opgave 2a nMet een InputStream lees je bytes uit een binare file nMet een Reader lees je characters uit een tekstfile.
Hoofdstuk 5 Interactie. Controls Form Label Button Label TextBox.
Hoorcollege 2 Basis gameprogrammeren. Soorten programma’s Console- applicatie.
Hoorcollege 14 Vijanden, excepties. Overzicht programmaconstructies Opdrachten Toekenning Aanroep void-methode return-opdracht while-opdracht for(each)-opdracht.
Animatie nAnimatie: “tekenfilm” programma toont automatisch veranderende beelden nGemakkelijk te programmeren met gebruik van de klasse Thread “draadje”
Hoofdstuk 11.3 Algoritmen: Zoeken in een netwerk.
Hoofdstuk 14.1 Algoritmen: Zoeken in een netwerk.
Hoofdstuk 3 Methoden om te tekenen.
Programma opdrachten methoden klasse variabelen en Geheugen objecten klasse zijn gegroepeerd in hebben als type veranderen bewerken.
Programma opdrachten methoden klasse variabelen en Geheugen objecten klasse zijn gegroepeerd in hebben als type veranderen bewerken.
Klasse uit library Android.App Activity Bij het starten van een app: nOperating system maakt een Activity -object aan… n…en neemt dat onderhanden met de.
Klasse uit library Android.App Activity Bij het starten van een app: nOperating system maakt een Activity -object aan… n…en neemt dat onderhanden met de.
Soorten programma’s nConsole- applicatie. Soorten programma’s nConsole- applicatie nWindows- applicatie.
Eerste deeltentamen nNagekeken werk ligt voor in de zaal nNeem je eigen werk mee: in het college wordt het besproken nVragen over de beoordeling: in de.
1e Deeltentamen nNagekeken werk ligt voor in de zaal (alfabetisch op achternaam) nNeem het even mee, de uitwerking wordt in het college besproken nDiscussies.
Aangepaste timing nTheorie (16 colleges + 2 deeltentamens) nPraktijk (16 keer, 3 inleveropdrachten) college Tent. 1 Tent. 3 college prakt. 1 prakt. 3 prakt.
Aangepaste timing nTheorie (16 colleges + 2 deeltentamens) nPraktijk (16 keer, 2 inleveropdrachten) college Tent. 1 Tent. 2 college prakt. 1 prakt. 2 prakt.
Resources. Kompas } { protected override void OnDraw(Canvas canv) { base.OnDraw(canv); } public KompasView(Context c) : base(c) { } class KompasView :
Programma opdrachten methoden klasse variabelen en Geheugen objecten klasse zijn gegroepeerd in hebben als type veranderen bewerken.
Windows-applicatie class HalloWin1 { static void Main ( ) { } Form scherm; scherm = new Form( ); Application.Run(scherm); using System.Windows.Forms; scherm.Text.
Exceptions Exception: nUitzonderlijke toestand die door een methode wordt opgeworpen nDe situatie moet door de aanroeper van de methode worden opgevangen.
Java voor beginners Doel: Een spel maken in LWJGL Door: Jim van Leeuwen.
Bestanden Lezen Schrijven Afbeeldingen. Bestandstypen.txt.png eigen.
Syntax van opdrachten opdracht (), ;expressie klasse naam object expressie. methode naam =expressie;variabele property naam += returnexpressie; if)(expressieopdrachtblok.
Meer constructormethodes in klasse Kleur { class Kleur } public byte Rood, Groen, Blauw; public Kleur( byte r, byte g, byte b ) { } Rood=r; Groen=g; Blauw=b;
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Activity Bij het starten van een app:
Objectgeoriënteerd Programmeren (2)
…is eigenlijk overbodig!
Aanroep van een methode voert opdrachten uit in de body daarvan
1e Deeltentamen Nagekeken werk ligt voor in de zaal (alfabetisch op achternaam) Neem het even mee, de uitwerking wordt in het college besproken Discussies.
Gameprogrammeren: Objecten en geheugen
Schilderij class MijnAct : Activity { MijnView scherm;
Hoofdstuk 9.2 Strings.
Letterfrequentie turven
Wat gaan we doen? Theorie (14 colleges + 3 deeltentamens)
Syntax van opdrachten opdracht naam naam ( expressie ) ; . , expressie
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Gameprogrammeren: Methoden
vandaag èn vrijdag deadline maandag 12 dec.
Publieksvraag // schrijf een static methode die telt hoe // vaak een symbool voorkomt in een string // voorbeeld-aanroep: int n; n = Demo . Freq(’e’,
Gameprogrammeren: Programmastructuur
Basis Gameprogrammeren
Gameprogrammeren: Herhalingen
Declaratie Declaratie reserveert geheugenruimte
1. Een klasse is… Een groepje opdrachten Een groepje variabelen
Syntax van opdracht opdracht naam naam ( expressie ) ; . , expressie
Voorbeeld: Simulatie van bewegende deeltjes
Wat gaan we doen? Theorie (14 colleges + 3 deeltentamens)
Voortborduren op eerder gedaan werk
Opdrachten herhalen public void tekenScherm (object o, PEA pea)
Aanroep van een methode voert opdrachten uit in de body daarvan
Game: omgaan met tijd (Jewel-Jam)
Gameprogrammeren: Klassen en objecten
Interface In de library In je eigen programma wat is er nodig om een
Implementatie Zoekboom
Object Communication (Jewel Jam)
Exceptions Exception:
Eerste deeltentamen Nagekeken werk ligt voor in de zaal
Gameprogrammeren: Enemies in Tick Tick
Software Development fundamentals
Gameprogrammeren: Arrays
Transcript van de presentatie:

ISensorEventListener Kompas class KompasView : View , ISensorEventListener { Bitmap b; float Schaal; float Hoek; belooft methodes public KompasView(Context c) : base(c) { b = BitmapFactory.DecodeResource(...UU...); } SensorManager sm = c . GetSystemService(...); sm.RegisterListener(this, ...Orientation...); is een geldige ISensorEventListener want zijn klasse heeft deze methode public void OnSensorChanged(SensorEvent s) { } Hoek = s.Values[0]; this.Invalidate( ); }

want zijn klasse heeft deze methode using Android.Locations; Kompas class KompasView : View , ILocationListener { Bitmap b; float Schaal; float Hoek; belooft methodes public KompasView(Context c) : base(c) { b = BitmapFactory.DecodeResource(...UU...); } LocationManager lm = c . GetSystemService(...); lm.RequestLocationUpdates(..., this); is een geldige ILocationListener want zijn klasse heeft deze methode public void OnLocationChanged(Location loc) { } noord = loc.Latitude; oost = loc.Longitude; }

Kompas using Android.Locations; belooft methodes class KompasView : View , ILocationListener { Bitmap b; float Schaal; float Hoek; belooft methodes public KompasView(Context c) : base(c) { b = BitmapFactory.DecodeResource(...UU...); LocationManager lm = c . GetSystemService(...); Criteria crit = new Criteria(); crit.Accuracy = Accuracy.Fine; IList<string>lps = lm.GetProviders(crit,true); if ( lps != null && lps.Count>0 ) { string lp = lps[0]; lm.RequestLocationUpdates(lp,0,0,this); } } public void OnLocationChanged(Location loc) { } noord = loc.Latitude; oost = loc.Longitude; }

pixel van het plaatje dat in het midden moet komen Kompas class KompasView : View , ISensorEventListener { Bitmap b; float Schaal; float Hoek; pixel van het plaatje dat in het midden moet komen protected override void OnDraw(Canvas canv) { base.OnDraw(canv); } Schaal = this.Width / b.Width; Matrix mat = new Matrix(); mat.PostScale(Schaal, Schaal); mat.PostTranslate(–b.Width/2, –b.Height/2); mat.PostRotate(– Hoek); mat.PostTranslate(Width/2, Height/2); canv.DrawBitmap(b, mat, verf); }

pixel van het plaatje dat in het midden moet komen Kaart class KaartView : View , ISensorEventListener { Bitmap b; float Schaal; float Hoek; pixel van het plaatje dat in het midden moet komen protected override void OnDraw(Canvas canv) { base.OnDraw(canv); } Matrix mat = new Matrix(); mat.PostScale(Schaal, Schaal); mat.PostTranslate(–midx, –midy); mat.PostTranslate(Width/2, Height/2); canv.DrawBitmap(b, mat, verf); }

Exceptions Exception: Uitzonderlijke toestand die door een methode wordt opgeworpen De situatie moet door de aanroeper van de methode worden opgevangen throw catch

Voorbeeld van Exception kan een Exception opwerpen try { } s = invoer . Text; n = int . Parse (s); uitvoer . Text = ( "kwadraat is " + n*n ); catch ( Exception e ) { uitvoer . Text = ( s + " is geen getal" ); } opvangen van het probleem

Meerdere catch-delen try { s = invoer . Text; n = int . Parse (s); } als er een Exception optreedt, wordt de eerste catch gekozen met een passend type try { } s = invoer . Text; n = int . Parse (s); uitvoer . Text = ( "kwadraat is " + n*n ); catch ( FormatException e ) { uitvoer . Text = ( s + " is geen getal" ); } catch ( OverflowException e ) { uitvoer . Text = ( s + " is te groot" ); }

opdracht blok return expressie ; if ( expressie ) opdracht else opdracht while ( expressie ) opdracht for ( expr ; expr ; expr ) opdracht , , declaratie foreach ( type naam in expr ) opdracht var try blok catch ( type naam ) blok

Syntax en semantiek Syntax: de vorm van het programma Semantiek: wat het programma betekent compilatie eenheid using ; klasse declaratie library naam

Syntax van klasse-declaratie [ attributen ] public private : naam class naam { member } attributen naam ) ( = expressie ,

Syntax van member member type void naam ( type naam ) blok , public private protected override static type void naam ( type naam ) blok ,

Multi

Multi public class Multi : Activity { Button b1, b2, b3, b4, b5, b6; protected override void OnCreate(Bundle b) { base.OnCreate(b); LinearLayout lay = new LinearLayout(this); b1 = new Button(this); b2 = new Button(this); b1.Text = "Hallo"; b2.Text = "Teller"; b1.Click += klik1; b2.Click += klik2; lay.AddView(b1); lay.AddView(b2); SetContentView(lay); } public void klik1(object o, EventArgs e) { ...... } }

Dialoog Pop-up window waarin de gebruiker gegevens invoert DatePickerDialog AlertDialog

DatePicker Dialog public class Multi : Activity { Button b1, b2, b3, b4, b5, b6; DateTime GebDat; public void klik4 (object o, EventArgs e) { DatePickerDialog d; d = new DatePickerDialog(this, Gekozen); d.Show(); } public void Gekozen (object o, DatePickerDialog.DateSetEventArgs e) { this.GebDat = e.Date; b4.Text = GebDat.ToString(); } }

Alert Dialog public class Multi : Activity { Button b1, b2, b3, b4, b5, b6; DateTime GebDat; public void klik6 (object o, EventArgs e) { AlertDialog.Builder d; d = new AlertDialog.Builder(this); d.SetTitle("nu al stoppen?"); d.SetPositiveButton("ja", Ja ); d.SetNegativeButton("nee", Nee ); d.Show(); } public void Ja (object o, EventArgs e) { } this.Finish( ); public void Nee (object o, EventArgs e) { } }

Intent Intent: bedoeling om een nieuwe activiteit te starten eigen activiteit Hallo Teller standard web-browser text-sender

Intent: Hallo opstarten public class Multi : Activity { public class Hallo : Activity { Button b1, b2, b3, b4, b5, b6; override void OnCreate(Bundle b) { base.OnCreate(b); public void klik1 (object o, EventArgs e) { TextView t = new TextView(this); Intent i; string s = Intent.GetStringExtra("wat"); i = new Intent (this, typeof(Hallo) ); t.Text = s; i.PutExtra("wat", "Hallo!!!"); SetContentView(t); } StartActivity(i); } } }

Intent: Teller opstarten public class Multi : Activity { public class Teller : Activity { Button bt; int x; Button b1, b2, b3, b4, b5, b6; override void OnCreate(Bundle b) { base.OnCreate(b); int w = 0; public void klik2 (object o, EventArgs e) { bt = new Button(this); x = Intent.GetIntExtra("begin",0); Intent i; bt.Click += klik; i = new Intent (this, SetContentView(bt); typeof(Teller)); } i.PutExtra("begin", 15 ); w public void klik (object o, EA e) { } StartActivity(i); ForResult(i, 99); x = x+1; } bt.Text = $"Teller: {x}"; override void OnActivityResult (int c, Result r, Intent i) { base.OnActivityResult(c,r,i); override void Finish ( ) { Intent i = new Intent(); i.PutExtra("eind", x ); if (c==99) SetResult(Result.Ok, i ); w = i.GetIntExtra("eind",0); base.Finish( ); } } } }

Intent: Website opstarten public class Multi : Activity { Button b1, b2, b3, b4, b5, b6; public void klik3 (object o, EventArgs e) { string adres = "students.uu.nl/beta/informatiekunde"; Intent i; i = new Intent ( Intent.ActionView , Android.Net.Uri.Parse( adres ) ); StartActivity(i); } }

Intent: Messager opstarten public class Multi : Activity { Button b1, b2, b3, b4, b5, b6; public void klik5 (object o, EventArgs e) { Intent i; i = new Intent ( Intent.ActionSend ); i.SetType( "text/plain" ); string bericht = "Kom je op mijn verjaardagsfeest?"; i.SetType( Intent.ExtraText, bericht ); StartActivity(i); } }

Intent: Messager opstarten public class Multi : Activity { Button b1, b2, b3, b4, b5, b6; DateTime GebDat; public void klik5 (object o, EventArgs e) { Intent i; i = new Intent ( Intent.ActionSend ); i.SetType( "text/plain" ); TimeSpan tijd = DateTime.Now – GebDat; int dagenOud = (int) tijd.TotalDays( ); int nachtjes = 1000 – dagenOud % 1000; DateTime feestDag = DateTime.Now + TimeSpan(nachtjes, 0,0,0); string bericht = "Op {feestdag} is mijn verKdagdag. Kom je ook?"; i.SetType( Intent.ExtraText, bericht ); StartActivity(i); } }

Kijk wel uit waar je het post...