[IOIO-Q] เริ่มต้นกับ IOIO-Q ด้วยไลบรารีเวอร์ชัน 4.00

สำหรับบทความนี้จะเป็นการเริ่มต้นเขียนแอปพลิเคชันแอนดรอยด์เพื่อใช้ควบคุมบอร์ด IOIO-Q โดยใช้ไลบรารีเวอร์ชัน 4.00 ซึ่งเป็นเวอร์ชันล่าสุดของบอร์ด IOIO-Q หรือ IOIO V1 ซึ่งบอร์ด IOIO-Q จะต้องอัปเดทเฟิร์มแวร์เป็นเวอร์ชัน 3.11 ด้วย ก่อนที่จะเขียนแอปพลิเคชันเพื่อควบคุมบอร์ด IOIO-Q นั้น จะต้องทำการอัปเดทเฟิร์มแวร์ของบอร์ด IOIO-Q ให้เป็นเวอร์ชัน 3.11 เสียก่อน และเพิ่มไลบรารีของ IOIO ที่เป็นเวอร์ชัน 4.00 โดยสามารถดูขั้นตอนได้จาก [IOIO-Q] การเพิ่มไลบรารีของ IOIO ลงใน Eclipse [ver.4.00] เมื่อพร้อมแล้วก็ให้เปิด Eclipse ขึ้นมาแล้วเลือกไปที่ File > New > Android Application Project

  หน้าต่างสำหรับสร้างโปรเจคใหม่จะแสดงขึ้นมา โดยจะมีให้กำหนดค่าต่างๆดังนี้

Application Name : ชื่อแอปพลิเคชันที่จะแสดงให้เป็นบนเครื่องผู้ใช้งาน

Project Name : ชื่อโปรเจคจะแสดงให้เห็นในโปรแกรม Eclipse

Package Name : ชื่อแพคเกจของแอปพลิเคชัน

Minimum Required SDK : เวอร์ชันแอนดรอยด์ขั้นต่ำที่รองรับ

Target SDK : เวอร์ชันของแอนดรอยด์ที่จะใช้ในโปรเจคนี้

Compile With : เวอร์ชันของแอนดรอยด์ที่จะใช้ Compile โปรเจคนี้

Theme : ธีมหรือรูปแบบของแอปพลิเคชัน

  ผู้อ่านสามารถกำหนดชื่อ Application Name กับ Project Name เหมือนกันหรือต่างกันก็ได้ การตั้งชื่อที่เหมือนกันจะช่วยให้จดจำได้ง่ายขึ้น Project Name แนะนำให้กำหนดชื่อโดยไม่มีเว้นวรรค ส่วน Application Name สามารถกำหนดได้ตามใจชอบ และสำหรับ Package Name เปรียบเสมือนชื่อที่เอาไว้ระบุแอปพลิเคชันตัวนั้นๆ เพราะเนื่องจากการสร้างแอปพลิเคชันจะเห็นว่ามีหลายๆแอปพลิเคชันที่มี Application Name เหมือนกันได้ ดังนั้นการกำหนด Package Name จึงเป็นการกำหนดชื่อที่แท้จริงของแอปพลิเคชัน เพราะ Package Name จะไม่แสดงให้ผู้ใช้เห็น แต่ว่าจะไม่สามารถกำหนดชื่อซ้ำกันได้ เพราะถ้าแอปพลิเคชันใดๆที่มีชื่อ Package Name จะไม่สามารถแผยแพร่บน Google Play ได้ (ใครเผยแพร่ก่อนก็ได้ Package Name นั้นๆไป) ในการกำหนดชื่อแพคเกจจะกำหนดเป็นชื่อสั้นๆประมาณ 2 ถึง 3 ชุด โดยมีเครื่องหมายจุดทศนิยมเป็นตัวคั่น เช่น com.app.myapplication หรือ app.myapplication เป็นต้น ซึ่งไม่มีการกำหนดตายตัวว่าต้องเป็นชื่ออะไร แต่ควรจะตั้งให้เฉพาะเจาะจงให้มากที่สุดเท่าที่เป็นไปได้ เพื่อไม่ให้ซ้ำกับผู้อื่น Theme มีไว้สำหรับกำหนดรูปแบบของ UI เบื้องต้นว่าจะให้มีลักษณะอย่างไร โดยจะมีให้เลือกระหว่าง None, Holo Dark, Holo Light และ Holo Dark with Action Bar จากตัวอย่างผู้เขียนจะกำหนดค่าต่างๆดังนี้

