240 likes | 411 Views
SZENZOROK. érintés. Magas szint Pillanatszerű események Tap, DoubleTap, Hold Folyamatos események - Manipulációk Pl. Zoom, Drag. SZENZOROK. érintés. <!-- Feliratkozás az eseményekre --> < Grid Tap =" Grid_Tap " DoubleTap =" Grid_DoubleTap " Hold =" Grid_Hold "
E N D
SZENZOROK érintés Magas szint Pillanatszerű események Tap, DoubleTap, Hold Folyamatos események - Manipulációk Pl. Zoom, Drag
SZENZOROK érintés <!-- Feliratkozásazeseményekre--> <Grid Tap="Grid_Tap" DoubleTap="Grid_DoubleTap" Hold="Grid_Hold" ManipulationStarted="Grid_ManipulationStarted" ManipulationDelta="Grid_ManipulationDelta" ManipulationCompleted="Grid_ManipulationCompleted">
SZENZOROK érintés privatevoidGrid_Tap(object sender, GestureEventArgs e) { var position = e.GetPosition(this); } privatevoidGrid_DoubleTap(object sender, GestureEventArgs e) { var position = e.GetPosition(this); } privatevoidGrid_Hold(object sender, GestureEventArgs e) { var position = e.GetPosition(this); }
SZENZOROK érintés privatevoidGrid_ManipulationStarted(object sender, ManipulationStartedEventArgs e) { varstartPosition = e.ManipulationOrigin; }
SZENZOROK érintés privatevoidGrid_ManipulationDelta(object sender, ManipulationDeltaEventArgs e) { varstartPosition = e.ManipulationOrigin; varscaleTotal = e.CumulativeManipulation.Scale; varscaleDelta = e.DeltaManipulation.Scale; varscaleVelocity = e.Velocities.ExpansionVelocity; vartranslationTotal = e.CumulativeManipulation.Translation; vartranslationDelta = e.DeltaManipulation.Translation; vartranslationVelocity = e.Velocities.LinearVelocity; }
SZENZOROK érintés privatevoidGrid_ManipulationCompleted(object sender, ManipulationCompletedEventArgs e) { varstartPosition = e.ManipulationOrigin; varscaleTotal = e.TotalManipulation.Scale; varscaleVelocity = e.FinalVelocities.ExpansionVelocity; vartranslationTotal = e.TotalManipulation.Translation; vartranslationVelocity = e.FinalVelocities.LinearVelocity; }
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
SZENZOROK érintés Touch.FrameReported += (s, e) => { varprimaryTouchPoint = e.GetPrimaryTouchPoint(this); vartouchPoints = e.GetTouchPoints(this); vartimeStamp = e.Timestamp; };
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
SZENZOROK helyzetmeghatározás Accelerometeraccelerometer = newAccelerometer(); accelerometer.CurrentValueChanged += accelerometer_CurrentValueChanged; try { accelerometer.Start(); } catch { } voidaccelerometer_CurrentValueChanged(object sender, SensorReadingEventArgs<AccelerometerReading> e) { // Gyorsulás a 3 tengelymentén G-ben (9.81 m/s^2) mérve varaccelerationVector= e.SensorReading.Acceleration; }
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
SZENZOROK helyzetmeghatározás Gyroscopegyroscope = newGyroscope(); gyroscope.CurrentValueChanged += gyroscope_CurrentValueChanged; try { gyroscope.Start(); } catch { } voidgyroscope_CurrentValueChanged(object sender, SensorReadingEventArgs<GyroscopeReading> e) { // Forgássebessége a 3 tengelykörül rad/s-ben mérve varrotationRates = e.SensorReading.RotationRate; // rad/s -> deg/s varrotationDegreeX = MathHelper.ToDegrees(rotationRates.X); varrotationDegreeY = MathHelper.ToDegrees(rotationRates.Y); varrotationDegreeZ = MathHelper.ToDegrees(rotationRates.Z); }
SZENZOROK helyzetmeghatározás Alacsony szint Iránytű Az északi sark iránya a telefonhoz képest, fokban mérve
SZENZOROK helyzetmeghatározás Compasscompass = newCompass(); compass.CurrentValueChanged += compass_CurrentValueChanged; try { compass.Start(); } catch{ } voidcompass_CurrentValueChanged(object sender, SensorReadingEventArgs<CompassReading> e) { // A Földmágnesesészakipólusafelémutat (fokban) varmagneticNorth = e.SensorReading.MagneticHeading; // A Földföldrajziészakipólusafelémutat (fokban) vargeographicNorth = e.SensorReading.TrueHeading; }
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.
SZENZOROK helyzetmeghatározás Motionmotion = newMotion(); motion.CurrentValueChanged += motion_CurrentValueChanged; try{ motion.Start(); } catch { } voidmotion_CurrentValueChanged(object sender, SensorReadingEventArgs<MotionReading> e) { var rotations = e.SensorReading.DeviceRotationRate; // Gyroscope var accelerations = e.SensorReading.DeviceAcceleration; // Accelerometer - Gravity var gravity = e.SensorReading.Gravity; // Gravity varroll = e.SensorReading.Attitude.Roll; // Elforgatásaz X tengelykörül (radián) var pitch = e.SensorReading.Attitude.Pitch; // Elforgatásaz Y tengelykörül (radián) var yaw = e.SensorReading.Attitude.Yaw; // Elforgatás a Z tengelykö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, ésmegmondja, hogy a telefonunk a Világkoordinátarendszerszerint // hogyáll, merrenéz -> AR appoknálnagyonjóltudjönni varrotationMatrix = e.SensorReading.Attitude.RotationMatrix; }
SZENZOROK helymeghatározás
SZENZOROK helymeghatározás GeoCoordinateWatchergps = newGeoCoordinateWatcher(GeoPositionAccuracy.Default); // Default / High gps.StatusChanged += gps_StatusChanged; gps.PositionChanged += gps_PositionChanged; try { gps.Start(false); } // Figyelmeztetésfeldobása catch { } voidgps_StatusChanged(object sender, GeoPositionStatusChangedEventArgs e) { GeoPositionStatus status = e.Status; // Disabled / Initializing / NoData / Ready } voidgps_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e) { double longitude = e.Position.Location.Longitude; // Hosszúságifok double latitude = e.Position.Location.Latitude; // Szélességifok 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ásirányaazÉszakisarkhozképest (fokban) }
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)
SZENZOROK audió – videó PhotoCamera camera = newPhotoCamera(CameraType.Primary); // Primary / FrontFacing // VideómegjelenítéseVideoBrush-al VideoBrushvideoBrush = newVideoBrush(); videoBrush.SetSource(camera); this.Background = videoBrush; camera.Initialized += (s, e) => { // e.Exceptionése.Succeeded // mindenmáscsakezutántörténhet }; // Beállítások // Felbontás camera.Resolution = (from resolution incamera.AvailableResolutions whereresolution.Height > 720 select resolution).First(); // FlashMode camera.FlashMode = FlashMode.Auto; // Auto / Off / On / RedEyeReduction
SZENZOROK audió – videó // Fókuszálás camera.AutoFocusCompleted += (s, e) => { /* e.Exceptionése.Succeeded */ }; camera.Focus(); // Auto-Fókusz camera.CancelFocus(); // Fókuszálásmegszakítása camera.FocusAtPoint(240, 400); // Kiválasztottpontravalófókuszálás // Fényképkészítése camera.CaptureThumbnailAvailable += (s, e) => { /* e.ImageStream */ }; camera.CaptureImageAvailable += (s, e) => { /* e.ImageStream */ }; camera.CaptureImage();
SZENZOROK audió – videó // Aktuálisképkockalekérdezése intbufferSize = (int)camera.PreviewResolution.Width * (int)camera.PreviewResolution.Height; int[] ARGBPixelData = newint[bufferSize]; camera.GetPreviewBufferArgb32(ARGBPixelData); // RGB byte[] GrayScalePixelData = newbyte[bufferSize]; camera.GetPreviewBufferY(GrayScalePixelData); // Szürkeárnyalatos byte[] YCbCrPixelData = newbyte[bufferSize]; camera.GetPreviewBufferYCbCr(YCbCrPixelData); // YCbCr
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