20.11.2016 Views

ANDROID APP

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

177<br />

ในขณะที่อุปกรณ์หมุนหรือเอียงนั้น คำสั่ง SensorManager.getRotationMatrix() จะส่งค่า<br />

ของเมทริกซ์ขนาด 3x3 ลงในตัวแปร R[] โดยใช้ค่าที่ได้จากตัวตรวจวัด ซึ่งค่าของเมทริกซ์ขนาด 3x3<br />

จะเป็นค่าอ้างอิงที่ได้มาจากค่าอ้างอิงของสนามแม่เหล็กโลก (0,H,0)<br />

ถ้าอุปกรณ์ที่ใช้อยู่มีการเคลื่อนที่หรืออยู่ใกล้สนามแม่เหล็ก ค่าที่วัดได้อาจจะไม่ได้อ้างอิงจาก<br />

สนามแม่เหล็กโลก<br />

อีกหนึ่งวิธีที่ใช้ในการตรวจสอบการหมุนของอุปกรณ์ นั่นคือการใช้คำสั่ง SensorManager.<br />

getOrientation() ซึ่งจะส่งค่าของเมทริกซ์ R[] และค่าของทิศทาง attitude[] :<br />

m attitude[0] – จะเป็นค่ามุม Azimuth (หน่วยเป็นเรเดียน) ในแนวแกน z โดยค่าที่ได้<br />

จะอยู่ระหว่าง –PI และ PI ซึ่งค่า 0 จะแทนทิศเหนือ และค่า PI/2 จะแทนทิศตะวันออก<br />

m attitude[1] – จะเป็นค่า Pitch (หน่วยเป็นเรเดียน) ในแนวแกน x โดยค่าที่ได้จะอยู่<br />

ระหว่าง –PI และ PI ซึ่งค่า 0 จะแทนอุปกรณ์หงายหน้าขึ้น และค่า PI/2 จะแทน<br />

อุปกรณ์คว่ำหน้าลง<br />

m attitude[2] – จะเป็นค่า Roll (หน่วยเป็นเรเดียน) ในแนวแกน โดยค่าที่ได้จะอยู่<br />

ระหว่าง –PI และ PI ซึ่งค่า 0 จะแทนอุปกรณ์หันไปทางด้านซ้าย และค่า PI/2 จะแทน<br />

อุปกรณ์หันไปทางด้านขวา<br />

ตัวอย่างนี้จะแสดงข้อมูลทิศทางของอุปกรณ์ลงบนจอภาพ และใช้เลย์เอาต์ในการแสดงผลซึ่ง<br />

กำหนดไว้ในไฟล์เลย์เอาต์ตามชุดคำสั่งที่ 7.4 ดังนี้<br />

ชุดคำสั่งที่ 7.4 res/layout/main.xml<br />

เซ็นเซอร์ตรวจจับต่างๆ<br />

<br />

<br />

<br />

<br />

แอคทิวิตี้หลักที่แสดงในชุดคำสั่งที่ 7.5 ตัวตรวจจับจะส่งค่ากลับไปยัง Sensor Listener ชื่อ<br />

SensorEventListener ซึ่งค่าเหล่านี้จะเก็บลงในเมทริกซ์ และแปลงค่าดังกล่าวจากหน่วยเรเดียนไป<br />

เป็นองศาและแสดงข้อมูลที่ได้บนจอภาพ

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!