ผมต้องออกตัวก่อนนะครับว่า ไม่ได้เก่งในการเขียน Mobile Apps. เลยสักนิด เพียงแต่ได้ไปเข้าเรียนมา 2 วัน ผมรู้สึกว่าเป็นศาสตร์ที่น่าลองทำดู และไม่ควรให้มันจางหายไปหลังจากเรียน เดี๋ยววิทยากรจะเสียใจ อิๆ ผมจึงบันทีกไว้แบบใครอ่านแล้วไม่ชอบก็อย่าถือสาผมนะครับ
ลองทบทวนจากที่เรียนใน workshop
ติว “แนะนำและสอนการพัฒนาเบื้องต้นเกี่ยวกับ Application บนมือถือด้วย PhoneGap โดยใช้ HTML5 & Jquery Mobile”
สภาพแวดล้อม
– เป็นการติดตั้งทดสอบบน Windows 8 (32 bit) บนเครื่องโน้ตบุ๊ค HP ProBook 6450b RAM 4 GB
1. download JRE
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
32bit ได้ไฟล์สำหรับติดตั้ง jdk-7u25-windows-i586.exe
(64bit ได้ไฟล์สำหรับติดตั้ง jdk-7u25-windows-x64.exe)
รันไฟล์ดังกล่าวเพื่อติดตั้งลงในวินโดวส์
2. download ADT
http://developer.android.com/sdk/index.html
32bit ได้ไฟล์ที่ zip ไว้คือ adt-bundle-windows-x86-20130729.zip
(64bit ได้ไฟล์ที่ zip ไว้คือ adt-bundle-windows-x86_64-20130717.zip)
แตกไฟล์ดังกล่าวออกมาแล้ว
32bit ได้ไดเรกทอรี adt-bundle-windows-x86-20130729 ไว้ที่ C:\
(64bit ได้ไดเรกทอรี adt-bundle-windows-x86_64-20130717 ไว้ที่ C:\)
สร้าง shortcut ไปยังไฟล์ชื่อ eclipse.exe ในไดเรกทอรี eclipse ไว้บน Desktop
ทดสอบรันโปรแกรม eclipse
ตั้งชื่อ workspace ไว้ที่ C:\phonegap
3. สร้าง Andriod Device ในโปรแกรม Java – ADT
เมนู Windows > Android Virtual Device Manager
แท็บ Android Virtual Devices คลิก New…
ADV Name: ตั้งชื่อ ADV-7-inch
Device: เลือก Nexus 7
Target: เลือก Android 4.3 – API Level 18
(adt-bundle-windows-x86-20130729.zip จะได้ Android 4.3 – API Level 18)
Front Camera: None
RAM: 768
ทดสอบเปิด ADV-7-inch คลิก Start แล้วรอ ค่อนข้างนาน
4. สร้าง New Android Application
File > New > New Android Application
ตั้งชื่อว่า phonegappsu
ที่เหลือใช้ค่า default
หน้าต่อไป Create Project in Workspace
ตั้ง Location เป็นชื่อ C:\phonegap\phonegappsu
หน้าต่อไป ใช้ค่า default
หน้าต่อไป ใช้ค่า Blank Activity
หน้าต่อไป ใช้ค่า default (Activity Name: MainActivity)
คลิก Finish แล้วจะได้หน้าต่างของรายละเอียดเยอะแยะ
5. download phonegap
http://phonegap.com/install/ เลือก PhoneGap2.9.0
ได้ไฟล์ที่ zip ไว้คือ phonegap-2.9.0.zip
แตกไฟล์ดังกล่าวออกมาแล้ว ได้ไดเรกทอรี phonegap-2.9.0
6. ที่ Windows Explorer เข้าไปในไดเรกทอรี phonegap-2.9.0
ก็อปปี้เฉพาะไดเรกทอรี lib\android\example\assets\www
ที่รายการด้านซ้ายของโปรแกรม ADT คลิกขวาที่ phonegappsu > assets แล้ววาง www ไว้
ก็อปปี้เฉพาะไดเรกทอรี lib\andriod\xml
ที่รายการด้านซ้ายของโปรแกรม ADT คลิกขวาที่ phonegappsu > res แล้ววาง xml ไว้
ก็อปปี้เฉพาะไดเรกทอรี lib\android\cordova2.9.0.jar
ที่รายการด้านซ้ายของโปรแกรม ADT คลิกขวาที่ phonepagpsu > libs แล้ววาง cordova2.9.0.jar ไว้
รวมแล้วจะได้หน้าตาประมาณนี้
7. แก้ไขไฟล์ MainActivity.java ( ข้อนี้ต้องระวังการ copy แล้ว paste เครื่องหมายคำพูด และ ; )
ที่รายการด้านซ้ายของโปรแกรม ADT ใต้ Project ที่สร้าง
phonegappsu > src > com.example.phonegappsu> MainActivity.java
โดยคลิกขวา > ใช้คำสั่ง Open With > Text Editor
(1)แก้ไขบรรทัดเดิม public class MainActivity extends Activity
เป็น public class MainActivity extends DroidGap
(2)แก้ไขชุดบรรทัด import เดิมดังนี้
ลบบรรทัด import android.app.Activity;
เพิ่มบรรทัด import org.apache.cordova.*;
(3)แก้ไขบรรทัดที่มีคำว่า protected เป็น public
(4)ใส่ comment บรรทัด //setContentView(R.layout.activity_main);
(5)แล้วเพิ่มบรรทัด super.loadUrl(“file:///android_asset/www/index.html”);
จะได้ประมาณนี้
code
package com.example.phonegap; import android.os.Bundle; import org.apache.cordova.*; import android.view.Menu; public class MainActivity extends DroidGap { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); super.loadUrl("file:///android_asset/www/index.html"); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
8. ต้องแก้ไข AndroidManifest.xml
โดยคลิกขวา > ใช้คำสั่ง Open With > Text Editor
ใส่ Permission Tag ดังนี้
code
<uses-permission android:name="android.permission.VIBRATE"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.RECEIVE_SMS"/> <uses-permission android:name="android.permission.RECORD_AUDIO"/> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/> <uses-permission android:name="android.permission.READ_CONTACTS"/> <uses-permission android:name="android.permission.WRITE_CONTACTS"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.CAMERA"/>
ไว้ก่อนบรรทัดปิด Tag </manifest>
9. ติดตั้ง jquery.mobile
download phonegapcomponent (jquery.mobile)
เอาจาก facebook group ชื่อ phonegap for psu เลือก files (สามารถโหลดจาก http://jquerymobile.com/ ได้เลย)
ได้ไฟล์ที่ zip ไว้คือ PhoneGapComponent.zip
แตกไฟล์ดังกล่าวออกมาแล้ว ได้ไดเรกทอรี PhoneGapComponent
ที่ Windows Explorer เข้าไปในไดเรกทอรี PhoneGapComponent
ก็อปปี้เฉพาะไดเรกทอรี css และ js
ที่รายการด้านซ้ายของโปรแกรม ADT คลิกขวาที่ phonegappsu > assets > www แล้ววาง css กับ js ไว้
10. ทดสอบสร้าง Application จากตัวอย่าง index.html ที่ให้มา
จะได้ไฟล์ phonegappsu.apk
ที่รายการด้านซ้ายของโปรแกรม Eclipse ใต้ Project ที่สร้าง
assets > www > โดยคลิกขวาที่ไฟล์ index.html > ใช้คำสั่ง Open With > Text Editor
สั่ง Run
11. ในข้อถัดไปเป็นตัวอย่างใน workshop เอาไฟล์ตัวอย่างจากที่นี่
( https://sharedrive.psu.ac.th/public.php?service=files&t=04facfa02dc0204fadbf00925d3c431c )
12. ทดสอบด้วยตัวอย่างที่ 1 ชื่อ example1.html
(ตัวอย่างนี้จะเปิด dialog หลังจากเลือกเมนู และบางเมนูเมื่อเลือกก็จะซ่อนข้อความ)
นำไฟล์ตัวอย่าง example1.html ไปวางไว้ที่ phonegappsu > www
แก้ไขไฟล์ MainActivity.java
ที่รายการด้านซ้ายของโปรแกรม Eclipse ใต้ Project ที่สร้าง
phonegappsu > src > com.example.phonegappsu> MainActivity.java
แก้ไขบรรทัด super.loadUrl(“file:///android_asset/www/index.html”);
เป็น super.loadUrl(“file:///android_asset/www/example1.html”);
รันโปรเจกต์ ได้ผลแสดงบน ADV
13. ทดสอบด้วยตัวอย่างที่ 2 ชื่อ example2.html
(ตัวอย่างนี้จะมีปุ่ม back ให้ย้อนกลับได้)
นำไฟล์ตัวอย่าง example2.html ไปวางไว้ที่ phonegappsu > www
แก้ไขไฟล์ MainActivity.java
ที่รายการด้านซ้ายของโปรแกรม Eclipse ใต้ Project ที่สร้าง
phonegappsu > src > com.example.phonegappsu> MainActivity.java
แก้ไขบรรทัด super.loadUrl(“file:///android_asset/www/index.html”);
เป็น super.loadUrl(“file:///android_asset/www/example2.html”);
รันโปรเจกต์ ได้ผลแสดงบน ADV
14. ทดสอบด้วยตัวอย่างที่ 3 ชื่อ dbuser.html
(ตัวอย่างนี้ป้อนชื่อ นามสกุล เพศ เก็บลง sqlite database บน android และแสดงรายการ
ขอบคุณกิตติพัฒน์ อุบลกาญจน์ที่เป็นเจ้าของต้นฉบับไฟล์ที่แก้ไปเยอะจากที่วิทยากรให้ลองทำ)
นำไฟล์ตัวอย่าง dbuser.html ไปวางไว้ที่ phonegappsu > www
แก้ไขไฟล์ MainActivity.java
ที่รายการด้านซ้ายของโปรแกรม Eclipse ใต้ Project ที่สร้าง
phonegappsu > src > com.example.phonegappsu> MainActivity.java
แก้ไขบรรทัด super.loadUrl(“file:///android_asset/www/index.html”);
เป็น super.loadUrl(“file:///android_asset/www/dbuser.html”);
รันโปรเจกต์ ได้ผลแสดงบน ADV
15. หากต้องการทดสอบบน Android Smartphone เครื่องจริง ก็เอาไฟล์ phonegappsu.apk ไปใส่แล้วติดตั้ง
ซึ่งไฟล์อยู่ที่ phonegappsu > bin
ลองทำตามดูนะครับ