วันศุกร์ที่ 30 ธันวาคม พ.ศ. 2554

การเขียนไพธอนบนแอนดรอย ตอน การเล่นเพลงMp3

สวัสดีครับ วันนี้เราทำการเขียนโปรแกรมเพื่อเล่นเพลง mp3 บนแอนดรอยโดยใช้ภาษาไพธอน มีใจความสำคัญดังนี้


import android
import time
droid = android.Android()
droid.mediaPlay("/mnt/sdcard/nteacher.mp3")
time.sleep(3600)

คำอธิบาย

1. บรรทัด import android ประกาศขอใช้งานไลบรารี่ android
2. บรรทัด import time ประกาศขอใช้โมดูล time
3. บรรทัด droid = android.Android() ประกาศ droid เป็นอ็อบเจ็คที่เกิดจากคลาส Android()
4. บรรทัด droid.mediaPlay("/mnt/sdcard/nteacher.mp3") เล่นเพลง mp3 ที่ชื่อ /nteacher.mp3
5. บรรทัด time.sleep(3600) หน่วงเวลา 6 นาที เพื่อรอให้เพลงเล่นจนจบ แต่ยังมีวิธีการที่ช่วยให้ทำงานอยู่เบื้องหลังได้ แต่ขอกล่าวถึงหลักการและคำสั่งที่เกี่ยวข้องเพื่อทำให้เข้าใจได้โดยเร็วเท่านั้น

ท่านจะเห็นว่าไพธอนเป็นภาษาที่เคลียส์ ไม่แปลกใจทำไม google ใช้ภาษาไพธอน ในการพัฒนาระบบ สำหรับวันนี้ พบกันแค่นี้ครับ สวัสดี

เขียนโปรแกรม Client / Server ง่าย ๆ สไตล์ไพธอนบนแอนดรอย

สวัสดีครับ สุดยอดของความรู้ด้านเน็ตเวร์คสำหรับโปรแกรมเมอร์คือ การเข้าใจหลักการของแม่ข่าย และวิธีการในการรับส่งข้อมูลได้ วันนี้ผมจะเอาหัวใจของการรับและส่งข้อมูลระหว่างแม่ข่ายและลูกข่ายมาเล่าให้ฟัง มีใจความดังนี้

พิจารณาโค๊ดแม่ข่ายต่อไปนี้

import socket
PORT = 8037

service = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
service.bind(("", PORT))
service.listen(1)

print "listening on port", PORT

while 1:
channel, info = service.accept()
print "connection from", info
channel.send("Hello")
channel.close()


พิจารณาโค๊ดจากลูกข่ายต่อไปนี้

import socket

# ระบุหมายเลข IP และหมายเลขพอร์ตของเครื่อง Server
Host = "127.0.0.1"
Port = 8037

# สร้างการเชื่้อมต่อไปยังเครื่อง Server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((Host, Port))

# อ่านข้อมูลจากเครื่อง Server จำนวน 5 ตัวอักษร(ไบต์)
t = s.recv(5)
s.close()

# แสดงข้อมูลที่รับมาจากเครื่อง Server ให้ปรากฎที่จอภาพ
print "Received : ",t , " Len : ", len(t)

คำอธิบาย

การทำงานพอเป็นสังเขป :
1. ให้เครื่อง Server รันสคริปต์ทิ้งเอาไว้ในตัวอย่างนี้จะให้เครื่องแอนดรอยทำงานเป็นแม่ข่าย (server)
2. เมื่อไรที่ Client เข้ามาที่เครื่องของเซอร์เวอร์ให้ทำงานตามเงื่อนไข
3. รันโปรแกรมเครื่องแม่ข่ายเอาไว้
4. เครื่อง Client รันโปรแกรมฝั่งลูกข่ายจะได้ผลลัพธ์คือ Received : Hello Len : 5

อธิบายโค๊ดฝั่งแม่ข่าย

1. บรรทัด import socket ขอใช้โมดูล socket
2. บรรทัด PORT = 8037 กำหนดหมายเลขพอร์ทในการสื่อสารระหว่างลูกข่ายและแม่ข่าย
3. service = socket.socket(socket.AF_INET, socket.SOCK_STREAM) อาร์กิวเมนต์ของการสร้างคลาส socket คือ socket.AF_INET และ socket.SOCK_STREAM เป็นการกำหนดข้อตกลงในการเชื่อมต่อแบบสตรีม

4. บรรทัด service.bind(("", PORT)) การผูกหมายเลขพอร์ท

5. บรรทัด service.listen(1) ให้แม่ข่ายคอยฟังว่ามีใครสื่อสารเข้ามามั้ย

6. บรรทัด print "listening on port", PORT แสดงข้อความและหมายเลขพอร์ท