Application Name : First IOIO App

Project Name : FirstIOIOApp

Package Name : com.inex.firstioioapp

Minimum Required SDK : API 8: Android 2.2 (Froyo)

Target SDK : API 19: Android 4.4 (KitKat)

Compile With : API 19: Android 4.4 (KitKat)

Theme : Holo Light with Dark Action Bar

เมื่อกำหนดเสร็จแล้วให้กดปุ่ม Next เพื่อไปขั้นตอนต่อไป   ที่หน้าต่อมาให้กด Next เพื่อไปขั้นตอนต่อไปได้เลย เพราะไม่ต้องมีการกำหนดค่าอะไรในหน้านี้

  ต่อมาจะเป็นหน้ากำหนดรูปไอคอนให้กับแอปพลิเคชัน โดยโปรแกรมจะมีให้เลือกอยู่แล้วในระดับหนึ่ง สามารถนำรูปภาพที่มีอยู่แล้วมาใช้ก็ได้เช่นกัน เมื่อกำหนดเสร็จแล้วให้กดปุ่ม Next

  หน้าต่อมาจะเป็นการกำหนดรูปแบบของ Activity หรือก็คือหน้าตาแอปพลิเคชันนั่นเอง ให้เลือก Blank Activity แล้วกดปุ่ม Next

  จากนั้นจะเป็นขั้นตอนการกำหนดชื่อของ Activityและชื่อของไฟล์ Layout กัย Fragment Layout ทั้งสามอย่างนี้สามารถกำหนดเป็นชื่ออะไรก็ได้ แต่สำหรับ Activity Name จะต้องขึ้นต้นด้วยตัวพิมพ์ใหญ่เท่านั้น และ Layout กับ Fragment Layout จะต้องเป็นตัวพิมพ์เล็กไม่เว้นวรรคหรือตัวอักษรพิเศษยกเว้นเครื่องหมาย – กับ _ ส่วน Navigation Type เป็นการกำหนดรูปแบบในการเปลี่ยนไปยังหน้าต่างๆ ให้กำหนดเป็น None แล้วกดปุ่ม Finish เพื่อสิ้นสุดการตั้งค่าสำหรับโปรเจคใหม่

  รอซักครู่ให้โปรแกรมสร้างโปรเจคใหม่จนเสร็จก่อน

  ให้สังเกตที่ช่องซ้ายมือที่เป็น Package Explorer ถ้าเห็นว่าโปรเจคที่พึ่งสร้างขึ้นมานั้นมีเครื่องหมายตกใจสีแดงอยู่ ให้เลือกไปที่ Project > Clean…

  แล้วเลือกเฉพาะโปรเจคที่พึ่งสร้างขึ้นมาสองตัวคือ AppCompatV7 กับ FirstIOIOApp

  จากนั้นให้รอซักพักก็จะเห็นว่าเครื่องหมายตกใจและเครื่องหมายกากบาทสีแดงที่หน้าโฟลเดอร์โปรเจคทั้งสองได้หายไปแล้ว

  เมื่อพร้อมจะเริ่มเขียนโปรแกรมแล้ว ให้สังเกตที่หน้าต่างทางขวามือจะเป็นหน้าต่างจำลองหน้าตาแอปพลิเคชันที่จะสร้างขึ้น ให้ลาก Text View กับ Toggle Button จากช่อง Palette มาวางหน้าจอดังภาพ

  คลิกขวาที่ Text View แล้วเลือก Edit ID…

  ผู้เขียนจะทำการกำหนดชื่อ ID ของ Text View ตัวนี้ว่า textStatus เพื่อใช้สำหรับแสดงสถานะการเชื่อมต่อว่าอุปกรณ์แอนดรอยด์ทำการเชื่อมต่อกับบอร์ด IOIO-Q แล้วหรือยัง

  ต่อไปลองเปลี่ยนข้อความที่แสดงซักหน่อย โดยคลิกขวาที่  Text View แล้วเลือก Edit Text…

  ที่ช่องข้างล่างให้ใส่เป็นข้อความที่ต้องการแสดง โดย Text View ตัวนี้ ผู้เขียนต้องการให้แสดงสถานะการเชื่อมต่อกับบอร์ด IOIO ดังนั้นจึงกำหนดข้อความเริ่มว่าเพื่อแสดงให้ผู้ใช้รู้ก่อนว่ายังไม่ได้เชื่อมต่อ โดยกำหนดข้อความว่า Status : Disconnect

  ต่อมาให้กำหนด ID ของ Toggle Button โดยคลิกขวาที่ Toggle Button แล้วเลือก Edit ID…

  ผู้เขียนจะกำหนดชื่อ ID ว่า buttonLED แล้วกดปุ่ม OK

  เท่านี้หน้า Layout ก็พร้อมสำหรับการเชื่อมต่อกับบอร์ด IOIO-Q เบื้องต้นแล้ว

  ในการแก้ไขไฟล์ใดๆทุกครั้งให้กดบันทึกไฟล์นั้นๆด้วย จะกด Ctrl + S หรือเลือกที่ File > Save ก็ได้ ในกรณีที่ยังไม่ได้บันทึกไฟล์จะสังเกตได้จากแท็บข้างบนของไฟล์นั้นๆจะมีเครื่องหมายดอกจันทร์นำหน้าอยู่

  ซึ่งหมายความว่าไฟล์นั้นๆมีการแก้ไขแต่ยังไม่ได้บันทึก เมื่อทำการบันทึกไฟล์ เครื่องหมายดอกจันทร์ที่อยู่ข้างหน้าก็จะหายไป

  ที่หน้าต่าง Package Explorer ให้เลือกไปที่ res > layout จะเห็นไฟล์อยู่ข้างในนี้สองไฟล์คือ activity_main.xml และ fragment_main.xml (ขึ้นอยู่กับการกำหนดชื่อในตอนที่สร้างโปรเจค)

  ให้ทำการลบ activity_main.xml ที่เป็น Layout หลักทิ้ง โดยคลิกขวาที่ไฟล์แล้วเลือก Delete

  โปรแกรมจะถามเพื่อยืนยันการลบไฟล์ทิ้งให้กดปุ่ม OK

  จะมีหน้าต่างแสดงว่าถ้าลบไฟล์ดังกล่าวจะมีอะไรเปลี่ยนแปลงไปบ้าง ให้กดปุ่ม Continue

  เมื่อลบไฟล์ activity_main.xml ไปแล้ว ไฟล์ MainActivity.java จะมีเครื่องหมายกากบาทสีแดงข้างหน้าอยู่ ยังไ่มต้องสนใจอะไรในตอนนี้

  ให้คลิกขวาที่ไฟล์ fragment_main.xml แล้วเลือก Refactor > Rename… เพื่อทำการเปลี่ยนชื่อไฟล์

  ให้เปลี่ยนชื่อเป็นอะไรก็ได้ เพราะไฟล์นี้จะเป็นไฟล์ที่กำหนดรูปแบบหน้าตาของแอปพลิเคชันของเรา โดยผู้เขียนจะกำหนดชื่อว่า layout_main.xml

  เท่านี้หน้าต่างแอปพลิเคชันของเราก็เตรียมพร้อมเรียบร้อยแล้ว ต่อไปก็จะเป็นการเขียนคำสั่งเพื่อควบคุมบอร์ด IOIO-Q   อย่างแรกสุดที่ต้องทำทุกครั้งเมื่อสร้างโปรเจคขึ้นมา ก่อนที่จะเขียนโปรแกรมจะต้องกำหนดไลบรารีของ IOIO ให้กับโปรเจคนั้นๆเสียก่อน โดยคลิกขวาที่โฟลเดอร์โปรเจคในช่อง Package Explorer

  ที่ฝั่งซ้ายมือให้เลือกแท็บ Android แล้วกดปุ่ม Add… ที่อยู่ฝั่งขวามือ

  เลือกไลบรารี IOIOLibAndroid แล้วกดปุ่ม OK

  จะเห็นว่าไลบรารี IOIOLibAndroid ได้เพิ่มเข้ามาในโปรเจคแล้ว และให้เพิ่มอีกสองโปรเจคที่เหลือให้ครบ เมื่อครบแล้วก็กดปุ่ม OK เพื่อปิดหน้าต่าง Properties นี้ได้เลย

