ป้ายกำกับ

แสดงบทความที่มีป้ายกำกับ Android แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ Android แสดงบทความทั้งหมด

วันจันทร์ที่ 3 ตุลาคม พ.ศ. 2559

Writing Java Desktop Application with Android Studio

วันนี้พอจะมีเวลาและอยากจะเขียนโปรแกรมที่ติดค้างมานานแล้ว เป็นโปรแกรมภาษา Java และจะเขียนแบบง่ายๆเป็น Desktop Application แต่เนื่องจากห่างหายจากการเขียนแบบนี้มานานมาก เมื่อก่อนเคยใช้ NetBeans เขียนเป็นประจำ แต่ว่า ตั้งแต่บริษัท Sun Microsystems ขายกิจการไปให้บริษัท Oracle Corporation (ปีคศ. 2010) มันเหมือนเรารู้สึกเคว้งคว้างไปด้วย ไม่รู้ว่าอนาคตของภาษา Java จะเป็นอย่างไร ตั้งแต่นั้นก็ไม่ได้ใช้ NetBeans อีกเลย ก็หันมาใช้ Eclipse อยู่พักหนึ่ง แต่ก็ไม่ค่อยถูกใจมากนัก สุดท้าย 2-3 ปีมานี้ หันมาจับ Android Studio เสียส่วนใหญ่ วันนี้ก็เลยคิดอยากจะเขียน Java Desktop Application ด้วย Android Studio ขึ้นมา

เอ้า พอลองค้นๆดูว่าทำได้หรือเปล่า ก็พบว่ามีคนแนะนำไว้พอสมควรครับ แต่จะนำมาสรุปบันทึกไว้เพื่อช่วยจำและจะได้เป็นประโยชน์กับคนอื่นๆดังนี้

Create New Module

ปกติแล้ว Project ที่เราสร้างด้วย Android Studio นั้น จะเป็น Android Application ซึ่งเมื่อสร้างแล้วจะได้ Module แรกชื่อ app ขึ้นมา ในกรณีนี้ เราจะไม่ใช้ Module นี้ บางความเห็นที่ค้นๆมาบอกว่าให้ลบทิ้ง แต่ผมคิดว่าไม่จำเป็นต้องลบทิ้ง เผื่อว่าเราอาจจะเปลี่ยนใจพัฒนาเป็น Android Application ก็จะได้ไม่ต้องสร้างใหม่ให้ยุ่งยาก ก็ปล่อยไว้แบบนั้นไปก่อน

เมื่อต้องการสร้าง Java Application เราจะใช้วิธีสร้าง Module ใหม่ โดยเลือกเมนู File/New/New Module แล้วเลือก Module แบบ Java Library ดังภาพ
จากนั้นก็กรอก Library name (ชื่อของ Module) Java package name (ชื่อ Package หลัก) และ Java class name ชื่อคลาสไฟล์ที่จะถูกสร้างขึ้นไฟล์แรก

Set Main Class

เมื่อสร้าง Module เสร็จเรียบร้อยแล้ว เราจะได้คลาสไฟล์แรกมาด้วย ถ้าต้องการให้ไฟล์นี้เป็นโปรแกรมหลัก ให้เพิ่มฟังก์ชัน main() ไว้ที่ไฟล์นี้ เช่น
package com.example;

public class MyClass {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}
เมื่อเขียน main() เสร็จแล้วควร Build ด้วยเมนู Build/Make Module ... เสียก่อน จากนั้น เราจะสามารถรันโปรแกรมได้จากเมนู Run/Run... จะปรากฎป๊อบอัพเมนูให้เลือกรัน MyClass ดังภาพ
หากเคยเลือกรันไปแล้วครั้งหนึ่ง จะปรากฏชื่อคลาสตรงปุ่มข้างๆปุ่มรันที่ Toolbar ดังภาพ
แต่หากไม่ปรากฎชื่อคลาสหลักเพื่อจะรันโปรแกรม เราก็สามารถสร้างใหม่เองได้ด้วยการเลือก Edit Configurations... แล้วเพิ่ม Configuration แบบ Application ด้วยการกดปุ่มเครื่องหมาย + ตรงมุมบนซ้าย
กำหนด Name และ Main class ให้ถูกต้อง ก็จะได้ Configuration สำหรับรันโปรแกรมหลัก

