วิธีติดตั้ง Keyboard ภาษาไทยบน Android Emulator

เริ่มจากเปิดเจออันนี้
http://soft2.me/droidsans-thai-keyboard-for-android/
เป็นการแนะนำโปรแกรมบน Android ชื่อว่า droidsans thai keyboard (คนไทยทำเย้ๆ)
ถ้าลงโปรแกรมนี้และตั้งค่านิดหน่อยก็จะสามารถพิมพ์ไทยได้

ก่อนอื่น ต้องไปโหลดตัวโปรแกรมที่ว่ามาก่อน  จะเห็นว่าในหน้าเวปนั้นจะมีให้ไปโหลดได้สองที่ คือ

  1. โหลดจาก Android Market (https://market.android.com/details?id=droidsans.android.droidsanskeyboard) : อันนี้ท่าจะลำบากหน่อย เพราะตัวอุปกรณ์เรา(AVD) มันเป็น Emulator มันเลยไม่ได้ลงทะเบียนไว้  เลยโหลดไม่ได้
  2. โหลดตรงๆ จาก Mediafire.com (http://www.mediafire.com/?1xakh6mycz6zcqa) : อันนี้ง่ายกว่า เลยเอาอันนี้ละกัน
เมื่อโหลดเสร็จ จะได้ไฟล์ “DroidSans Thai Keyboard.apk” มา ให้เอาไฟล์นี้ไปไว้ใน “<Android Path>\platform-tools\”  ในกรณีนี้ของผมจะอยู่ที่
C:\Android\platform-tools\
(ที่ต้องเอาไว้ตรงนั้น เพราะโปรแกรมที่เราจะรันต่อไป ที่ชื่อ “adb.exe” อยู่ตรงนั้น  พออยู่ทีเดียวกันก็จะได้ทำอะไรต่อไปง่ายหน่อย)
อันนี้ก๊อปไฟล์มาใส่ในpathเดียวกับ adb.exe เรียบร้อยแล้ว
ต่อไปก็เปิด DOS ขึ้นมา (จะด้วย cmd หรือ Start->All Programs -> Accessories -> Command Prompt ก็แล้วแต่) แล้วก็เข้าไปที่ path ที่ลง Android SDK เอาไว้  (ในที่นี้จะเป็น C:\Android)
ถ้าเปิด Android Virtual Device อยู่ก็ให้ปิดซะก่อน  แล้วมาเปิดใหม่ด้วยคำสั่งต่อไปนี้
เข้าไปที่ folder ชื่อ “tools” แล้วก็ใช้คำสั่ง emulator @TestAndroid -partition-size 100
(* TestAndroid คือชื่อAVDที่ผมใช้  ก็ให้เปลี่ยนเองตามชื่อ AVD ที่แต่ละคนตั้งละกัน)
จากนั้นก็ย้อนกลับไปเข้าที่ folder ชื่อ “platform-tools” (ที่เพิ่งก๊อปไฟล์ลงไป) แล้วรันคำสั่งเพื่อติดตั้งโปรแกรม  คำสั่งคือ adb install “DroidSans Thai Keyboard.apk”
แค่นี้ก็ติดตั้งเสร็จแล้ว    ต่อไปก็มา config กันซะหน่อย
ให้เข้าหน้าโปรแกรมบนAVD แล้วก็เข้า “Settings” –> “Language & keyboard”

เลื่อนลงมา จะเห็นว่ามี DroidSans Thai Keyboard ขึ้นมาแล้ววววววว เย้ๆ
ก็ให้ติ๊กถูกที่ช่องสี่เหลี่ยมข้าง ดังรูป

มาลองดูผลกับ WhatsApp ดูบ้างดีกว่า
พอเปิด WhatsApp มาจะเห็นว่า keyboard ยังเป็นเหมือนเดิมเลย
ต้องไปกดเปลี่ยน keyboard ก่อน ที่ปุ่มกลมๆด้านล่างซ้าย (แถวล่างสุด ปุ่มที่2จากทางซ้าย)

เลือก “Select input method” แล้วก็เลือก “DroidSans Thai Keyboard”
แค่นี้หน้าจอkeyboardเราก็จะเปลี่ยนไปแล้ว
ส่วนการสลับภาษา ก็ใช้ปุ่ม “en/th” ที่อยู่ด้านล่างซ้าย เหมือนเดิม

Android vocabulary

.apk file – Android application package file.

.dex file(Dalvik Executable File)  – นามสกุลที่เป็นนามสกุลแบบ Executable File หรือ เป็นไฟล์ที่สามารถ Run (ทำงาน) ได้ด้วยตัวมันเอง เปรียบเทียบได้กับ นามสกุล .EXE บน Windows ของเราๆ เนี่ยแหละ แต่มันเป็น Executable File ที่ทำงานบนระบบ JAVA Dalvik Virtual Machine (Davlik VM) นั่นเอง ซึ่งก็เป็นแกนหลักส่วนนึงของ Android หละครับ Compiled Android application code file.

.ODEX = Optimized Dalvik Executable File . . .ก็คือ ไฟล์ *.DEX ที่ถูกปรับประสิทธิภาพให้ทำงานได้รวดเร็วยิ่งๆ ขึ้นไป หรือ พูดศัพท์ภาษาอังกฤษ ก็คือ Optimize แล้วนั่นเอง

Activity – คือส่วนของหน้า User Interface หนึ่งหน้าของ Android ซึ่งรวมไปจนถึงการจัดการต่างๆ ภายในหน้านั้นๆ ระหว่าง User กับตัว Application เช่นการควบคุม Button หรือ View ต่างๆ ของหน้า User Interface ที่ได้กำหนดไว้ใน Activity โดย User Interface อาทิ เช่น หน้าโทรออก, หน้าแสดงเว็บไซต์, หน้าแสดง Contact List, และอื่นๆ

Adb – Android Debug Bridge เป็นเครื่องมือที่ติดมาพร้อมกับตัว Android SDK(Software Development Kit) เพื่อที่จะใช้คำสั่งบางอย่างที่เกี่ยวข้องกับระบบของเครื่อง Android ?ที่เราใช้งานด้วย เนื่องจาก Android มีพื้นฐานมาจาก Linux ทำการเเก้ไขคำสั่งต่างๆต้องทำผ่าน Command Line เหมือนกับ Linux เช่นกัน

เราสามารถพูดได้อีกเเบบหนึ่งคือ ADB เป็นตัวเชื่อมระหว่างเครื่อง Android เเละคอมพิวเตอร์ที่เราใช้งานอยู่ เเละเราสามารถพิมพ์คำสั่งที่เกี่ยวกับระบบต่างๆที่ Command Line เพื่อเเก้ไข Android ของเรานั่นเอง

ADB สามารถทำอะไรได้บ้าง?

–  ติดตั้ง recovery image

–  ถอนการติดตั้งเเอพพลิเคชั่นของระบบที่ไม่สามารถลบได้ด้วยวิธีปกติ

–  รูทเครื่อง Android เพื่อให้ได้สิทธิในการเขียนข้อมูลลง system ของ Android

–  ดึงไฟล์จาก system ของ Android

–  ติดตั้งไฟล์ apk

–  จับภาพหน้าจอจากเครื่อง Android

Intent – คือกลุ่มของข้อมูลที่เราสนใจ โดยเราสามารถส่งข้อมูลบางอย่างไปให้ Intent และสั่งให้ Intent ทำงานตามข้อมูลที่ได้รับได้ และเราสามารถสร้าง Intent สำหรับควบคุมข้อมูลเหล่านั้นได้เองต่างหาก

Context: เป็นข้อมูลต่างๆ ของ Application เพื่อให้ตัว Android Application สามารถเจาะจงได้ว่ากำลังใช้งาน หรือกำลังเปิดที่หน้าไหนอยู่ ปกติจะใช้ในรูปแบบ
o this ถ้าหากอยู่ใน Core Method ที่สามารถเรียก Class นั้นๆ ได้
o ClassName.this ถ้าหากอยู่ใน Method อื่นๆ หากต้องการจะเรียกใช้ Context ของ Class ที่กำหนดใช้งานอยู่
o getApplicationContext() เป็นการเรียก Context ซึ่งจะอยู่ตลอดตราบเท่า Application นั้นยังไม่ถูกปิด โดยจะต่างจาก Context แบบ Class ปกติคือ จะหายไปเมื่อทำการปิด หรือจบการทำงานของ Class นั้นๆ ไป

Permission: เป็นการกำหนดสิทธิของตัว Android Application ว่าสามารถทำอะไรได้บ้าง เช่น เชื่อมต่อ Internet, อ่านสถานะของการเชื่อมต่อ Network เป็นต้น

Database: ฐานข้อมูลสำหรับ Android โดยที่ตัว Android จะใช้ฐานข้อมูลชื่อ SQLite

Thread: คือ การทำงานในรูปแบบ Background โดยที่ตัว Application ก็ยังทำงานตามปกติ

debug.keystore: เป็นไฟล์สำหรับการทดลองพัฒนา Application บนเครื่องของเรา ซึ่งเวลาจะ Build File APK (File Application ของ Android) ตัว Project จะไปเรียกไฟล์ debug.keystore นี้ เพื่อทำการอ่านข้อมูลต่างๆ เช่น พวกวันหมดอายุของ Application, ข้อมูลผู้สร้าง Application เป็นต้น

keystore File: เหมือนกับ debug.keystore แต่จะเป็นไฟล์ที่ต้องใช้ในการ Build Application เพื่อนำไปลงทะเบียนใน Android Market

  • onCreate() — ถูกเรียกเมื่อ Activity ถูกสร้างครั้งแรก เป็น Method ซึ่งจะมีอยู่ทุก Activity หรือ Class ใน Android จะถูกเรียกใช้เมื่อมีการสร้าง Object หรือสร้าง Class นั้นๆ ขึ้นมา โดยส่วนใหญ่ใน onCreate จะเป็นการสร้าง Layout, Reference ID, กำหนด Event เป็นต้น
  • onStart() — ถูกเรียกเมื่อ Activity ปรากฎให้ User เห็น
  • onResume() — ถูกเรียกเมื่อ Activity เริ่มปฏิสัมพันธ์กับ User
  • onPause() — ถูกเรียกเมื่อ Activity ปัจจุบัน ถูกหยุดชั่วคราว และ Activity ก่อนหน้าทำงานต่อ
  • onStop() — ถูกเรียกเมื่อ Activity ไม่ปรากฏให้ User เห็นแล้ว
  • onDestroy() — ถูกเรียกเมื่อ Activity ถูกทำลายโดย system (แบบ manual หรือรักษา Mem)
  • onRestart() — ถูกเรียกเมื่อ Activity ถูกหยุดและ restart อีกครั้ง

Broadcast Receiver – คือส่วนที่จะรับเอา broadcast ต่างๆ มาทำงาน หรือส่ง broadcast นั้นต่อไป การ broadcast ที่ว่านี้ส่วนใหญ่จะเป็นของระบบเองที่ทำการ broadcast มา เช่น เมื่อเครื่องถูกชาร์จไฟ หรือมีการโทรเข้า หรือมีการรับข้อความ หรือจำนวนแบตตารี่ลดลง ถ้ามีเหตุการณ์ต่างๆ พวกนี้เกิดขึ้น ระบบก็จะทำการส่ง broadcast ไปให้รู้โดยทั่วกัน และถ้าในโปรแกรมเราต้องการนำค่าต่างๆ ที่ระบบ broadcast นั้นมาใช้งาน เราก็จะสร้าง Broadcast receivers นี่แหละขึ้นมารับเอาข้อมูลไปทำงาน หรือนอกจากนี้ก็ยังสามารถส่ง broadcast ที่สร้างขึ้นมาเอง ที่นอกเหนือจากที่ระบบมีไว้ก่อนหน้าและส่งไปได้ด้วย.

Content Providerเป็นส่วนของการจัดการข้อมูลต่างๆ ที่ถูกแชร์กันในระบบ ไม่ว่าข้อมูลนั้นจะอยู่ที่ไหนก็ตามจะเป็นไฟล์ของระบบ ใน database ที่อยู่ในระบบ หรือจะเป็นข้อมูลที่ถูกเก็บไว้ในเว็บ และสามารถที่จะแก้ไขข้อมูลต่างๆนั้นได้ ถ้า content provider นั้นให้สิทธิ ยกตัวอย่างเช่น ในระบบของ Android นั้นจะมี content providers ที่เห็นได้ชัดอยู่ตัวหนึ่งคือ content providers เพื่อจัดการข้อมูลของรายชื่อในโทรศัพท์ ทั้งนี้ก็เพื่อให้ app ที่เราเขียนขึ้นใช้งานข้อมูลดังกล่าวได้ผ่าน content provider นั้น นอกจากนี้ content provider ก็ยังสามารถจัดการข้อมูลที่ไม่ได้ทำการแชร์ไว้ แต่ในโปรแกรมเราเองได้อีกด้วย

Service คือส่วนการทำงานที่ไม่มีหน้าจอที่ติดต่อกับผู้ใช้ service นั้นจะทำงานอยู่ในส่วนของ background เช่น โปรแกรมเล่นเพลงต่างๆ ก็จะมีหน้าจอที่ติดต่อกับผู้ใช้ (นั้นคือส่วนของ activities) และเมื่อผู้ใช้เลือกเพลงเสร็จแล้วกดเล่น ไฟล์เพลงก็จะถูกเล่นโดยมีการทำงานแบบ services หลักจากผู้ใช้กด Back หรือ Home หน้าจอของเครื่องเล่นเพลง (activities) ก็จะถูกเก็บไป แต่ในส่วนของ services ที่เล่นเพลงนั้นก็ยังคงเล่นเพลงต่อไป

Dalvik – เป็น Virtual Machine พิเศษที่ออกแบบให้ใช้งานกับ Android เพื่อประหยัดพลังงานในการใช้แบตเตอร์รี่บนอุปกรณ์มือถือที่หน่วยความจำและซี พียูที่จำกัด

DDMS – Dalvik Debug Monitor Service เป็นเครื่องมือแบบ GUI สำหรับช่วย debug โปรแกรมบน  Android สามารถ capture screen, log dump, and process examination capabilities. ถ้าพัฒนาโดยใช้ Eclipse ต้องใช้ ADT Plugin

Drawable resource รวบรวมภาพที่สามารถนำมาใช้เป็นพื้นหลังชื่อหรือส่วนอื่น ๆ ของหน้าจอ drawable ถูกโหลดโดยปกติจะเป็นอีกองค์ประกอบ UI

Layout Resource An XML file that describes the layout of an Activity screen.

OpenGL ES  libraries, complex 3D images. It is harder to use than a Canvas object, but better for 3D objects.

Surface เป็นตัวจัดการระบบแสดงผล และควบคุมบนจอภาพ.

SurfaceView สำหรับวาดรูปภาพ

View ใช้สร้างองค์ประกอบของหน้าจอ Application ที่เราต้องการ

Viewgroup = เป็นกลุ่มของชุดคำสั่งที่เกี่ยวกับการจัดการโครงสร้างของหน้าจอที่แสดงผลในส่วนที่ติดต่อกับผู้ใช้งาน (User Interface)

Widget ชุดคำสั่งโปรแกรมคอมพิวเตอร์ขนาดเล็ก หรือ โปรแกรมสำหรับการควบคุมในการทำงานของเครื่องคอมพิวเตอร์ ในแบบต่าง ๆ  เช่น เป็นหน้าต่าง เล็ก ๆ (windows),(popup) เพื่อให้ผู้ใช้สามารถควบคุมหรือ สั่งการเครื่องคอมพิวเตอร์ให้ทำงาน ในรูปแบบต่าง ๆ เช่น  เรียกใช้งานเครื่อง คิดเลข ในวินโดวส์ ลีนุกซ์ หรือ โอเอสทู เป็นต้น โดยที่สามารถสั่งงานให้ โปรแกรมย่อย ๆ เหล่านั้นทำงานด้วยการกดปุ่มคำสั่ง ด้วยเมาส์ แทนการพิมพ์ ชุดคำสั่ง ซึ่งผู้ใช้งานสามารถติดต่อสื่อสารกับเครื่องคอมพิวเตอร์ได้อย่างสะดวกง่ายดาย     (คำว่า  Widget  มาจากคำภาษาอังกฤษว่า  gadget)

rom << คือตัว OS ที่ใช้ในมือถือเราครับ เหมือนwindows หรือlinux ตอนนี้ที่มีให้โหลดกันก็เต็มไปหมด ทั้ง hero cyanogen jf หรือแม้กระทั่งตัว originalจากทาง googleเอง และต่อไปก็คงมีอีกเยอะ จากค่ายต่างๆที่พัฒนากันขึ้นมาครับ
วิธีดูว่าromตัวนั้นจะลงกับเครื่องเราได้หรือเปล่า
หลักๆเชคก่อนว่า romนั้นสร้างมาเพื่อเครื่องรุ่นไหน G1 Magic Hero หรืออื่นๆ
ถ้าMagic ก็อาจต้องดูอีกว่าเป็น PVT32a หรือ32b

Rom มันจะอัพได้ไม่ได้ ก็ดูตามที่เค้าเขียนว่ารุ่นนี้ support สำหรับboardอะไร รุ่นไหนก็พอแล้วครับ
แล้วก็Romแต่ละตัวมันมีความต่างที่ FWที่เค้าเอามาMod แล้วก็ผู้Modครับ
อย่างที่เห็นหรือเคยได้ยินกันมาก็คงเป็น Original JesusFreak(JF) Cyanogen(CM) Hero(แปลงมาลงmagic) MyHero(แปลงมาลงเมจิกอีกเหมือนกัน) โดยHeroและMyHeroเนี่ยมันก็ต่างกันที่คนที่เอามาModครับ
ซึ่งผมอยากบอกว่านี่แหละครับความน่าปวดหัวของ Android…มันไม่จบ ไม่รู้ว่าอันไหนดีที่สุด ตัวเลือกเยอะเกิน…แต่มันจะเหมาะมากสำหรับพวก Advance ที่เอาromต่างๆเนี่ยมาโมเป็นที่เค้าต้องการได้เอง เรียกว่าโคตร customizeเลยล่ะ

cupcake, donuts, eclaire << เป็นseries ของFirmware ของandroidนะครับ 1.5 1.6 2.0 ตามลำดับ google เค้าวางชื่อของFirmwareต่างๆตามตัวอักษรและชื่อขนมนะครับ โดยเคยมีคนแซวว่า ชื่อขนมที่นานๆขึ้นไปก็จะมีcalories ที่สูงขึ้น และกินทรัพยากรเครื่องสูงขึ้นตามไปด้วยครับ ^^

market << เหมือน app storeของappleครับ เอาไว้browseหาโปรแกรมกว่าหมื่นตัวทั้งฟรีและไม่ฟรีครับ โดยพวกเราจะไม่เห็นของเสียตังค์นะครับ ต้องใช้ MarketEnabler ในการเซทค่าหลอกเครือข่ายว่าเราอยู่เมหาหรือยุโรปซะก่อนถึงจะเห็นครับ

android sdk << (เรียกย่อๆกันว่า sdk) ชุดdevelop kit จากทาง google ที่ออกมาให้นักพัฒนาเค้าเอาไปใช้เขียนโปรแกรมครับ ซึ่งใน sdkนี้ ก็จะประกอบด้วยไฟล์หลายๆอย่างที่คนที่ไม่ใช่นักพัฒนาควรต้องมีไว้เช่น driverของandroid หรือ adb หรือ fastboot ซึ่งจะถูกกล่าวต่อไปข้างล่างนี้ ข้อมูลและdownload android sdkเข้าไปได้ที่
http://android-developers.blogspot.com/index.html

สรุปคำจำกัดความให้ง่ายต่อความเข้าในของมือใหม่ SDK มันก็คือ toolsตัวนึงสำหรับติดต่อจากpc ไปยังมือถือครับ

root << เป็นการhackเครื่องให้สามารถรันคำสั่งระดับ SU(super User)ได้ โดยบางโปรแกรมต้องการเครื่องที่rootแล้ว เพื่อสามารถaccessข้อมูลบางอย่างที่ถูกจำกัดเอาไว้ให้ระดับsuเท่านั้นที่ เข้าถึงได้ครับ เช่น การเปลี่ยนผู้ให้บริการเครือข่ายหลอกmarketให้สามารถโหลดappเสียตังค์ได้ หรือการbackupข้อมูลของเครื่อง โดยการrootนี้สามารถทำได้ทั้งเครื่องในและเครื่องนอกครับ

bricked << ก้อนอิฐ แปลกันตรงๆตัวเลย คือเมื่อไหร่ที่เครื่องคุณบริกแล้ว มันก็คือก้อนอิฐสำหรับทับกระดาษนั่นเอง เพราะมันเจ๊งไปเรียบร้อย คนจะกลัวที่สุดก็ไอ่ตัวนี้แหละ โดยการบริกอาจเกิดได้จากหลายสาเหตุ เช่นเอาromไปใช้ผิดเครื่อง update recoveryไม่สำเร็จ ฯลฯ แต่ถ้าอ่านรายละเอียดให้ดีๆ การบริกนี้ก็ไม่ได้เกิดขึ้นง่ายขนาดนั้นหรอกครับ 😀

fastboot << เป็น toolsเอาไว้สำหรับการสั่งรันcommandต่างๆจากเครื่องpc เข้ามือถือ โดยชุดcommand มันจะคนละตัวกับ adb ทำได้ด้วยการรันfastbootบนมือถือ(voldown+power จะเข้าหน้าจอขาวๆ และกด back เพื่อเข้าfastboot usb mode) และcommand คำสั่งผ่าน pc (โดยเราต้องมี androidsdkก่อน และรัน all programs>accessories>command prompt ไปยังfolder androidsdkที่เราทำการ unzipไว้ และเข้าไปfolder tools และทำการรันcommand ต่างๆผ่าน(เช่น fastboot boot recovery.img ซึ่งจะเป็นการบูทเครื่องโดยใช้ข้อมูลจาก recovery.img) คำสั่งต่างๆที่เห็นจากเวปก็เป็นfastbootตัวนี้แหละครับ
ตัวอย่างชุดคำสั่ง
fastboot boot recovery.img
fastboot flash recovery.img
fastboot reboot
โดยคำสั่งเหล่านี้จะได้ได้จาก cmd และมือถือต้องรันในโหมด fastboot usb
สำหรับคนที่เกิดปัญหาทำไรกะเครื่องแล้วเอ๋อ เจ๊ง เปิดไม่ได้ ก็ให้จำอันคำนี้ไว้ครับ “ตราบใดที่ยัง fastbootได้ เครื่องก็จะยังไม่brickครับ” จากคุณ @sugree เพราะมันยังสามารถรันตัวอื่นไปทับได้อยู่เสมอครับ

adb << รันคำสั่ง linux เข้ามือถือเรา เพราะandroidได้ถูกพัฒนามาบนระบบปฎิบัติการlinux เลยใช้คำสั่งของlinuxในการcommandต่างๆ เช่น
adb push fonts /system/fonts << สั่งup fonts เข้ามือถือ
โดยการใช้คำสั่งนี้เราต้องการ android sdkเช่นเดียวกับ fastboot

เพิ่มเติม fastboot และ adb >> ถ้าเราต้องการcommand ไฟล์เข้าไปมือถือ เช่น fastboot boot recovery.img ไฟล์ที่ต้องการ(recovery.img)นั้นต้องอยู่บนpc นะครับ ผมเสียเวลาไปหลายชม.จากเรื่องง่ายๆนี้ เพราะในบอร์ดต่างประเทศมันบอกว่าให้เอาไปใส่ SD cardกันหมดเลย T^T

วิธีการupdate recovery
http://forum.xda-developers.com/showthread.php?t=529019

recovery << เอาไว้สำหรับ back up, resetเครื่อง, flash romตัวใหม่ หรืออื่นๆอีกหลายอย่าง ตามแต่ recovery version ที่เราflashเข้าไป โดยเข้าไปที่recoveryได้โดยกด home+powerค้างไว้จนกว่าสัญลักษณ์เครื่องจะติดจึงปล่อยได้
ตัวอย่างของ recovery image >> cyanogen recovery image (cm-recovery.img) และ RAv1.2.1H.img
update.zip << ถ้าเป็น recovery เก่าๆที่ยังไม่สามารถอ่านไฟล์หรือรมออื่นนอกเหนือจาก update.zipได้ ก็ต้องทำการrenameรอมที่เราต้องการใช้เป็นupdate.zip เช่น เรามีรอมฮีโร่ที่ต้องการflash ชื่อhero.zip ก็ต้องทำการเปลี่ยนเป็น update.zip ให้recoveryนี้หาไฟล์เจอ แต่ปัญหานี้ได้ถูกแก้ไขใน recovery เวอร์ชั่นใหม่แล้ว ไม่ต้องrenameก็อ่านเจอ
nandroid << เป็นตัวสำหรับ backupขอ้มูลทั้งหมดในเครื่องเรา ในกรณีฉุกเฉินที่เครื่องจะตายแล้ว ก็restoreกลับไปstageเติมที่เราได้ทำการ backupไว้นี้เอง
wipe data/factory reset << ในการ flash rom หรือ updateอะไรต่างๆ เราอาจต้อง wipe data ทั้งหมดในเครื่องทิ้งก่อน โดยการเข้ามาทำใน recoveryเนี่ยแหละครับ

radio << เป็นเวอร์ชั่นของสัญญาณ โดยการทำงานทั้งหมดandroid จะรันบนradioอีกที

partition << การทำpartitionของandroidนี่จะเป็นการทำpartitionเหมือนกับlinuxครับ จุดประสงค์หลักในการแบ่งนี้มาจากการที่คนต้องการให้Appทั้งหลายมันไปรันบนsd cardแทนที่จะเป็นบนเครื่องครับ(ที่มันน้อยยย)
การทำpartition ก็สามารถทำได้ดังนี้

ต้องใช้ adb shell ช่วยครับ แล้วก็ต้องรันadbจากหน้า recoveryด้วยนะครับ

SPL HBOOT << จะได้ยินตัวนี้เสมอเมื่อต้องการupdate rom หรือว่าทำอะไรสำคัญๆกับตัวเครื่อง โดยข้อมูลของHBOOTเครื่องเราจะสามารถเข้าไปดูได้ด้วยการกด vol-down + power สำหรับ magic นะครับ (ของรุ่นอื่นฝากเข้ามาบอกกันด้วยครับ) ขอย้ำนะครับว่าตัวนี้สำคัญ เชคให้ดีๆ โดยเฉพาะ PTV32A 32B เสี่ยงเป็นเสี่ยงตายต่อการbrickมาก

a2sd << มันย่อมาจาก app to SD คือการinstall app ไปลง sd cardนั่นเอง เพราะโดยdefault แล้วandroidมันจะinstall appทั้งหมดลง c: ซึ่งใน G1 มันมีพื้นที่ตรงนี้น้อยมาก เลยทำให้เหล่านักพัฒนาหาทางแก้โดยจับเอาโปรแกรมเหล่านี้ไปรันบน SD cardซะเลยโดยในcyanogen rom เค้าจะทำfunctionนี้มาให้เรียบร้อยแล้วครับ

สิ่งที่พัฒนาเรื่อยๆและต้องคอยupdate
recovery
spl hboot
rom

Credit : http://pdamobiz.com/forum/forum_posts.asp?TID=246843&PN=1
http://forum.xda-developers.com/showthread.php?t=529019

วิธีเข้า ADB ผ่าน MS-DOS

อันดับเเรกให้เราหาที่อยู่ของ SDK ที่เราติดตั้ง อย่างในตัวอย่างเราติดตั้งไว้ที่ C:\sdk\ อย่าลืมดูว่าเราก็อปปี้ ก็อปปี้ไฟล์ adb.exe, AdbWinApi.dll, AdbWinUsbApi.dll?จากโฟลเดอร์ Platform-tools มาไว้ที่โฟลเดอร์ Tools ด้วย

 

ใน Android ให้เข้าไปที่ Setting > Application > Development > เลือก USB Debugging

กดปุ่ม Start > Run หรือ Ctrl+R จากนั้นพิมพ์ cmd เเล้วกด Enter

 

จะพบหน้าต่างของ MS-DOS ขึ้นมา จากนั้นให้เราเข้าไปที่อยู่ของโฟลเดอร์ Tools โดยพิมพ์คำสั่ง cd C:\xxx\tools เช่น cd C:\sdk\tools เเละกด Enter

 

ลองพิมพ์คำสั่ง adb devices เพื่อทดสอบว่าเครื่อง Android ของเราได้ติดต่อเข้ากับคอมพิวเตอร์เรียบร้อยเเล้ว

 

คำสั่ง ADB เบื้องต้น

  • adb shell reboot
    • รีสตาร์ทเครื่อง
  • adb shell reboot recovery
    • รีสตาร์ทเข้า Recovery Mode
  • adb install xxx.apk
    • ติดตั้ง xxx.apk ลงไปใน Android (ไฟล์ xxx.apk ต้องอยู่ในโฟลเดอร์ tools)
  • adb push [ชื่อไฟล์] /sdcard/[ชื่อไฟล์] เช่น adb push emulator.exe /sdcard/emulator.ex
    • ก็อปปี้ไฟล์ที่กำหนดไปยัง sdcard
  • adb remount
    • ทำให้พาร์ติชั่น /system ของ Android สามารถเขียนไฟล์ลงไปได้ (โดยปกติจะสามารถอ่านได้อย่างเดียวไม่สามารถเขียนได้เพราะป้องกันผู้ใช้เข้า ไปเเก้ไขระบบโดยไม่รู้ตัว)

สถาปัตยกรรมของ Android

รูปภาพ 1-1 : Layer ต่างๆของ Android OS
จากรูป 1-1 Android OS สามารถแบ่งได้เป็น 5 Section ใน 4 Layer
  1. Linux Kernel – เป็น kernel ที่ใช้สร้าง Android ประกอบด้วย Low-level device driver สำหรับองค์ประกอบทาง Hardware ต่างๆของอุปกรณ์ Android
  2. Libraries– มี Code ที่ให้ Feature หลักๆของ Android OS เช่น
    • SQLite library เพื่อให้ App สามารถเรียกใช้ในการเก็บข้อมูล
    • WebKit library ให้ function ในการทำ web browsing
  3. Android runtime– อยู่ layer เดียวกับ libraries ซึ่งตัว Android runtime จะให้
    1. Set ของ Core library : ให้ developer สามารถเขียน Android App โดยใช้ภาษา Java
    2. Dalvik virtual machine : ให้ Android App สามาถทำงานได้ใน process ของตน เป็น instance ของ Dalvik virtual machine (Android App ถูก compile เป็น Dalvik executable)
      • Dalvik เป็น VM ที่ถูกออกแบบโดยเฉพาะสำหรับ Android และถูก optimize สำหรับมือถือที่ใช้ battery ให้พลังงานที่มี memory และ CPU จำกัด
  4. Application framework -ความสามารถของ Android ที่ developer สามารถนำไปใช้ในการพัฒนา App ได้
  5. Application – ติดอยู่กับอุปกรณ์ Android หรือใช้งาน เช่น โทรศัพท์,Browser,Contacts, App ที่ download และ install จาก market

Android: ทำ SplashScreen ง่ายนิดเดียว

บทความนี้เป็นตัวอย่างของการทำ Splash Screen หรือหน้า Intro ก่อนเข้า Application ใน Android นะ

ตัวอย่าง Source Code สามารถ Download ได้ที่นี้ SplashScreenDemo

1. สร้าง Android Project ใหม่

Create Project Part1

Create Project Part2

2. สร้าง Layout ของหน้า SplashScreen ใน Folder layout

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:background=”#FFF”>
<ImageView android:layout_gravity=”center”
android:src=”@drawable/android”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content” />
</LinearLayout>

3. สร้าง Activity Class สำหรับหน้า SplashScreen ใน Folder src

public class SplashScreenActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splashscreen);
}

}

