29 กรกฎาคม 2556

[IOIO-Board] การสร้างโปรเจคสำหรับ IOIO บน Android Studio


        * ถ้าใช้ Eclipse เขียนแอปพลิเคชันควบคุม IOIO ให้ดูที่ [IOIO-Board] การสร้าง Project ใน Eclipse [Firmware 3.23 ขึ้นไป]

        ** อัพเดท Android Studio เวอร์ชัน 0.3.5
        รู้สึกว่าจะห่างหายกันไปนานกับบทความของบอร์ด IOIO คราวนี้ก็กลับมาอีกครั้ง แต่เรื่องราวในคราวนี้ก็เหมือนเดิม คือวิธีการสร้างโปรเจคนั่นแหละ แต่เป็น Android Studio จากเดิมที่เคยทำบทความสำหรับ Eclipse กันไปแล้ว [IOIO-Board] การสร้าง Project ใน Eclipse [Firmware 3.23 ขึ้นไป]

        การสร้างโปรเจคสำหรับ IOIO บน Android Studio จะแตกต่างไปเล็กน้อย โดยหลายๆคนจะมีปัญหากับ Library ของ IOIO ที่ Import ไม่ได้ ดังนั้นเจ้าของบล็อกก็เลยทำบทความนี้ขึ้นมาเพื่อแก้ปัญหาดังกล่าวให้


        ก่อนอื่นก็ขอเริ่มต้นตั้งแต่เริ่มเปิดโปรแกรมขึ้นมากันเลยนะครับ

        • เริ่มจากทำการสร้างโปรเจคใหม่เป็นอย่างแรกเลย เลือกที่ New Project...



        • ตั้งชื่อ    Application Name
                        Module Name
                        Package Name
                        Project Location
                        Minimum required SDK
                        Target SDK
                        Compile with
                        Theme



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



        Module Name คือชื่อโฟลเดอร์ที่เป็นโมดูลหรือก็คือส่วนที่เป็นคำสั่ง



        Package Name คือชื่อที่เอาไว้ระบุชื่อของแอปพลิเคชันนั้นๆ ซึ่งไม่เหมือนกับ Application Name ที่สามารถซ้ำกับแอปฯอื่นได้ เพราะเป็นเรื่องปกติที่ชื่อแอปฯจะซ้ำกันได้ อย่างเช่น Calculator แต่สำหรับแอนดรอยด์การระบุตัวตนของแอปฯนั้นๆจะดูกันที่ Package Name นี่ล่ะ ซึ่งจะซ้ำกันไม่ได้เด็ดขาด โดยกำหนดให้ระบุ ชื่อโดยมีเครื่องหมายจุดคั่น เช่น app.myapp / com.project.myapplication โดยจะตั้งชื่อยาวแค่ไหนก็ได้ โดยพยายามตั้งให้ยาวเพื่อไม่ให้ซ้ำง่ายๆ

        Project Location คือที่อยู่ของโปรเจคที่ต้องการเก็บไว้ และจะตั้งเป็นชื่อโฟลเดอร์ของโปรเจคด้วยเลย



        Minimum required SDK คือการกำหนดว่าแอปพลิเคชันนี้จะรองรับแอนดรอยด์เวอร์ชันขั้นต่ำที่เวอร์ชันอะไร แนะนำให้เป็น API 8 ขึ้นมา

        Target SDK คือเวอร์ชันแอนดรอยด์ที่ผู้พัฒนาทำแอปพลิเคชันมาสำหรับเวอร์ชันใด ซึ่งแอปพลิเคชันก็ยังคงสามารถรองรับกับเวอร์ชันอื่นๆได้อยู่เหมือนเดิม เวอร์ชันที่สูงกว่าหรือเวอร์ชันขั้นต่ำตามที่กำหนดไว้ใน Minimum required SDK


        Compile with คือเวอร์ชันของแอนดรอยด์ที่ติดตั้งใน SDK ซึ่งจะนำมาใช้เวลาที่ Compile ตัวแอปพลิเคชัน โดยคำสั่งของโปรแกรมที่สามารถเรียกใช้ได้ก็จะขึ้นอยู่กับเวอร์ชันของแอนดรอยด์ที่นำมา Compile

        Theme เป็นรูปแบบของ UI แบบมาตรฐานที่ทาง Android กำหนดไว้ โดยจะมี Holo Dark, Holo Light และ Holo Light with Dark Action Bar

Holo Dark

Holo Light