Create Jar File with Dependencies

ปกติแล้วเมื่อ Build Module แล้วจะได้ Jar ไฟล์ของโปรแกรมอยู่ในโฟลเดอร์
<โปรเจ็คโฟลเดอร์>/<โมดูลโฟลเดอร์>/build/libs
เช่น AndroidStudioProjects/MyApplication/lib/build/libs เป็นต้น
แต่หากโปรแกรมมีการเรียกใช้ Library อื่นๆด้วย Jar ไฟล์ของ Library ที่จำเป็นต้องใช้งานร่วมกันนั้น อาจจะไม่ได้รวมอยู่ใน Jar ไฟล์เดียวกัน ซึ่งจะทำให้ไม่สะดวกในการนำไปใช้งานก็เป็นได้ ซึ่งเราสามารถเพิ่ม Task สำหรับการสร้าง All-in-One Jar ไฟล์ได้ ด้วยการแก้ไขไฟล์ build.gradle script ของโมดูลนี้ โดยเพิ่ม Task ชื่อ fatJar ดังนี้
version='1.0' 
task fatJar(type: Jar) {
manifest {
        attributes 'Implementation-Title': 'MyClass Jar File Example',
        'Implementation-Version': version,
        'Main-Class': 'com.example.MyClass'
    }
    baseName = project.name + '-all'
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    with jar
}
 เมื่อเพิ่ม Task ชื่อ fatJar เข้าไปแล้ว และสามารถ Sync Gradle ได้อย่างถูกต้อง เราจะพบชื่อ Task นี้ในหน้าต่างของ Gradle Properties ดังภาพ
ซึ่งสามารถเรียกใช้ได้ด้วยการ Double-Click ที่ชื่อ หรือคลิ๊กเมาส์ปุ่มขวาแล้วเลือกเมนูรันได้เลย ซึ่งผลลัพธ์จะได้ Jar ไฟล์อยู่ในโฟลเดอร์เดียวกับ Jar ไฟล์ปกติ แต่ชื่อไฟล์จะมี -all เพิ่มเข้ามา

อ้างอิง

วันศุกร์ที่ 21 มีนาคม พ.ศ. 2557

Setup Android on Ubuntu

ตั้งแต่ที่ผมได้ทดลองเขียนโปรแกรมบน Android ครั้งแรกก็นานมากแล้ว หลายๆอย่างเปลี่ยนไปเร็วมาก จาก Android เวอร์ชั่น 2.3 มาตอนนี้เป็นเวอร์ชั่น 4.4 ดูตัวเลขแล้วก็ไม่ได้มากมายอะไรเลย แต่ถ้านับเป็นรุ่นของ Platform API ก็คือตั้งแต่ Platform API 10 (2.3.3) มาเป็น Platform API 19 (4.4.2)  ผ่านไปตั้งเกือบ 10 รุ่น ทำให้หลายๆคนก็ท้อแท้ไปเลยก็มี เพราะว่าตามไม่ทันจริงๆ สำหรับผมนั้น ขอเรียกว่าตามดูอยู่ห่างๆก็แล้วกัน พอดียังไม่ค่อยจะมีงานที่ต้องใช้ จึงยังไม่ทุ่มเทเวลาให้มันมากนัก วันนี้พอจะมีเวลา ก็เลยลองกลับมารื้อฟื้นความจำสักหน่อย แต่บังเอิญเครื่องที่ใช้อยู่ไม่ได้ลงโปรแกรมไว้ ก็เลยต้องเริ่มต้นใหม่ตั้งแต่การติดตั้งกันเลย