การทำ SplashScreen โดยใช้ Handler

3.1 การใช้ Handler สำหรับทำ Splash Screen นั้นสามารถทำได้โดยใช้ Method ของ Handler ที่ชื่อว่า postDelayed(Runnable, DelayedTime)

Runnable: คือ Process ที่จะกำหนดให้กับตัว Handler
ในตัวอย่างคือเรียกคำสั่ง finsish() เพื่อปิด Activity ปัจจุบัน
จากนั้นจึงเรียกคำสั่ง startActivty เพื่อเปิดหน้า Activity หลักของ Application ขึ้นมา

DelayedTime: คือเวลาที่เมื่อผ่านไปตามที่กำหนดแล้วจะเรียก Runnable ขึ้นมาทำงาน มีหน่วยของเวลาเป็น Millisecond (1000 Millisecond = 1 Second)
ในตัวอย่างกำหนดไว้ 2000 Millisecond หรือ 2 Second

private Handler mHandler;
mHandler = new Handler();// Call postDelayed Method for running process after delay time
mHandler.postDelayed(new Runnable() {@Override
public void run() {
finish();
startActivity(new Intent(SplashScreenActivity.this,
MainActivity.class));
}

}, 2000);

การทำ SplashScreen โดยใช้ Thread

3.2 การใช้ Thread สำหรับทำ Splash Screen ทำได้โดยสร้าง Thread ขึ้นมาใหม่และใช้คำสั่ง start เพื่อสั่งให้ Thread ทำงาน และใน Thread ให้ทำการ Override Method run() จากนั้นจึงใช้คำสั่ง sleep(time) เข้ามาช่วยทำ SplashScreen

