[จากตอนที่แล้ว]
เป็นไงคับ ทำกันแล้วเป็นไงบ้าง คิดว่าไม่น่าจะมีประเด็นอะไรนะคับ ติดขัดอะไรก็โพสมากันคับ เผื่อช่วยอะไรได้
[มาต่อกันดีก่า]
รอบนี้จะมาว่าด้วยเรื่องการ generate ตัว key เพื่อให้แอพ (MapView) สามารถเรียกใช้บริการ Location Service ของ Google สาเหตุที่จะมาลงรายละเอียดกันก้อเพราะตัวผมเองงมอยู่สองวันเนื่องจากความใหม่ในเรื่องพวกนี้ (พวก JAVA/Eclipse) ท่านที่อยู่ตัวอยู่แล้วก้อสามารถข้ามไปหัวข้อต่อไปเลยคับ
[ว่าด้วยเรื่องการสร้าง Key เพื่อไปขอใช้บริการ Location Service]
อ้างอิง http://code.google.com/intl/th-TH/android/add-ons/google-apis/mapkey.html)
เล่าคร่าวๆนะคับ- เขาคาดหวังว่า แอพเราจะมี Certificate (ใบรับรองบนโลกคอมพิวเตอร์) ผูกไว้
- เราเอาต้องเอา "ลายนิ้วมือ" (Fingerprint) ที่ถอด(รหัส)จากใบรับรองเพื่อไปลงทะเบียนกับกูเกิ้ล
- ทางกูเกิ้ลจะสร้าง "กุญแจ" มาให้ (Key ที่ผูกกับ "ลายนิ้วมือ"ที่ลงทะเบียนไว้)
- เอากุญแจ(ที่เราได้มา)ใส่ลงใน Code ของเรา แอพเราจะทำการส่งกุญแจก่อนเรียกใช้งาน Location Service และสามารถโหลดภาพแผนที่กลับเข้ามาแสดงผลถ้ากุญแจถูกต้อง
- *หมายเหตุ* ถ้ากุญแจไม่ได้ลงทะเบียนไว้ หรือกุญแจไม่ตรงกับลายนิ้วมือบนแอพของเรา แอพเราจะไม่ได้รับข้อมูลกลับมา
- *หมายเหตุ* คำว่า "ไม่ตรง" เกิดจากการคำนวนทางคณิตศาสตร์ชั้นสูง เหมือนเอาตัวเลขสองตัวหยอดเข้าไปในสมการ ถ้าผลลัพธ์ก้อจะเป็นแค่ "ตรง" หรือ "ไม่ตรง" อะไรประมาณเนี้ยแล่ะ
- *หมายเหตุ* ทุกๆเครื่อง(ที่ลง SDK)จะมีใบรับรองแบบ debug mode อยู่ ใบนั้นละคับคือใบที่เราจะเอาไปสร้างลายนิ้วมือเพื่อใช่ในการทำงานครั้งนี้
- *หมายเหตุ* ทั้งใบรับรอง ลายนิ้วมือ กุญแจ จิงๆคือตัวเลขเป็นชุดๆที่ทำให้สามารถระบุที่มาที่ไปของตัว(แอพ)ของคุณได้ คือจะขาดความน่าเชื่อถือถ้าไม่มีใบนั้นๆ(คือไม่รู้หัวนอนปลายเท้า) เหมือนเวลาลงโปรแกรมบน XP แล้วโดนเตือนว่า "ท่านกำลังลงโปรแกรมที่ไม่ทราบเจ้าของ" อ่ะคับ
[ขั้นตอนในการสร้างและรันโปรแกรมตัวอย่าง MapView ]
ลำดับตามนี้คับ
- ทำการคัดลองโค๊ตทุกอย่างให้เรียบร้อย
- ลอก "ลายนิ้วมือ" จากใบรับรองออกมา
- นำ "ลายนิ้วมือ" ไปลงทะเบียนกับกูเกิ้ล เพื่อรับกุญแจในการเข้าใช้บริการ
- นำกุญแจไปใส่ใน Code ของเรา
- สร้าง AVD (SDCard) ที่รองรับ Google API
- ทำการรันโปรแกรม
[แรกสุดเลย]
ให้ทำการสร้าง Project แล้วคัดลอกโค๊ตทุกอย่างให้เสร็จก่อนคับ เพื่อรอการกรอกเลข Key ในขั้นตอนสุดท้าย
[ลอกลายนิ้วมือ]
ขั้นตอนการดู "ลายนิ้วมือ" จากใบรับรองที่มีบนเครื่องของเรา
- หาตำแหน่งของไฟล์ "keytool.exe" ที่อยู่ใน JRE6.0 บนเครื่องของเรา
อ้างอิง [การเตรียมเครื่องเพื่อการพัฒนาโปรแกรมบน Android (3/3) - ติดตั้ง JRE6.0... ]
(ของผมคือ - C:\Program Files\android\jre6\bin\keytool.exe) - Run ตัว DOS ขึ้นมา
(เอ่อ – สำหรับคนรุ่นใหม่คงเรียกว่า CMD.exe กระมัง)
[Start]->[Run]->[กรอก "cmd"]->[กด OK] - (ที่ cmd) ตั้งค่า PATH ของ XP ให้ชี้ไปที่ Keytool.exe ดังนี้
(ทำคำสั่ง "set path=%path%;c:\++ตำแหน่งDirของKeytool++;")
(ของผมคือ - C:\Program Files\android\jre6\bin) - ตรวจสอบว่า ตั้งค่า PATH ถูกต้อง
(ทำคำสั่ง "path" - ให้ดูว่าค่าที่เราเพิ่งใส่ต้องอยู่ที่ท้ายสุดของสิ่งที่ display ออกมา)
- หาตำแหน่งของไฟล์ "debug.keystore"
(ของผมคือ C:\Documents and Settings\ยูสเซอร์เนมบนเครื่องคุณ\.android)
- (ที่ cmd) ทำการ change directory ไปที่ตำแหน่งของไฟล์ "debug.keystore"
(ทำคำสั่ง "cd c:\documents and settings\ยูสเซอร์เนมบนเครื่องคุณ\.android)
- เอ่อ... ขอพักเหนื่อยก่อนคับ แต่ใกล้เสร็จแล้ว
- ทำการเรียก keytool.exe ขึ้นมา
(ที่ cmd) ทำคำสั่ง "keytool -list -keystore debug.keystore"
- ให้ใส่ password ว่า "android"
- Keytool จะแสดงค่า ลายนิ้วมือออกมาให้ดูคับ ให้จดไว้หรือ capture หน้านั้นเก็บไว้คับ ทุกเครื่องจะมีลายนิ้วมือไม่เหมือนกันนะคับ เสียใจ ห้ามเลียนแบบ
[รูป 1.0] - หน้าจอผลลัพธ์ในขั้นตอนการคัดลอก "ลายนิ้วมือ"
[ไปลงทะเบียนกันคับ]
(อ้างอิง - http://code.google.com/intl/th-TH/android/maps-api-signup.html)
1. ไปที่นี่คับ http://code.google.com/intl/th-TH/android/maps-api-signup.html2. ทำการกรอกเลขลายนิ้วมือลงไป (ระบุหน่อยคับว่า ตกลงตามเงื่อนไขที่ว่าไว้)
3. กดปุ่ม [Generate Map API] จะได้ผลลัพธ์หน้าตาประมาณนี้ละคับ ให้จดค่า Key และทำการ capture หน้าจอเก็บไว้คับ
[รูป 1.0] - หน้าจอผลลัพธ์ในขั้นตอนการลงทะเบียนเพื่อขอ MapAPI
[เอา Key ไปใส่ใน Code]
ได้ Key แล้วให้เอาไปใส่ใน Code ของเราตรงไฟล์ Layout ใน Res คับ
ของผมคือ
[XML ใน Layout File]
<com.google.android.maps.MapView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="0MWZBHOMcDn3g9bxIQ0uLu-cPs1AxBoQDfGYTMw"/>
[ก่อนที่จะ Run ตัว MapView]
ต้องทำการสร้าง SDCard ตัวใหม่โดยระบุให้มีการใช้ API เป็น "Google API Level 4" ก่อนนะคับ มิงั้น Eclipse จะฟ้องและไม่ยอมโหลด Emulator ให้
อ้างอิง: การเตรียมเครื่องเพื่อการพัฒนาโปรแกรมบน Android (3/3) - [Activate ตัว Android Emulator]
ทำตามขั้นตอนนั้นละคับ แต่เปลี่ยน [Target] ให้เป็น "Android 1.6 – API Level 4"เวลารันไม่ต้องระบุอะไร ตราบเท่าที่ Eclipse สามารถหา SDCard ที่มี API ถูกตัว
[ถ้าพร้อมแล้ว]
ให้ทำการรันได้เลยครับ เครื่องต้อง online ได้นะคับ เมื่อตัว Emulator ขึ้นมาแล้วลองเล่นดู จะเห็นได้รำไรว่าอนาคตของมือถือ Android แล้วคับว่าจะมาแนวไหน
[ตอนหน้า (3/3)]
ขอโยกปุจฉาไปอยู่กับวิสัจชนาในตอนหน้ารวดเดียวเลยคับ
สวัสดี ปีเสือ