เครื่องที่ผมใช้เป็น Ubuntu 12.04 LTS ติดตั้ง Eclipse 3.7.2 ซึ่งเป็น Eclipse ที่มากับ Ubuntu นะครับ ผมจะเน้นใช้ Package ที่มาพร้อมกับ OS มากกว่าการดาวโหลด Eclipse มาใหม่ๆ เพราะมักจะเจอปัญหาเข้ากันไม่ได้กับ Package โน่น นั่น นี่ ทำให้เราปวดหัว แต่ถ้าจำเป็นจริงๆ ผมก็จะใช้ตัวใหม่นะครับ

ADT (Android Developer Tools)

Android Developer Tools หรือเรียกย่อๆว่า ADT นั้น เป็นเครื่องมือสำหรับพัฒนาโปรแกรมบน Android ซึ่งทั้งหมดจะประกอบไปด้วย
  • Eclipse + ADT Plugin: Eclipse IDE ที่ติดตั้ง ADT Plugin เพื่อให้ Eclipse เชื่อมต่อกับ Tools ต่างๆของ Android ได้
  • Android SDK Tools: ประกอบไปด้วยเครื่องมือต่างๆสำหรับการพัฒนา ทดสอบ และดีบั๊กโปรแกรม เช่น ตัว emulator เป็นต้น เครื่องมือเหล่านี้จะอยู่ในโฟลเดอร์ <ANDROID_SDK>/tools
  • Android Platform Tools: ประกอบไปด้วยเครื่องมือที่ขึ้นอยู่กับแพล็ตฟอร์มสำหรับการพัฒนา ทดสอบ และดีบั๊กโปรแกรม เช่น ตัว debugger เป็นต้น เครื่องมือเหล่านี้จะอยู่ในโฟลเดอร์ <ANDROID_SDK>/platform-tools
  • Android Platform: ประกอบไปด้วย API Library ต่างๆของ Platform แต่ละรุ่น โดยเฉพาะไฟล์ android.jar โดยเราสามารถเลือกรุ่นที่เราต้องการพัฒนามาติดตั้งไว้ได้ (แต่ควรเป็นรุ่นล่าสุด) ซึ่งจะอยู่ในโฟลเดอร์ <ANDROID_SDK>/platforms/android-<รุ่น>
  • Android System Image: ประกอบไปด้วย Image ไฟล์ของ OS บนแต่ละสถาปัตยกรรม เช่น ARM หรือ x86 เป็นต้น โดยแยกเป็น Platform แต่ละรุ่น ซึ่งเราสามารถเลือกรุ่นที่เราต้องการพัฒนามาติดตั้งไว้ได้ (แต่ควรเป็นรุ่นล่าสุด) ซึ่งจะอยู่ในโฟลเดอร์ <ANDROID_SDK>/system-images/android-<รุ่น>
ทั้งหมดที่แจกแจงไปนั้นเป็นเฉพาะเครื่องมือที่จำเป็นสำหรับพัฒนาเท่านั้นนะครับ แต่จริงๆแล้ว สิ่งที่ขาดไม่ได้เลยสำหรับนักพัฒนาก็คือ คู่มือ ครับ เพราะมีคำสั่งมากมายที่เราเองก็ไม่เคยจำได้ ต้องเปิดคู่มือเป็นประจำ แต่ส่วนใหญ่เท่าที่พบเห็นมือใหม่ทั้งหลาย เมื่อติดตั้ง IDE เสร็จแล้ว ก็ไม่ค่อยจะสนใจติดตั้ง API Document กันเลย เวลาเขียนโปรแกรมก็เลยต้องเปิดบราวเซอร์ไปด้วยเขียนโปรแกรมไปด้วย จริงๆแล้ว ถ้าสามารถติดตั้งได้ เช่น มีเนื้อที่ใน HDD เหลือเฟือ ก็ควรจะติดตั้งไว้ในเครื่องด้วย จะได้ไม่ต้องต่ออินเตอร์เน็ตอยู่ตลอดเวลาที่พัฒนาโปรแกรมครับ อีกทั้งส่วนใหญ่ IDE เก่งอย่าง Eclipse จะสามารถดึงเอาคำอธิบายใน Document มาให้เราอ่านได้ทันทีที่เราพิมพ์คำสั่งที่ต้องการ จะสะดวกมากๆเลยจริงๆครับ

