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
ความคิดเห็น
แสดงความคิดเห็น