7. บรรทัด while 1:  ทำการวนรอบไม่สิ้นสุด
       channel, info = service.accept()  หากมีการติดต่อเข้ามาให้รับการติดต่อจากลูกข่าย ขณะที่กำลังรอการติดต่อระหว่างเครื่องลูกข่าย อ็อบเจ็ค service จะเรียกฟังก์ชั่น accept() ซึ่งจะคืนค่าเป็นลีสต์ 2 อัน อันแรกคือ ช่องทางการเชื่อมต่อ ผู้เขียนให้เก็บไว้ในตัวแปร channel ในขณะที่ลีสต์อีกตัวหนึ่งสำหรับข้อมูลจากเครื่องลูกข่าย ผู้เขียนกำหนดไว้ในตัวแปร info เมื่อมีการร้องขอจากลูกข่ายจะแสดงคำว่า "connection from" , info ซึ่งตัวแปร info จะเก็บหมายเลข IP และพอร์ทที่ใช้เชื่อมต่อจากลูกข่าย

       print "connection from", info  จากนั้นแสดงข้อความบนแม่ข่ายว่ามีการติดต่อสื่อสารเข้ามา
       channel.send("Hello")  ส่งข้อมูลไปหาลูกข่าย ออกไปยังช่องทางที่ได้รับการเชื่่อมต่อจากแม่ข่ายและลูกข่าย
       channel.close()  เมื่อส่งข้อความเสร็จเรียบร้อย ให้ปิดช่องทางการสื่อสาร




พิจารณาที่ฝั่งลูกข่าย เมื่อเรียกคำสั่ง python client.py ไพธอนจะแปลความดังรายละเอียดต่อไปนี้
ตัวแปร Host ใช้เก็บหมายเลข IP Address ของเครื่องแม่ข่าย (ค่า default คือ 127.0.0.1 สำหรับเครื่องที่จำลองการเชื่อมต่อเน็ตเวอร์ค)

ตัวแปร Port กำหนดให้ตรงกันกับพอร์ทที่แม่ข่ายกำหนดไว้ จากนั้น สร้างอินสแตนท์ของคลาส socket.socket() โดยผู้เขียนให้ชื่ออ็อบเจ็ค s การสร้างอินสแตนท์ทำเหมือนสคริปต์ฝั่งแม่ข่าย

จากนั้นเรียกใช้คำสั่ง connect() ภายในอ็อบเจ็ค s โดยระบุอาร์กิวเมนต์แรกคือหมายเลข IP Address ของเครื่องแม่ข่าย และอาร์กิวเมนต์ที่สองคือหมายเลขพอร์ทที่ใช้เชื่อมต่อกับแม่ข่าย

ลำดับถัดมาทำการอ่านข้อมูลออกมาจากเครื่องแม่ข่ายเป็นจำนวน 5 ไบต์ ด้วยคำสั่ง recv() และเก็บไว้ภายในตัวแปร t จากนั้นปิดคอนเน็คชั่นด้วยคำสั่ง close()

ผลลัพธ์ที่เก็บไว้ในตัวแปร t สามารถนำไปใช้งานต่อไปได้ ในตัวอย่างนี้แสดงให้ปรากฎบนจอภาพคอมพิวเตอร์ และแสดงจำนวนความยาวของตัวแปร t ซึ่งมีค่า 5 ไบต์

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

การเขียนไพธอนบนแอนดรอย ตอน การบันทึกวิดีโอเก็บเป็น MP4

สวัสดีครับ วันนี้นำท่านบันทึกวิดีโอและจัดเก็บเป็นไฟล์ mp4 ด้วยภาษาไพธอนทำงานบนแอนดรอย ใจความสำคัญดังนี้

พิจารณาโค๊ดต่อไปนี้
import android
from time import sleep
import android
droid = android.Android()
droid.recorderCaptureVideo("/mnt/sdcard/video1.mp4")
sleep(10)

คำอธิบาย

1. คำสั่ง import android ประกาศขอใช้ไลบรารี่ android
2. คำสั่ง from time import sleep ขอใช้คำสั่ง sleep ในโมดูล time
3. คำสั่ง droid = android.Android() ประกาศอ็อบเจ็ค droid ชนิด Android()
4. คำสั่ง droid.recorderCaptureVideo("/mnt/sdcard/video1.mp4") บันทึกวิดีโอและเก็บไว้ในไฟล์ video1.mp4 ในขณะที่กำลังรันโปรแกรมท่านต้องหันกล้องไปยังตำแหน่งที่ต้องการบันทึก
5. คำสั่ง sleep(10) กำหนดให้บันทึก 10 วินาทีจากนั้นเก็บวิดีโอไฟล์ลงพื้นที่เก็บข้อมูล

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

แหล่งอ้างอิง

http://code.google.com/android/
http://www.google.com/mobile/android/