sleep เป็นคำสั่งให้หยุดทำงาน โดยเราสามารถกำหนดเวลาที่ต้องการสั่งให้ Thread หยุดทำงานได้ ซึ่งหน่วยของเวลาคือ Millisecond หลังจากสั่งให้หยุดทำงานเสร็จจึงเรียกใช้ Method finish() เพื่อสั่งปิด Activity ปัจจุบัน และตามด้วย Method startActivity เพื่อเปิดหน้า Activity หลักของ Application

new Thread() {

@Override
public void run() {
try {
sleep(2000);
finish();
startActivity(new Intent(SplashScreenActivity.this,
MainActivity.class));
} catch (Exception e) {
e.printStackTrace();
}
}

}.start();

4. แทรก Activty Tag ในไฟล์ AndroidManifest.xml

ทำการเปลี่ยน Activity แรกสุดที่จะถูกเรียกเป็น SplashScreenActivty และทำการแทรก Activity Tag ของ Class Activity หลักของ Application

<activity android:name=”.SplashScreenActivity”  android:label=”@string/app_name”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
<activity android:name=”.MainActivity”>
</activity>

Output:

1. แสดงหน้า Activity ของ SplashScreen ที่สร้างขึ้น

Output 01

2. หลังจากผ่านไป 2 วินาที ก็จะปิดหน้า SplashScreen ปัจจุบันและเรียกหน้า Activity หลักของ Application ขึ้นมา

