Speaking English

Speaking English Application


Objective 

1. เพื่อเป็นสื่อในการฝึกทักษะการพูดอังกฤษ
2. เพื่อศึกษาและพัฒนา Android Application
3. เพื่อนำไปประยุกต์ใช้กับงานอื่นๆได้



Flowchart




User Interface


- หน้าแรกของ Application
   ประกอบด้วย2 Functions คือ Start และ Close Application
- เลือก Lesson ที่ต้องการ
   Function หลักก็คือ สามารถ Back กลับไปหน้าหลักได้
   เลือก Lesson ที่ต้องการเล่นได้
   เปลี่ยนหน้าไปยังหน้าถัดไปได้ โดยการ touch radio button หรือทำการ Swipe ที่หน้าจอ



- เมื่อทำการเลือกบทเรียน Lesson จะเข้าสู่หน้าจอบทเรียน


- กดปุ่ม Connect Bluetooth เพื่อทำการเชื่อมต่อกับอุปกรณ์ Edu Box
  ทำการเลือก Connection ผ่าน Bluetooth ไปยังอุปกรณ์ จาก List รายการที่ทำการ scan มาให้



-เมื่อกดปุ่ม Start จะเป็นการเริ่มใช้ Application ระบบจะทำการสุ่มคำมาให้ผู้ใช้พูด



- การแสดงผลเมื่อมีการพูด




-เมื่อต้องการออกจาก Application จะทำการถามเพื่อให้ยืนยันการออก



VDO วิธีการใช้งาน






Source codes


- Fade in

การใช้งาน Fade in


ไฟล์ xml ของ Fade in



- Android Display FullScreen / No Title Bar



- การเรียกใช้งาน Voice Recognition



เมื่อได้รับผลจากการเรียกใช้งาน Voice Recognition แล้วจะทำตามคำสั่งใน method onActivityResult




- การขยายรูปและย้ายตำแหน่งรูปภาพ   โดยที่คลาสนั้นจะต้องมีการ implements OnTouchListener เข้าไปด้วย

ถ้าต้องการให้รูปไหนขยายได้ก็ ใส่ดังนี้ imgName.setOnTouchListener(this);


- การติดต่อฐานข้อมูลด้วย SQLite

ถ้ายังไม่ได้กำหนดฐานข้อมูลอยู่ในระบบก็จะทำการสร้างขึ้นมาใหม่ แต่ถ้ามีแล้วก็จะผ่านคำสั่งนี้ไป

เป็น method สำหรับ select update และ insert ข้อมูล


นำฐานข้อมูลมาประยุกต์ใช้ในการเปลี่ยนรูประดับของดาว


- ส่วนของการติดต่อ Bluetooth


      ก่อนอื่นจะต้องแจ้ง Permission ของ Bluetooth ก่อนอันนี้สำคัญมาก ถ้าโปรแกรมของเราไม่มีการแจ้ง
ก็จะไม่สามารถใช้งาน Bluetooth ได้ ให้ใส่คำสั่งใน AndroidManifest.xml ดังนี้

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH" />



      ต่อมาก็ให้กำหนด Bluetooth ในโปรแกรมให้สร้าง Object ที่ชื่อว่า BluetoothAdapter ขึ้นมาซึ่งเป็น Object หลัก สำหรับควบคุม Bluetooth โดยกำหนดค่าให้เป็น getDefaultAdapter() จะเป็นการกำหนด Bluetooth ให้เป็นค่าเริ่มต้น

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();


      กรณีที่ต้องการตรวจสอบว่าอุปกรณ์ Android ของเรารองรับ Bluetooth หรือไม่ ถ้าไม่รองรับก็จะแจ้งผ่าน Toast แล้วปิดโปรแกรมลง

if (mBluetoothAdapter == null) {
    Toast.makeText(getApplicationContext(),
    "No Bluetooth Device, Toast.LENGTH_SHORT).show();
    finish();
    return;
}



เริ่มเปิด Bluetooth ด้วยคำสั่ง

Intent enableBtIntent =
 new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);








     พอถึงขั้นตอนนี้แล้ว ก็จะเป็นการแสดงรายชื่ออุปกรณ์ Bluetooth การแสดงรายชื่ออุปกรณ์ที่เคยเชื่อมต่อมาแล้วอย่างน้อยหนึ่งครั้ง ทำให้ไม่ต้องค้นหาอีกครั้ง เราสามารถกดเชื่อมต่อจากรายชื่อที่มีอยู่ได้ทันที โดยการรับค่ารายชื่อสามารถรับได้จากคำสั่ง .getBondedDevice แล้วนำมาเก็บไว้ใน ArrayAdapter แบบ String โดยจะมีคำสั่งประมาณนี้นะครับ


private ArrayAdapter<String> mPairedDevicesArrayAdapter;
Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
// If there are paired devices
if (pairedDevices.size() > 0) {
    // Loop through paired devices
    for (BluetoothDevice device : pairedDevices) {
        // Add the name and address to an array adapter to show in a ListView
        mArrayAdapter.add(device.getName() + "\n" + device.getAddress());
    }
}

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


     การค้นหาอุปกรณ์และแสดงเป็นรายชื่อ ในกรณีนี้จะต้องทำการค้นหาอุปกรณ์อื่นๆก่อนด้วยคำสั่ง startDiscovery() เมื่อมีการค้นพบอุปกรณ์อื่น คำสั่งใน BroadcastReceiver จะถูกเรียกใช้ทันทีซึ่งใช้สำหรับกำหนดว่าเมื่อค้นหาอุปกรณ์เจอแล้วจะทำอะไรต่อไป ดังนั้นเราก็จะต้องเขียนคำสั่งให้กับ BroadcastReceiver ด้วย ก่อนอื่นจะต้องมีการเรียก Register ให้กับ BroadcastReceiver ก่อน ซึ่งควรจะประกาศไว้ใน onCreate() เลย โดยมีคำสั่งดังนี้