การเขียนไพธอนบนแอนดรอย ตอน การบันทึกเสียงเก็บเป็นไฟล์ WAV

สวัสดีครับ จะดีมั้ยหากท่านสามารถเขียนโปรแกรมบันทึกเสียงสนทนา หรือเสียงรอบข้างจากนั้นบันทึกลงไฟล์ WAV ใน SDcard สำหรับวันนี้ท่านจะเห็นพลังของไพธอนบนแอนดรอยครับ

พิจารณาโค๊ดต่อไปนี้
import android
from time import sleep
droid = android.Android()
droid.recorderStartMicrophone("/mnt/sdcard/record1.wav")
sleep(5)
droid.recorderStop()

อธิบายโค๊ด

1. คำสั่ง import android ประกาศขอใช้ไลบรารี่ android
2.  คำสั่ง from time import sleep ขอใช้คำสั่ง sleep ในโมดูล time
3.  คำสั่ง droid = android.Android() ประกาศตัวแปร droid เป็นอ็อบเจ็คของคลาส Android()
4.  คำสั่ง droid.recorderStartMicrophone("/mnt/sdcard/record1.wav") เริ่มต้นบันทึกเีสียง
5.  คำสั่ง sleep(5) รอเวลา 5 วินาที
6.  คำสั่ง droid.recorderStop() หยุดการบันทึกเสียงและบันทึกลงไฟล์ /mnt/sdcard/record1.wav

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


แหล่งอ้างอิง

http://code.google.com/android/
http://www.google.com/mobile/android/

การเขียนไพธอนบนแอนดรอย ตอน การส่ง SMS

สวัสดีครับ การส่ง SMS (Short Message) หากท่านเขียนส่งด้วยระดับไมโครคอนโทรลเลอร์ต้องศึกษาการใช้คำสั่ง AT-Command แต่สำหรับวันนี้ นำท่านส่ง SMS ง่าย ผ่านระบบแอนดรอย ควบคุมด้วยภาษาไพธอน มีใจความสำคัญดังนี้

import android
droid = android.Android()
droid.smsSend("0836041155","สวัสดีชาวโลก")


อธิบายคำสั่ง
1. คำสั่ง import android ประกาศขอใช้ัไลบรารี่ android

2. คำสั่ง droid = android.Android() สร้างอ็อบเจ็คหรือินสแตนท์จากคลาส Android()

3. คำสั่ง droid.smsSend("0836041155","สวัสดีชาวโลก") ส่งข้อความไปยังหมายเลขปลายทาง

คำสั่ง smsSend(เบอร์โทร, ข้ัอความ) ท่านสามารถส่งข้อความไปหาเพื่อนในรายการ หากต้องการส่งข้อความไปยังรายการ 1000 รายการด้วยข้อความที่ต่างกันหรือที่จัดเตรียมเอาไว้แล้ว ท่านสามารถเขียนโปรแกรมส่งได้ครับ หวังว่าเนื้อหาจะเป็นประโยชน์ต่อท่านทั้งหลาย พบกันโอกาสต่อไปครับ สวัสดี


อ้างอิง
http://code.google.com/android/

การเขียนไพธอนบนแอนดรอย ตอน การอ่านรหัส 2d barcode

สวัสดีครับ บาร์โค๊ด 2 มิติ (QR code) อนุญาตให้ท่านสามารถเก็บข้อความไว้ได้ มีข้อดีคือ เมื่อถอดรหัสออกมาจะได้ข้อความ และจำนวนอักขระเก็บได้มากกว่าบาร์โค๊ด 1 มิติที่ใช้กันทั่วไป อย่างที่เคยกล่าวไว้ โลกเปลี่ยนแปลงเร็วมาก เครืองอ่าน 2d barcode ขายเครื่องละ 2-3 หมื่นบาท ใช้วินโดวส์ซีอี ต่อไปท่านเหล่านั้นคงต้องลดราคาลงไป เพราะ android อ่านออกมาได้และเขียนโปรแกรมควบคุมได้ ทำงานได้เร็ว อีกทั้งยังอ่านบาร์โค๊ด 1 มิติได้อีกด้วย ที่สำคัญ ฟรี

เครื่องมือ
Android SDK
2d Barcode Library
Python for Android และ SL4A

พิจารณาคำสั่งต่อไปนี้
import android
droid = android.Android()
code = droid.scanBarcode()
data= code.result.get('extras').get('SCAN_RESULT')
values = {'item': data }
print values['item'].encode('utf-8')

คำอธิบาย

1. คำสั่ง code = droid.scanBarcode() เป็นการสร้างอ็อบเจ็ค code จากคลาส scanBarcode() ภายในอ็อบเจ็ค droid