Setup

เมื่อเรารู้แล้วว่าเครื่องมือต่างๆที่จำเป็นจะต้องมีอะไรบ้าง ต่อไปก็ถึงขั้นตอนการติดตั้ง ซึ่งจริงๆแล้วก็ไม่ได้ยุ่งยากอะไร เพราะ Google ได้จัดทำ package สำเร็จรูปไว้แล้ว ผมจึงขอแยกวิธีการติดตั้งออกเป็น 3 วิธีนะครับ
  1. Bundle: เป็น package ที่มีทุกอย่างทั้ง Eclipse และ SDK ครบถ้วน บีบอัดไว้อยู่ในไฟล์เดียว สามารถดาวโหลดมาแล้วแตกไฟล์ออกมา และใช้งานได้เลยทันที โดยเข้าไปที่โฟลเดอร์ eclipse แล้วรันโปรแกรม eclipse เท่านี้ก็พัฒนาโปรแกรมได้เลย ทำให้สะดวกใช้มาก แต่ก็มีข้อเสียคือ เราแทบจะไม่รู้อะไรเลย
  2. Existing IDE: หากเรามี Eclipse อยู่แล้ว ก็สามารถติดตั้งทุกอย่างลงใน Eclipse ที่มีอยู่ได้เลย เพราะ Eclipse ออกแบบมาให้สามารถเพิ่มเติมความสามารถต่างๆได้ด้วย plugin ทำให้เราไม่ต้องมี Eclipse อยู่ถึงสองตัวในเครื่องเดียว ส่วนวิธีการนั้น จะขออธิบายในหัวข้อถัดไปนะครับ
  3. Android Studio: เป็น package แบบใหม่ที่คล้ายกับ Bundle คือมีทุกอย่างครบถ้วนใน package เดียว เพียงแต่ใช้กับ IntelliJ IDEA ซึ่งเป็น IDE ของ JetBrains ใครชอบ IDE ตัวนี้ก็สามารถดาวโหลดมาทดลองใช้ได้เลยนะครับ จริงๆแล้วผมเองไม่ค่อยประทับใจ Eclipse มากสักเท่าไรครับ ภาพข้างล่างนี้คือหน้าตาของ Android Studio แต่ผมยังไม่มีเวลาทดลองใช้ แค่รันดูเฉยๆครับ
Android Studio

Existing IDE Setup

หากมี Eclipse อยู่แล้ว (ซึ่งผมต้องการใช้ Eclipse ที่มีมากับ Ubuntu ตามที่ได้เกริ่นไว้) ขั้นตอนแรกเลยก็คือการติดตั้ง ADT Plugin ซึ่งจะเป็นตัวเชื่อมทุกอย่างเข้ากับ Eclipse โดยเราสามารถเลือกเมนู Help/Install New Software ใน Eclipse จากนั้นกดปุ่ม Add เพื่อเพิ่ม Repository โดยอาจจะตั้งชื่อว่า ADT Plugin และป้อน URL ดังนี้
https://dl-ssl.google.com/android/eclipse/
เมื่อติดตั้ง Plugin เสร็จแล้ว restart Eclipse จะปรากฎหน้าต่าง "Welcome to Android Development"  และให้เราป้อนโฟลเดอร์ของ Android SDK ซึ่งมีสองทางเลือก คือ ป้อนโฟลเดอร์ใหม่ โดยจะดาวโหลด Android SDK มาติดตั้ง หรือ เลือกโฟลเดอร์ที่เราได้แตกไฟล์ Android SDK ที่ดาวโหลดมาไว้แล้ว ในกรณีนี้ ผมยังไม่เคยแนะนำให้ดาวโหลด Android SDK มาก่อน จึงเลือกที่จะป้อนโฟลเดอร์ใหม่ให้ดาวโหลดมาติดตั้ง ซึ่งเมื่อติดตั้งเสร็จ จะปรากฎหน้าต่าง Android SDK Manager ดังภาพ
Android SDK Manager
ใน Android SDK Manager นี้ เราสามารถเลือกที่จะติดตั้ง Tools และ Platform ต่างๆได้ โดย Tools ที่จะต้องติดตั้งหลักๆก็คือ SDK Platform และ Build ส่วน Platform API ให้เลือกรุ่นที่ตรงกับอุปกรณ์เป้าหมายที่โปรแกรมของเราจะนำไปติดตั้ง สามารถเลือกติดตั้งไว้หลายๆรุ่นก็ได้ แล้วเลือกใช้อีกทีตอนพัฒนาโปรแกรมนะครับ เมื่อเลือกเสร็จแล้ว กดปุ่ม Install จะมีการติดตั้งส่วนอื่นๆที่จำเป็นร่วมด้วย สังเกตุให้ดีว่า เราได้ติดตั้งทุกอย่างครบถ้วนแล้วนะครับ ที่สำคัญ อย่าลืมเลือกติดตั้ง Documentation ด้วยนะครับ

