ปรับปรุงล่าสุด: 25/3/64
ปฏิเสธความรับผิดชอบ:
- ผู้เขียนไม่ได้มีเจตนาในการ/ส่งเสริมให้ผู้อื่น ทำผิดกฏหมายหรือละเมิดลิขสิทธิ์แต่อย่างใด
- ผู้เขียนไม่ได้มีเจตนายับยั้งการส่งเสริมทางธุรกิจที่ถูกต้องตามกฏหมาย
- ผู้เขียนไม่ได้มีเจตนาโน้มน้าวให้ลดการอุดหนุน/สนับสนุน ศิลปิน/ผู้สร้างสรรค์
- ผู้เขียนขอไม่รับผิดชอบหากเกิดความผิดพลาดใด ๆ ในทุกระดับความร้ายแรง ซึ่งมีสาเหตุมาจากสาเหตุมาจาก Macro ของผู้เขียน, ความผิดพลาดของแอปฯ/อุปกรณ์, หรือมาจากการใช้งานที่ผิดวิธี/นอกจุดประสงค์ของผู้ใช้
เกริ่นนำ
สวัสดีครับ วันนี้ผมจะมาเสนอวิธีที่จะทำให้สามารถเล่นเสียงเรียกเข้ากำหนดเองขณะมีสายเรียกเข้า LINE ได้ (ผมไม่ได้ใช้ iOS ครับ เลยนำเสนอแค่ของ Android ไปก่อน)
แต่ขอเกริ่นก่อนนะครับ ว่าคนไทยส่วนใหญ่จะใช้แอป Messenger (Facebook) กับ LINE เป็นส่วนใหญ่ครับ และสิ่งหนึ่งที่แต่ละคนอาจไม่ได้คิดหรือเคยคิดอยู่ก็คือ "ไม่ค่อยมีอิสระในการตั้ง Ringtone" ผมหมายถึงว่า Ringtone ใน LINE ตั้งได้แค่ 2 อย่างครับ: เสียงฟรีซึ่งเป็นของไลน์ กับ เสียงเสียตังซึ่งเป็นของศิลปินที่เป็นที่รู้จัก (อยู่ใน LINE Melody Shop)
แล้วคร่าวนี้ ถ้าผมจะเอาเพลงที่ไม่มีใน LINE Melody Shop ล่ะ เช่นเพลงอนุสรณ์รุ่นโรงเรียนแห่งหนึ่งล่ะ (โรงเรียนบดินทรฯ ๒) อย่างเพลง "สถานีปลายทาง" ของรุ่นผมเอง (ANUSORN26)
คือต้องบอกก่อนนะครับว่าบริษัทเจ้าของแอป LINE คงมีแนวคิดการหาเงินจากการผูกขาดนี้แหละครับ คล้าย ๆ กับ Sticker ทว่าถ้าเป็น Sticker ที่เสียเงิน บางคนก็จะใช้วิธีการจับภาพหน้าจอเอา หรือไม่ก็หาภาพอื่น ๆ มาแชทกันแทนได้ (ภาพมีอีกเยอะ แต่อุดหนุนร้าน Sticker หน่อยก็ดีนะ)
แต่ถ้าเป็นเสียงเรียกเข้าล่ะครับ ถ้าสมมุติว่าผมไม่มีเงินจะซึ้อ เพราะต้องเก็บเงินไปทำห้องอัดเพลง ก็ขอให้ผมเอาเพลงซึ่งอย่างน้อยเป็นเพลงที่แต่งเองอัดเองก็ยังดีครับ
ผมเลยเริ่มคิดอะไรออก เพราะว่าตอนนั้น ตอนประมาณใกล้ ๆ ก่อนปัจฉิมนิเทศ ม.6 ผมรอคอยเพลงรุ่นมานานมาก และพอได้ฟังก็อยากตั้งเป็น Ringtone เลย (ตอนที่มีใครโทรมาก็จะได้นึกถึงเพื่อนและความทรงจำในช่วงนั้น) เลยเริ่มลงมือทำ Ringtone แล้วนำไปตั้งค่าตั้งแต่ตัวเสียง Ringtone ทั่วไปในเมนูการตั้งค่า, Messenger, แล้วก็... ใช่ครับ LINE นี้แหละครับ (แม้จะไม่ค่อยมีใครโทรในนี้ก็ตามเถอะครับ55) แต่ทว่ามันตั้งเสียงของเราเองไม่ได้นิหนา
แต่ก็นึกออกว่าผมได้ติดตั้งแอปตัวหนึ่งไว้อยู่ ใช่ครับ ต้องขอบใจ Macrodroid ซึ่งเป็นแอปประเภท Device Automation (การทำงานอัตโนมัติของอุปกรณ์) ครับ ซึ่งแอปประเภทนี้สามารถทำงานแทนเราได้ในบางอย่างตามเงือนไขและกระบวนการที่เราสั่งได้ครับ (เช่น ทุก ๆ 1 ชั่วโมง ให้ดึงข้อมูลแบบ HTTP GET แล้วส่งเสียงอ่านข้อความจากข้อมูลดังกล่าวออกมา เช่น ข้อมูลสภาพอากาศ)
ทำให้จากเดิมที่คิดว่าต้องเขียนแอปเอง หรือทำการ Root เครื่อง เพื่อบรรลุสิ่งที่ผมจะทำดังกล่าว ก็กลายเป็นว่าแค่ใช้แอปนี้โดยไม่ต้อง Root เครื่องก็สามารถทำได้แล้วครับ ซึ่งผมไม่แน่ใจว่าแอป Device Automation ใน iOS จะทำแบบนี้ได้ไหมและได้ในระดับใด
ก่อนอื่นมาพูดถึงความสามารถของ Device Automation ที่ผมจะใช้กันก่อนครับ:
- การเข้าถึงการแจ้งเตือน (ต้องสามารถสั่ง Macro ตามการแจ้งเตือนใหม่ที่เกิดขึ้นได้ ซึ่งเรียกว่า "สามารถตั้งเป็น Trigger")
- ตั้งตัวแปร
- วนลูปและตรวจสอบเงื่อนไขแบบ if-else ระหว่างการทำงานของ Macro ได้
- ตั้งช่องเสียง (audio stream) สำหรับเล่นเสียงเรียกเข้า (หากไม่มีก็ไม่สามารถปิดเสียงเรียกเข้าใน LINE ได้ ซึ่งอาจจะไม่จำเป็นแต่แนะนำให้มี; หรือในบางระบบหากไม่มีอาจทำให้ไม่สามารถเล่นทับเสียงเรียกเข้าใน LINE ได้ เพราะไม่ได้อยู่ในช่องเสียงที่ถูกต้อง)
- เล่นเสียงผ่าน API ระบบปฏิบัติการ (หรือ API ของแอปอื่นที่ใช้แทนได้) (โดยที่ต้องไม่ถูกปิดเสียงเมื่อมีช่องเสียง Ringtone ดังขึ้น ทั้งนี้เมื่อเล่นเสียงผ่านช่องเสียงที่เหมาะสม เช่น Ringtone/Alarm stream)
- ปรับระดับเสียงได้ (ในกรณีต้องการปิดเสียงเรียกเข้าใน LINE)
ดังนั้น หากแอป Device Automation ใดมีความสามารถดังกล่าวและสามารถนำความสามารถนั้นไปใช้กับ Smartphone ของท่านได้ ก็คือว่าแอปนั้นสามารถเขียนโค้ดเพื่อบรรลุสิ่งที่ผมจะทำได้เลย แค่อาจจะไม่มีโค้ดสำหรับแอปนั้น ๆ (ผมคิดว่าแอป Device Automation ของฝั่ง iOS น่าจะทำได้นะครับ อาจจะไม่ต้อง Jailbreak อันนี้ไม่แน่ใจครับ)
เอาล่ะหากใครมี Android Smartphone ก็ลุยเลยครับ
วิธีทำ
หมายเหตุ: วิธีข้างล่างอิงจาก Macrodroid version 5.10.2 และผ่านการทดสอบบน Smartphone Android version 8.1.0 และ LINE version 14.4.1
- ติดตั้งแอป Macrodroid (แอปอื่นก็ได้แหละครับ แต่มันจะใช้โค้ดที่ผมทำไม่ได้ ต้องเขียนเองใหม่ ซึ่งผมไม่ครอบคลุมครับ)
- เปิด Notification Access ให้กับแอป Macrodroid
- Download Macro version ล่าสุด ของผม ชื่อประมาณ "ReplaceLineRingtone_v.X_(Thai).macro" (หรืออีกขื่อแต่ไม่มีคำว่า "(Thai)" หากตั้งภาษาแอป LINE เป็นภาษาอังกฤษ, แต่ทั้งนี้สามารถติดตั้งทั้งสองตัวลงไปได้) ลงใน Smartphone (หรือจะ Download ที่ Macrodroid Store ได้ครับ)
- เปิด Macrodroid: หน้า Home > Export/Import
- ในส่วนของ Import: เลือก Storage แล้วไปเลือกไฟล์ที่ Download มา
- เข้าไปในหน้า Macros > Macro ที่ติดตั้งใหม่
- อ่านคำอธิบาย Macro และตั้งค่า Ringtone และระยะเวลา Ringtone
เรียบร้อยแล้วครับ อาจจะลองให้ใครโทรมาเพื่อทดสอบได้ โดยผมแนะนำให้ทดสอบหลายแบบต่อไปนี้ (ทั้งโทรปกติ, โทรแบบ Video) โดยต้องตั้งโหมดเสียงก่อน- ปล่อยให้ปลายสายโทรมา แล้ววางสายไปเอง
- ให้ปลายสายโทรมา แล้ววางสาย
- ให้ปลายสายโทรมา แล้วรับสาย
โดยในทุกกรณี เสียงเรียกเข้าที่เราตั้งเองจะต้องดังขี้นประมาณไม่เกิน 1 วินาทีหลังจากที่เสียง LINE ดัง (ต้องฟังดี ๆ เพราะเสียงเรียกเข้าของเราอาจกลบเสียงเรียกเข้าใน LINE; หากไม่ได้ตั้งปิดเสียงเรียกเข้าใน LINE) หรือหลังจากที่หน้าจอสว่างขึ้น และเสียงเรียกเข้าจะต้องดับลงเมื่อมีการกดปุ่มวางหรือรับสายหรือสายดับไปเอง โดยเมื่อกดรับสายจะต้องได้ยินเสียงปลายสายด้วยการแก้ไขปัญหา
หากมีปัญหา (เช่น ไม่มีเสียงที่กำหนดไว้, เสียงเล่นช้ากว่าเสียงใน LINE มากกว่า 1 วินาที) แล้วมั่นใจว่าทำตามวิธีถูกต้องทุกประการ ลองทำตามข้างล่างนะครับ (เรียงตามความน่าจะเป็น มากไปน้อย):
หมายเหตุ: หากใช้ Android version <8.1.0 (ซึ่งเป็นรุ่นที่ผมเคยใช้ทดสอบผ่าน หมายความว่ารุ่นที่เท่ากับหรือมากกว่ารุ่นนี้ควรจะสามารถใช้งานได้) และเป็น version ที่เลขรุ่นต่ำมาก ๆ อาจไม่สามารถใช้งานได้
ไม่มีเสียงที่เรากำหนดไว้
- ลองอัปเดต version Macro ตามลิงก์ข้างบน และลองอัปเดต LINE และ Macrodroid เป็นรุ่นล่าสุดอีกครั้ง
- ใช้พื้นที่ภายใน Smartphone (หากมี) แทน SD card ในการเก็บตัวแอป Macrodroid แล้วเปิด Notification Access ให้กับแอป Macrodroid อีกครั้ง
- ลองสำรวจการตั้งค่าเกี่ยวกับการประหยัดพลังงานแบตเตอรี่ ว่ามีเมนูไหนที่เกี่ยวข้องกับการพักแอปไม่ให้ทำงานในพื้นหลัง (Background Process) หรือมีเมนูไหนที่เกี่ยวข้องกับการสั่งปิดแอป (เช่น App Killer, Task Manager) แล้วอนุญาตแอป Macrodroid
- (Android 5 ขึ้นไป) ยกเว้นแอป Macrodroid ในรายการของ Battery Optimization (รู้จักกันในอีกชื่อคือ Android Doze) ซึ่งสามารถทำได้ในหน้าแอป Settings > Ignore Battery Optimization
- หากได้ปรับใช้การตั้งค่า Macro ที่ตั้งไว้เพื่อปิดเสียงเรียกเข้าใน LINE ให้ย้อนการตั้งค่าดังกล่าว (หรือสามารถทำได้โดยการลบ Macro เดิมทิ้งแล้วติดตั้งใหม่ ซึ่งจะได้การตั้งค่าเริ่มต้น)
- ตรวจสอบว่าได้ปิดการแจ้งเตือนเกี่ยวกับการโทรของแอป LINE หรือไม่
เสียงเล่นช้ากว่าเสียงใน LINE มากกว่า 1 วินาที- (Android 5 ขึ้นไป) ยกเว้นแอป Macrodroid ในรายการของ Battery Optimization (รู้จักกันในอีกชื่อคือ Android Doze) ซึ่งสามารถทำได้ในหน้าแอป Settings > Ignore Battery Optimization
- ลองสำรวจการตั้งค่าเกี่ยวกับ Background Process (ไม่ได้หมายถึงตัว App Killer นะครับ หมายถึง System Component ที่มีหน้าที่ในการพักการทำงานของแอปชั่วคราวแต่ไม่ได้สั่งปิด เช่น Android Doze) แล้วอนุญาตแอป Macrodroid
หากยังมีปัญหาอยู่ อาจเป็นเพราะมีการเปลี่ยนแปลงของแอป LINE หรืออื่น ๆ ซึ่งสามารถแจ้งได้ที่ FB page "NP-chaonay Production" หรือ nuttapongpunpipat@gmail.com ครับ