2. คำสั่ง data = code.result.get('extras').get('SCAN_RESULT') เป็นการอ่านรหัสบาร์โค๊ดสองมิติ ในขั้นตอนนี้เครื่องแอนดรอยจะเปิดกล้อง ท่านต้องเลื่อนกล้องไปบริเวณภาพบาร์โค๊ดสองมิติ

3. คำสั่ง values = {'item':data} สำหรับอ่านค่าข้อมูลออกมาจากตัวแปร data

4. คำสั่ง print values['item'].encode('utf-8') แสดงข้อมูลภายในรหัสบาร์โค๊ดสองมิติ

หากท่านนำความรู้ที่ได้ไปทำเครื่องเช็คสต็อคสินค้า ก็ทำได้ครับ เพราะระบบเปิดครับ พวกเราจึงสามารถใช้ประสิทธิภาพของซีพียูได้เต็มที่ สำหรับวันนี้หวังว่าท่านจะสนุกกับการพัฒนาแอพลิเคชั่นบนแอนดรอยด้วยภาษาไพธอน พบกันใหม่โอกาสหน้า ครับ

แหล่งอ้างอิง
http://code.google.com/p/zxing/

การเขียนไพธอนบนแอนดรอย ตอน สั่งถ่ายภาพและบันทึกลง sdcard

สวัสดีครับ รู้สึกดีใจครับ ที่ได้มาเรียนรู้การใช้งานระบบเปิดที่เก่งและดี เป็นของฟรี เพราะผมคิดว่า กลุ่มโอเพ่นซอร์สครับที่มีส่วนผลักดันเทคโนโลยี สำหรับวันนี้ นำท่านถ่ายภาพและบันทึกลง sdcard มีใจความดัีงนี้

เครื่องมือ
Android SDK
Python for android
SL4A

โค๊ดโปรแกรมแสดงได้ดังนี้

import android
droid = android.Android()
droid.cameraCapturePicture('/sdcard/mypicture.jpg')

คำสั่ง cameraCapturePicture() เป็นการสั่งให้ถ่ายภาพส่วนพารามิเตอร์ที่ส่งเข้าไปให้ฟังก์ชั่นนี้ คือ ชื่อไฟล์ ผมตั้งชื่อว่า mypicture.jpg และบันทึกไว้ใน sdcard ครับ ขอให้เช็คด้วยครับเพราะบางระบบใช้ /mnt/sdcard

หวังว่าท่านจะสนุกกับการพัฒนาแอพลิเคชั่นบนแอนดรอยด้วยภาษาไพธอนครับ สวัสดี

การจัดการฐานข้อมูล SqLite กับแอนดรอยด้วยภาษาไพธอน

สวัสดีครับ วันนี้นำเสนอการเขียนโปรแกรมภาษาไพธอนติดต่อฐานข้อมูล SqLite ไม่เสียค่าลิขสิทธิ์ ในเครื่องแอนดรอย ครับ ปกติหากท่านติดตั้ง SL4L และไพธอนในระบบของท่านเรียบร้อยแล้ว ท่านสามารถใช้งานไลบรารี่ sqlite ได้ครับ (ของดีและฟรีมีให้ใช้ด้วยระบบเปิด) มีใจความสำคัญดังนี้

พิจารณาโค๊ดต่อไปนี้
# -*- encoding: utf-8 -*-


import android
droid = android.Android()


import sqlite3

DB_NAME = '/mnt/sdcard/MyDatabase3.db'
database = sqlite3.connect(DB_NAME) # Create a database file
cursor = database.cursor() # Create a cursor
cursor.execute("CREATE TABLE IF NOT EXISTS mytable(name VARCHAR(20), zipcode VARCHAR(5))") # Make a table

# Insert some people into the table
cursor.execute("INSERT INTO mytable(name, zipcode) VALUES('จักรกฤษณ์  แสงแก้ว', '30000')")
cursor.execute("INSERT INTO mytable(name, zipcode) VALUES('ไพธอนประเทศไทย', '30000')")

database.commit() # Save our changes
database.close() # Close the connection to the database

database = sqlite3.connect(DB_NAME) # Open the database file
cursor = database.cursor() # Create a cursor

cursor.execute("SELECT * FROM mytable LIMIT 0,10") # Select everyone in the table
results = cursor.fetchall()
for entry in results:
    print "%s %s\n"%(entry[0],entry[1])


คำอธิบาย

1. คำสั่ง # -*- encoding: utf-8 -*- หมายถึงกำหนดให้เอกสารโค๊ดเข้ารหัสแบบ UTF-8 กล่าวคือเป็นCharacter Set ที่ใช้อักขระได้ทุกภาษา



2. คำสั่ง import android เป็นการขอใช้งานไลบราีรี่ android

3. คำสั่ง droid = android.Android() เป็นการสร้างอินสแตนท์หรืออ็อบเจ็คจากคลาส Android()


