Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

SZENZOROK érintés Magas szint Pillanatszerű események Tap, DoubleTap, Hold Folyamatos események - Manipulációk Pl. Zoom, Drag.

Hasonló előadás


Az előadások a következő témára: "SZENZOROK érintés Magas szint Pillanatszerű események Tap, DoubleTap, Hold Folyamatos események - Manipulációk Pl. Zoom, Drag."— Előadás másolata:

1 SZENZOROK érintés Magas szint Pillanatszerű események Tap, DoubleTap, Hold Folyamatos események - Manipulációk Pl. Zoom, Drag

2 SZENZOROK érintés

3 SZENZOROK érintés private void Grid_Tap(object sender, GestureEventArgs e) { var position = e.GetPosition(this); } private void Grid_DoubleTap(object sender, GestureEventArgs e) { var position = e.GetPosition(this); } private void Grid_Hold(object sender, GestureEventArgs e) { var position = e.GetPosition(this); }

4 SZENZOROK érintés private void Grid_ManipulationStarted(object sender, ManipulationStartedEventArgs e) { var startPosition = e.ManipulationOrigin; }

5 SZENZOROK érintés private void Grid_ManipulationDelta(object sender, ManipulationDeltaEventArgs e) { var startPosition = e.ManipulationOrigin; var scaleTotal = e.CumulativeManipulation.Scale; var scaleDelta = e.DeltaManipulation.Scale; var scaleVelocity = e.Velocities.ExpansionVelocity; var translationTotal = e.CumulativeManipulation.Translation; var translationDelta = e.DeltaManipulation.Translation; var translationVelocity = e.Velocities.LinearVelocity; }

6 SZENZOROK érintés private void Grid_ManipulationCompleted(object sender, ManipulationCompletedEventArgs e) { var startPosition = e.ManipulationOrigin; var scaleTotal = e.TotalManipulation.Scale; var scaleVelocity = e.FinalVelocities.ExpansionVelocity; var translationTotal = e.TotalManipulation.Translation; var translationVelocity = e.FinalVelocities.LinearVelocity; }

7 SZENZOROK érintés Alacsony szint Touch események Lehetőségünk van arra is, hogy a nyers adatokkal dolgozzunk Ilyenkor megkapjuk az összes érintési pontot és azt kezdünk velük amit akarunk

8 SZENZOROK érintés Touch.FrameReported += (s, e) => { var primaryTouchPoint = e.GetPrimaryTouchPoint(this); var touchPoints = e.GetTouchPoints(this); var timeStamp = e.Timestamp; };

9 SZENZOROK helyzetmeghatározás Alacsony szint Gyorsulásmérő Gyorsulás mértéke G-ben mérve az X, Y, Z tengelyek mentén