Output 02

credit : http://puyblog.piscessera.com/android-ทำ-splashscreen-ง่ายนิดเดียว

Android Debug Bridge (ADB) คำสั่งเพื่อการควบคุม Android ขั้นสูง

เราจะมาพูดถึงเรื่องที่เป็นการใช้งานขั้นสูงกันนแล้วนะครับ นั้นคือ Android Debug Bridge ซึ่งมันคือการใช้คำสั่งแบบ command line เพื่อเข้าความคุมหรือออกคำสั่งให้กับอุปกรณ์ android ซึ่งในกรณีที่ใช้เครื่องจริงก็จะใช้ผ่าน USB Driver นะครับ ส่วนใน Emulator ก็สามารถใช้ได้เช่นกัน

https://i2.wp.com/img.spacethai.net/images/imagesqtbn.jpgADB นั้นย่อมาจาก Android Debug Bridge เป็นเครื่องมือแบบ command line ที่เอาไว้จัดการข้อมูลต่างๆ บนมือถือจากพีซี (ผ่านโหมด USB Debugging ตัวโปรแกรมนี้มาพร้อมกับ Android SDK อยู่แล้ว)

การใช้งาน ADB เบื้องต้น

ตรวจสอบให้แน่ใจว่าได้เปิดโหมด USB Debug ที่โทรศัพท์หรือใน Emulator แล้ว ตั้งค่าที่ Menu > Setting >Applications >Development > USB Debugging

