10 พฤษภาคม 2555

[IOIO-Board] การสร้างโปรเจค IOIO ใน Eclipse [Firmware 3.26]


        ** ถ้าใช้ Android Studio ให้ดูที่ **
        [IOIO-Board] การสร้างโปรเจคสำหรับ IOIO บน Android Studio

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


        สำหรับบทความครั้งนี้เจ้าของบล็อกจะขออธิบายทั้งหมด ตั้งแต่การ Import Library ไปจนถึงสร้างโปรเจคเริ่มต้นสำหรับเขียนแอพฯควบคุมบอร์ด IOIO

        ก่อนอื่นให้เตรียมไฟล์ Library ทั้งสามตัวให้พร้อม โดยดาวน์โหลดได้จาก

                IOIO Library 3.26 [Google Drive]

                IOIO Library 3.26 [Sleeping For Less]


        จากนั้นให้ไปที่ File > Import...



        ให้เลือกที่ General > Existing Project into Workspace แล้วกดปุ่ม  Next



        จะมีหน้าต่างให้เลือกว่าจะ Import ไฟล์จากที่ใด ให้กดเลือกที่ Select archive file แล้วกดปุ่ม Browse... ที่อยู่ต่อท้าย จากนั้นก็ให้เลือกไฟล์ Zip ที่ได้ดาวน์โหลดไว้ที่เป็นไฟล์ .zip 



        จะเห็นว่าไลบรารีของ IOIO จะมีอยู่ด้วยกัน 3 ตัวคือ IOIOLib, IOIOLibAccessory และ IOIOLibBT ก็ให้กดปุ่ม Finish



        เมื่อเพิ่มเข้ามาแล้ว ส่วนมากจะพบว่ามันขึ้นเครื่องหมายกากบาทสีแดงที่โปรเจคทั้ง 3 ตัว



        อย่างแรกสุดจะให้เช็คเสียก่อนว่าผู้ที่หลงเข้ามาอ่านได้ติดตั้งแอนดรอยด์เวอร์ชันอะไรไว้บ้างใน Android SDK โดยเลือกที่ Window > Android SDK Manager



        จะมีหน้าต่าง Android SDK Manager แสดงขึ้นมาให้เห็นว่าเครื่องของผู้ที่หลงเข้ามาอ่านได้ติดตั้งอะไรไว้บ้าง โดยแนะนำให้ติดตั้ง SDK สำหรับแอนดรอยด์เวอร์ชันล่าสุด

        จากตัวอย่างเวอร์ชันล่าสุดคือ Android 4.4.2 (เพราะ Android 4.4W มีไว้สำหรับ Wearable Device และ Android L เป็นตัวทดลองที่ยังไม่ได้ปล่อยให้ใช้งานจริง) โดยสิ่งที่จำเป็นต้องติดตั้งจะมีอยู่สองตัวด้วยกันคือ SDK Platform และ Google APIs (ARM System Image) ของเวอร์ชันล่าสุด ก็ให้ทำการติดตั้งให้เรียบร้อยซะ


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


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



        หน้าต่าง Properties จะแสดงขึ้นมา ให้เลือกแถบ Android ตรงช่องซ้ายมือ แล้วฝั่งขวามือจะเห็นว่าโปรเจคนี้กำหนดเป็นเวอร์ชันอะไรอยู่ จากภาพตัวอย่างคือ Android 4.4.2 โดยดูในช่อง Project Build Target (เวอร์ชันที่มีให้เลือกขึ้นอยู่กับแต่ละเครื่องว่าได้ติดตั้งเวอร์ชันไหนไว้บ้างใน Android SDK Manager)


        ให้สังเกตตรงนี้ดีๆนะครับ ว่าจะมี 4.4.2 อยู่ด้วยกันสองตัว (ดูที่แถว Platform) ซึ่งมาจากที่ขั้นตอนก่อนหน้าที่ให้ติดตั้งนั่นเอง และแนะนำให้เป็นเวอร์ชันเดียวกันแบบตัวอย่างนี้ด้วย ดังนั้น 4.4.2 จะมีอยู่สองตัวคือ Android 4.4.2 กับ Google APIs


        สำหรับ Library ของ IOIO ทั้ง 3 ตัวจะมีการกำหนดที่ต่างกันดังนี้

                • IOIOLib : Android X (X คือเวอร์ชันของแอนดรอยด์)

                • IOIOLibAccessory : Google APIs

                • IOIOLibBT : Android X (X คือเวอร์ชันของแอนดรอยด์)

        จากภาพตัวอย่างก็จะต้องกำหนดของแต่ละโปรเจคเป็นดังนี้

                • IOIOLib : Android 4.4.2

                • IOIOLibAccessory : Google APIs (4.4.2)

                • IOIOLibBT : Android 4.4.2


        ในขั้นตอนนี้เรียกได้ว่าเป็น Tricky นิดหน่อย เพราะว่าในภาพตัวอย่าง IOIOLib ของเจ้าของบล็อกได้เลือกเป็น Android 4.4.2 อยู่แล้ว แต่ทว่ายังมีปัญหาอยู่ ให้ลองกดเลือกอันอื่นแทน แล้วกดปุ่ม Apply จากนั้นก็กลับมาเลือกอันที่ถูกต้องแล้วกดปุ่ม Apply อีกครั้ง


        ยกตัวอย่างว่าเป็น IOIOLib นะ

                (1) ให้เลือกเป็น Google APIs

                (2) กดปุ่ม Apply

                (3) กลับไปเลือก Android 4.4.2 ที่เป็นอันที่ถูกต้อง

                (4) กดปุ่ม Apply อีกครั้ง

        สรุปง่ายๆก็ Google APIs > Apply > Android 4.4.2 > Apply


        จากนั้นลองกดปุ่ม OK เพื่อปิดหน้าต่าง แล้วกลับมาดูที่ Project Explorer หรือ Package Explorer ดู จะเห็นว่า IOIOLib ไม่มีเครื่องหมายกากบาทสีแดงแล้ว



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

                IOIOLib : Google APIs > Apply > Android 4.4.2 > Apply

                IOIOLibAccessory : Android 4.4.2 > Apply > Google APIs > Apply

                IOIOLibBT : Google APIs > Apply > Android 4.4.2 > Apply


        สำหรับ IOIOLibAccessory กับ IOIOLibBT อาจจะยังมีปัญหาขึ้นเครื่องหมายกากบาทสีแดงอยู่ ให้ลองเข้าไปดูที่หน้า Properties ใหม่อีกครั้งแล้วเช็คในส่วนของ Library โดยจะเห็นว่ามีการเพิ่ม IOIOLib อยู่ในนั้น แต่ทว่าอาจจะมีเครื่องหมายกากบาทๆสีแดงอยู่ ซึ่งหมายความว่าหาโปรเจคดังกล่าวไม่เจอ



        ให้ปิดโปรแกรมแล้วเปิดขึ้นมาใหม่อีกครั้ง ถ้าเอาง่ายๆก็ให้เลือก File > Restart



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


        เอาละ มาเริ่มสร้าง Project กันเลยดีกว่า โดยขั้นตอนการสร้างโปรเจคให้ดูวิธีจากบทความ [Android Code] เริ่มต้นสร้างแอปพลิเคชันแอนดรอยด์บน Eclipse โดยแนะนำเช่นเคยคือ เลือกเวอร์ชันล่าสุดที่ไม่ใช่ Android 4.4W และ Android L (ของเจ้าของบล็อกจะเป็น 4.4.2)


        เมื่อสร้างเสร็จแล้วก็จะเห็นว่ามีโปรเจคเพิ่มเข้ามา



        และหน้าต่างของผู้ที่หลงเข้ามาอ่านก็คงจะประมาณนี้



        สิ่งที่ต้องทำอย่างแรกสุดคือกำหนดให้โปรเจคใช้ Library ของ IOIO เสียก่อน โดยคลิกขวาที่โปรเจคแล้วเลือก Properties



        เลือกที่แถบ Android แล้วกดปุ่ม Add ที่อยู่ในกรอบ Library



        จะมี Library ของ IOIO ให้เลือกทั้ง 3 ตัว ให้เลือกตัวใดตัวหนึ่งแล้วกดปุ่ม OK



        เพิ่มให้ครบทั้ง 3 ตัวในหน้าต่าง Properties แล้วกดปุ่ม OK เพื่อปิดได้เลย



        สิ่งที่ต้องทำต่อมาคือกำหนด Permission สำหรับ IOIO โดยให้กดเปิดไฟล์ AndroidManifest.xml ขึ้นมา



        ไฟล์ AndroidManifest.xml จะถูกเปิดขึ้นมา ให้เลือกแถบข้างล่างที่ Permission



        ให้กดปุ่ม Add... เพื่อเพิ่ม Permission



        จะมีหน้าต่างแสดงขึ้นมาว่าจะเพิ่ม Permission แบบไหน ก็ให้เลือกเป็น Uses Permission แล้วกดปุ่ม OK



        จะมี Uses Permission เพิ่มเข้ามา และสามารถกำหนดค่าต่างๆที่ด้านข้างได้



        ที่ช่อง Name ให้กดปุ่มลูกศรลงที่อยู่ขวามือ แล้วจะมีตัวเลือกต่างๆโผล่มาให้เลือก โดยเลือก android.permission.INTERNET




        ให้ลองบันทึกไฟล์ดู หรือจะกด Ctrl + S ก็ได้ แล้วจะเห็นว่า Uses Permission ที่อยู่ฝั่งซ้ายมือเปลี่ยนไปเป็น Permission ของ Internet แล้ว (ต้องบอกมันหน่อย มันถึงจะรู้ตัว)



        ให้เพิ่มจนครบทั้ง 3 ตัวดังนี้

                • android.permission.BLUETOOTH

                • android.permission.BLUETOOTH_ADMIN

                • android.permission.INTERNET


        เสร็จแล้วก็กดปิดหน้าต่างของ AndroidManifest.xml ไปได้เลย (อย่าลืมบันทึกไฟล์ด้วย)


        ต่อมาให้เลือกไปที่ไฟล์ Java ที่ได้สร้างไว้ตอนแรก




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


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


