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

วันพฤหัสบดีที่ 17 เมษายน พ.ศ. 2557

5 วันมหัศจรรย์ กับการฝึก iOS ด้วยตัวเอง


5 วันมหัศจรรย์ กับการฝึก iOS ด้วยตัวเอง


เรื่องของเรื่องคือ
  • พอดีว่า มีงานที่ต้องการ iOS app เข้ามา
  • พอดีว่า จำเป็นต้องรับงานนั้น
  • พอดีว่า มีคนช่วยเรื่อง iOS แน่ๆ
  • พอดีว่า กระทรวงการคลังอนุมัติงบฉุกเฉินมาให้
  • พอดีว่า มีช่วงวันหยุดยาวพอดี
  • แต่ ไม่เป็น objective C เลย
  • iOS ไม่ต้องพูดถึงใช้เป็นอย่างเดียว



เลยเกิดสิ่งนี้

และสิ่งนี้




ก็เริ่มตั้งแต่วันที่ 12 จนถึง 16 เมษายน 2557
ความรู้สึกเหมือนสมัยตอนที่หัดเขียน Java ใหม่ๆเลย ตอนนั้นก็พอจะเป็น C/C++ กับ JavaScript อยู่บ้าง ก็อาศัยมั่วบ้าง อ่านจากตำราบ้าง ก็ผ่านมันมาได้

แต่มาตอนนี้เหมือนความกระตือลือล้นจะลดไปบ้าง แต่ก็ยังมีประสพการณ์(อันน้อยนิด) มาช่วยเติมเต็ม บวกกับพลังอำนาจของ google ก็พูดได้เลยว่า ถึงจะยังไม่ชำนาญ แต่ก็พอเข้าใจมันบ้างแล้ว

มาคิดๆดูแล้วยุคนี้นี่มันได้เปรียบจริงๆ ในยุคนั้นเต็มที่ก็กางตำราพร้อมกัน 2 เล่มเพื่อดูเป็นแนวทาง แต่ยุคนี้ ก็ google ไปสิ จะเอาซักกี่ตำราก็ได้ สบายๆ มีตัวอย่างเสร็จสรรพ ถ้าขี้เกียจพิมพ์ตามก็ copy & paste ไปเลย


เอาละหมดเรื่องบ่น ทีนี้เข้าเรื่องสาระละนะ

  • ความรู้ OOP สำคัญมาก
  • เลือก keyword ดี google จะน่ารัก
  • ทุ่มเทให้เกิน 120%
  • มีที่ปรึกษา
ความสำเร็จในครั้งนี้ก็คิดซะว่าเป็นของขวัญวันเกิดให้กับตัวเอง และด้วยการสนับสนุนจากบุคคลสำคัญๆ อย่างเช่น กระทรวงการคลัง(คุณป้า) คณาจารย์ และคุณพ่อ คุณแม่

วันพฤหัสบดีที่ 3 เมษายน พ.ศ. 2557

เหตุเกิดเพราะ Jena หรือ android หรือ andrjena

  • พอดีว่าตอนนี้เรียนวิชา Web Technology
  • พอดีว่าอาจารย์สั่งงานให้ทำ Ontology
  • พอดีว่าตัวอย่างที่อาจารย์มี มันมี PHP กับ Java
  • พอดีว่า PHP ต้องใช้ rdfapi-php ซึางมันตีกับ PHP 5.4.12 ที่ลงอยู่ในเครื่อง
  • พอดีว่า Apache Jena ทำงานบนเครื่องได้

จึงเลือกทำ Ontology บน Java
ซึ่งทำ Demo ง่ายได้แล้ว ให้ชื่อรุ่นว่า Mark 1

  • พอดีว่า ลืมเรื่องการทำ UI(swing) บน Java ไปแล้ว
  • พอดีว่าจะยัด HTML ไปลง Java แบบ Webview ของ Android ต้องใช้ JavaFX
  • พอดีว่าไม่เคยใช้ JavaFX
  • พอดีว่ายัด HTML ไปลง Webview ของ Android เป็น
  • พอดีว่าทำ App Android เป็น