4. คำสั่ง import sqlite3 ขอใช้ไลบราีรี่ sqlite3


5. คำสั่ง DB_NAME = '/mnt/sdcard/MyDatabase3.db' ประกาศตัวแปร DB_NAME และให้ระบุไดเร็คทอรี่ /mnt/sdcard/MyDatabase3.db" คือชื่อไดเร็คทอรี่และชื่อไฟล์ฐานข้อมูล

6. คำสั่ง database = sqlite3.connect(DB_NAME) เป็นการสร้างฐานข้อมูล

7. คำสั่ง cursor = database.cursor() สร้างเคอร์เซอร์

8. คำสั่ง cursor.execute("CREATE TABLE IF NOT EXISTS mytable(name VARCHAR(20), zipcode VARCHAR(5))") เป็นการสร้างตารางชือ mytable มีสองฟิลด์ name และ zipcode

9. คำสั่ง ป้อนข้อมูลเข้าตารางด้วยคำสั่ง SQL
cursor.execute("INSERT INTO mytable(name, zipcode) VALUES('ไทยแอนดอรยมาเก็ต', '30000')")
cursor.execute("INSERT INTO mytable(name, zipcode) VALUES('ไพธอนประเทศไทย', '30000')")

10. คำสั่ง database.commit()  ทำการบันทึกการฐานข้อมูล

11. คำสั่ง database.close() ทำการปิดฐานข้อมูล

ต่อไปแสดงขั้นตอนการอ่านข้อมูลในฐานข้อมูล

12. คำสั่ง database = sqlite3.connect(DB_NAME) ทำการเปิดฐานข้อมูล

13. คำสั่ง cursor = database.cursor() ทำการสร้างเคอร์เซอร์

14. คำสั่ง cursor.execute("SELECT * FROM mytable LIMIT 0,10") คำสั่งเอ็กซีคิวส์ SQL

15. คำสั่ง results = cursor.fetchall() วนเข้าไปใน cursor และ fetch ข้อมูลทั้งหมดออกมา

16. for entry in results:   วนรอบและแสดงผลข้อมูลออกมา
       print "%s %s\n"%(entry[0],entry[1])  โดยที่ entry[0] คือ คอลัมน์ name และ entry[1] คือคอลัม zip


สำหรับวันนี้ขอนำเสนอขั้นตอนพอเป็นสังเขปเท่านี้ครับ พบกันใหม่โอกาสต่อไป สวัสดีครับ

แหล่งอ้างอิง
http://sqlite.org
http://python.org

การใช้งานคำสั่ง adb เพื่อสื่อสารระหว่างแอนดรอยและ PC

สวัสดีครับ สำหรับวันนี้นำท่านใช้งานคำสั่ง adb เพื่อสื่อสารระหว่างแอนดรอยและคอมพิวเตอร์ส่วนบุคคล ด้วยความสามารถของ adb ท่านสามารถรับและส่งไฟล์ผ่านคำสั่ง CLI (Command Line Interface) ได้ อีกทั้งท่านสามารถติดตั้งโปรแกรมต่าง ๆ ซึ่งมีนามสกุล .apk (ไฟล์ APK คือไฟล์ ZIP ที่เปลี่ยนนามสกุล) ลงไปในเครื่องแอนดรอยด ได้

เครื่องมือ
1. Android SDK  ศึกษาเพิ่มเติมได้จาก http://developer.android.com

การแสดงรายชื่ออุปกรณ์ที่เชื่อมต่อกับคอมพิวเตอร์
#adb devices

การติดตั้งโปรแกรม
#adb install  programfile.apk

การถ่ายโอนไฟล์จากคอมพิวเตอร์ไปหาแอนดรอย
# adb push  <local path>  <remote path>

การถ่ายโอนไฟล์จากแอนดรอยมาคอมพิวเตอร์
# adb pull <remote path> <local path>

ปล. ท่านสามารถติดตั้งโปรแกรม ADB WIFI เพื่อใช้งานคำสั่ง adb ผ่านการ wifi ได้ ช่วยให้ท่านสะดวกมาก ไม่ต้องเชื่อมต่อแอนดรอยผ่านสาย USB กับคอมพิวเตอร์

หวังว่าท่านจะสนุกกับการพัฒนาแอพลิเคชั่นและใช้งานแอนดรอยด พบกันใหม่โอกาสหน้าครับ

แหล่งอ้างอิง
http://developer.android.com
http://developer.android.com/guide/developing/tools/adb.html

การพัฒนาแอพลิเคชั่นบนแอนดรอย ด้วยภาษาไพธอน ตอน การเขียนสั่งสั่นเครื่อง

