Introduction to Android
description
Transcript of Introduction to Android
อ. สพจน สงหษฐต
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 0.9320x480 HVGA
2008 Aug 18
Android 1.0Apple pieAPI 1.0320x480 HVGA
2008 Sep 23
Android 1.1Banana breadAPI 2.0320x480 HVGA
2009 Feb 9
Android 1.5
2009 Apr 30
CupcakeAPI 3.0Bluetooth A2DP, AVRCP supportSoft-keyboard with text-predictionRecord/watch videos320x480 HVGA
Android version history
Android 1.6DonutAPI 4.0Gesture frameworkTurn-by-turn navigation800×480 WVGA
2009 Sep 15
Android 2.0ÉclairAPI 5.0Digital zoomLive WallpapersUpdated UI800×480 WVGA
2009 Oct 26
Android 2.2FroyoAPI 8.0Flash 10.1JIT implementationUSB TetheringApplications installation to the expandable memoryUpload file support in the browserAnimated GIFs800×480 WVGA
2010 May 20
Android version history
Android 2.3GingerbreadAPI 9.0Near Field Communication supportNative VoIP/SIP supportVideo call support1366×768 WXGA
2010 Dec 6
Android 3.0HoneycombAPI 11.0Multi core supportBetter tablet supportUpdated 3D UI"Private browsing“Open Accessory APIUSB host APIMice, joysticks, gamepads... support
2011 Feb 22
Android version history
Android 4.0Ice Cream SandwichAPI 14.0Facial recognition (Face Unlock)UI use Hardware accelerationWeb browser, allows up to 16 tabsUpdated launcher Android Beam exchange data through NFCResizable widgetsVideo stabilization GoogleNow
2011 Oct 19
Android 4.1Jelly Bean
Android version history
Triple buffering in the graphics pipelineExtends vsync timing across all drawing and animationCPU input boostBi-Directional Text and Other Language SupportAndroid BeamGoogle Cloud Messaging for AndroidApp EncryptionSmart App Updates
Android Handsets
10SJU 2004-04 Android
Motorola CliqHTC G1 HTC HeroSamsung i7500
Samsung MomentMotorola DroidHTC Magic HTC Tattoo
Sony X10
Android Architecture
แอนดรอยดเปนซอฟตแวรทมโครงสรางแบบเรยงทบซอนหรอ แบบสแตก (Stack) ซงรวมเอาระบบปฏบตการ (Operating System)
, มดเดลแวร (Middleware) และแอพพลเคชนทสำาคญเขาไวดวยกน เพอใชสำาหรบทำางานบนอปกรณพกพาเคลอนท (Mobile Devices) เชน โทรศพทมอถอ เปนตน
การทำางานของแอนดรอยดมพนฐานอยบนระบบลนกซ เคอรเนล (Linux Kernel) ซงใช Android SDK (Software Development Kit) เปนเครองมอสำาหรบการพฒนา
แอพพลเคชนบนระบบปฏบตการ Android และใชภาษา Java ในการพฒนา
The Kernel
Linux kernel
• ทำาหนาทเปน Hardware Abstraction Layer คอเปนตวกลางระหวาง ฮารดแวร กบสวนของซอรฟแวรทอยถดขนไป
• ทำาหนาทบรหารจดการทรพยากรตางๆของเครอง เชน การจดการหนวยความจำา (Memory Management)
การจดการโพรเซส (Process Management) การเชอมตอเครอขาย (Networking) เปนตนฯลฯ
• ผผลตอปกรณสามารถพอรต (port) แอนดรอยดใหไปรนบนฮารดแวร แบบตางๆไดโดยเปลยนแปลงในสวนของ Linux kernel น
Libraries
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
Android Runtime Dalvik Virtual Machine
20
เปนชนยอยทอยในชนไลบราร ซงจะประกอบดวย 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)
Android Runtime
Application Framework & Toolkit
ในชนนจะอนญาตใหนกพฒนาสามารถเขาเรยกใชงาน โดยผาน 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 Framework
Android Application
Application Building Blocks ชนนจะเปนชนทอยบนสดของโครงสรางสถาปตยกรรม Android
ซงเปนสวนของแอพพลเคชนทพฒนาขนมาใชงาน เชน แอพพลเคชนรบ/สงอเมล, SMS, ปฏทน, แผนท, เวบเบราเซอร,
รายชอผตดตอ เปนตน ซงแอพพลเคชนจะอยในรปแบบของไฟล .apk
User Interface
30SJU 2004-04 Android
Sleep as android
Run keeper
Android Apps
Shazam
gStrings
Android Apps
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 connectionsNo support for camera/video capture (input).No support for device-attached headphonesNo support for determining connected stateNo support for determining battery charge levelNo support for determining SD card insertion/removalNo support for BluetoothNo support for Multitouch
Android Open Accessory Development Kit (ADK)
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
การสราง AlertDialog
การสราง AlertDialog
การสราง AlertDialog1) import android.app.AlertDialog;2) AlertDialog.Builder adb = 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("Sawatdee khun : " + aaa);ad.show();}});
การสราง Alert Text
การสราง Alert Text
การสราง Alert Text1) import android.widget.Toast;2) EditText editT1 = (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(int requestCode, int resultCode, 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(int requestCode, int resultCode, 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 TextView txtv;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");}}
การขอ Google Maps API Key1) หาไฟล debug.keystore ใหเจอ
2) keytool -list -alias androiddebugkey -keystore <path_to_debug_keystore>.keystore -storepass android -keypass android
D:\ >keytool -list -alias androiddebugkey -keystore D:\.android\debug.keystore -storepass android -keypass android
3) ผลลพธ Certificate fingerprint (MD5): 82:48:6B:DE:82:84:8D:E0:AC:0A:6F:09:94:4F:5F:07
4) ไปท http://code.google.com/intl/th/android/maps-api-signup.html
5) Your key is 0ZI4J5um4YUPUcW4rqP2CulDXvicUXanHTZ2JPg