จึงทำการ port code ของ Java ไปเป็น Android แล้วทำส่วน UI เป็น HTML
แต่ Library ของ Jena มีส่วน core ของ Java อยู่ ทำให้เอาไปใช้บน Android ตรงๆไม่ได้
????? แล้วเอายังไงดี ทางเลือกคือ เลิกกับทำต่อ

  • พอดีว่าไม่รู้อะไรดลใจให้ google ว่า jena android โอ้วววววววววววววววววววว มันมีคนทำไว้ด้วย ชื่อว่า androjena พระเจ้าช่วยกล้อยทอดมันฝรั่งต้ม สบายละทีนี้
  • พอดีว่าลองทำแล้ว ok ทำได้ จึงสำเร็จเป็น Mark 2

แต่เหมือนฟ้ากลั่นแกล้ง ทำไมโค้ดแบบเดียวกันมันดันได้ผลไม่ตรงกันฟร่ะ อันนี้ก็ขอยอมแต่เพียงเท่านี้ มันน่าจะเป็นปัญหาที่ Library ที่ port มายังไม่สมบูรณ์ เพราะ ณ วันที่เขียน androjena ยังเป็นเวอร์ชัน 0.5 อยู่เลย......

จบแค่นี้แหละ


อ้อยังไม่ครบ
ไหนๆก็ไหนๆแล้ว ฝากแปะ app ที่ทำหน่อย เผื่อใครผ่านมาเจอมาเห็น จะได้รู้ว่ามันมี

สรุป
androjena ทำงานได้ แต่ไม่สมบูรณ์มั้งนะ
ทำ App Android ใช้เวลาในการ debug มากกว่าปกติ
eclipse กาก

วันอาทิตย์ที่ 17 มีนาคม พ.ศ. 2556

mini review nexus 4 : นี่คือรุ่นที่ 4


ชื่อรุ่นเต็มๆของเจ้านี่ก็คือ LG Nexus 4 E960 เป็นโทรศัพท์ที่ควบคุมการผลิตโดย Google เอง โดยรุ่นที่ผ่านๆมา ก็คือ nexus one ตัวนี้ HTC รับหน้าที่ผลิตไป ส่วนตัวที่สอง และสาม Samsung รับหน้าที่ผลิตในชื่อว่า nexus s และ galaxy nexus ตามลำดับ และในลำดับที่สี่ซึ่งก็คือ nexus 4 รับงานไปโดย LG


















ต่อมาเรามาดูรายละเอียดของตัวเครื่องกัน


ขนาดและมิติ: 133.9 x 68.7x 9.1 mm
หนัก: 139 g

งานประกอบเครื่อง nexus 4 แน่นหนาหรูหรา และด้วยการเลือกใช้วัสดุทั้งหน้าและหลังเป็นกระจก Gorilla Glass ทั้งคู่ บวกกับลาย glitter กลมๆในเนื้อด้านหลัง มันเป็นอะไรที่สวยมากทีเดียว





ด้านการรองรับเครือข่าย
2G Network: GSM 850 / 900 / 1800 / 1900
3G Network: HSDPA 850 / 900 / 1700 / 1900 / 2100
แน่นอนว่าใช้ได้ทุกระบบในไทยแน่ๆ
ส่วน Wi-Fi เป็น Wi-Fi 802.11 a/b/g/n รองรับ dual-band(2.4GHz, 5GHz)
Bluetooth v4.0 with A2DP และแน่นอน NFC ตัวชูโรงเรื่องความเท่








ส่วนจอภาพที่ใช้คือ True HD IPS Plus 16M colors แสดงผลด้วยความระเอียด 768 x 1280 pixels บนจอขนาด 4.7 นิ้ว (คิดเป็นความหนาแน่นก็ไปตกที่ประมาณ 320 ppi )
*ตรงขอบจอด้านข้าง ออกแบบให้กระจกโค้งนิดๆ เพื่อให้การลากนิ้วไปมาไม่สะดุด



ต่อมาคือกล้อง ก็ตามมาตรฐานที่ควรมี คือ กล้องหลัง 8 MP, 3264 x 2448 pixels และกล้องหน้า 1.3 MP























CPU : Qualcomm APQ8064 SnapdragonQuad-core 1.5 GHz Krait
GPU: Adreno 320
RAM: 2GB
สามคุณสมบัตินี้รับประกันลื่นหัวแตก เพราะถือว่าแรงสุดๆแล้ว (ณ ตอนที่ออกขาย)










ต่อไป มาแกะกล่องกัน
หน้าตากล่อง