ผมขอจบเรื่องไว้เท่านี้ก่อนนะครับ เรื่องการพัฒนาโปรแกรมบน Android ไว้โอกาสหน้าจะมาเล่าต่อว่า ผมจะทำอะไรบ้าง

วันเสาร์ที่ 28 กันยายน พ.ศ. 2556

Jiayu JY-G3

อะไรๆมันเปลี่ยนแปลงไปอยู่เสมอ เมื่อถึงเวลา ผมเองก็ต้องเปลี่ยนตาม เพื่อปรับตัว
โทรศัพท์มือถือของผมใช้มาหลายปี ความจริงมันก็ยังใช้ได้อยู่ครับ ผมมีสองเครื่องดังภาพ
เครื่องทางซ้ายมือ เป็นเครื่องที่ใช้อยู่ประจำ ความจริงเครื่องนี้เก่ากว่าทางขวา เครื่องทางขวานั้นไม่ได้เสีย แต่ปุ่มกดเปิด-ปิดซึ่งมียางครอบมันเสื่อมสภาพหลุดออกไป ทำให้ต้องแหย่นิ้วเข้าไปในช่องเพื่อกดปุ่ม ซึ่งลำบากมาก พอดีเครื่องด้านซ้าย เป็นของแม่ยาย เขาทำหล่นจนจอเสียไป ผมก็เลยเอาไปซ่อม เสียค่าซ่อมน่าจะประมาณ 2-3ร้อยบาท ก็ใช้ได้ดีมาหลายปี เครื่องทางขวาก็เลยไว้เป็นที่ช๊าจแบ็ตฯแทน

ในขณะที่เมืองไทยก็มี 3G ค่อนข้างกระจายทั่วถึงมากขึ้น ผมก็มี iPad 2 ซึ่งภาควิชาฯได้ให้ไว้ทำงาน ปกติผมก็ใช้ WiFi แต่พอเดินทางก็ต้องงด ซึ่งความจริงก็ไม่เดือดร้อนมาก เพราะส่วนใหญ่ผมใช้มันอ่าน ebook มากกว่า ซึ่งรู้สึกไม่ค่อยคุ้มค่าสักเท่าไหร่นะครับ แต่ก็ต้องทำใจครับ เพราะความจริงแล้ว ช่วงแรกๆที่ผมได้ iPad 2 มา ผมใช้เวลาหลายเดือนเพื่อพยายามทำให้มันใช้ทำงานได้ โดยเฉพาะงานเขียนโปรแกรม แต่จนแล้วจนรอด ก็ไม่สามารถทำได้ ก็เลยต้องทำใจแทน (ใครมี solution ที่ดีๆช่วยแนะนำกันหน่อยนะครับ)

