Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

[Android] ว่าง ๆ ไปแอบส่อง BMA Traffic app กันหน่อย

$
0
0

เมื่อสัปดาห์ที่ผ่านมาเห็นมีคนพูดถึง BMA Traffic app กันพอสมควร ดังนั้นในฐานนะนักพัฒนา Mobile app คนหนึ่ง เลยลองเข้าไปดูหน่อยสิว่า app พัฒนาอย่างไร ? มีการใช้ library อะไรที่น่าสนใจบ้าง ? ตลอดจนโครงสร้างและการทำงาน แต่จะไม่พูดถึง UX/UI นะครับ
น่าจะทำให้เราเข้าใจการพัฒนามากยิ่งขึ้น มาเริ่มกันเลย
ปล. เพื่อการศึกษาและเรียนรู้การพัฒนาระบบนะครับ

เริ่มด้วย library ที่ใช้งาน

ก็จะเป็น library พื้นฐานทั่วไป ยกตัวอย่างเช่น
  • Picasso สำหรับจัดการข้อมูลรูปภาพ แถมยังใช้ Glide อีกด้วย
  • Firebase สำหรับ Analytic, Authentication และ Cloud messaging  และยังใช้ GCM อยู่นะ (Google Cloud Messaging) ในส่วน analytic มีการใช้งาน e-commerce tracker ด้วยนะ
  • OrmLite สำหรับจัดการข้อมูลกับ SQLite
  • Android GPUImage สำหรับทำ image fileter บน OpenGL
  • OKHttp3 สำหรับติดต่อข้อมูลผ่านระบบ Network
  • GoogleMap สำหรับเรื่องการแสดงแผนที่และตำแหน่ง
  • การจัดการข้อมูล JSON ยังคงใช้ org.json ที่มากับ Android
  • ksoap2 for android สำหรับติดต่อ WebService ด้วย SOAP

ต่อมาเรื่องการขอ Permission ก็เพียบนะ

มีเรื่อง badge ที่ขอตามยี่ห้อของ device เลยเยอะดี น่าสนใจดีนะ อันนี้ผมไม่เคยทำ แน่นอนว่า code ก็ต้องแยกตาม device เช่น
  • Samsung
  • LG
  • Sony
  • Asus
  • HTC
  • Nova
  • Xiaomi
  • OPPO
  • Apex
การเก็บข้อมูลใน SQLite จะเก็บข้อมูล user ไว้ ซึ่งการใช้งาน OrmLite นั้น ช่วยลดจำนวน code ไปได้เยอะเลย

โครงสร้างของ app มี package ดังนี้

  • model สำหรับ POJO class ต่าง ๆ
  • dao (Data Access Object) สำหรับจัดการข้อมูลใน SQLite
  • connector สำหรับจัดการข้อมูลผ่านระบบ network ด้วย SOAP Connector ไปยัง WebService
  • task สำหรับการเรียกข้อมูลผ่าน connector ซึ่งยังคงใช้งาน AsynTask อยู่ทั้งหมด
  • flow สำหรับจัดเก็บพวก Activity และ Fragment ต่าง ๆ ของ app ไว้ โดยในแต่ละ activity มีขนาดใหญ่น่าดู เนื่องจากยังเขียนในรูปแบบปกติ คือ รับ action ต่าง ๆ ผ่าน activity และเรียก class ต่าง ๆ เพื่อให้ได้ข้อมูลที่ต้องการ และแสดงผลกลับไป
โดยการสร้าง instance ต่าง ๆ ของ class ต่าง ๆ ใน app เช่น การดึงข้อมูลต่าง ๆ เช่น การจัดการข้อมูลใน SQLite จะทำบน Application class ทั้งหมด

อีกอย่างที่น่าสนใจคือ ระบบนี้จะเรียกใช้งาน WebService ด้วย SOAP ทั้งหมด

ใน code ก็ระบุ ip ของ WSDL ตรง ๆ เลย !! ส่วนจะมีระบบ secure หรือไม่ อันนี้ไม่แน่ใจ แต่ถ้าเป็นข้อมูลแบบ public ก็ไม่น่ามีปัญหาอะไร ซึ่ง code ทั้งหมดอยู่ในไฟล์เดียว ใน package connector นั่นเอง ที่น่าสนใจคือ มีบาง service ที่ส่งค่าเป็นข้อมูล String ในรูปแบบ JSON กลับมา จากนั้นต้องทำการแปลงกลับมาเป็น JSONObject/Array เพื่อนำมาใช้งานต่อไป ส่วนการจัดการ error ต่าง ๆ พบว่า ยังมีการใช้ e.printStackTrace() อยู่ ยังไม่ยอมยิงไปเก็บที่ Crash Analytic Tool !!

ปิดท้ายด้วยตำแหน่งหรือ localtion ที่กำหนดไว้ใน code (ค่า default)

โดยรวมเป็น app ที่ไม่ได้มีความซับซ้อนอะไรมากนัก

จำนวน code ยังไม่เยอะ แต่ว่าแต่ละไฟล์แอบใหญ่พอสมควร จะมีเรื่องเยอะหน่อย ๆ ก็เช่นการประมวลผลกับรูปภาพ รวมทั้งการจัดการเรื่อง Home Badger ของแต่ละ device และการดึงข้อมูลจากระบบ WebService ที่อาจจะเทอะถะหน่อย รวมทั้งเรื่องของความปลอดภัยของข้อมูลที่ต้องดูกันต่อไป แต่ถ้าระบบทำงานได้เร็ว และ รองรับปริมาณการใช้งานได้ก็น่าจะ ok นะครับ ขอให้สนุกกับการ coding ครับ ส่วนใครอยากดูว่า version แรกเป็นอย่างไรที่นี่เลยครับ

Viewing all articles
Browse latest Browse all 1997

Trending Articles