Holo Light with Dark Action Bar


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



        • ต่อมาเป็นการเลือก Activity เริ่มต้นที่จะสร้าง โดยจะมีแบบพื้นฐานให้เลือก ส่วนมากเจ้าของบล็อกเลือกเป็น Blank Activity แล้วไปจัดวาง Layout เอง



        • ต่อมาจะเป็นการกำหนดชื่อ Activity และ Layout เริ่มต้น โดย Activity ต้องขึ้นต้นด้วยตัวพิมพ์ใหญ่ ห้ามมีอักษรพิเศษ ส่วน Layout ต้องเป็นตัวพิมพ์เล็ก ห้ามมีเว้นวรรคและอักษรพิเศษ ทั้ง Layout Name และ Fragment Layout Name อันนี้เจ้าของบล็อกแก้ชื่อ Activity Name เล่นๆนะ จากเดิมจะชื่อ MainActivity แก้เป็น Main เวลาดูพวกโค๊ดก็เช็คให้ดีๆละกันนะครับ



        • จากนั้นให้รอซักพักเพื่อให้โปรแกรมทำการสร้างโปรเจคขึ้นมา เมื่อสร้างเสร็จแล้วก็จะพบกับหน้าต่างในการเขียนแอปพลิเคชัน ก่อนอื่นก็ปิดหน้าต่างโค๊ดของ fragment_main.xml ไปก่อนเลย



        • เริ่มจากลบไฟล์ fragment_main.xml ทิ้งก่อน เนื่องจากบทความนี้เจ้าของบล็อกทำเพื่อเป็นบทความเริ่มต้น จึงไม่อยากให้มีไฟล์อะไรมากมายนัก จะได้ไม่สับสน โดยเลือกที่ไฟล์ดังกล่าวแล้วกด Delete ได้เลย


        • จะมีหน้าต่าง Safe Delete แสดงขึ้นมา ให้ติ๊กถูกทั้งหมดแล้วกดปุ่ม Delete



        • โปรแกรมจะแจ้งเตือนว่าไฟล์นั้นมีการใช้งานอยู่ ให้กดปุ่ม Delete Anyway เพื่อยืนยันการลบทิ้ง



        • เท่านี้ไฟล์ fragment_main.xml ก็จะถูกลบทิ้งแล้ว



        • ต่อไปทำการสร้างโฟลเดอร์ libs ไว้ในโฟลเดอร์ Module โดยคลิกขวาที่โฟลเดอร์ของ Module แล้วเลือก New > Directory



        • สร้างโฟลเดอร์ชื่อว่า libs




        • ต่อมาให้ผู้ที่หลงเข้ามาอ่านทำการดาวน์โหลดไฟล์ Library ของ IOIO ก่อน โดยดาวน์โหลดจากลิ้งนี้ได้เลย IOIOLib 3.2.6 For Android Studio [Google Drive] สำหรับ Library ดังกล่าวเป็นเวอร์ชัน 3.2.6 ที่เป็นตัวไฟล์แบบ .jar แล้ว

        โดยปกติเวลา Import ใน Eclipse จะใช้วิธี Import ทั้งตัวโปรเจคไปเลย แต่ใน Android Studio เจ้าของบล็อกจะขอใช้เป็นไฟล์ .jar แทน เพราะกำหนดในเรื่องของ Library ได้สะดวกกว่า Import เป็นโปรเจค

        เมื่อดาวน์โหลดมาแล้ว ให้ Extract File ก็จะเห็นไฟล์ .jar ทั้งสามตัวของ IOIO



        • ให้ทำการคัดลอกไฟล์ทั้งสามตัว จะคลิกขวาเลือก Copy หรือ CTRL + C ก็ได้




        • ให้คลิกขวาที่โฟลเดอร์ libs ที่อยู่ในโปรเจคนั้นๆ แล้วเลือก Paste เพื่อวางไฟล์ หรือจะกด CTRL+V ก็ได้



        • จะมีหน้าต่างแจ้งการคัดลอกไฟล์ขึ้นมา ให้กดปุ่ม OK ได้เลย



        • จะเห็นว่าไฟล์ .jar ของ Library ทั้งสามตัวได้มาเก็บไว้ในโฟลเดอร์ lib แล้ว



        • เลือกไปที่ File > Project Structure...



        • หน้าต่าง Project Structure จะถูกเปิดขึ้นมา หน้าที่เจ้าของบล็อกจะให้เปิดนั้นอาจจะแปลกๆซะหน่อย มันคือหน้า Modules นั่นแหละ แต่ไม่ใช่หน้าที่แสดงอยู่ ณ ตอนนี้ ให้เลือกที่ Android SDK ก่อน แล้วกลับมาเลือกที่ Modules อีกครั้ง แล้วเลือกไปที่แท็บ Dependencies





        • ให้กดปุ่ม + ที่อยู่ขวามือของหน้าต่างหรือกด Alt + Insert แล้วเลือก 2 File dependency



        • จะมีหน้าต่างขึ้นมา ให้เลือกไลบรารีของ IOIO แล้วกด OK



        • ชื่อของไลบรารีจะแสดงในหน้า Project Structure ให้เห็น แต่อาจจะเป็นเพราะบั๊ก ต้องกด Apply แล้วรอพักนึงถึงจะเห็น ให้เพิ่มจนครบทั้ง 3 ไลบรารี




        • จะเห็นว่าคราวนี้ที่หน้า Library ของ IOIO จากเดิมที่ยังไม่มีเครื่องหมายลูกศรข้างหน้า ตอนนี้มีเครื่องหมายลูกศรข้างหน้าแต่ละไฟล์แล้ว หมายความว่าได้เพิ่มเรียบร้อยแล้ว



        • กลับมาที่หน้าโค๊ดของ Main.java (หรือชื่อตามที่ผู้ที่หลงเข้ามาอ่านตั้งไว้) ให้พิมคำสั่งเริ่มต้นสำหรับใช้งานร่วมกับบอร์ด IOIO ดังนี้ (แก้ชื่อแพคเกจและชื่อ Activity ให้ตรงกับของผู้ที่หลงเข้ามาอ่านด้วย)