ด้านหลังก็อธิบายสรรพคุณต่างๆ


เปิดกล่องมาก็จะเจอสุดหล่อนอนรอแบบนี้


ด้านขวาตัวเครื่องมีปุ่ม power/ lock screen


ด้านนี้เป็นปุ่ม เพิ่ม-ลด เสียง


ด้านล่าง USB ช่ิองเดียว


ด้านบน จะเห็นลำโพง กล้อง เซ็นเซอร์ ที่เสียบหูฟัง


โลโก้ เด่นซะ... มีกล้อง กับแฟลช


ลำโพงใหญ่ที่ด้านหลังเครื่อง






ต่อมา มาดูเรื่องประสิทธิภาพกัน
quadrant standard ได้ไป 5013


Antutu v3.2.1 ได้ไป 15688


GL Benchmark โปรแกรมนี้วัดเรื่อง 3D ล้วนๆ ก็อยู่ในระดับที่เรียกว่าแรงทีเดียว



ความคิดเห็นส่วนตัว หลังจากที่ได้จับใช้งาน

  • เครื่องร้อนเร็วดี
  • จับสัญญาณ wifi ไวดี
  • การทำงานลื่นไหลดีมาก
  • ตัวเครื่องจับถนัดมือ เพราะขอบด้านข้างมันคล้ายๆยาง แต่กระจกลื่น
  • จอสู้แสงได้สบาย



วันพุธที่ 24 ตุลาคม พ.ศ. 2555

3 วันมหัศจรรย์ เขียน App ซักตัวไม่ง่าย เมื่อมันไม่ง่าย

ขึ้นชื่อว่า Open Source อะไรๆมันก็น่าจะง่าย ติดปัญหาอะไร Google ไปเดี๋ยวก็เจอ เพราะยังไงเราก็คงไม่ใช่คนแรกที่เจอ หรือถ้าเป็นคนแรกที่เจอปัญหาจริงๆ เดี๋ยวก็จะมีคนอื่นเจอปัญหาแบบเดียวกับเรา แล้วเดี๋ยววิธีแก้ก็จะอยู่ใน Google เอง ไม่ยาก ที่ยากคือวิธีแก้ปัญหามันจะให้ผลลัพท์อย่างที่ต้องการหรือไม่

นอกเรื่องไปไกล เรื่องของเรื่องที่เขียนบล็อกนี้ ก็คือ ว่างจัดเลยจัด app android ซักตัว ประโยชน์ใช้งานเอาที่ใกล้ตัว กับมีคนทำเป็นแนวทางใน iOS แล้ว นั่นคือแอฟเช็คตารางเรียนของนักศึกษามหาวิทยาลัยนเรศวร เหมือนจะง่าย แต่ไม่ง่าย เนื่องจากระบบไม่ได้เปิด service อะไรไว้เลย เพราะฉะนั้นก็น่าจะเหลือวิธีเดียวคือ parseHTML มาตรงๆเลย(คือคิดออกแค่นี้)

ต่อมาเรื่องออกแบบตัว app จาก http://developer.android.com/design/index.html บอกไว้เยอะมาก ก็อิงตามในนี้แหละ จัดไปให้ครบทั้ง flow program, หน้าตา UI ฯลฯ จะว่าไปอันนี้ก็ลำบาก เพราะวิธีออกแบบ UI มันคนละแนวก็ iOS จริงๆ ก็เอาเป็นว่า UI ของใครของมัน ระบบใครระบบมัน ไม่ดันทุรังทำแบบเดียวกันหมด จบ