https://i0.wp.com/img.spacethai.net/images/sddefault1.jpg

** การใช้งาน adb ทุกครั้งต้อง สั่ง cd ไปที่ android-sdk-windows/tools

ตรวจสอบว่าคอมพิวเตอร์มองเห็นโทรศัพท์หรือยังโดยพิมพ์

./adb devices

https://i1.wp.com/img.spacethai.net/images/1bf714c8ef.png

Login shell (สำหรับเครื่องที่ Root แล้ว) ส่วน Emulator ถือว่ามีสิทธิ Root อยู่แล้ว

./adb shell

https://i1.wp.com/img.spacethai.net/images/602719bf1f.png

แสดงรายการแอพลิเคชั่นในโทรศัพท์

./adb remount
./adb shell
# cd /system/app
# ls

https://i1.wp.com/img.spacethai.net/images/e0aff94e22.png

ลบแอพลิเคชั่น

./adb remount
./adb shell
# rm /system/app/xxxx.apk

ติดตั้งแอพลิเคชั่น
./adb install xxx.apk [path directory]

ยกตัวอย่าง
./adb install AndroidThaiDict_v1.1.apk /media/data/AndroidThaiDict_v1.1.apk

https://i2.wp.com/img.spacethai.net/images/88777dd78a.png

โอนย้ายไฟล์ระหว่างคอมพิวเตอร์กับโทรศัพท์แอนดรอยด์
โอนย้ายไฟล์เข้าเครื่องโทรศัพท์

