"Fly high but don't fly alone"
ทำความรู้จัก Android Wear ฉบับนักพัฒนา ในวันที่มันเริ่มมีหัวใจ
3 Jul 2014 15:13   [7779 views]

พยายามจะเขียนสิ่งที่เล่นทั้งหมดในช่วง 1 สัปดาห์ที่ผ่านมาลง Blog ให้หมด อาจจะไม่ละเอียดมาก แต่ก็พอให้เห็นภาพรวมแหละนะ

Blog นี้ขอเขียนเรื่อง Android Wear ที่ก่อนหน้านี้เคยเอามาเขียนสมัยยังเป็น Developer Preview ยังทำอะไรมากไม่ค่อยได้ ใน Blog "ทำความรู้จัก Android Wear หน้าต่างที่ไร้หัวใจ"

นาทีนั้น SDK ยังไม่เรียบร้อยดี ตัว Android Wear ก็เลยทำได้แค่ Sync Notification จากมือถือมาแสดงผลบน Wear แต่ล่าสุด หลังจากงาน Google I/O 2014 ที่ผ่านมา ทางกูเกิ้ลก็ปล่อย SDK ตัวเต็มออกมาแล้ว เลขเวอร์ชั่น Android 4.4W พร้อมอัพ API Level เป็น 20 เท่ากับ Android L มาพร้อมฟีเจอร์ที่ดูดีขึ้นและดูมีประโยชน์ต่อการใช้จริงมากขึ้น

มาดูกันว่าตัวใหม่เป็นยังไงบ้างครับ

เมื่อ Android Wear มีหัวใจเป็นของตัวเอง

Android Wear มีวิธีการเขียนโปรแกรมลงไปสองวิธีด้วยกัน วิธีแรกที่เนยได้เขียนไว้แล้วใน Blog ที่แล้วก็คือการโยนสิ่งที่ต้องการแสดงผลผ่านทาง Notifications

ความสวยงามของวิธีนี้ก็คือ เราไม่ต้องเขียนโปรแกรมใหม่ขึ้นมา แค่แก้โปรแกรมตัวเดิมที่รันอยู่บนมือถือให้ Notifications มีข้อมูลมากขึ้น ด้วย Notification Builder แล้ว Wear จะดึง Notifications เหล่านี้ ไปแสดงผลบนหน้าปัดนาฬิกาโดยอัตโนมัติ ไม่ใช่แค่แสดงผล แต่ยัง Interact ได้ด้วย โดยการสร้าง Action Buttons (แนบข้อมูลเหล่านี้ไปกับ Notifications อีกเช่นกัน) โดยเมื่อผู้ใช้จิ้มคำสั่งใดก็ตามบนนาฬิกา ข้อมูลจะถูกส่งกลับมายังมือถือให้ Handle คำสั่ง

วิธีนี้จึงเป็นวิธีที่กูเกิ้ลเชียร์ให้ทำที่สุด เพราะมันตอบโจทย์สิ่งที่ Android Wear ถูกดีไซน์ขึ้นมา อีกทั้งยังประหยัดแบตอีกด้วย (เพราะทุกอย่างเป็นเพียง Basic Action) แต่วิธีดังกล่าวก็ค่อนข้างจำกัดทางด้านฟังก์ชั่น คือ เราไม่สามารถปรับเปลี่ยนหน้าตาได้ เค้าออกแบบโครงมายังไงก็ต้องเป็นอย่างนั้น ทำได้แค่เปลี่ยนข้อความ เปลี่ยนไอคอน เปลี่ยน Background และข้อเสียสุดๆก็คงจะเป็นการที่ต้อง Pair มือถือกับ Wear ค้างไว้ตลอดเวลา ถ้าตัดการเชื่อมต่อ Notification ทั้งหมดก็จะมลายหายไปจากข้อมือเราทันที กลายเป็นนาฬิกาง่อยๆที่ทำอะไรไม่ได้ไปในที่สุด

กูเกิ้ลจึงจัดให้เพิ่มอีกวิธี ในเวอร์ชั่นเต็มของ Android Wear พบว่า เราสามารถเขียนโปรแกรมแบบ Native ยัดลงไปใน Wear ได้แล้ว โดยแอพฯจะปรากฎขึ้นมาในส่วนของเมนูที่ชื่อว่า Start...