สวัสดีครับ สำหรับวันนี้นำเอาวิธีการพัฒนาแอพลิเคชั่นบนแอนดรอยมาฝากท่านทั้งหลาย โดยปกติการพัฒนาแอพลิเคชั่นบนแอนดรอยนิยมใช้ภาษาจาวา แต่ทั้งนี้เราสามารถพัฒนาแอพลิเคชั่นจากภาษาอื่น ๆ ได้เช่นกัน โดยทางกูเกิ้ลมีโปรเจ็ค SL4A หมายถึง Script Language for Android ซึ่งมีหลายภาษาที่สนับสนุนได้แก่ ไพธอน, รูบี้, พีเอชพี, และอื่น ๆ

สิ่งที่ต้องการ
- โปรแกรมภาษาไพธอนสำหรับแอนดรอย http://code.google.com/p/python-for-android/
- โปรแกรม SL4A ดาวน์โหลดได้จาก http://code.google.com/p/android-scripting/downloads/list

โปรแกรมสำหรับสั่งให้สั่นเครื่อง 100 ms
import android
droid = android.Android()
droid.vibrate(100)

คำอธิบาย
คำสั่ง import android เป็นการขอใช้งานไลบรารี่ android ซึ่งในไลบรารี่นี้จะมีชุดคำสั่งเพื่อควบคุมระบบฮาร์ดแวร์และซอฟต์แวร์ จำนวนมาก ท่านสามารถศึกษารายละเอียดเพิ่มเติมของแต่ละคำสั่งในได้จากคู่มืออ้างอิง

บรรทัด droid = android.Android() หมายถึงการสร้างอ็อบเจ็คหรืออินสแตนท์ ชื่อ droid ท่านสามารถตั้งชื่ออื่นได้ เพราะเป็นเพียงการประกาศชื่ออ็อบเจ็คเท่านั้น และอ็อบเจ็คนี้เกิดจากคลาส Android() ซึ่งอยู่ภายในไลบรารี่ android

บรรทัด droid.vibrate(100) เป็นการเรียกใช้ฟังก์ชั่น vibrate() โดยส่งพารามิเตอร์หรืออาร์กิวเมนต์ให้กับฟังก์ชั่น vibrate ด้วยระยะเวลามีหน่วยเป็นมิลลิเซค

หวังว่าท่านจะสนุกกับการพัฒนาแอพลิเคชั่นบนแอนดรอยด้วยภาษาไพธอนครับ พบกันใหม่โอกาสหน้าครับ สำหรับวันนี้สวัสดีครับ

แหล่งข้อมูล
http://code.google.com/p/python-for-android/
http://code.google.com/p/android-scripting/downloads/list

แนะนำชุดพัฒนาแอนดรอย์ด Odroid-T

สวัสดีครับ.. สำหรับวันนี้ผมขอแนะนำชุดพัฒนาบอร์ดสำหรับแอนดรอย์ด จากเกาหลี  engadget.com ครับ

คุณสมบัติพื้นฐานของ Hardkernel Odroid-T
(รุ่นสำหรับนักพัฒนา)

1. โปรเซสเซอร์ Samsung S5PC110 Cortex-A8 1Ghz with 512KB L2 cache (Hummingbird) & SGX540 3D Accelerator

2. หน่วยความจำหลัก RAM 512MB DDR

3. จอภาพ Screen 10.1″ / 1366 x 768 LVDS / capacitive touch (multi touch possible)

4. การต่อออกจอ A/V Output 1080p HDMI Out / AudioNetwork WLAN (802.11 b/g)/ Bluetooth 2.0+EDR

5. สายเชื่อมต่อสัญญาณ Connectors USB 2.0 HS Host (standard A type connector) / mini-HDMI connector with SPDIF audio

6. เซนเซอร์วัดความเร่งสำหรับการเคลื่อนที่ (Sensors Accelerometer)

7. แบตเตอร์รี่ Battery ~6000mAh Lithium-Polymer

8. ระบบปฏิบัติการ Android 2.1 / External GPS (included in package) / SD Slot / (micro SD Slot maybe only in developer edition)

9. ผู้ผลิต Manufacturer Hardkernel

10. ราคา 600$.

หวังว่าบอร์ดนี้จะทำให้ท่านสามารถศึกษาและเรียนรู้กลไกการทำงาน ตลอดจนการพัฒนาแอพลิเคชั่น ต่าง ๆ ด้วยระบบปฏิบัติการแอนดรอย์ดครับ พบกันใหม่โอกาสหน้าครับ สวัสดีครับ

แนะนำบอร์ด Mini2440 ระบบปฏิบัติการ Linux, Android และ WinCE

สวัสดีครับ สำหรับวันนี้แนะนำบอร์ด Mini 2440 ซึ่งเป็นชุดบอร์ดทดลองอิเล็กทรอนิกส์ สำหรับบอร์ดนี้ สามารถควบคุม GPIO และอุปกรณ์อื่น ๆ อีกเพรียบ