package app.akexorcist.ioioapplication; import android.os.Bundle; import android.widget.Toast; import ioio.lib.api.exception.ConnectionLostException; import ioio.lib.util.BaseIOIOLooper; import ioio.lib.util.IOIOLooper; import ioio.lib.util.android.IOIOActivity; public class Main extends IOIOActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } class Looper extends BaseIOIOLooper { protected void setup() throws ConnectionLostException , InterruptedException { runOnUiThread(new Runnable() { public void run() { Toast.makeText(getApplicationContext(), "Connected!", Toast.LENGTH_SHORT).show(); } }); } public void loop() throws ConnectionLostException , InterruptedException { } } protected IOIOLooper createIOIOLooper() { return new Looper(); } }


        • อ๊ะๆ ยังไม่เสร็จนะ ให้เปิดไฟล์ AndroidManifest.xml เพื่อเพิ่ม Permission


        • เพราะบอร์ด IOIO นั้นจะต้องขออนุญาตเข้าใช้งาน Internet และ Bluetooth ซึ่ง Bluetooth ใช้สำหรับเชื่อมต่ออุปกรณ์แอนดรอยด์กับบอร์ด IOIO ผ่านบลูทูธ ส่วน Internet อันนี้ไม่ได้หมายความว่าแอปพลิเคชันของ IOIO จะต้องต่อเน็ตนะ เพียงแต่ว่า Library ของ IOIO มีการเรียกใช้งานบางอย่างที่เกี่ยวข้องกับ Permission ของ Internet ก็เลยต้องประกาศ Permission ไว้ด้วยเท่านั้นเอง โดยให้เพิ่มต่อท้ายจาก Tag ของ uses-sdk พิมลงไปตามนี้
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />



        • เพียงเท่านี้ก็เป็นอันเสร็จเรียบร้อย สามารถติดตั้งลงบนอุปกรณ์แอนดรอยด์ได้ ให้กดปุ่ม Run หรือ Shift + F10 เพื่อทำการติดตั้งแอปพลิเคชันลงบนเครื่อง (อย่าลืมต่อสายเข้ากับคอมให้เรียบร้อยก่อนนะ)



        • เวลา Android Studio ทำงานอยู่จะสังเกตเห็นแถบโหลดอยู่ข้างล่าง เวลาเห็นแถบโหลดแบบนี้ทุกครั้ง แนะนำให้รอจนกว่าจะโหลดเสร็จ



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



        • รอ Android Studio ติดตั้งลงบนเครื่องจนเสร็จ แอปพลิเคชันบนเครื่องก็จะเปิดขึ้นมาเองทันที




        ทีนี้ก็ให้ลองต่ออุปกรณ์แอนดรอยด์เข้ากับบอร์ด IOIO ได้เลย ก็จะพบว่าสามารถเชื่อมต่อกับบอร์ดและสั่งงานได้เลย (แต่ในตัวอย่างบทความนี้ไม่ได้ใส่โค๊ดสั่งงานอะไรนะ กำหนดแค่ว่าเวลาเชื่อมต่อกับบอร์ดจะมีคำว่า Connect แสดง)


        สำหรับผู้ที่หลงเข้ามาอ่านคนใครที่ต้องการไฟล์ตัวอย่างสามารถดาวน์โหลดได้จาก IOIO For Android Studio [Google Drive] (สำหรับ Android Studio เท่านั้นนะครับ)


        หมดปัญหากับ Android Studio แล้ว~




เหล่าพันธมิตรแอนดรอยด์

Devahoy Layer Net NuuNeoI The Cheese Factory Somkiat CC Mart Routine Artit-K Arnondora Kamonway Try to be android developer Oatrice Benz Nest Studios Kotchaphan@Medium Jirawatee@Medium Travispea@Medium