IOIOLibAndroid : เป็นไลบรารีหลักในการพัฒนาแอปพลิเคชันสำหรับบอร์ด IOIO-Q (จำเป็น)

IOIOLibBT : เป็นไลบรารีเสริมที่ทำให้เชื่อมต่อกับบอร์ด IOIO-Q ผ่านบลูทูธ (เลือกได้)

IOIOLibAccessory : เป็นไลบรารีเสริมที่ทำให้เชื่อมต่อกับบอร์ด IOIO-Q ผ่าน Open Accessory (เลือกได้)

กลับมาที่แท็บ MainActivity.java ที่เอาไว้เขียนโปรแกรม จะเห็นว่ามีคำสั่งที่โปรแกรมเตรียมไว้ให้ในระดับหนึ่งแล้ว

ให้ลบคำสั่งออกแล้วเพิ่มเข้าไปใหม่ดังนี้

จากภาพข้างต้นนี้คือรูปคำสั่งเริ่มต้นที่ใช้สำหรับการเขียนโปรแกรมเพื่อควบคุมแอนดรอยด์ เวลาที่สร้างโปรเจคใหม่ก็จะเริ่มต้นด้วยรูปแบบคำสั่งแบบนี้ทุกครั้ง

ต่อมาจะเป็นการเริ่มเขียนโปรแกรมอย่างง่ายเพื่อควบคุมไฟ LED ที่อยู่บนบอร์ด IOIO-Q โดยกดปุ่ม Toggle Button ผู้เขียนจะเพิ่มคำสั่งเข้าไปดังนี้