IntentFilter filter = new
     IntentFilter(BluetoothDevice.ACTION_FOUND);
this.registerReceiver(mReceiver, filter);

      และเมื่อปิดโปรแกรมลงหรือเข้าสู่ onDestroy() ก็ควรจะยกเลิก Register ด้วย เพื่อป้องกันการเรียกใช้งานค้างไว้ แล้วโปรแกรมตัวอื่นบน Andriod มีการเรียกใช้ซ้ำ ซึ่งจะทำให้เกิดข้อผิดพลาดได้

this.unregisterReceiver(mReceiver);

      เมื่อกำหนดการเรียก Register เสร็จแล้ว ก็เข้าสู่คำสั่งสำหรับ BroadcastReceiver จะมีฟังก์ชันอยู่ในตัวคือ onReceive ซึ่งจะทำงานเมื่อค้นหาเจออุปกรณ์ที่เปิด Bluetooth อยู่ เราจะให้เก็บรายชื่ออุปกรณ์และ Address ของ Bluetooth โดยจะเก็บไว้ใน mArrayAdapter เหมือนเดิม ซึ่งจะมีคำสั่งดังนี้


private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        // When discovery finds a device
        if (BluetoothDevice.ACTION_FOUND.equals(action)) {
            // Get the BluetoothDevice object from the Intent
            BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
            // Add the name and address to an array adapter to show in a ListView
            mArrayAdapter.add(device.getName() + "\n" + device.getAddress());
        }
    }
};

สำหรับ code ในส่วนนี้สามารถดาวโหลดได้ ที่นี้


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


Conclusions and Comments
      Bluetooth หรือฟันสีฟ้าเป็นเทคโลยีพื้นฐานในการติดต่อระหว่างอุปกรณ์ในขอบเขตที่กำหนด ซึ่งเทคโนโลยีนี้สามารถนำไปประยุกต์ใช้ในด้านต่างๆ เช่น การติดต่อระหว่างอุปกรณ์ ,การรับ-ส่งข้อมูลระหว่างอุปกรณ์ เป็นต้น แต่เทคโนยีนี้เป็นเทคโนโลยีที่ถูกคิดค้นมานานแล้วและมีข้อจำกัดมากมาย
      Voice Recognition คือ ความสามารถในการรับและแปลถ้อยคำหรือเข้าใจถ้อยคำและทำตามคำสั่งนั้นๆ โดยในที่นี้เราได้นำมาประยุกต์ใช้เพื่อสร้าง Application ที่ใช้การพูดเพื่อให้อุปกรณ์รับถ้อยคำต่างๆ และทำตามคำสั่งที่เราได้กำหนดไว้ โดยสามารถศึกษาได้จาก Application
      การใช้ Bluetooth นั้นง่าย รวดเร็ว และเป็นพื้นฐานของการส่งข้อมูลผ่านอุปกรณ์เมื่อนำมาประยุกต์ใช้กับ Voice Recognition แล้วเราสามารถส่งข้อมูลรูปแบบใหม่ๆได้ แต่ก็มีข้อดีข้อเสียต่างๆซึ่งเราได้เรียนรู้จากการศึกษาและสร้าง Application ทำให้เราสามารถนำข้อดีไปประยุกต์ใช้และแก้ไขข้อเสียต่างๆอีกทั้งยังสามารถนำไปต่อยอดพัฒนาให้ชิ้นงานใหม่ๆนั้นดีกว่าเดิมได้ ซึ่งถือว่าการพัฒนานี้เป็นการเริ่มต้นพื้นฐานที่ดีและได้ประโยชน์มากมาย

ข้อดี
1.โอนถ่ายข้อมูลได้ง่ายและรวดเร็ว
2.ประหยัดพลังงานของอุปกรณ์
3.ฝึกฝนภาษา

ข้อเสีย
1.มีข้อจำกัดในระยะทางการติดต่อสื่อสาร
2.Voice recognition ไม่สามารถเข้าใจในถ้อยคำที่เราพูดได้ในบางครั้ง
3.สามารถใช้ได้เฉพาะบางภาษาเท่านั้น
4.ไม่สามารถใช้ในที่ๆมีเสียงรบกวนได้
5.ระบบรักษาความปลอดภัยของ Bluetooth ต่ำ
6.จำเป็นต้องมี Bluetooth

ดาวโหลด code และ apk
ผู้จัดทำ
นายชุติวัต  ศรีสุนทร 52215703
responsibilities : Codeing Voice recognition , Documentation , Video

นายพชร  อภิชิตชน  52215710
responsibilities : Coding UI , Documentation , Video


นายวริทธิ  นวมงาม  52215715
responsibilities : Coding multitouch Bluetooth and database , Documentation , Video , Testing


Reference : http://www.thaicreate.com/mobile/android-confirm-popup.html
                  http://www.thaicreate.com/mobile/android-widgets-radiogroup.html
                  http://www.thaicreate.com/mobile/android-effect-intent-activity.html
                  http://www.thaicreate.com/mobile/android-background-color-background-image.html
                  http://akexorcist.blogspot.com/
                  http://developer.android.com/guide/topics/connectivity/bluetooth.html
               

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

Simple markers Google Map API with C# .Net

DropDown List Background Color C# ASP.NET

Screen Sharing/Remote Control using MirrorOp:Android-PC