510 likes | 723 Views
Introduction to Android. อ . สุ พจน์ สิง หัษ ฐิต. What is Android ?. แอน ดรอยด์ ( Android) เป็นระบบปฏิบัติการสำหรับอุปกรณ์พกพา เช่น โทรศัพท์มือถือ แท็บเล็ต คอมพิวเตอร์ เน็ตบุ๊ก เป็นต้น ซึ่งพัฒนามาจากระบบปฏิบัติการลิ นุกซ์ (Linux)
E N D
Introduction to Android อ.สุพจน์ สิงหัษฐิต
What is Android ? แอนดรอยด์ (Android) เป็นระบบปฏิบัติการสำหรับอุปกรณ์พกพา เช่น โทรศัพท์มือถือ แท็บเล็ตคอมพิวเตอร์ เน็ตบุ๊ก เป็นต้น ซึ่งพัฒนามาจากระบบปฏิบัติการลินุกซ์(Linux) แอนดรอยด์ ถูกพัฒนาโดยบริษัทแอนดรอยด์ (Android Inc.) จากนั้นบริษัทแอนดรอยด์ถูกซื้อโดยกูเกิล และกูเกิลได้ร่วมมือกับกลุ่มบรษัททางด้านฮาร์ดแวร์ ซอร์ฟแวร์ และ การสื่อสาร เพื่อจัดตั้งองค์กรความร่วมมือชื่อว่า Open Handset Alliance
What is Android ? Open Handset Alliance จัดตั้งขึ้นเพื่อวัตถุประสงค์ในการสร้างแพลตฟอร์ม (Platform) สำหรับอุปกรณ์พกพาที่มีพื้นฐานอยู่บนมาตรฐานเปิด (Open Standard) นักพัฒนาสามารถพัฒนาแอพพลิเคชั่นที่รันบนแอนดรอยด์ ได้โดยใช้ภาษาจาวา โดยการเข้าถึงความสามารถต่างๆของแอนดรอยด์ จะกระทำผ่านทางชุด Java libraries ที่กูเกิลได้จัดเตรียมไว้ให้ใน Android SDK
Android version history 2008 Aug 18 2008 Sep 23 2009 Feb 9 2009 Apr 30 Android 1.5 Android 0.9 320x480 HVGA Android 1.0 Apple pie API 1.0 320x480 HVGA Android 1.1 Banana bread API 2.0 320x480 HVGA • Cupcake • API 3.0 • Bluetooth A2DP, AVRCP support • Soft-keyboard with text-prediction • Record/watch videos • 320x480 HVGA
Android version history 2009 Sep 15 2009 Oct 26 2010 May 20 • Android 1.6 • Donut • API 4.0 • Gesture framework • Turn-by-turn navigation • 800×480 WVGA • Android 2.0 • Éclair • API 5.0 • Digital zoom • Live Wallpapers • Updated UI • 800×480 WVGA • Android 2.2 • Froyo • API 8.0 • Flash 10.1 • JIT implementation • USB Tethering • Applications installation to the expandable memory • Upload file support in the browser • Animated GIFs • 800×480 WVGA
Android version history 2010 Dec 6 2011 Feb 22 • Android 2.3 • Gingerbread • API 9.0 • Near Field Communication support • Native VoIP/SIP support • Video call support • 1366×768 WXGA • Android 3.0 • Honeycomb • API 11.0 • Multi core support • Better tablet support • Updated 3D UI • "Private browsing“ • Open Accessory API • USB host API • Mice, joysticks, gamepads... support
Android version history 2011 Oct 19 • Android 4.0 • Ice Cream Sandwich • API 14.0 • Facial recognition (Face Unlock) • UI use Hardware acceleration • Web browser, allows up to 16 tabs • Updated launcher • Android Beam exchange data through NFC • Resizable widgets • Video stabilization • GoogleNow Android 4.1 Jelly Bean Triple buffering in the graphics pipeline Extends vsync timing across all drawing and animation CPU input boost Bi-Directional Text and Other Language Support Android Beam Google Cloud Messaging for Android App Encryption Smart App Updates
Android Architecture แอนดรอยด์เป็นซอฟต์แวร์ที่มีโครงสร้างแบบเรียงทับซ้อนหรือ แบบสแต็ก (Stack) ซึ่งรวมเอาระบบปฏิบัติการ (Operating System) , มิดเดิลแวร์ (Middleware) และแอพพลิเคชันที่สำคัญเข้าไว้ด้วยกัน เพื่อใช้สำหรับทำงานบนอุปกรณ์พกพาเคลื่อนที่ (Mobile Devices) เช่น โทรศัพท์มือถือ เป็นต้น การทำงานของแอนดรอยด์มีพื้นฐานอยู่บนระบบลีนุกซ์เคอร์เนล (Linux Kernel) ซึ่งใช้ Android SDK (Software Development Kit) เป็นเครื่องมือสำหรับการพัฒนา แอพพลิเคชันบนระบบปฏิบัติการ Android และใช้ภาษา Java ในการพัฒนา
Linux kernel • ทำหน้าที่เป็น Hardware Abstraction Layer คือเป็นตัวกลางระหว่าง ฮาร์ดแวร์ กับส่วนของซอร์ฟแวร์ที่อยู่ถัดขึ้นไป • ทำหน้าที่บริหารจัดการทรัพยากรต่างๆของเครื่อง เช่น การจัดการหน่วยความจำ (Memory Management) การจัดการโพรเซส (Process Management) การเชื่อมต่อเครือข่าย (Networking) เป็นต้นฯลฯ • ผู้ผลิตอุปกรณ์สามารถพอร์ต (port) แอนดรอยด์ให้ไปรันบนฮาร์ดแวร์ แบบต่างๆได้โดยเปลี่ยนแปลงในส่วนของ Linux kernel นี้
Libraries • Android ได้รวบรวมกลุ่มของไลบรารีต่างๆ ที่สำคัญและมีความจำเป็นเอาไว้มากมาย • เพื่ออำนวยความสะดวกให้กับนักพัฒนาและง่ายต่อการพัฒนาโปรแกรม • โดยตัวอย่างของไลบรารีที่สำคัญเช่น • System C library เป็นกลุ่มของไลบรารีมาตรฐานที่อยู่บนพื้นฐาน • ของภาษา C ไลบรารี (libc) สำหรับ embedded system ที่มีพื้นฐานมาจาก Linux • Media Libraries เป็นกลุ่มการทำงานมัลติมีเดีย เช่น MPEG4, H.264, MP3, • AAC, AMR, JPG, และ PNG • Surface Manager เป็นกลุ่มการจัดการรูปแบบหน้าจอ การวาดหน้าจอ
Libraries • 3D/3D library เป็นกลุ่มของกราฟิกแบบ 2 มิติ หรือ • SGL (Scalable Graphics Library) และแบบ 3 มิติ หรือ OpenGL • FreeTypeเป็นกลุ่มของบิตแมป (Bitmap) และเวคเตอร์ (Vector) สำหรับ • การเรนเดอร์ (Render) ภาพ • SQLiteเป็นกลุ่มของฐานข้อมูล โดยนักพัฒนาสามารถใช้ฐานข้อมูลนี้เก็บข้อมูล • แอพพลิเคชันต่างๆ ได้ • Browser Engine เป็นกลุ่มของการแสดงผลบนเว็บเบราเซอร์โดยอยู่บนพื้นฐานของ • Webkitซึ่งจะมีลักษณะคล้ายกับ Google Chrome
20 Android Runtime DalvikVirtual Machine
Android Runtime เป็นชั้นย่อยที่อยู่ในชั้นไลบรารี ซึ่งจะประกอบด้วย 2 ส่วนหลักคือ Dalvik VM (Virtual Machine) ส่วนนี้ถูกเขียนด้วยภาษา Java เพื่อใช้เฉพาะการใช้งานในอุปกรณ์เคลื่อนที่ Dalvik VM จะแตกต่างจาก Java VM (Virtual Machine) คือ Dalvik VM จะรันไฟล์ .dexที่คอมไพล์ มาจากไฟล์ .class และ .jar โดยมี tool ที่ชื่อว่า dxทำหน้าที่ในการบีบอัดคลาส Java
Android Runtime ทั้งนี้ไฟล์ .dexจะมีขนาดกะทัดรัดและเหมาะสมกับอุปกรณ์เคลื่อนที่มากกว่า .class เพื่อต้องการใช้พลังงานจากแบตเตอรี่อย่างมีประสิทธิภาพสูงสุด
Android Runtime Core Java Library ส่วนนี้เป็นไลบรารีมาตรฐาน แต่ก็มีความแตกต่างจากไลบรารีของ Java SE (Java Standard Edition) และ Java ME (Java Mobile Edition)
Application Framework ในชั้นนี้จะอนุญาตให้นักพัฒนาสามารถเข้าเรียกใช้งาน โดยผ่าน API (Application Programming Interface) ซึ่ง Android ได้ออกแบบไว้เพื่อลดความซ้ำซ้อนในการ ใช้งาน application component โดยในชั้นนี้ประกอบด้วยแอพพลิเคชันเฟรมเวิร์คดังนี้
Application Framework • View System เป็นส่วนที่ใช้ในการควบคุมการทำงานสำหรับการ • สร้างแอพพลิเคชัน เช่น lists, grids, text boxes, buttons • และ embeddable web browser • Location Manager เป็นส่วนที่จัดการเกี่ยวกับค่าต่ำแหน่งของ • เครื่องอุปกรณ์พกพาเคลื่อนที่ • Content Provider เป็นส่วนที่ใช้ควบคุมการเข้าถึงข้อมูลที่ • มีการใช้งานร่วมกัน (Share data) ระหว่างแอพพลิเคชันที่แตกต่างกัน • เช่น ข้อมูลผู้ติดต่อ (Contact)
Application Framework • Resource Manager เป็นส่วนที่จัดการข้อมูลต่างๆ ที่ไม่ใช่ส่วนของ • โค้ดโปรแกรม เช่น รูปภาพ, localized strings, layout ซึ่งจะอยู่ • ในไดเร็คทอรี res/ • Notification Manager เป็นส่วนที่ควบคุมอีเวนต์ (Event) ต่างๆ • ที่แสดงบนแถบสถานะ (Status bar) เช่น ในกรณีที่ได้รับข้อความหรือ • สายที่ไม่ได้รับและการแจ้งเตือนอื่นๆ เป็นต้น • Activity Manager เป็นส่วนควบคุม Life Cycle ของแอพพลิเคชัน
Application Building Blocks ชั้นนี้จะเป็นชั้นที่อยู่บนสุดของโครงสร้างสถาปัตยกรรม Android ซึ่งเป็นส่วนของแอพพลิเคชันที่พัฒนาขึ้นมาใช้งาน เช่น แอพพลิเคชันรับ/ส่งอีเมล์, SMS, ปฏิทิน, แผนที่, เว็บเบราเซอร์, รายชื่อผู้ติดต่อ เป็นต้น ซึ่งแอพพลิเคชันจะอยู่ในรูปแบบของไฟล์ .apk
Android Apps Sleep as android Run keeper
Android Apps Shazam gStrings
Android Apps Google skymap Games
Android software development • J2se JDK • Android SDK • SDK Platform • SDK Platform tools • SDK Tools • Emulator & Images • Example • Eclipse IDE • ADT Plug-in • ADB USB Driver • Internet connection for online install
Emulator limitation No support for placing or receiving actual phone calls. No support for USB connections No support for camera/video capture (input). No support for device-attached headphones No support for determining connected state No support for determining battery charge level No support for determining SD card insertion/removal No support for Bluetooth No support for Multitouch
IOIO for Android • -Chainable LED • -Joystick • -PIR Motion Sensor • -Ultra Sonic range finder • -Temp&Humi Sensor • -125Khz RFID Card Reader • -Relay • -High Sensitive Mini Servo
การสร้าง AlertDialog1) import android.app.AlertDialog;2)AlertDialog.Builderadb = new AlertDialog.Builder(this);EditText edt1 = (EditText)this.findViewById(R.id.editText1) Button but1 = (Button)this.findViewById(id.button1);3)but1.setOnClickListener(new View.OnClickListener() { public void onClick(View v) {4)AlertDialog ad = adb.create(); String aaa = edt1.getText().toString();ad.setMessage("Sawatdeekhun : " + aaa);ad.show(); } });
การสร้าง Alert Text1) import android.widget.Toast;2)EditTexteditT1 = (EditText)findViewById(R.id.editText1); Button btn1 = (Button)findViewById(R.id.button1); 3)but1.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {4)Toast.makeText(MainActivity.this, String.valueOf("Your Input : " + editT1.getText().toString()), Toast.LENGTH_SHORT).show(); } });
การIntent ที่มีการส่งค่าResult
การIntent ที่มีการส่งค่าResult
การIntent ที่มีการส่งค่าResult
การIntent ที่มีการส่งค่าResult 1) Import android.content.Intent; 2) public void onClick(View v) { Intent i = new Intent(MainActivity.this,Input.class);startActivityForResult(i,13); } 3)protected void onActivityResult(intrequestCode, intresultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data); switch (requestCode){ case(13): if(resultCode==Activity.RESULT_OK) {textview.setText(data.getStringExtra("radius")); } break;}}
การIntent ที่มีการส่งค่าResult 1) Import android.content.Intent; 2) public void onClick(View v) { Intent i = new Intent();i.putExtra("radius", edittext1.getText().toString());Input.this.setResult(RESULT_OK,i); finish(); } 3) protected void onActivityResult(intrequestCode, intresultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data); }
GPS1) ต้องขอสิทธิ์ACCESS_FINE_LOCATIONจาก AndroidManifest.xml<uses-permission ndroid:name="android.permission.ACCESS_FINE_LOCATION"/> 2) import android.location.Location;3) private LocationManager lm; private TextViewtxtv; protected void onCreate(Bundle savedInstanceState) {txtv=(TextView)this.findViewById(R.id.textView1); lm = (LocationManager)this.getSystemService(LOCATION_SERVICE); }4) protected void onResume() {super.onResume();lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,1500,1,this); }
GPS5)protected void onPause() {super.onPause();lm.removeUpdates(this); }6) public void onLocationChanged(Location arg0) { if(arg0 == null)txtv.append("***ไม่สามารถระบุตำแหน่งได้***"+ "\n"); else{txtv.append("ละติจด:"+ arg0.getLatitude()+ "\n");txtv.append("ลองติจด:"+ arg0.getLongitude()+ "\n"); } }