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 />
เป็นองศาและแสดงข้อมูลที่ได้บนจอภาพ