10 SZENZOROK helyzetmeghatározás Accelerometer accelerometer = new Accelerometer(); accelerometer.CurrentValueChanged += accelerometer_CurrentValueChanged; try { accelerometer.Start(); } catch { } void accelerometer_CurrentValueChanged(object sender, SensorReadingEventArgs e) { // Gyorsulás a 3 tengely mentén G-ben (9.81 m/s^2) mérve var accelerationVector = e.SensorReading.Acceleration; }

11 SZENZOROK helyzetmeghatározás Alacsony szint Giroszkóp Forgási sebesség rad/s -ben mérve az X, Y, Z tengelyek körül

12 SZENZOROK helyzetmeghatározás Gyroscope gyroscope = new Gyroscope(); gyroscope.CurrentValueChanged += gyroscope_CurrentValueChanged; try { gyroscope.Start(); } catch { } void gyroscope_CurrentValueChanged(object sender, SensorReadingEventArgs e) { // Forgás sebessége a 3 tengely körül rad/s-ben mérve var rotationRates = e.SensorReading.RotationRate; // rad/s -> deg/s var rotationDegreeX = MathHelper.ToDegrees(rotationRates.X); var rotationDegreeY = MathHelper.ToDegrees(rotationRates.Y); var rotationDegreeZ = MathHelper.ToDegrees(rotationRates.Z); }

13 SZENZOROK helyzetmeghatározás Alacsony szint Iránytű Az északi sark iránya a telefonhoz képest, fokban mérve

14 SZENZOROK helyzetmeghatározás Compass compass = new Compass(); compass.CurrentValueChanged += compass_CurrentValueChanged; try { compass.Start(); } catch { } void compass_CurrentValueChanged(object sender, SensorReadingEventArgs e) { // A Föld mágneses északi pólusa felé mutat (fokban) var magneticNorth = e.SensorReading.MagneticHeading; // A Föld földrajzi északi pólusa felé mutat (fokban) var geographicNorth = e.SensorReading.TrueHeading; }

15 SZENZOROK helyzetmeghatározás Magas szint Motion API Mivel az alacsony szintű API-kból nem olyan egyszerű érdemi infót kinyerni, kapunk beépítve egy magas absztrakciós szinten mozgó Motion API-t, ami elvégzi helyettünk a sok matekozást.

16 SZENZOROK helyzetmeghatározás Motion motion = new Motion(); motion.CurrentValueChanged += motion_CurrentValueChanged; try { motion.Start(); } catch { } void motion_CurrentValueChanged(object sender, SensorReadingEventArgs e) { var rotations = e.SensorReading.DeviceRotationRate; // Gyroscope var accelerations = e.SensorReading.DeviceAcceleration; // Accelerometer - Gravity var gravity = e.SensorReading.Gravity; // Gravity var roll = e.SensorReading.Attitude.Roll; // Elforgatás az X tengely körül (radián) var pitch = e.SensorReading.Attitude.Pitch; // Elforgatás az Y tengely körül (radián) var yaw = e.SensorReading.Attitude.Yaw; // Elforgatás a Z tengely körül (radián) // Egy számított mátrix, mely kombinálja az gyorsulásmérő/giroszkóp és az iránytű // méréseit, és megmondja, hogy a telefonunk a Világkoordinátarendszer szerint // hogy áll, merre néz -> AR appoknál nagyon jól tud jönni var rotationMatrix = e.SensorReading.Attitude.RotationMatrix; }

17 SZENZOROK helymeghatározás PontosságEnergiaigén y Gyorsaság GPS+-- WiFi+/- Cella tornyok -++ Térképészeti felhőszolgáltatások (Bing Maps)

18 SZENZOROK helymeghatározás GeoCoordinateWatcher gps = new GeoCoordinateWatcher(GeoPositionAccuracy.Default); // Default / High gps.StatusChanged += gps_StatusChanged; gps.PositionChanged += gps_PositionChanged; try { gps.Start(false); } // Figyelmeztetés feldobása catch { } void gps_StatusChanged(object sender, GeoPositionStatusChangedEventArgs e) { GeoPositionStatus status = e.Status; // Disabled / Initializing / NoData / Ready } void gps_PositionChanged(object sender, GeoPositionChangedEventArgs e) { double longitude = e.Position.Location.Longitude; // Hosszúsági fok double latitude = e.Position.Location.Latitude; // Szélességi fok double altitude = e.Position.Location.Altitude; // Magasság (méterben) double speed = e.Position.Location.Speed; // Sebesség double heading = e.Position.Location.Course; // Mozgás iránya az Északi sarkhoz képest (fokban) }

19 SZENZOROK audió – videó Kamera Használhatjuk az előlapi és a normál kamerát is Fénykép esetén hozzáférés a kameragombhoz, a vakuhoz és a fókuszáláshoz Videó esetén lehetőség, hogy MP4 –be rögzítsük, illetve, hogy szürkeárnyalatos streamet kapjunk a kamerától (Augmented Reality)

20 SZENZOROK audió – videó PhotoCamera camera = new PhotoCamera(CameraType.Primary); // Primary / FrontFacing // Videó megjelenítése VideoBrush-al VideoBrush videoBrush = new VideoBrush(); videoBrush.SetSource(camera); this.Background = videoBrush; camera.Initialized += (s, e) => { // e.Exception és e.Succeeded // minden más csak ez után történhet }; // Beállítások // Felbontás camera.Resolution = (from resolution in camera.AvailableResolutions where resolution.Height > 720 select resolution).First(); // FlashMode camera.FlashMode = FlashMode.Auto; // Auto / Off / On / RedEyeReduction

21 SZENZOROK audió – videó // Fókuszálás camera.AutoFocusCompleted += (s, e) => { /* e.Exception és e.Succeeded */ }; camera.Focus(); // Auto-Fókusz camera.CancelFocus(); // Fókuszálás megszakítása camera.FocusAtPoint(240, 400); // Kiválasztott pontra való fókuszálás // Fénykép készítése camera.CaptureThumbnailAvailable += (s, e) => { /* e.ImageStream */ }; camera.CaptureImageAvailable += (s, e) => { /* e.ImageStream */ }; camera.CaptureImage();

22 SZENZOROK audió – videó // Aktuális képkocka lekérdezése int bufferSize = (int)camera.PreviewResolution.Width * (int)camera.PreviewResolution.Height; int[] ARGBPixelData = new int[bufferSize]; camera.GetPreviewBufferArgb32(ARGBPixelData); // RGB byte[] GrayScalePixelData = new byte[bufferSize]; camera.GetPreviewBufferY(GrayScalePixelData); // Szürkeárnyalatos byte[] YCbCrPixelData = new byte[bufferSize]; camera.GetPreviewBufferYCbCr(YCbCrPixelData); // YCbCr

23 SZENZOROK audió – videó Mikrofon Lehetőség van hangfelvételre... Vagy akár beszédfelismerésre a Microsoft TellMe felhőszolgáltatásának segítségével


Letölteni ppt "SZENZOROK érintés Magas szint Pillanatszerű események Tap, DoubleTap, Hold Folyamatos események - Manipulációk Pl. Zoom, Drag."