./adb push

[ destination]

ตัวอย่าง
./adb push /media/data/HotNews_v1.1.apk /mnt/sdcard

https://i1.wp.com/img.spacethai.net/images/3771ce2f63.png

โอนย้ายไฟล์จากโทรศัพท์
./adb pull source [destination]

ตัวอย่าง
./adb pull /mnt/sdcard/HotNews_v1.1.apk /media/data

https://i1.wp.com/img.spacethai.net/images/2ee66dd229.png

นอกจากนั้นยังมี

adb reboot ใช้สั่งให้เครื่อง Reboot ทันที

adb reboot bootloader ใช้สั่งให้เครื่องรีบูตแล้วเปิดตัวเองเข้าสู่ bootloader mode

adb reboot recovery ใช้สั่งให้เครื่องรีบูตแล้วเปิดตัวเองเข้าสู่ recovery mode ใช้สำหรับการรีเซ็ตเครื่อง

Credit : http://www.phet.in.th/2011/01/android-story-6-android-debug-bridge-adb/

Android: ทำ SplashScreen ง่ายนิดเดียว

บทความนี้เป็นตัวอย่างของการทำ Splash Screen หรือหน้า Intro ก่อนเข้า Application ใน Android นะ

ตัวอย่าง Source Code สามารถ Download ได้ที่นี้ SplashScreenDemo

