Android :: สร้าง App ดึงข้อมูลใน Contact Book มาใช้งาน
Posted by up1, Yesterday, 02:47 PM in Android
หลังจากที่ไปหาดู vdo ต่างๆ จาก Android Developer Channel ก็มาเจอ vdo นี้ A first hand look at building an Android application
ดังนั้นก็เลยตัดสินใจลอกเขามาสร้าง Android Application แรกของผมบ้างก็แล้วกัน
เริ่มกันเลยตาม VDO ทุกๆ ขั้นตอน
Software ที่ผมใช้ในการพัฒนา มีดังนี้
- Android SDK 1.5
- JDK 1.6/6
- Eclipse + Android Plugin
เริ่มการ coding ดังนี้
ชื่อ Activity คือ Hello_Android
ชื่อ package คือ up1.poc
1. แก้ไข file main.xml ดังนี้ [ มีส่วนแก้ไขนิดหน่อยคือ attribute ชื่อ id เปลี่ยนเป็น android:id ]
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Name: "
/>
<TextView android:id="@+id/row_entry"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
คำอธิบาย
สร้าง TextView ขึ้นมา 2 ตัวเพื่อแสดงข้อมูล โดยเรียงในแนวนอน ( horizontal )
2. ทำการ coding ใน class Hello_Android ดังนี้
private ListAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Cursor c = getContentResolver().query(People.CONTENT_URI, null, null,
null, null);
startManagingCursor(c);
String[] columns = new String[] { People.NAME };
int[] names = new int[] { R.id.row_entry };
adapter = new SimpleCursorAdapter(this, R.layout.main, c, columns,
names);
setListAdapter(adapter);
}
@Override
}
คำอธิบาย
แบ่งออกเป้นส่วนๆ ดังนี้
- ดึงข้อมูลใน Contact Book หรือชื่อติดต่อในเครื่องขึ้นมา ด้วย code ดังนี้
startManagingCursor(c);
- ทำการ mapping/binding ข้อมูลลงใน component ที่มี id = row_entry นั่นก็คือ TextView ที่กำหนดไว้นั่นเอง แล้วทำการเขียนข้อมูลลงยัง layout ที่กำหนด ดังนี้
int[] names = new int[] { R.id.row_entry };
adapter = new SimpleCursorAdapter(this, R.layout.main, c, columns,names);
setListAdapter(adapter);
- เมื่อทำการ click หรือเลือกไปยังชื่อไหนก็ตามจะทำการโทรไปยังเบอร์ของคนนั้นๆ ดังนี้
super.onListItemClick(l, v, position, id);
Intent i = new Intent(Intent.ACTION_CALL);
Cursor c = (Cursor)adapter.getItem(position);
String phoneId = c.getString(c.getColumnIndex(People.PRIMARY_PHONE_ID));
i.setData(Uri.withAppendedPath(Phones.CONTENT_URI, phoneId));
startActivity(i);
}
3. ยังไม่จบครับ จะต้องทำการกำหนด permission เพื่อให้สามารถดุงข้อมูลจาก Contact Book และการโทรออกเสียก่อน ซึ่งอยู่ใน file AndroidManifest.xml ดังนี้
ปล. attribute ใน tag uses-permission เปลี่ยนจาก id เป็น android:name แทน
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="up1.poc" android:versionCode="1" android:versionName="1.0">
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<application android:icon="@drawable/icon"
android:label="@string/app_name">
<activity android:name=".Hello_Android"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
4. เมื่อเสร็จสิ้นทุกอย่างแล้ว ก็ทำการ ติดตั้งและ run emulator ทันทีจะได้ผลการทำงานดังนี้
เมื่อเลือกชื่อที่ต้องการ จะทำการโทรออกไปยังเบอร์ของคนนั้นทันที ดังรูป
เท่านี้ก็ได้ App ที่ลอกชาวบ้านเขามาแล้วครับ .... ดูแล้วไม่น่ายากเท่าไร
... ช่วงแรกๆ ก้ต้องเขียนอะไรที่ให้กำลังใจตัวเองก่อนครับ ...
Groovy:: Code Snippet
Posted by up1, Yesterday, 12:46 AM in Groovy and Grails
Code ของ Groovy
delegate * 60
}
Integer.metaClass.getMinutes = { ->
delegate
}
println 1.hour + 30.minutes
การ config HTTPS/SSL ใน Tomcat
Posted by up1, Jul 1 2009, 10:58 PM in Tomcat
ได้ requirement มาว่าจะต้องให้ระบบทำงานผ่าน HTTPS protocol เพื่อความปลอดภัยของข้อมูลในระดับหนึ่ง
จากการที่วางระบบจะใช้ Apache Tomcat 6 เป็น Web Server ดังนั้นจึงต้องมาปรับแต่งให้สนับสนุน HTTPS หรือ SSL นั่นเอง
มีขั้นตอนดังนี้
1. ไปอ่านเอกสารที่นี่ http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html
2. ทำตามเอกสาร ดังนี้
2.1 สร้าง Certificate Keystore ด้วย keytool ดังนี้
\path\to\my\keystore คือ file ที่จะทำการสร้างขึ้นมา
ปล. ถ้าเคยสร้างมาแล้ว แต่ต้องการลบทิ้ง เพื่อสร้างใหม่ใช้คำสั่งดังนี้
2.2 ทำการแก้ไข server.xml ใน folder %CATALNA_HOME%\conf โดยการเอา comment ในส่วนนี้ออก และปรับแต่งนิดหน่อยดังนี้
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="\path\to\my\keystore" keypass="your_password" />
2.3 ลอง Restart Tomcat ขึ้นมา จะพบว่าสามารถเข้าใช้งานได้ทั้ง
- http://localhost:8080/
- https://localhost:8443/
2.4 แต่ใน Project ที่ต้องการสร้างนั้นจะให้เข้าได้เฉพาะ HTTPS เท่านั้น ดังนั้นจึงต้องเพิ่ม config นี้ใน file web.xml ของ Project ด้วย ดังนี้
<web-resource-collection>
<web-resource-name>Protected Context</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
แล้ว Restart Tomcat อีกครั้งจะพบว่าจะ redirect มาที่ HTTPS เสมอครับ
Android :: เพิ่ม SD Card ให้ Emulator
Posted by up1, Jun 30 2009, 08:03 PM in Android
โดยทั่วไปแล้วนั้น Emulator ที่ Android SDK เตรียมมาให้นั้นจะไม่มี SD Card มาให้ด้วย ดังนั้น เรามาลองเพิ่ม SD Card ให้ emulator กัน
ผมลองค้นหาไปค้นหามา พบว่ามันมีขั้นตอนเท่านี้เอง
1. สร้าง SD Card ขึ้นมาด้วยคำสั่ง mksdcard โดยจะสร้าง SD Card ชื่อว่า mySDCard ซึ่งมีความจุ 128 MB ดังนี้
ผลการทำงาน
- จะสร้าง file ชื่อว่า mySDCard ขึ้นมา
2. ทำการ run emulator ด้วย parameter ชื่อ -sdcard ดังนี้
ระบบจะทำการสร้าง folder ชื่อ mySDCard.lock ขึ้นมา
3. ผลการทำงาน เราสามารถเข้าไปดูใน setting ได้ว่ามี SD Card ขนาด 128 MB มาให้ใช้แล้ว ดังรูป
4. ลองไปที่ command แล้วพิมพ์ [ ต้องเปิด Emulator ค้างไว้นะครับ ]
แล้วจะเข้ามาที่ # แล้วให้พิมพ์
จะเห็น folder sdcard ขึ้นมาครับ
5. ไหนๆ ก็ไหนๆ แล้วลองเพิ่ม fle ลงใน sdcard กันดูครับ โดยผมจะเพิ่ม mp3 เอาไปฟังผ่าน player ของ emulator กัน ด้วยคำสั่ง
แล้วทำการ start emulator ด้วย -sdcard ขึ้นมาแล้วเข้าไปที่ music จะสามารถฟังเพลงได้ดังรูปครับ
ซึ่งต่อไปเราจะเริ่มพัฒนา Application บน android กันแล้ว ... แต่รู้สึกว่ายังเหลือเรื่องภาษาไทยบน emulator ที่ยังไม่ได้ทำ ...แต่ว่าทำยังไงล่ะ
Android :: พัฒนา HelloWorld Application แบบท่ายาก
Posted by up1, Jun 29 2009, 05:51 PM in Android
หลังจากที่ทำการติดตั้งและลองใ้ช้งาน Emulator ของ Android มาแล้วจากบทความนี้
ถึงเวลาที่จะสร้าง Application เพื่อติดตั้งและทำงานใน emulator กันบ้าง ....
หลังจากไปดุในเอกสารการพัฒนาพบว่า วิธีการง่ายที่สุดคือ ใช้ Eclipse + plugin เท่านั้นจบ แต่ผมไม่เอาตรงนั้นมานำเสนอ เพราะว่าลองทำแล้วมันง่ายไป ดังนั้นจึงขอเสนอท่ายากในการสร้าง HelloWorld Application กันดีกว่า
1. ใช้ command line ในการสร้าง Android Application
2. ใช้ Ant ในการ compile, build application
เริ่มกันเลยดีกว่า ....
1. Software Requirement
- JDK 5 หรือ 1.5 ขึ้นไป โดยในตัวอย่างผมใช้ JDK 6 หรือ 1.6
- Apache ANT โดยในตัวอย่างผมใช้ version 1.7.1
ติดตั้งทุกอย่างให้เรียบร้อย พร้อมใช้งานผ่าน command line ได้
2. สร้าง Android Application ชื่อว่า HelloWorld ดังนี้
--package up1.poc
--activity HelloWorld
--target 2
--path C:\Android_demo\HelloWorld
ผลการทำงานเป็นดังรูป
อธิบายคร่าวๆ
- สร้าง folder ขึ้นมาดังนี้ bin, gen, libs, res, src, test
- file build.xml ทำให้เรารู้ว่าต้องใช้ ANT แน่ๆ
- จะสร้าง file up1/poc/HelloWorld.java ใน folder src
3. ทำการแก้ไข File /src/up1/poc/HelloWorld.java เพื่อให้แสดงคำว่า Hello World ขึ้นมาเท่านั้นเอง ดังนี้
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloWorld extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText("Hello World");
setContentView(tv);
}
}
4. ทำการ Compile และ Build Application ด้วยคำสั่ง
>ant debug
>ant release
ทั้ง 2 ชุดคำสั่งจะทำการ compile และสร้าง file HelloWorld-debug.apk และ HelloWorld-unsigned.apk ตามลำดับ
แต่ถ้าเกิดปัญหาพวก
ให้ไปลบ file C:\Documents and Settings\<user>\.android\debug.keystore ออกก่อนแล้ว run ชุดคำสั่งใหม่
5. ทำการติดตั้ง Hello Application และใช้งานกัน
ก่อนอื่นจะต้องทำการ signing security ให้กับ file apk ก่อน ซึ่งจะได้ดังนี้
5.1 ทำการ copy file /bin/HelloWorld-unsigned.apk มาไว้ที่ Application Home หรือ C:\Android_demo\HelloWorld นั่นเอง แล้ว rename เป็น HelloWorld.apk
5.2 ทำการสร้าง Private Key ด้วยชุดคำสั่ง keytool ดังนี้
5.3 ทำการ signing application ด้วยคำสั่ง jarsigner ดังนี้
ผลการทำงานเป็นดังรูป
5.4 Run Emulator ที่สร้างไว้ก่อนหน้านี้แล้ว
>emulator @UP1VM
5.5 ทำการติดตั้ง HelloWorld ลงใน emulator ด้วยชุดคำสั่ง
หรือถ้าเป็นการ re-install ใช้ชุดคำสั่งดังนี้
ผลการทำงานเป็นดังรูป
ส่วนการใช้งานใน emulator เป็นดังรูป
เท่านี้ก็สามารถสร้าง HelloWorld Application บน Android ได้แล้วววว ...... แบบท่ายากมันอาจจะยากไปสักหน่อย แต่ก็ทำให้เข้าใจการทำงานหลายๆ อย่างเช่นกัน
.... จบบทความนี้ก็ไปพัฒนาบน Eclipse ดีกว่า ....
ลองติดตั้ง Palm Mojo SDK version 0.3.4 กันดู
Posted by up1, Jun 29 2009, 02:43 PM in WebOS
หลังจากที่ Palm Mojo SDK version 0.3.4 มันหลุดออกมาแบบตั้งใจหรือไม่ตั้งใจก็ตาม เห็นคนอื่นๆ เขาลองเอามาติดตั้งและ preview กันแล้วบ้าง ผมก้ขอเลียนแบบบ้าง
แต่ว่าจะเริ่มกันยังไงล่ะ ....
ก่อนอื่นเริ่มจากต้องเตรียมหรือ Download Software ที่จำเป็นต้องใช้กันก่อน มีดังนี้
1. Palm Mojo SDK version 0.3.4 จากบรรดา Link ที่ปล่อยออกมาจากบทความที่ผ่านมาของผม http://www.narisa.com/blog/up1/index.php?showentry=2095
2. Sun VirtualBox version 2.2.4
3. JDK 1.6 หรือ 6
เมื่อได้ software มาครบแล้วก้ติดตั้งกันเลยครับ click , next next next .... กันไปจนจบ....
หลังจากติดตั้งเรียบร้อยจะมี shortcut ของ Palm Emulator ขึ้นมา ก็กดเข้าไปครับ จะเจอหน้าจอดังนี้
:: จะ run ใน VirtualBox ::
ต่อมาจะเริ่มกระบวนการ Boot ซึ่งมีหน้าตาเหมือนการ Boot ของ Linux เลย เนื่องจากมันคือ Linux นั่นเอง
ผ่านขั้นตอนการ Boot ก็จะแสดงโลโก้ของ Palm ดังรูป
ก่อนจะเข้าใช้งาน Palm จะเปล่งแสงออกมาดังรูป
เข้าสู่หน้าแรกแล้วววววว มีเมนูหลักๆ ให้ใช้คือ การโทร, contact address, mail, calendar
แต่เสียใจกับภาษาไทยด้วย ที่อ่านไม่ได้ครับ
นี่ก็แค่การติดตั้งและใช้งานผ่าน emulator เบื้องต้นครับ ต่อไปคงมีอะไรดีๆ มาฝากกันอีก
Resources
http://www.pawinpawin.com/2009/06/palm-webos.html
http://preinsiders.com/forum/viewtopic.php?f=12&t=23
WebOS :: Mojo SDK หลุดออกมาแล้วว
Posted by up1, Jun 29 2009, 02:16 AM in WebOS
ช่วงหลังๆ เห็นข่าวคราวของ Palm Pre ออกมามาเรื่อยๆ ซึ่งอ่านไปอ่านมาก็น่าสนใจดี [ แต่ยังใช้งานในไทยไม่ได้เนื่องจากไม่มีรุ่นที่สนับสนุน GSM ]
หลังจากที่ปล่อย Palm Pre ออกมาขายแล้ว คำถามที่บรรดานักพัฒนาถามหาคือ SDK ที่ใช้พัฒนาล่ะ ไม่ปล่อยออกมาบ้างหรอ ??
ทำความเข้าใจก่อนว่า
- OS ที่ Palm Pre ใช้คือ WebOS ดัดแปลงจาก Linux ใช้ kernel 2.6.24 ที่มีการปรับให้เข้ากับ CPU และ hardware ต่าง ๆ
- SDK ที่ใช้ในการพัฒนา application คือ Mojo SDK
เมื่อทำการเปิด Sourcecode ของ WebOS ที่ http://opensource.palm.com/packages.html แล้ว
ต่อมาก็เหลือ Mojo SDK ว่าเมื่อไรจะเปิดให้ Download เพื่อให้บรรดานักพัฒนาได้ยลโฉมกันสักที
ทาง Palm ได้ออกข่าวมาว่าจะทำการเปิดให้ download Mojo SDK ประมาณปลายเดือนกันยายน แต่ที่ไหนได้ดันมี Mojo SDK หลุดออกมาก่อนซะงั้น ซึ่งสามารถทำการ Download ได้จาก
Rapidshare
Torent (mininova)
My Unspace
2Shared
Mediafire
ในไทยก็มีคน review ตัว Mojo SDK แล้วเช่นกันที่นี่ http://www.pawinpawin.com/2009/06/palm-webos.html
ส่วนข่าวคราวต่างๆ ของ Palm Pre, WebOS สามารถติดตามได้จากที่นี่ครับ
http://www.webos.in.th/
http://www.palmpre.in.th/
Thai Resources
http://www.blognone.com/node/12201
http://www.blognone.com/node/12095
http://www.blognone.com/node/12103
http://www.pawinpawin.com/2009/06/palm-webos.html
English Resources
http://preinsiders.com/home/2009/06/19/pal...-end-of-summer/
http://preinsiders.com/home/2009/06/26/pal...ked-to-the-web/
http://preinsiders.com/home/2009/06/26/pal...ked-to-the-web/
I Love Living Life. I Am Happy.
Posted by up1, Jun 29 2009, 12:34 AM in It's me
I Love Living Life. I Am Happy.
เพื่อสร้างกำลังใจให้กับคนที่ล้มทุกท่านๆ เพื่อพร้อมที่จะลุกขึ้นมาสู้ใหม่อีกครั้ง
version นี้ 7.02 นาทีครับ
http://www.youtube.com/watch?v=H8ZuKF3dxCY
หรือเข้าไปติดตามข่าวสารได้ที่นี่ครับ http://lifewithoutlimbs.org/
รู้จักเทคโนโลยี 100 ตัวประจำปี ในคำพูดง่ายๆ ผ่านปลายปากกานักเรียน
Posted by up1, Jun 26 2009, 01:32 AM in Web Technologies
นั่งอยู่เฉยๆ ก็เห็นคนใน twitter ทำการ tweet มาว่า
เห็นปุ๊บน่าสนใจนะ เลยเข้าไปดูที่ http://search.twitter.com/search?q=anywaylearning
พอไปนั่งอ่านก็ได้เปิดหูเปิดตาอีกเยอะครับ .....
ตัวอย่างข้อมูล
ask.com: เว็บที่เปิดให้บริการค้นหา และสืบเสาะข้อมูลคล้ายกูเกิล ก่อนหน้านั้นเคยใช้ชื่อว่าaskjeeves.com ก่อตั้งขึ้นเมื่อปี 2539
skype=ซอฟแวร์ประยุกต์ใช้โทรไปต่างประเทศหรือส่งข้อความ ซึ่งสามารถส่งหรือโทรเข้ามือถือจริงได้ บางแห่งไม่เสียค่าโทร ใช้ประชุมได้
Grooveshark คือเว็บไซต์ที่ให้บริการฟังเพลงออนไลน์ซึ่งสามารถแชร์เพลง สร้างplaylist คล้ายๆ กับimeem และยังเป็นสังคมออนไลน์ด้วย
JamLegend:เว็บไซต์เกมส์ที่เหมือนเกมส์ guitar hero โดยใช้กดปุ่ม1-5 แทนการดีดกีตาร์ มีการ Up Level และมีเพลงให้เลือกเล่นมากมาย
eHow:เว็บไซต์แนว How to เป็น Social media ที่มีประโยชน์และมีคนนิยมมาก ไม่ว่าคุณจะอยากรู้วิธีการทำอะไรก็สามารถค้นหาได้จากในนี้
Xmarks:เดิมชื่อFoxmarks บริการเก็บที่คั่นหน้าข้ามเครื่อง เป็น add-on ยอดนิยมของ Firefoxรวมทั้งบริการค้นหา-แนะนำเว็บไซต์ด้วย
Photobucket:เว็บให้บริการฝากรูปและวิดีโอฟรี สามารถแต่งรูปได้ในเว็บและแชร์ใหกับคนทั่วไป พื้นที่ฟรี1GB มากกว่านี้ต้องจ่ายตังค์
Meeboคือเว็บที่ให้บริการฟรีออนไลน์IMผ่านเว็บเบราว์เซอร์เช่น MSN Yahoo! ซึง Meebo จะทำการจดจำชื่อและรหัสผ่าน IM ทุกตัวที่เรามี
Hulu: เป็นเว็ปที่คล้ายกับyoutubeแต่ดีกว่าเพราะคุณภาพดีกว่าและยังเอาหนังหรือคลิปต่างๆจา
กFox,CBS และ NBC มาให้ชมในเว็ปไซต์ด้วย
Flickr:เป็นเว็บไซต์ที่สามารถแชร์รูป ให้คนที่เข้ามาดูได้อย่างง่ายดาย โดยผู้ใช้งาน flickr ต้องสมัครเป็นสมาชิกของ yahoo.com ก่อน
Android :: ลองติดตั้งและ run Android Emulator
Posted by up1, Jun 24 2009, 06:22 PM in Android
หลังจากพอมีเวลาว่างบ้างก็เลยหาอะไรสนุกๆ ทำกันดีกว่า
เริ่มที่ Android กันเลยดีกว่า
สาเหตุที่มาลองเขียน Android คือ
1. มันเป็น Opensource
2. ฟรี
3. Communities ใหญ่ดี
4. ว่าจะลอง iPhone App แต่ไม่มีปัญหาไปซื้อเครื่อง Mac มาใช้
5. เคยพัฒนา JavaMe App มาบ้าง ซึ่งเป็น java ดังนั้น Android ก็ไม่น่าทิ้งเพราะว่ามันคือ Java
เริ่มเล่นกันเลยดีกว่า ...
Resources ที่ผมใช้คือ
1. Windows XP
2. Android-sdk-windows-1.5_r2 โดยทำการ Download จากที่นี่ http://developer.android.com/sdk/1.5_r2/index.html
3. JDK 1.5
ขั้นตอนการติดตั้ง
1. ทำการ extract ออกมาเท่านี้ก็เป็นอันเสร็จสิ้นครับ ง่ายมากๆ
โดยผมกำหนดให้เป็น ANDROID_HOME แล้วกัน ภายในจะมี folder ดังนี้
- add-ons
- docs
- platforms
- tools
- usb_driver
2. ต่อไปเรามาลองเข้าใช้งาน emulator กันดีกว่า ...
2.1 ไปที่ cmd แล้วไปที่ folder %ANDROID_HOME%\tools
>cd %ANDROID_HOME%\tools
2.2 ดูว่า SDK ตัวนี้มี target อะไรบ้าง
> android list targets
ผลการทำงานเป็นดังรูป
2.3 ทำการสร้าง Emulator โดยกำหนด target ไปตามข้อ 2.2 ซึ่งในเครื่องผม target 2 คือ Android 1.5
>android create avd --name UP1VM --target 2
ผลการทำงานเป็นดังนี้
Do you wish to create a custom hardware profile [no] no
Created AVD 'Up1VM' based on Android 1.5
2.4 ทำการ run emulator ชื่อ UP1VM ดังนี้
> emulator @Up1VM
จะแสดงผลดังนี้ .... รอ boot นานหน่อยนะครับ ... ทนๆ กันหน่อย
เท่านี้ก็เข้าไปดูตัว emulator ได้แล้วครับ ดังรูป
... ต่อไปเราจะมา helloworld app กับ Android กันครับ ....











on I Love Living Life. I Am Happy.