20.11.2016 Views

ANDROID APP

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

มัลติเพิลแอคทิวิตี้ (Multiple Activities)<br />

กรรมวิธี: การเรียกใช้งานแอคทิวิตี้เพื่อแสดงผลลัพธ์โดยการแปลงเสียง<br />

เป็นข้อความ<br />

ในส่วนนี้จะแสดงให้เห็นถึงการเรียกใช้แอคทิวิตี้เพื่อแสดงผลลัพธ์ รวมทั้งสาธิตการใช้งานระบบ<br />

การแปลงเสียงเป็นข้อความ ซึ่งพัฒนาโดย Google (RecognizerIntent) และแสดงผลลัพธ์ออก<br />

ทางจอภาพ โดยเราจะสั่งให้ RecognizerIntent เริ่มทำงานเมื่อมีการกดปุ่ม อินเท็นต์นี้จะทำการ<br />

ตรวจจับเสียงจากไมโครโฟนและแปลงข้อมูลเป็นข้อความ เมื่ออินเท็นต์ทำงานเสร็จแล้วก็จะส่งผ่าน<br />

ข้อความนี้กลับไปยังแอคทิวิตี้ที่เรียกใช้งานอินเท็นต์นี้<br />

ขั้นตอนก่อนที่จะส่งข้อมูลกลับนั้น ฟังก์ชั่น onActivityResult() จะถูกเรียกใช้พร้อมกับ<br />

ข้อมูลที่จะส่งกลับ และเรียกใช้ฟังก์ชั่น onResume() เพื่อให้แอคทิวิตี้มีสถานะเป็นปกติ ในบางครั้งการ<br />

เรียกใช้แอคทิวิตี้อาจจะพบปัญหาและไม่มีการส่งค่ากลับ ดังนั้นเราจะต้องตรวจสอบค่าของ resultcode<br />

เพื่อให้แน่ใจว่ามีค่าเป็น RESULT_OK ก่อนที่จะทำการส่งข้อมูลกลับ<br />

ขั้นตอนการเรียกใช้แอคทิวิตี้มีดังนี้<br />

1. เรียกใช้คำสั่ง startActivityForResult() กำหนดแอคทิวิตี้ที่ต้องการใช้งาน<br />

2. ทำการโอเวอร์ไรด์ฟังก์ชั่น onActivityResult() เพื่อตรวจสอบสถานะของผลลัพธ์<br />

ตรวจสอบ requestCode และส่งผ่านข้อมูลกลับ<br />

ขั้นตอนการใช้งาน RecognizerIntent มีดังนี้<br />

1. ประกาศการใช้งานอินเท็นต์ด้วยแอ็กชั่น ACTION_RECOGNIZE_SPEECH<br />

2. กำหนดค่าต่างๆ เพิ่มเติมให้แก่อินเท็นต์ เช่น EXTRA_LANGUAGE_MODEL ซึ่งกำหนด<br />

เป็นค่า LANGUAGE_MODEL_FREE_FORM หรือ LANGUAGE_MODEL_WEB_<br />

SEARCH<br />

3. ทำการส่งข้อมูลกลับ ซึ่งประกอบด้วยลิสต์ของข้อความที่แปลงมาจากเสียง โดยจะใช้<br />

คำสั่ง data.getStringArrayListExtra เพื่อดึงข้อมูลเหล่านี้<br />

ชุดคำสั่งที่ 2.14 ในส่วนของแอคทิวิตี้หลัก คำสั่ง TextView จะถูกใช้เพื่อแสดงข้อความบน<br />

จอภาพ<br />

นอกเหนือจากนี้ไฟล์ที่จำเป็นจะต้องใช้งานคือไฟล์ main.xml และ string.xml ซึ่งใช้เพื่อสร้าง<br />

Button และ TextView ส่วน AndroidManifest จะถูกประกาศในแอคทิวิตี้หลักเท่านั้น และอินเท็นต์<br />

ชื่อ RecognizerIntent เป็นแอคทิวิตี้ที่มีอยู่ในระบบปฏิบัติการแอนดรอยด์อยู่แล้ว เลยไม่จำเป็นต้อง<br />

ประกาศก่อนการใช้งาน<br />

41

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

Saved successfully!

Ooh no, something went wrong!