สำหรับการทำงานของคำสั่งชุดนี้จะเป็นการอ่านค่าจาก Toggle Button เมื่อ Toggle Button เป็น ON ค่าที่อ่านได้จะเป็น TRUE และเมื่อเป็น OFF ค่าที่อ่านได้ก็จะเป็น FALSE จึงเอาค่าที่อ่านได้มาใช้กำหนดสถานะของ LED ขา 0 ที่อยู่ตรงกลางบอร์ด IOIO-Q แต่ทว่า LED ดังกล่าวทำงานเป็นแบบ Active Low โดย LED จะติดสว่างเมื่อสั่งงานเป็น FALSE และจะดับเมื่อสั่งงานเป็น TRUE ดังนั้นจึงต้องทำการ Invert สถานะด้วยเครื่องหมาย ! แล้วนำไปสั่งงาน LED

เมื่อพิมพ์คำสั่งเสร็จให้เปิดไฟล์ AndroidMenifest.xml ที่อยู่ในหน้าต่าง Package Explorer ขึ้นมา

ให้เลือกแท็บ Permission ที่อยู่ข้างล่างของหน้าต่าง Android Manifest แล้วกดที่ปุ่ม Add…

จะมีหน้าต่างให้เลือกรูปแบบของ Permission ให้เลือกที่ Uses Permission แล้วกดปุ่ม OK

เมื่อหน้าต่างปิดลงก็จะเห็นจะมี Uses Permission ถูกเพิ่มเข้ามาในหน้าต่าง Permission ที่ช่องขวามือให้เลือกที่ Name โดยกดที่ปุ่มลูกศรชี้ลงที่อยู่ท้ายสุด จะมีรายชื่อ Permission ให้เลือก โดยให้เลือกเป็น android.permission.BLUETOOTH