ด้วยวิธีนี้ เราสามารถเขียนแอพฯขึ้นมาได้อย่างอิสระ ทำงานแบบ Standalone ไม่ต้อง Pair กับมือถือก็ยังใช้งานได้ ทำ UI ได้ตามที่ออกแบบและยังเข้าถึง Standard APIs ต่างๆได้เกือบครบ เป็นโปรแกรมที่สมบูรณ์แบบเหมือนโปรแกรมบนโทรศัพท์ทุกประการ จะมีที่ทำไม่ได้บ้างก็พวกที่ไม่ควรจะทำงานได้บนนาฬิกาอย่าง Webkit เป็นต้น แต่ก็เพิ่มบางอย่างขึ้นมาเหมือนกันเพื่อให้เหมาะกับการทำงานบนจอเล็กๆอย่างนาฬิกา เช่น WearableListView เป็นต้น (อ่านข้อมูลเกี่ยวกับ View เพิ่มเติมสำหรับ Wearable ได้ที่ Wearable Custom Layouts)

แต่แน่นอนว่าข้อดีมี ข้อเสียก็ต้องมี ถ้าเราต้องการสื่อสารแอพฯบน Wear กับแอพฯบนมือถือ เราต้องเขียน Handle การสื่อสารเอง (แต่ก็ไม่ได้ยากมาก)

การที่กูเกิ้ลเปิดให้เขียน Wearable App ลงไปใน Android Wear ได้ ทำให้เปิดประสบการณ์และตลาดใหม่ๆให้กับ Wear ได้มากทีเดียว ที่น่ากังวลก็คงจะเป็นเรื่องแบตเตอรี่มากกว่า เพราะหากเขียนไม่ดี แบตก็อาจจะหมดใน 1 ชั่วโมง

การเขียนโปรแกรมเบื้องต้น

ลองเขียน Hello World เล่นๆดูตัวนึง

เนื่องจาก Android Wear ก็เป็น Android ตัวนึง ซึ่ง Core ด้านในเหมือนกับ Android Phone ทุกประการ เพียงแต่ถูกตัดโน่นนี่ทิ้งเพื่อให้เหมาะกับการเป็น Wearable ดังนั้นการเขียนโปรแกรมก็เลยใช้วิธีเดียวกับ Android Phone เป๊ะๆ ใช้ Activity และ XML Layout ในการเขียนขึ้นมา

แต่ Android Wear มีหน้าปัดอยู่สองแบบด้วยกันคือ Round และ Square ก็ถือว่ากูเกิ้ลทำการบ้านมาดีเพราะออกแบบให้ทำ Layout ออกมาสองแบบแล้วรวบเป็น Stub ให้ตัวนาฬิกาเป็นคนเลือกเองว่าจะเอา Layout ไหนไปแสดงผล โค้ดหน้าตาจะประมาณนี้

ผลการทำงานก็เป็นแบบด้านบน ซึ่งถ้าเปลี่ยนหน้าปัดเป็นสี่เหลี่ยม หน้าตาก็จะเปลี่ยนไปเป็นแบบสี่เหลี่ยม

ดังนั้น ... ใครคุ้นเคยการเขียนโปรแกรมบน Android แบบ Native อยู่แล้ว ยินดีด้วย ... เพราะคุณเขียนแอพฯบน Android Wear เป็นแล้ว !

สำหรับการ Debug บนเครื่องจริงที่ปกติเราจะทำผ่าน USB แต่ด้วยการที่ Wear ไม่มีช่อง USB ให้เสียบ ดังนั้นจึงถูกเปลี่ยนไป Debug ผ่าน Bluetooth แทนครับ

การคุยกันระหว่าง Wearable App และ Handheld App

ถึงแม้ตัวนาฬิกาจะมี Processor เป็นของตัวเอง สามารถคำนวณโน่นนี่ได้ตามต้องการ แต่ Best Practices ที่กูเกิ้ลแนะนำมา เค้าเชียร์ให้ประมวลผลที่มือถือแล้วส่งข้อมูลไปแสดงผลบนนาฬิกาก็พอ มิฉะนั้นอาจจะมีปัญหากับแบตเตอรี่ได้