ผู้เขียนได้ทำการเขียน Image ของระบบปฏิบัติการ ลินุกซ์ ซึ่งมาพร้อมกับชุดทดลอง นอกจากนั้นได้ทดลองนำระบบปฏิบัติการ WinCE และ Android เขียนลงไปในชุดทดลอง พบว่า การทำงานยังทำได้ช้าเนื่องจาก CPU และหน่วยความจำหลักยังมีจำกัด แต่ก็เพียงพอสำหรับการศึกษาในเบื้องต้นเพื่อให้ทราบหลักการทำงาน

รายละเอียดฮาร์ดแวร์ดังนี้

1. ขนาด : 100 x 100 mm
2. CPU: 400 MHz Samsung S3C2440A ARM920T (max freq. 533 MHz)
3. หน่วยความจำหลัก RAM: 64 MB SDRAM, 32 bit Bus
4. แฟลต Flash: 64 MB / 128 MB / 256 MB / 1GB NAND Flash and 2 MB NOR Flash with BIOS
5. EEPROM: 256 Byte (I2C)
6. Ext. Memory: SD-Card socket
7. Serial Ports: 1x DB9 connector (RS232), total: 3x serial port connectors
8. USB: 1x USB-A Host 1.1, 1x USB-B Device 1.1
9. Audio Output: 3.5 mm stereo jack
10. Audio Input: Connector + Condenser microphone
11. Ethernet: RJ-45 10/100M (DM9000)
12. RTC: Real Time Clock with battery
13. Beeper: PWM buzzer
14. Camera: 20 pin (2.0 mm) Camera interface
15. LCD Interface: 41 pin (1.0 mm) connector for FriendlyARM Displays and VGA Board
16. Touch Panel: 4 wire resistive
17. User Inputs: 6x push buttons and 1x A/D pot
18. User Outputs: 4x LEDs
19. Expansion: 40 pin System Bus, 34 pin GPIO, 10 pin Buttons (2.0 mm)
20. Debug: 10 pin JTAG (2.0 mm)
21. Power: regulated 5V (DC-Plug: 1.35mm inner x 3.5mm outer diameter)
22. Power Consumption: Mini2440: 0.3 A, Mini2440 + 3.5" LCD: 0.6 A, Mini2440 + 7" LCD: 1 A
23. OS Support Windows CE 5 and 6 , Linux 2.6 และ Android

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


แหล่งศึกษาเพิ่มเติม
http://resources.mini-box.com/online/MBD-mini2440+7in-LCD/MBD-mini2440+7in-LCD-manual.pdf

แนะนำเมนบอร์ด Android Tablet จากประเทศไทย

ในปี พ.ศ. 2554 รัฐบาลไทยออกนโยบายแจกแอนดรอย์ด จำนวน 8 แสนเครื่องสำหรับแจกนักเรียนไทย ทั้งนี้บริษัทบริษัทฟอร์ท คอร์ปอเรชั่น ผู้ผลิตตู้สาขา PABX ได้พัฒนาต้นแบบและเสนอให้รัฐบาล เพื่อผลักดันให้ได้รับงานนี้ ก็คงต้องลุ้นกันต่อไป.. บอร์ดตัวนี้ใช้ซีพียูของฟรีสเกล ตระกูล RISC (Reduce Instruction Set Computer) หน้าจอสัมผัส ระบบปฏิบัติการแอนดรอย์

คุณสมบัติพื้นฐาน

1. ซีพียู บริษัท Freescale i.MX51 ARM Cortex A8 – 800Mhz (Support OpenGL)

2. หน่วยความจำ DDR2 -256MB , Flash / MicroSD up to 32GB

3. การเชือมต่อ (GPIO : General Purpose Input Output) เชื่อต่อกับ  socket

4. จอภาพ 7″ TFT LCD interface + Resistive Touch Panel

5. ชุดควบคุมการสัมผัส Touch screen controller

6. การสื่อสาร USB Port Host/slave

7. Ethernet port

สำหรับวันนี้ นำเสนอเทคโนโลยีเกี่ยวกับแอนดรอย์และฮาร์ดแวร์ พบกันใหม่โอกาสหน้า สำหรับวันนี้สวัสดีครับ

แนะนำการติดต่อฮาร์ดแวร์บนระบบปฏิบัติการแอนดรอย์ ด้วย IOIO board

หากท่านผู้อ่านต้องการเขียนโปรแกรมติดต่อและควบคุมอุปกรณ์ฮาร์ดแวร์ เช่นการสั่งให้หลอด LED กระพริบเปิดปิด หรือสั่งควบคุมไฟฟ้าภายในบ้าน หรือควบคุมเซอร์โวมอเตอร์ และงานอิเล็กทรอนิกส์อื่น ๆ ท่านสามารถเขียนโปรแกรมควบคุมผ่านระบบปฏิบัติการแอนดอร์ยได้ ด้วยภาษาจาวา และภาษาสคริปต์ เช่น ไพธอน, รุบี้, พีเอชพี เป็นต้น