ทีนี้ตอนที่ค้นหาตารางเรียน ลองเขียนเป็น Java ธรรมดาดูก่อน เพราะมันเทสง่ายกว่า มาดูที่ระบบต่อ ระบบเว็บค้นหาตารางเรียนมันมีให้ใส่อยู่ 3 fields ซึ่งดูเหมือนว่าตัวเงื่อนไขที่เช็คใน SQL จะเป็น and ซะด้วย 0_o เอาละสิ นี่แปลว่าถ้าจะค้นอะไรแบบไม่คิดมาก ต้องส่ง query ไป 3 ครั้ง แล้วมาดักแกะข้อมูลเอาเฉพาะตัวที่ไม่ซ้ำกันออกมาสินะ อย่าเลย ลำบากเปล่าๆ ก็แยก input ใน app เราตามเค้าไปเลย โอ้ววววลืมไปว่าถ้าค้นหาเป็นชื่อหรือนามสกุล มันจะมีโอกาสที่ผลการค้นหาจะมีหลาย record เอาไงดีหว่า บังคับให้ใส่เฉพาะรหัสนักศึกษาอย่างเดียวดีกว่า แล้วเวอร์ชันหน้าค่อยเพิ่มให้ค้นหาจากชื่อและนามสกุลได้ด้วยละกัน ไม่งั้นจะเสียเวลามานั่งทำ parseHTML มากไป เพราะตัวเว็บนี่ก็ไม่มี div ไม่มี id ให้หาด้วยนะ ต้องจับจาก table อย่างเดียว โอยย น่าจะใส่ id รึ name รึ class มาซะหน่อยจะได้จับง่ายๆ ok ไม่เป็นไร อย่างน้อยก็ดึงข้อมูลมาได้ละ ใช้ Jsoup มาช่วยตัดเอาเฉพาะส่วนที่ต้องการได้อีกด้วย ยอดเยี่ยม

เอาละต่อไปก็แค่เอาโค๊ดจากตัวทดสอบที่เป็น Java มาใส่ Android ง่ายๆเลย แต่..... โอ้ว error อะไรหว่าไม่เคยเจอ ตอนเป็น Java มันไม่มีปัญหาอะไร พอมารันบน Android เป็นเรื่องเลย ก็ไม่เป็นไร Google ช่วยได้เสมอ แล้วก็ช่วยได้จริงๆ มันเป็นปัญหาเรื่อง UI Thread เอ่ออันนี้ลืมไปจริงๆ เพราะตอนที่ทำตัวทดสอบนี่ console ล้วนๆ ก็ไม่ยาก AsyncTask รับหน้าที่นี้ไป ตอนแสดงผลก็ไม่ยากอะไร ได้มาเป็น HTML ก็ยัดใส่ Webview ไปตรงๆเลย จะใช้ parseHTML มาตัดเลย ก็จะเก่งเกินไป เพราะพวกเล่นมีแต่ table ไม่ div ก็ไม่รู้จะไปจับมายังไง ใส่ไปตรงๆเลยจบ ยังไม่จบสิ ยังเหลืออีกกรณีคือจะดึงข้อมูลตารางเรียนมาได้ต้องมี internet แล้วถ้าไม่มีรึมีแต่ใช้ไม่ได้ เอาไงดี มันโชคดีตรงที่ AsyncTask มีมาให้ครบเลยว่าถ้า onCancel จะเอาไงดี เยี่ยม ประหยัดเวลาไปเยอะ ก็แค่ try catch ไว้ตรงที่มันดึงข้อมูล มีปัญหาก็ cancel() ไป ไม่มีก็รอด เย่

ปัญหาต่อมา(ไม่นับว่าเป็นปัญหาก็ได้) app android พอทำเป็น .apk ต้อง sign ด้วย ไม่งั้นจะไม่ยอมติดตั้ง ก็แค่สร้าง keystore มาซักตัว กะว่าใช้ยาว ก็จบเรื่องนี้ไป

ก็เป็นอันสำเร็จกับ 3 วันมหัศจรรย์  เขียน App ซักตัวไม่ง่าย เมื่อมันไม่ง่าย มีประโยชน์ใช้งานได้จริง(ถึงจะเอาไว้โชว์มากกว่าก็เหอะนะ)

วันศุกร์ที่ 25 พฤษภาคม พ.ศ. 2555

เพิ่ม modules smartassV2 และ intellidemand governor เข้าไปใน Arc S (stock Kernel เท่านั้น)

intellidemand governor and  smartassV2 governor for Arc / Arc S stock Kernel firmware LT18_4.1.A.0.562_NCB.ftf (Arc S)

  • ต้อง root แล้ว
  • ใช้ CWM ได้
  • ใช้ init.d ได้

เตรียมการโดย โหลดไฟล์นี้ (สำรอง) แล้วเอาไปไว้ใน SD Card แล้ว reboot เข้า CWM แล้ว install zip ก็เรียบร้อย แล้วใช้พวก setCPU หรือ NSTools ก็ได้ เซ็ทเอา



