Android Eng-Thai Dictionary

นั่งว่างๆเป็นหวัดเลยไปไหนไม่ได้ก็เลยเขียน Android Application โดยเขียน เจ้า Eng-Thai dict โดยใช้ Database ของ Lexitron

ขอแชร์ประสบการณ์นิดหน่อยกับ NECTEC ผมเมลไปบอกว่าจะขอทำ opensource โดยใช้ฐานข้อมูลของ Lexitron โดยจะทำบน android platform ก็ไม่ได้เมลอะไรตอบกลับมาเลย แอบไปเจอท่านหนึ่งก็บนเหมือนกันว่า ไม่มีการตอบกลับ

แต่ประสบการณ์ของท่านคนนั้นหนักกว่าผม เพราะทำเขาเป็น widget บน windows vista โดยการรับข้อมูลมาจาก xml format ที่ Lexitron เคย open ไว้ แต่ พอทำเสร็จใช้ไปสักพัก Lexitron กลับ ยกเลิกซะ งานเข้าเลย โปรแกรมเลยใช้ไม่ได้ซะงั้น ทั้งๆที่บอกว่าจะ open แท้ๆ

ผมก็เลยดึงข้อมูลทั้งหมดแล้วเก็บเป็น Database แทน โดยใช้ sqlite เพื่อใช้ทั้งใน android แล้วก็อีก ตัวหนึ่งที่คิดว่าจะทำคือ web ที่เป็น flex

อยากจะแชร์ปัญหานิดนึงของ android ก็คือ ว่าจะ deploy database ลงไปในระบบยังไง ซึ่งลองไปหาใน Internet แล้วก็สามารถสรุปได้เป็น 3 วิธีด้วยกันคือ

1. insert ข้อมูลลงไปเลยตอนแรกที่รัน
2. copy database จาก res/raw ครั้งแรกที่รัน
3. download จาก internet ครั้งแรกที่รัน

ปัญหาของผมก็คือว่า Database มันใหญ่มากประมาณ 100,000 record ไฟล์มันก็เลยมีขนาดใหญ่ 23Mb โดยไม่ว่าจะใช้วิธีไหนก็จะมีปัญหาดังนี้

วิธีที่ 1 insert 100,000 record ครั้งแรกโปรแกรมคงตายไปก่อนแน่นอน
วิธีที่ 2 ก็เท่ากับต้องใช้พื้นที่เป็น 2 เท่า เพราะต้องเก็บใน res/raw ก่อนแล้วค่อย copy ไปไว้ที่ /data/data/package/databases อีกทีหนึ่ง ซึ่งไม่ไหวแน่นอน
วิธีที่ 3 ก็ลำบากเนื่องจาก ไฟล์ ขนาด 23Mb มันโหลดกันนานใช้ได้เลยทีเดียว

ปล. ไฟล์ทั้งหมดผมต้องแยกเป็นไฟล์เล็กๆหลายๆไฟล์ เพื่อให้มันสามารถ copy ใน android ได้ เนื่องจากมันอ้างอิงไฟล์ที่มีขนาดใหญ่เกิน 1.2M ไม่ได้นี่ดิ ผมนั่งติดปัญหา copy ไฟล์ไม่ได้อยู่ตั่งนาน โดยหากใครเจอปัญหาเวลา copy file โดยเจอ IOException โดยไม่มี message นี้ก็คืออาการนี้แหละครั้บ ^^

ThaiDict.apk