บทที่ 8 – สร้างแอพบันทึกเสียง และเล่นไฟล์เสียง

คุณสมบัติของแอพ

ในบทนี้ สอนสร้างแอพสำหรับบันทึกเสียง และเล่นไฟล์เสียง ในการใช้งานแอพนี้ จะมีปุ่ม Record, Stop และ Play สำหรับควบคุมการทำงานของแอพ พร้อมกับใช้ label แสดงสถานะการทำงานว่ากำลังทำอะไร เช่น กำลังบันทึกเสียง กำลังเล่น เป็นต้น
และเมื่อบันทึกเสียงแล้ว ก็จะแสดงชื่อไฟล์เสียง และตำแหน่งที่เก็บไฟล์บน label ด้วย ผู้ใช้สามารถเล่นไฟล์เสียงที่บันทึกได้ และเมื่อเล่นจบ แอพก็จะสั่งให้ สั่นอุปกรณ์โมบาย ประมาณ 0.5 วินาที เพื่อเป็นการบอกให้ผู้ใช้ทราบ
นอกจากนี้ ผู้ใช้ยังสามารถเลื่อน slider เพื่อปรับความดังของเสียง และคลิ้กปุ่ม Mute เพื่อปิดเสียงได้ทันที

คอมโพเนนต์ที่กล่าวถึง

  • Sound Recorder ใช้สำหรับบันทึกเสียง ไฟล์เสียงที่บันทึกได้จะเป็นไฟล์ 3gp
  • Player ใช้สำหรับเล่นไฟล์เสียง ที่มีความยาว และใช้สั่นอุปกรณ์ (vibrate)
  • Sound ใช้สำหรับเล่นไฟล์เสียงสั้นๆ และใช้สั่นอุปกรณ์ (vibrate)
  • Slider เป็น User Interface มีลักษณะเป็นปุ่มเลื่อนซ้ายขวาบนราง เราใช้คอมโพเนนต์นี้เพื่อให้ผู้ใช้ปรับความดังของเสียง

เนื่องจาก Slider เป็น User Interface ที่ยังไม่ได้กล่าวถึงในบทที่ 4 ดังนั้น ในบทนี้ จึงกล่าวถึงในรายละเอียด ซึ่งมี properties สำคัญ คือ
  • ColorLeft กำหนดสีให้กับแถบด้านซ้ายของ Slider
  • ColorRight กำหนดสีให้กับแถบด้านขวาของ Slider
  • ThumbPosition กำหนดค่า เพื่อระบุตำแหน่งของปุ่มเลื่อน
  • ThumbEnabled กำหนดว่าจะให้แสดงปุ่มเลื่อนหรือไม่
    • หากกำหนดให้เป็น true ผู้ใช้ก็จะสามารถเลื่อนปุ่มบน Slider ได้
    • หากกำหนดให้เป็น false ก็จะไม่แสดงปุ่มเลื่อน เราสามารถประยุกต์ใช้เป็นกราฟแท่งได้
  • Min Value ค่าต่ำสุดที่ Slider สามารถปรับได้
  • Max Value ค่าสูงสุดที่ Slider สามารถปรับได้
สำหรับคอมโพเนนต์ Player มี properties สำคัญ คือ
  • Source ใช้ระบุชื่อไฟล์เสียงที่จะเล่น โดยต้องระบุให้ครบทั้งโฟลเดอร์ และชื่อไฟล์
  • Volume สำหรับกำหนดความดังของเสียง มีค่าได้ตั้งแต่ 0-100 โดย 100 คือ ดังสุด ส่วน 0 คือ ปิดเสียง หรือ mute
สำหรับคอมโพเนนต์ Sound มี properties สำคัญ ที่ต่างจาก Player คือ
  • MinimumInterval สำหรับกำหนดว่า การเล่นไฟล์เสียงแต่ละครั้ง จะต้องทิ้งช่วงห่างกันอย่างน้อยเท่าไหร่ โดยกำหนดค่าเวลา เป็นหน่วย millisecond
ส่วนคอมโพเนนต์ SoundRecorder มี properties SaveRecording สำหรับกำหนดว่าจะ Save ไฟล์ไว้ที่ไหน ชื่อไฟล์อะไร แต่ในแอพนี้ เราไม่ได้ใช้

บล็อกที่สำคัญ

  • SoundRecorder Start ใช้สั่งให้เริ่มบันทึกเสียง
  • SoundRecorder Stop ใช้สั่งให้หยุดบันทึกเสียง
  • AfterSoundRecorded เป็นอีเวนต์ที่เกิดขึ้นเมื่อบันทึกเสียงเสร็จแล้ว โดยในอีเวนต์นี้จะมีตัวแปร sound เก็บชื่อไฟล์เสียงที่บันทึกได้ พร้อมกับตำแหน่งที่เก็บไฟล์
  • Player Start ใช้สั่งให้เริ่มเล่นไฟล์เสียงที่กำหนด
  • Player Stop ใช้สั่งให้หยุดเล่นไฟล์เสียง
  • PlayerCompleted เป็นอีเวนต์ที่เกิดขึ้นเมื่อเล่นไฟล์เสียงจบแล้ว
  • set Player Volume ใช้กำหนดค่าความดังของเสียงขณะเล่นด้วยคอมโพเนนต์ Player
  • Sound Vibrate ใช้สั่งให้อุปกรณ์สั่นนานตามช่วงเวลาที่กำหนด (หน่วยเป็น millisecond)
  • PositionChanged เป็นอีเวนต์ที่เกิดขึ้นเมื่อผู้ใช้เลื่อนปุ่มบน slider ซึ่งจะทำให้ได้ค่า thumbPosition ค่าใหม่ สำหรับนำไปกำหนดค่า Volume
  • Enabled ของปุ่มต่างๆ ใช้กำหนดให้ปุ่มเหล่านั้น ใช้งานได้หรือไม่ เนื่องจากในแอพนี้ การทำงานบางขณะจะต้องทำให้บางปุ่มใช้ไม่ได้ เช่น ในช่วงที่บันทึกเสียง จะคลิ้กปุ่ม Play ไม่ได้ ต้องคลิ้กปุ่ม Stop ก่อน เป็นต้น
    • หากกำหนดให้ Enabled เป็น true ผู้ใช้ก็จะคลิ้กปุ่มได้
    • หากกำหนดให้ Enabled เป็น false การคลิ้กปุ่ม ก็จะไม่มีผลอะไร

ความรู้อื่นๆ

  • ความแตกต่างของคอมโพเนนต์ Player และ Sound
  • ข้อมูลเกี่ยวกับ Google Material Design ซึ่งให้คำแนะนำในการออกแบบแอพพลิเคชั่น
  • เว็บไซต์สำหรับดาวน์โหลดไอคอนมาตรฐานของ Google
  • เทคนิคในการเขียน code ให้รัดกุม เพื่อควบคุมการทำงานของแอพให้ถูกต้อง

Comments

Popular posts from this blog

บทที่ 4 - เรียนรู้เกี่ยวกับ User Interface

บทที่ 17 – สร้างแอพ Pomodoro

บทที่ 13 – รู้จักกับ Orientation sensor