อันนี้ของเก่า ทำผ่าน cmd แต่ reboot แล้วจะหาย
เตรียมการโดย โหลดไฟล์นี้ (สำรอง)แล้วแตกไฟล์เอาไปไว้ที่ root ของ sd card
เรียบร้อยแล้วเข้า cmd

abd shell
su
mount -o rw,remount -t yaffs2 /dev/block/mtdblock0 /system
cd /system/lib/modules
cp /sdcard/cpufreq_smartass2.ko .
insmod cpufreq_smartass2.ko
exit
exit

ใช้พวก setCPU หรือ NSTools ก็ได้ เซ็ทเอา


ที่มา
http://forum.xda-developers.com/showthread.php?t=1354318
http://forum.xda-developers.com/showthread.php?t=1665863
http://forum.xda-developers.com/showthread.php?t=1281364

วันพฤหัสบดีที่ 23 กุมภาพันธ์ พ.ศ. 2555

ปลอดปล่อยพลัง gpu ให้แสดง fps ตามความสามารถจริง

หาไฟล์ /system/build.prop
แล้วเติม
debug.gr.swapinterval=0
reboot เครื่อง แล้วลองดูผลที่เกิดขึ้น

ถ้าจะไม่ใช้ก็ใส่ # ไว้ข้างหน้าให้กลายเป็น comment ไปซะ
#debug.gr.swapinterval=0
แบบนี้ แล้ว reboot ก็จะกลับมาเป็นเหมือนเดิม


โปรแกรมไหนไม่ถึง 60 ก็คือไม่ถึง แต่ถ้าเกิน 60 ได้ก็จะเห็น
ก่อนแก้

หลังแก้


ก่อนแก้

หลังแก้

ปล. ทดลองบน Sony Ericsson Arc S 2.3.4

วันพุธที่ 15 กุมภาพันธ์ พ.ศ. 2555

Market ขึ้น Insufficient Storage Available?? ปัญหานี้มีทางออก !! [reBlog]

หลายๆคนคงเคยเจอปัญหากับ Market ตัวใหม่ (เวอร์ชั่น 3) ที่เวลาจะโหลดแอปที่ใหญ่ๆ (เกิน 30MB) แล้วไม่สามารถโหลดได้ มันจะแจ้งว่า Insufficient Storage Available ปัญหานี้เกิดจากตัว Market จะโหลดตัวแอพไปลงใน Cache ก่อน ทีนี้โทรศัพท์บางรุ่น ( อย่างเช่น Samsung Galaxy S ) ที่ให้ Cache มาน้อยนิดก็เลยเกิดปัญหาเนื้อที่ไม่พอกันไป ซึ่ง Kernel Mod บางตัวก็ได้ขยาย Cache ให้แล้ว แล้วคนที่ยังมี Cache เท่าเดิมล่ะ...
วิธีนี้ไม่ได้ขยาย Cache ตรงๆ แต่จะสั่งให้ Cache มันชี้ไปที่อื่น (แบบชั่วคราว)
สิ่งที่ต้องการ
  1. เครื่องที่ root แล้ว
  2. adb (ถ้าไม่มี มันมีโปรแกรมอะไรซักอย่างที่ทำ command line ในเครื่องโทรศัพท์ได้เลย จำไม่ได้ว่าชื่ออะไร)
ลงมือ!
  1. abd shell
  2. su
  3. mkdir /sdcard/tempcache
    // สร้าง directory ขึ้นมาใหม่ หรือจะใช้ชื่ออื่นก็ได้ครับ แต่ขั้นตอนต่อไปก็ใช้ชื่อเดียวกันละกัน
  4. mount -o bind /sdcard/tempcache /cache
    // สั่ง mount cache มาที่ /sdcard/tempcache แทน เรามี sdcard ใหญ่เท่าไร ก็มี cache ใหญ่เท่านั้น
  5. exit
  6. exit
*Cache ที่ใหม่นี่จะยังคงอยู่จนเราไปสั่ง mount ที่ใหม่ หรือ restart เครื่องครับ
ปล. ผมลองเปลี่ยนจุด mount cache เฉยๆนะ ไม่ได้ลองพวก data รึ dbdata เพราะฉะนั้นถ้าใครทำแล้วเครื่องเน่า ผมไม่เกี่ยวนะ
ที่มา http://forum.xda-developers.com/showthread.php?t=941339