API ของ Android Wear ได้ทำช่องทางไว้สำหรับรับส่งข้อมูลไว้หลายวิธีเหมือนกัน ดังนี้

1) Syncing Data Items - เป็นการ Sync ข้อมูลระหว่างมือถือและ Wear โดยอัตโนมัติ ด้วยการส่งผ่านข้อมูลทาง Bundle เมื่อมีการเปลี่ยนแปลงของข้อมูล ไม่ว่าจะจากฝั่งมือถือหรือฝั่ง Wear ก็จะมี Notification ส่งไปบอกเพื่อ Sync ข้อมูลระหว่างกัน

2) Messages - เป็นการส่งข้อมูลแบบ One Time แล้วให้อีกฝั่ง Handle Message เอาเอง

3) Asset Transfering - เป็นการส่ง Large Blob ไปยัง Wear ผ่าน Bluetooth เช่นภาพใหญ่ๆ ในกรณีที่ต้องโอนข้อมูลไปแสดงผลบน Wear

ซึ่งก็ถือว่าครอบคลุมแล้วนะ ไม่รู้สึกว่าขาดอะไรเรื่องนี้

แต่แน่นอน ถ้าเลือกใช้วิธีส่งให้มือถือประมวลผล แล้วใช้ Wear แสดงผล ก็จะทำให้มันไม่สามารถเป็น Standalone App ได้ ดังนั้นต้องออกแบบด้าน Usability ดีๆด้วย

วิธีการ Install แอพฯลง Wear

ถึงเราจะเขียนโปรแกรมออกมาเป็น Standalone ได้ไฟล์ออกมาเป็น apk แต่ในแง่ Production ผู้ใช้จะไม่สามารถลงแอพฯเหล่านั้นตรงๆไปยังนาฬิกาได้ แล้วจะลงยังไงหละทีนี้?

คำตอบก็คือ แอพฯสำหรับ Wear ต้องถูกแพครวมไปกับแอพฯสำหรับมือถือ ผู้ใช้ก็เพียงลงแอพฯบนมือถือให้เรียบร้อย แล้วเมื่อเชื่อมต่อมือถือเข้ากับนาฬิกา แอพฯของนาฬิกาก็จะถูกติดตั้งบน Wear โดยอัตโนมัติ

ดังนั้นในแง่ของการใช้ Submit แอพฯสำหรับ Wear ขึ้นไปบน Play Store เราต้องมองว่าเราจะต้อง Submit แอพฯมือถือขึ้นไป และมี Wearable App เป็นตัวเสริมนั่นเอง และถ้าผู้ใช้ไม่มีมือถือแอนดรอยด์ใช้ ก็จะไม่สามารถติดตั้งแอพฯสำหรับ Wear ลงไปได้ (อย่างน้อยก็ตอนนี้)

วิธีการ Pack ดูได้จาก Packaging Wearable App ครับ

เริ่มมีแอพฯสำหรับ Android Wear ขึ้นบน Play Store แล้ว

ถือว่าไวมาก Developer ทั้งหลายเริ่มเพิ่ม Support สำหรับ Android Wear ไปบ้างแล้ว (แบบตั้งใจเขียนเพื่อ Support Android Wear ไม่ใช่แค่เอา Notification ไปแสดงบนนาฬิกา)

สามารถเข้าไปดูลิสต์แอพฯได้จาก Apps for Android Wear

แต่ถามว่าถึงเวลาหรือยังที่เราจะทำให้มัน Support บน Wear ... ? ก็พูดยากเนอะ ส่วนผมคงเขียนเล่นๆ คงใช้เวลาไม่มาก แต่เพิ่มความเท่ให้กับแอพฯได้มากทีเดียว ^_^

บทความที่เกี่ยวข้อง

Jul 7, 2014, 21:21
10239 views
ถึงเวลาปรับ Baseline ของการพัฒนาแอพฯบนแอนดรอยด์
Jul 21, 2014, 20:41
15754 views
ตั้ง VPN Server เองที่เมกา Transfer 1TB ในราคาเพียง $5 ต่อเดือน
0 Comment(s)
Loading