ช่วงประมาณ 2 เดือนมานี้ ผมก็ได้ทดลองศึกษา HTML5 jQuery และ jQuery Mobile เพื่อเขียนโปรแกรมให้กับทางแผนกศัลยศาสตร์ คณะแพทยศาสตร์ มหาวิทยาลัยสงขลานครินทร์ เนื่องจากเขาต้องการโปรแกรมที่ทำงานบนอุปกรณ์โมบาย เพื่อจะได้พกพาสะดวก โปรแกรมนี้เป็นโปรแกรมที่ใช้แสดงภาพเพื่อสื่อสารกับผู้ป่วย เนื่องจากผู้ป่วยที่ได้รับการผ่าตัดสอดท่อช่วยหายใจ ไม่สามารถพูดได้ จึงต้องสื่อสารด้วยภาพ และจะมี Text to speech ด้วยในอนาคต ทำให้ผมเริ่มเห็นแนวทางในการใช้ iPad ทำงาน เพราะสามารถใช้เครื่องมือง่ายๆเขียน JavaScript พร้อมทั้งทดสอบการทำงานได้ไม่ยุ่งยากนัก ทำให้ผมลองใช้ 3G ด้วยเครื่อง iPad นี้ และพบว่า 3G ของ DTAC ก็ค่อนข้างกระจายไปทั่วพอสมควรแล้ว จึงคิดว่าน่าจะถึงเวลาแล้วที่จะเปลี่ยนมือถือ 2G ของตัวเองเป็น 3G

และเช่นเคยครับ ช่วงนี้ iPhone 5s และ 5c กำลังเป็นที่ล่ำลือกันมาก ก่อนหน้านี้มีข่าวมาว่า 5c จะราคาถูก แต่พอราคาออกมาแบบนี้ ทำให้ผมมั่นใจมากที่จะซื้อมือถือจีน เพราะผมตั้งงบไว้สำหรับมือถือไม่เกิน 1หมื่นบาท เกินกว่านั้น ผมคิดว่าผมใช้งานไม่คุ้มค่าแน่นอน วันที่ Apple ประกาศเปิดตัว iPhone 5c จึงเป็นวันที่ผมตัดสินใจซื้อ Jiayu JY-G3 รุ่น upgrade ใช้ CPU MT6589T ซึ่งเป็น quad core (เดิมรุ่นนี้ CPU จะเป็น MT6577 ซึ่งเป็น dual core) ตัวนี้ในราคา $177.99 (ค่าส่งฟรี) หรือประมาณ 5,760 บาท (คิด $1 = 32 บาท) ซื้อมาจาก AliExpress ร้านชื่อ
Desoon Technology Co., Limited
ขออภัยที่ภาพถ่ายอาจจะไม่ชัด เพราะมือใหม่ ใช้งานยังไม่คล่อง เอาเป็นว่าดูรูปจากทางร้านที่ผมซื้อมาดีกว่าครับ

ส่วน Spec. เครื่อง ดูข้อมูลที่ได้จาก Android System Info กันเลยดีกว่าครับ (ขอตัดเอามาเฉพาะบางส่วนนะครับ เพราะมันยาวมาก)

OS