1. สร้าง Android Project ใหม่

Create Project Part1

Create Project Part2

2. สร้าง Layout ของหน้า SplashScreen ใน Folder layout

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:background=”#FFF”>
<ImageView android:layout_gravity=”center”
android:src=”@drawable/android”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content” />
</LinearLayout>

3. สร้าง Activity Class สำหรับหน้า SplashScreen ใน Folder src

public class SplashScreenActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splashscreen);
}

}

การทำ SplashScreen โดยใช้ Handler

3.1 การใช้ Handler สำหรับทำ Splash Screen นั้นสามารถทำได้โดยใช้ Method ของ Handler ที่ชื่อว่า postDelayed(Runnable, DelayedTime)

Runnable: คือ Process ที่จะกำหนดให้กับตัว Handler
ในตัวอย่างคือเรียกคำสั่ง finsish() เพื่อปิด Activity ปัจจุบัน
จากนั้นจึงเรียกคำสั่ง startActivty เพื่อเปิดหน้า Activity หลักของ Application ขึ้นมา

DelayedTime: คือเวลาที่เมื่อผ่านไปตามที่กำหนดแล้วจะเรียก Runnable ขึ้นมาทำงาน มีหน่วยของเวลาเป็น Millisecond (1000 Millisecond = 1 Second)
ในตัวอย่างกำหนดไว้ 2000 Millisecond หรือ 2 Second