MainActivity.java
package app.akexorcist.firstioio;

import ioio.lib.api.exception.ConnectionLostException;
import ioio.lib.util.BaseIOIOLooper;
import ioio.lib.util.IOIOLooper;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;

public class MainActivity extends Activity {

    protected 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();
                }       
            });
            
            // Do something when IOIO is setting up
        }

        public void loop() throws ConnectionLostException, InterruptedException {
            // Do something when IOIO is looping
        }

        public void disconnected() {
            // Do something when IOIO was disconnected
        }
    }

    protected IOIOLooper createIOIOLooper() {
        return new Looper();
    }
}

        โดยมีจุดสำคัญหลักๆคือ

        บรรทัดแรกที่ขึ้นต้นด้วย package จะขึ้นอยู่กับว่าผู้ที่หลงเข้ามาอ่านตั้งชื่อ Package Name ไว้ว่าอย่างไร ซึ่งในตัวอย่างเจ้าของบล็อกกำหนดไว้ว่า app.akexorcist.firstioio นั่นเอง ดังนั้นตรงบรรทัดนี้ให้อิงตามที่ผู้ที่หลงเข้ามาอ่านตั้งไว้นะครับ (ไม่ต้องเปลี่ยนให้เหมือนกับเจ้าของบล็อก)

        บรรทัดที่ขึ้นต้นด้วย public class จะมีชือเป็น MainActivity ซึ่งอิงตามชื่อ Activity ที่เข้าของบล็อกสร้างไว้นั่นเอง ซึ่งตรงนี้ก็ให้อิงตามที่ผู้ที่หลงเข้ามาอ่านได้สร้างไว้ (ไม่ต้องเปลี่ยนให้เหมือนกับเจ้าของบล็อก)

        สรุปง่ายๆคือ Package Name (app.akexorcist.firstioio) กับ Activity Name (MainActivity) ให้อิงตามของผู้ที่หลงเข้ามาอ่านที่ได้กำหนดไว้


        เสร็จเรียบร้อยแล้ว~ เขียนได้ตามใจชอบเลย




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

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