บอร์ดนี้ชื่อว่า IOIO Board สำหรับ android

คุณสมบัติของบอร์ด IOIO Android
1. พัฒนาขึ้นโดยไมโครคอนโทรลเลอร์ เบอร์ PIC24FJ128DA ร่วมกับ USB OTG (On The Go) หมายถึง มี USB Host อยู่ในตัวทำให้เขียนโปรแกรมส่งสัญญาณไปควบคุมไมโครคอนโทรลเลอร์ ผ่าน USB Port
2. รองรับอินพุตเอาต์พุต (GPIO : General Purpose Input Output) จำนวน 48 ช่องสัญญาณ
3. รองรับอินพุตอะนาลอก 16 ช่อง ต่อเข้ากับโมดูลแปลงสัญญาณอะนาลอกเป็นดิจิตอล ความละเอียด 10 บิตภายในตัวชิป
4. รองรับเอาต์พุต PWM ความละเอียด 10 บิต 9 ช่อง
5. รองรับพอร์ตสื่อสารอนุกรม UART 4 ชุด
6. รองรับระบบบัส 2 สาย 3 ชุด
7. รองรับการทำงานกับบัส I2C
8. หัวต่อคอนเน็กเตอร์ USB แบบ A ทำให้ใช้สายเชื่อมต่อพอร์ต USB ของแอนดรอย์ได้เลย
9. มี LED แสดงผลการทำงาน และ LED แสดงสถานไฟเลี้ยง
10. ไฟเลี้ยง 5 ถึง 12V
11. แหล่งจ่ายไฟบนบอร์ด มี 2 ชุดคือ +3.3V สำหรับเลี้ยงวงจรและไมโครคอนโทรลเลอร์ PIC24FJ128 และ +5V 1500mA แบบสวิตชิ่ง สำหรับเลี้ยงอุปกรณ์แอนดรอยด์ที่นำมาต่อร่วมด้วย

12. บอร์ด IOIO พัฒนาโดย YTAI http://ytai-mer.blogspot.com แบบโอเพ่นซอร์ส สามารถนำเอา schematic และแผ่นวงจร PCB รวมถึง Firmware ไปพัฒนาเป็นโปรเจ็คต่อไปได้โดยไม่เสียค่าลิขสิทธิ์
13. การเชื่อมต่อแอนดรอยด์ใช้การสื่อสารแบบ ADB ผ่าน CLI (Command Line Interface) ใช้ได้กับระบบปฏิบัติการแอนดรอยด์เวอร์ชัน 1.5 ขึ้นไป

14. การพัฒนาแอปพลิเคชั่นร่วมกับบอร์ด IOIO จะมีไลบรารีและคำสั่ง API (Application Programming Interface) สำหรับการควบคุมบอร์ด IOIO ได้แก่ การติดต่อกับพอร์ตอินเอาต์พุตมาตรฐาน, อินพุตอะนาลอกสำหรับอ่านค่าแรงดันไฟฟ้า, เอาต์พุต PWM สำหรับส่งสัญญาณพัลส์ควบคุมมอเตอร์หรือความสว่างของหลอดไฟ การพัฒนาแอพลิเคชั่นสามารถมุ่งเน้นไปที่การเขียนโปรแกรมบนอุปกรณ์แอนดรอยด์ จากนั้นติดตั้งแอปพลิเคชั่นที่พัฒนาแล้วลงบนอุปกรณ์แอนดรอยด์ซึ่งเชื่อมต่อกับบอร์ด IOIO ผ่านพอร์ต USB

แหล่งข้อมูลเพิมเติม
Schematic : http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Widgets/IOIO-v15.pdf
Schematic + PCB ใช้ Eagle : http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Widgets/IOIO-v15.zip
เฟิร์มแวร์ IOIO : http://codaset.com/ytai/ioio/source/master/raw/release/IOIO-V10.zip
ซอร์สโค้ด IOIO เฟิร์มแวร์ : http://codaset.com/ytai/ioio/source
คู่มือ : http://www.sparkfun.com/tutorials/280
IOIO Discussion/Support Group : https://groups.google.com/forum/?pli=1#!forum/ioio-users

สำหรับวันนี้ หวังว่าท่านจะสนุกกับการพัฒนาแอพลิเคชั่น บนแอนดรอย์และควบคุมอุปกรณ์ฮาร์ดแวร์อิเล็กทรอนิกส์ ครับ พบกันใหม่โอกาสหน้า สวัสดีครับ

ยินดีต้อนรับสู่ ไทยแอนดรอย์มาเก็ต



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