Browser UserAgent : Mozilla/5.0 (Linux; U; Android 4.2.1; en-us; JY-G3 Build/JOP40D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30

BuildInfos

Android version : 4.2.1
Release Codename : REL
API LEVEL : 17
CPU ABI : armeabi-v7a
Manufacturer : JIAYU
Bootloader : unknown
CPU ABI2 : armeabi
Hardware : mt6589
Radio : unknown
Board : V6
Brand : JIAYU
Device : V6
Display : JY-G3 20130607-114647
Fingerprint : JIAYU/V6/V6:4.2.1/JOP40D/1373968121:user/test-keys

Memory

Download Cache Max: 123MB/ Free: 119MB
data Max: 2.50GB/ Free: 2.05GB --> ROM 4GB (เลือกรุ่นถูกสุด)
External storage: mounted
External storage Max: 29.32GB/ Free: 29.30GB --> อันนี้ใส่เพิ่มเอง 32GB
External storage removable: true
External storage emulated: false
Total RAM: 0.95GB
Free RAM: 170MB
Threshold RAM: 64.00MB

CPU

Processor ARMv7 Processor rev 2 (v7l)
processor 0
BogoMIPS 3043.37
processor 1
BogoMIPS 3053.37 --> ไม่แน่ใจว่าทำไมถึงเจอแค่ 2 core

Features swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4 idiva idivt
CPU implementer 0x41
CPU architecture 7
CPU variant 0x0
CPU part 0xc07
CPU revision 2
Hardware MT6589
Revision 0000
Serial 0000000000000000
Frequency range: 497.25 -> 1508.0MHz
Current Frequency: 1508.0MHz
Frequency Stats (time):
- 1508.0 MHz 9.57% (388628)
- 1209.0 MHz 55.08% (2235946)
- 988.0 MHz 0.38% (15292)
- 754.0 MHz 0.46% (18609)
- 497.25 MHz 34.52% (1401245)

Camera

Antibanding: off
Color Effect: none
Exposure Compensation: 0
Exposure Compensation Step: 1.0
Flash Mode: off
Focus Mode: auto
Focal Length: 3.5
Horizontal View Angle: 55.0
Jpeg Quality: 100
Jpeg Thumbnail Quality: 100
Jpeg Thumbnail Size: 128x160
Max Exposure Compensation: 3
Max Zoom: 10
Min Exposure Compensation: -3
Picture Format: JPEG
Picture Size: 1920x2560
Preview Format: NV21
Preview Framerate: 30
Preview Size: 480x640
Supported Antibanding:
  off  50hz  60hz  auto
Supported Color Effects:
  none  mono  negative  sepia  aqua  whiteboard  blackboard
Supported Flash Modes:
  off  on  auto  red-eye  torch
Supported Focus Modes:
  auto  macro  infinity  continuous-picture  continuous-video  manual  fullscan
Supported Jpeg Thumbnail Sizes:
  0x0  128x160  240x320
Supported Picture Formats:
  JPEG
Supported Picture Sizes:
240x320480x640768x1024720x1280
768x1280960x12801200x16001536x2048
1440x25601920x25602448x32641872x3328
1728x28802160x3600
Supported Preview Formats:
  NV21  UNKNOWN
Supported Preview Frame Rates:
  15  24  30
Supported Preview Sizes:
144x176240x320288x352320x480
368x480480x640480x720480x800
600x800480x864540x960720x1280
Supported Scene Modes:
  auto  portrait  landscape  night  night-portrait  theatre
  beach  snow  sunset  steadyphoto  fireworks  sports
  party  candlelight  hdr
Supported White Balance:
  auto  incandescent  fluorescent  warm-fluorescent
  daylight  cloudy-daylight  twilight  shade
White Balance: auto
Vertical View Angle: 42.0
Zoom: 0
Zoom Ratios:
  100  114  132  151  174  200  229  263  303  348  400
Smooth Zoom Supported: true
Zoom Supported: true

Screen

Resolution: 720 x 1280
Refresh Rate: 54.060005
X factor for DIP: 2.0
Density: 320 dpi
Pixel per inch X: 320.0 dpi Y: 320.0 dpi

OpenGL

OpenGL Version supported : 2.0
OpenGL Version supported : OpenGL ES-CM 1.1
Vendor : Imagination Technologies
Renderer : PowerVR SGX 544MP

Sensors

BMA050 3-axis Accelerometer: 0.13 mA by Bosch
cm36283 Proximity Sensor: 0.13 mA by Capella
cm36283 Light Sensor: 0.13 mA by Capella

MPU3050c gyroscope Sensor: 6.1 mA by Invensensor
BMM050 3-axis Magnetic Field sensor: 0.25 mA by Bosch
Rotation Vector Sensor: 6.48 mA by Google Inc.
Gravity Sensor: 6.48 mA by Google Inc.
Linear Acceleration Sensor: 6.48 mA by Google Inc.
Orientation Sensor: 6.48 mA by Google Inc.
Corrected Gyroscope Sensor: 6.48 mA by Google Inc.

เนื่องจากไม่แน่ใจว่าทำไม Android System Info ถึงเช็คเจอ 2 processor ก็เลยใช้ CPU-Z มาทดสอบดู ปรากฎว่าเจอ 4 Core จริง และได้ผลดังนี้

เมื่อใช้งานผ่านไป 9 ชั่วโมง

หลังจากชาร์จไฟเต็มที่เสร็จเมื่อบ่ายโมงนี้ เปิด WiFi  ไว้ตลอด ช่วง 3 ชั่วโมงแรกไม่ค่อยจะได้ใช้ทำอะไร เนื่องจากทำงานอื่นอยู่  แต่หลังจากนั้นก็ใช้งานมาตลอด ทั้งเข้าเฟส ฟังวิทยุ ก็อปไฟล์ ลงโปรแกรม ฯลฯ ดูได้จากแถบสีฟ้าเส้นล่างสุด เป็นเส้นแสดงว่าจอภาพเปิดใช้งานเกือบตลอด 9 ชั่วโมง พลังงานเหลือ 47% นี่ถ้าไม่ต้องนอน ผมก็อยากจะเล่นไปจนกว่าแบ็ตจะหมดไปเลย

ตอนนี้ ประมาณคร่าวๆว่า 9 ชั่วโมง แบ็ตหมดไปครึ่งหนึ่ง ดังนั้น ถ้าใช้งานตลอด  ทั้งหมดน่าจะอยู่ได้ประมาณ 17-18 ชั่วโมง

Standby 6 ชั่วโมง

หลังจากที่เปิดมือถือ และ WiFi ไว้ตลอด แล้วไปนอน ผ่านไปประมาณ 6 ชั่วโมง แบ็ตฯลดไปประมาณ 13% ถ้าเทียบง่ายๆ 100% ก็ 46 ชั่วโมง ประมาณสองวันถ้าอยู่ในโหมด standby (โดยเปิด WiFi)

ใช้งานจริง 12-20 ชั่วโมง

หลังจากเปิด WiFi ใช้งานไป 19 ชั่วโมง 35 นาที เหลือแบ็ตอยู่ 4% เครื่องก็เตือนให้ชาร์จแบ็ตฯใหม่ ซึ่งทั้งหมดนี้ทำให้ผมสรุปคร่าวๆว่า ถ้าใช้งานเปิด WiFi ตลอด แต่ใช้งานบ้างไม่ใช้บ้าง โดยเฉพาะจริงๆแล้วที่ใช้ไฟมากที่สุดน่าจะเป็นจอภาพ ผมเปิดไว้เป็น Auto ซึ่งสว่างพอสมควร น่าจะใช้งานได้ถึง 20 ชั่วโมง หรือถ้า Standby อย่างเดียวก็ได้ 46 ชั่วโมง ตามที่ได้วิเคราะห์ไว้ก่อนหน้านี้
แต่เพื่อให้เห็นชัดๆว่า ถ้าใช้งานตลอดเวลาจะได้กี่ชั่วโมง ผมก็เลยเอาภาพที่ได้ไปวิเคราะห์ โดยลากเส้นที่ 1 เทียบกับความเอียงตอนใช้งานทั่วไป จากนั้นก็ก็อปปี้เส้นที่ 1 มาเป็นเส้นที่ 2 แล้วเลื่อนเส้นที่ 2 มาให้จุดเริ่มต้นอยู่ที่ 100% จะไปตัดแกนเวลาที่ประมาณ 12.2 ชั่วโมงดังภาพ
สรุปว่า ถ้าเปิด WiFi ตลอด และใช้งานตลอดเวลา น่าจะใช้งานได้ประมาณ 12 ชั่วโมง แต่ถ้าใช้บ้างไม่ใช้บ้าง จะได้ถึง 20 ชั่วโมง ถ้าทิ้งไว้ไม่ใช้เลย ได้ถึง 46 ชั่วโมงครับ


Benchmark

ทดสอบด้วยโปรแกรม AnTuTu Benchmark ได้ผลเร็วกว่า Samsung Galaxy S2 มาก แต่ไกล้เคียงกับ HTC One X และต่ำกว่า Samsung Galaxy S3 เล็กน้อย ดังนี้