จากนั้นให้ทำการบันทึกไฟล์ จะเห็นว่าคำว่า Uses Permission ในช่องซ้ายมือเปลี่ยนเป็น android.permission.BLUETOOTH แล้ว

  ทำแบบเดิมอีกครั้งแต่เลือก Permission ตัวอื่นจนครบทั้ง 3 อันดังภาพ แล้วบันทึกไฟล์ให้เรียบร้อย ในการเชื่อมต่อกับบอร์ด IOIO-Q จะต้องมีการขอ Permission หรืออนุญาตการทำงานบางอย่างที่ระบบแอนดรอยด์กำหนดไว้ โดยจะมี Internet, ฺBluetooth และ Bluetooth Admin สำหรับ Permission ที่ชื่อ Internet ไม่ได้หมายความว่าแอปพลิเคชันต้องต่ออินเตอร์เน็ต เพียงแต่ว่ามีคำสั่งบางคำสั่งที่ใช้ในไลบรารีของ IOIO บังคับให้ขอ Permission ตัวนี้ด้วย ส่วน Bluetooth และ Bluetooth Admin ใช้สำหรับการเชื่อมต่อผ่านบลูทูธ ซึ่งจะต้องประกาศเพื่อใช้งานไลบรารี IOIOLibBT เมื่อทุกอย่างพร้อมแล้วก็จะเริ่มติดตั้งลงบนอุปกรณ์แอนดรอยด์ โดยคลิกขวาที่โฟลเดอร์โปรเจค แล้วเลือก Run As > 1 Android Application จากนั้นโปรแกรมก็จะทำการคอมไพล์ให้กลายเป็นไฟล์สำหรับติดตั้งบนแอนดรอยด์ (คอมไพล์จะไม่ผ่านถ้ามีไฟล์ใดไฟล์หนึ่งในโปรเจคเกิดการเออเรอร์ขึ้น) และจะติดตั้งลงบนอุปกรณ์แอนดรอยด์ให้ ผู้อ่านต้องเปิด USB Debugging บนอุปกรณ์แอนดรอยด์ ต่อสาย USB กับคอมพิวเตอร์แล้วลง ADB Interface Driver บนคอมพิวเตอร์ให้เรียบร้อย ถึงจะสามารถติดตั้งแอปพลิเคชันจากโปรแกรม Eclipse ได้ทันที ถ้าไม่ได้ติดตั้งไดรเวอร์ก็ จะไม่สามารถทำได้ จะต้องนำไฟล์ .apk ที่อยู่ในโฟลเดอร์ bin มาเก็บไว้ในอุปกรณ์แอนดรอยด์แล้วทำการติดตั้งเอง เมื่อเปิดแอปพลิเคชันบนอุปกรณ์แอนดรอยด์แล้วก็จะแสดงหน้าตาแอปพลิเคชันตามที่ออกแบบไว้ในตอนแรก   เมื่อทำการเชื่อมต่อกับบอร์ด IOIO-Q ก็จะเห็นว่า Text View เปลี่ยนข้อความเป็น Connected แทน   จากนั้นให้ลองกด Toggle Button ดู จากเดิมที่เป็น OFF ก็จะกลายเป็น ON   สังเกตบนบอร์ด IOIO-Q จะเห็นว่า LED ที่อยู่ตรงกลางบอร์ดสว่างขึ้นเมื่อกดปุ่ม Toggle Button เป็น ON และจะดับลงเมื่อกดปุ่ม Toggle Button เป็น OFF   แอปพลิเคชันอย่างง่ายที่ใช้ควบคุมบอร์ด IOIO-Q เสร็จเรียบร้อยแล้ว ทีนี้ก็ขึ้นอยู่กับว่าผู้อ่านจะลองฝึกฝนและประยุกต์ออกมาเป็นผลงานตามที่ต้องการ ^ ^

Facebook Comments Box