private Handler mHandler;
mHandler = new Handler();// Call postDelayed Method for running process after delay time
mHandler.postDelayed(new Runnable() {@Override
public void run() {
finish();
startActivity(new Intent(SplashScreenActivity.this,
MainActivity.class));
}}, 2000);

การทำ SplashScreen โดยใช้ Thread

3.2 การใช้ Thread สำหรับทำ Splash Screen ทำได้โดยสร้าง Thread ขึ้นมาใหม่และใช้คำสั่ง start เพื่อสั่งให้ Thread ทำงาน และใน Thread ให้ทำการ Override Method run() จากนั้นจึงใช้คำสั่ง sleep(time) เข้ามาช่วยทำ SplashScreen

sleep เป็นคำสั่งให้หยุดทำงาน โดยเราสามารถกำหนดเวลาที่ต้องการสั่งให้ Thread หยุดทำงานได้ ซึ่งหน่วยของเวลาคือ Millisecond หลังจากสั่งให้หยุดทำงานเสร็จจึงเรียกใช้ Method finish() เพื่อสั่งปิด Activity ปัจจุบัน และตามด้วย Method startActivity เพื่อเปิดหน้า Activity หลักของ Application

new Thread() {

@Override
public void run() {
try {
sleep(2000);
finish();
startActivity(new Intent(SplashScreenActivity.this,
MainActivity.class));
} catch (Exception e) {
e.printStackTrace();
}
}

}.start();

4. แทรก Activty Tag ในไฟล์ AndroidManifest.xml

ทำการเปลี่ยน Activity แรกสุดที่จะถูกเรียกเป็น SplashScreenActivty และทำการแทรก Activity Tag ของ Class Activity หลักของ Application

<activity android:name=”.SplashScreenActivity”  android:label=”@string/app_name”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
<activity android:name=”.MainActivity”>
</activity>

Output:

1. แสดงหน้า Activity ของ SplashScreen ที่สร้างขึ้น

Output 01

2. หลังจากผ่านไป 2 วินาที ก็จะปิดหน้า SplashScreen ปัจจุบันและเรียกหน้า Activity หลักของ Application ขึ้นมา

Output 02

credit : http://puyblog.piscessera.com/android-ทำ-splashscreen-ง่ายนิดเดียว