Your SlideShare is downloading. ×

Mobile programming

2,014

Published on

Mobile Programming

Mobile Programming

Published in: Education
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,014
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
122
Comments
0
Likes
4
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. MOBILE PROGRAMMING Lập trình trên thiết bị di động2/9/2012 Huỳnh Công Thịnh – congthinh@ptithcm.edu.vn 1
  • 2. TẠI SAO NÊN THEO NGÀNH NÀY? Tháng 7/2008, Apple ra mắt AppStore. Đến nay, App Store đã có hơn 400,000 ứng dụng với 10 tỷ lƣợt tải về, dẫn đầu ngành về dịch vụ ứng dụng cho di động. Ovi Store của Nokia, Android Market của Google, App World của Blackberry , Huawei Technology.2/9/2012 2
  • 3. TẠI SAO NÊN THEO NGÀNH NÀY? AppStore: 400,000 ứng dụng với 10 tỉ lƣợt tải về OviStore: 55,000 ứng dụng, 760 triệu download Android Market: 200,000 ứng dụng, 4,5 tỉ download App World: 30,000 ứng dụng, 3 triệu download/ngày Huawei Technology: 80.000 ứng dụng $ = 7 tỷ USD >>> 30 tỷ USD trong 3 năm tới2/9/2012 3
  • 4. CÁC MOBILE OS iOS Android Tizen Windows Phone 7 Blackberry OS & Qnx WebOS MeeGo Symbian.2/9/2012 4
  • 5. THỐNG KÊ THỊ TRƢỜNG2/9/2012 5
  • 6. THỐNG KÊ LẬP TRÌNH VIÊN2/9/2012 6
  • 7. THỐNG KÊ LẬP TRÌNH VIÊN2/9/2012 7
  • 8. ANDROID, IOS, WINDOWS PHONE… Vậy, Mobile OS nào là tốt nhất?2/9/2012 8
  • 9. GIAO DIỆN NGƯỜI DÙNG Lấy ứng dụng làm trung tâm. Mọi biểu tƣợng ứng dụng có thể di chuyển hoặc xóa đƣợc. Nổi bật với các Widget. Notification bar…2/9/2012 9
  • 10. ANDROID, IOS, WINDOWS PHONE… Sự kết hợp phần cứng và phần mềm hoàn hảo. Màn hình thoáng đãng với các biểu tƣợng ứng dụng dàn ngay hàng thẳng lối rõ ràng. 11 màn hình chính. Nâng cấp với Notification bar.2/9/2012 10
  • 11. ANDROID, IOS, WINDOWS PHONE… Thay vì lấy ứng dụng làm trung tâm, nhƣ với các nền tảng iOS và Android, Microsoft sử dụng khái niệm mới, gọi là hub (trung tâm), để tổ chức nội dung trong Windows Phone 7. Mỗi hub là một bộ sƣu tập các ứng dụng cùng nhóm. 2 màn hình chính.2/9/2012 11
  • 12. ỨNG DỤNG VÀ TÍNH MỞ2/9/2012 12
  • 13. KHẢ NĂNG TÙY BIẾN2/9/2012 13
  • 14. KHẢ NĂNG TÍCH HỢP DỮ LIỆU2/9/2012 14
  • 15. 2/9/2012 15
  • 16. GOOGLE ANDROID Là gì ?  Open Source OS  Linux kernel (2.6)  Mobile platform (smartphone)  Liên minh OHA (Open Handset Allien): HTC, LG, Samsung, Motorola, T-Mobile, Sprint, NVIDIA, Intel, Broadcom, Qualcom,…)
  • 17. GOOGLE ANDROID Có gì nổi bật ?  Full web (Html/html5, javascript, flash)  Game 2D/3D  Đa điểm (Multi touch)  Đa luồng (Multi thread)  Wifi, 3G, GPS, Sensor,…  Media (Video fullHD, MPeg4, H.264, Mp3, Acc, Ogg,…)
  • 18. GOOGLE ANDROID Lịch sử phát triển:  Google mua Android Inc 17-8-2005  Ra mắt cộng đồng tháng 11-2007, thành lập OHA (Open Handset Allien)  Phiên bản 1.0 ra mắt tháng 9-2008, T-Mobile G1  Phiên bản 1.1 ra mắt tháng 2-2009
  • 19. GOOGLE ANDROIDCác phiên bản  1.5 (Cupcake) – 04/2009  1.6 (Donut) – 09/2009  2.0/2.1 (Eclair) – 10/2009, 01/2010  2.2 (Froyo) – 05/2010  2.3 (Gingerbread) – 06/12/2010  3.0/3.1/3.2 (HoneyComb) – 03 – 7 /2011  4.0 (Ice cream sandwich) – 9/2011
  • 20. GOOGLE ANDROID Ice cream sandwich
  • 21. GOOGLE ANDROID Thị phần (Toàn cầu) Thị phần Android toàn cầu Android 150 triệu điện thoại 34% 40% iOs Phone 7 500.000 lƣợt active/ngày Others 2% 24%
  • 22. GOOGLE ANDROIDThị phần (Việt Nam) Thị phần Android tại Việt Nam 2.93200.000 android device 2.32 0.52 0.36 5.39 Android5 triệu vào năm2015 28.71 Symbian WM7/WM BlacBerry Linux iOS 59.76 Maemo/Meego
  • 23. GOOGLE ANDROIDAndroid Market
  • 24. GOOGLE ANDROIDAndroid Market Số lượng ứng dụng/game: 500.000+ Số lượt tải: 8,1 tỉ lượt Số lượt tải: 31.8 tỉ lượt vào năm 2016
  • 25. GOOGLE ANDROIDAndroid phone  HTC G1 Google Nexus One
  • 26. GOOGLE ANDROIDAndroid phone Motorola Droid/Milestone Samsung Galaxy S
  • 27. GOOGLE ANDROIDAndroid phone HTC Desire HTC Wildfire
  • 28. GOOGLE ANDROIDAndroid phone Samsung Galaxy SII SonyEricsson Arc
  • 29. GOOGLE ANDROIDTiếp cận thế nào ? Sản xuất device Sản xuất ứng dụng, game Cung cấp giải pháp: nhúng, mini board,..
  • 30. GOOGLE ANDROIDLợi nhuận từ đâu ? Sản xuất device:  Bán device to end user Sản xuất ứng dụng, game:  Bán qua Android Market, Vimarket, F-Store,..  Free và thu lợi nhuận từ quảng cáo in app  Outsoucing cho đối tác nước ngoài Cung cấp giải pháp: nhúng, mini board,..  Nghiên cứu và bán giải pháp  Outsourcing
  • 31. GOOGLE ANDROIDLàm ứng dụng loại nào ?
  • 32. GOOGLE ANDROID Làm thế nào để phát triển ứng dụng/game ?
  • 33. GOOGLE ANDROIDKiến trúc
  • 34. PHÁT TRIỂN ỨNG DỤNGChuẩn bị những gì ?  Logic lập trình  Java, C/C++ language  Khái niệm lập trình trên mobile  Kiến thức căn bản về Android OS  Các cộng cụ phát triển
  • 35. PHÁT TRIỂN ỨNG DỤNGCông cụ phát triển ?  Android SDK (Software Development Kit) - Free  Android NDK (Native Development Kit) - Free  Eclipse / Netbean IDE - Free  Windows / Linux (Ubuntu,…)  Máy ảo/ máy thật chạy Android
  • 36. PHÁT TRIỂN ỨNG DỤNGVimarket VietNam 3.0 KarDroid
  • 37. PHÁT TRIỂN GAMEChuẩn bị những gì ?  Tƣ duy đồ họa căn bản  Kiến thức về đồ họa 2D/3D (sprite, camera, projector, model, animation, Texture…)  OpenGL/ES  Game engine
  • 38. PHÁT TRIỂN GAMECông cụ phát triển ?  Công cụ tạo hình: map, nhân vật, vật thể, bối cảnh  Công cụ lập trình  Tập trung vào C/C++ language  Game engine / Game framework  Máy ảo/ máy thật chạy Android: debug, kiểm thử
  • 39. PHÁT TRIỂN GAMEGame engine:  AndEngine (andengine.org): 2D, java (Free)  Libgdx (code.google.com/p/libgdx/) : Java (JNI) (Free)  Unity (unity3d.com/unity): 3D, C#, C++
  • 40. PHÁT TRIỂN ỨNG DỤNGÔ ăn quan Jewel 1 Jewel 2
  • 41. DOWNLOAD ECLIPSE IDE cho lập trình: Eclipse Download: http://www.eclipse.org/downloads/ Vào link bên trên, download eclipse classic v ề rồi giải nén.
  • 42. CÀI ĐẶT ADT PLUGIN• Mở Eclipse lên, bấm vào Help  Install new software.• Ở form hiện ra, chọn Add…• Ở mục Name, nhập tên gì cũng đƣợc, ví dụ nhƣ ADT plugin• Ở mục Location, nhập vào link: http://dl- ssl.google.com/android/eclipse/• Sau đó bấm OK, chọn hết tất cả rồi bấm next cho đến lúc xong.
  • 43. CÀI ĐẶT ANDROID SDK Có thể xem hƣớng dẫn cài đặt gốc tại đây http://developer.android.com/sdk/installing.html Muốn cài đặt of fline: http://dl-ssl.google.com/android/repository/repository.xml http://dl-ssl.google.com/android/repository/<package name>
  • 44. CÀI ĐẶT ANDROID SDK Tải Android SDK tại link này http://developer.android.com/sdk/index.html (nhớ chú ý là nó chia ra Window, Mac và Linux) Mở Eclipse  window  preferences  Android  trong mục SDK location chọn Browse  đƣa đƣờng dẫn đến thƣ mục SDK  bấm apply.
  • 45. CÀI ĐẶT ANDROID SDK Eclipse  window  Android SDK and AVD manager  Available packages  chọn và cài hết (hơi lâu một chút) hoặc bạn có thể chỉ chọn mấy cái liên quan đến Android 1 .6 thôi cũng đƣợc (API level 4).
  • 46. CÀI ĐẶT ANDROID SDK Sau khi xong thì bấm vào Installed packages
  • 47. TẠO MỘT ĐIỆN THOẠI ẢO (AVD)• Eclipse  window  Android SDK and AVD manager  ở cái cửa sổ mới đó, chọn mục Virtual devices  bấm nút New…• Mục Name: đặt tên gì cũng đƣợc• Mục target: chọn API level 4• Sdcard size: bạn gõ vào 1024 (hoặc có thể cao hơn)• Sau đó bấm Create AVD.
  • 48. TẠO MỘT PROJECT MỚI Ở màn hình eclipse, bấm File  New  Project  Android  Android Project  Next Hoặc trên thanh công cụ bấm vào icon nhƣ trong hình
  • 49. TẠO MỘT PROJECT MỚI Ở màn hình kế nhập liệu vào các ô nhƣ sau:  Project name: HelloWorld (tên project hiển trị trên eclipse cũng sẽ là thƣ mục chứ ứng dụng trong workspace)  Application name: Hello World (tên ứng dụng sẽ hiện thị trên điện thoại)  Package name: org.multiuni.android.hellowrold (tên của package sẽ chứa source code, tƣơng tự trong java http://en.wikipedia.org/wiki/Java_package#Package_naming_conve ntions)
  • 50. TẠO MỘT PROJECT MỚI  Create activity: HelloWorldActivity (tạo một lớp con của lớp Activity, dùng để hiển thị một màn hình ở đây là màn hình HelloWorld của chúng ta)  Min SDK version: 4 (tức SDK 1.6, ở đây chúng ta khai báo là ứng dụng này có thể đáp ứng đƣợc phiên bản SDK cũ nhất là phiên bản nào) Sau khi hoàn tất bấm Finish, project mới đã đƣợc tạo.
  • 51. CẤU TRÚC MỘT PROJECT Thƣ mục src chứa source code ứng dụng. Gồm các package và các class. Thƣ mục gen chứa các file tự động phát sinh (mà thƣờng gặp nhất là R.class) Thƣ mục res để chứa các resource dùng trong ứng dụng (thông qua ID) Thƣ mục assets chứa các resource file mà ứng dụng cần dùng (dƣới dạng file)
  • 52. CẤU TRÚC MỘT PROJECT File Manifest là file khai báo thông tin về ứng với hệ thống (nhƣ ứng dụng gồm những màn hình nào, có service nào… xin các quyền gì, phiên bản bao nhiêu, dùng từ SDK phiên bản nào…) Ngoài ra còn có file thƣ viện.
  • 53. CHẠY ỨNG DỤNG HELLO WORLD Với ứng dụng vừa tạo nếu có báo lỗi thì bạn sửa lại thông số cho ứng dụng nhƣ sau: bấm chuột phải vào project  Properties  Java compiler  Compiler compliance settings: 1 .6
  • 54. CHẠY ỨNG DỤNG HELLO WORLD Bấm Ctrl + F11 để chạy ứng dụng, sẽ hiện lên emulator
  • 55. TẠO UI TRỰC TIẾP TỪ CODE Code ban đầu của ứng dụng: public class HelloWorldActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }
  • 56. TẠO UI TRỰC TIẾP TỪ CODE Sửa lại nhƣ bên dƣới rồi chạy lại (nếu thấy báo lỗi thiếu thƣ viện, thử bấm Ctrl + Shift + O) public class HelloAndroid extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); tv.setText("Hello, Android"); setContentView(tv); } }
  • 57. THỬ XỬ LÝ SỰ KIỆN Ở code bên trên, đổi TextView lại thành Button. Button bt = new Button(this); Sau đó, implement phƣơng thức xử lý sự kiện khi user click vào nút này bt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getApplicationContext(), "Hello World", Toast.LENGTH_LONG).show(); } });
  • 58. MỘT SỐ PHÍM TẮT Để import các thƣ viện còn thiếu bấm Ctrl + Shift + O Để xóa một dòng code bấm Ctrl + D Để hiển thị bảng suggestion bấm Ctrl + Space Để comment một dòng code Ctrl + /
  • 59. THỬ XOAY MÀN HÌNH Tạo 1 project mới tên là Orientaion. Sau đó, bấm phải chuột vào thƣ mục res  new  Folder  nhập tên folder là layout-land (nhập chính xác)
  • 60. THỬ MỘT CHÚT VỀ XOAY MÀN HÌNH Trong thƣ mục layout ban đầu có file main.xml, copy file đó, cho vào thƣ mục layout-land, vậy là mỗi thƣ mục đều có một file main.xml Ở mỗi file main trong 2 thƣ mục đó, đều có đoạn này: <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text=“@string/hello" />
  • 61. THỬ MỘT CHÚT VỀ XOAY MÀN HÌNH Các bạn sửa cái nội dung android:text trong đoạn xml lại, để cho 2 file main đó có 2 nội dung text khác nhau là đƣợc. Chạy chƣơng trình, sau khi màn hình hiển thị, bấm Ctrl + F11 (Ctrl bên trái) thử xem kết quả.
  • 62. KẾT THÚC Tham khảo bản tiếng Anh tại link này: http://developer.android.com/resources/tutorials/hello - world.html Có thể thử các view khác nhau và xử lý một số sự kiện khác nhƣ sự kiện long click, sự kiện touch, sự kiện focus… trên các đối tƣợng view nhƣ Button, TextView, ImageView, ImageButton…
  • 63. THIẾT KẾ GIAO DIỆN TRÊN ANDROID Trong Android, dùng Activity để hiển thị màn hình. Mỗi activity sẽ chứa các View theo dạng cấu trúc cây, nghĩa là một Layout gốc chứa các view/layout con bên trong hoặc chỉ có 1 view duy nhất (lƣu ý Layout cũng là một view). Có thể thiết kế giao diện trong code java hoặc trong file xml trong thƣ mục layout.
  • 64. TREE VIEW
  • 65. LAYOUT MẪU CỦA HELLOWORLD<?xml version="1.0" encoding="utf -8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent”> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text=“@string/hello“ /></LinearLayout>
  • 66. MỘT SỐ THUỘC TÍNH CƠ BẢN Layout_width, layout_height: chiều rộng của view (fill_parent là to bằng kích thƣớc của layout chứa view này, wrap_content là vừa đủ nội dung cần hiển thị của view) Orientation: với LinearLayout, việc sắp xếp các view là nằm kề nhau theo hàng ngang hoặc hàng dọc, ta khai báo orientation để chọn sắp theo kiểu nào (horizontal/vertical)
  • 67. MỘT SỐ THUỘC TÍNH CƠ BẢN Gravity: thuộc tính này qui định các view nằm bên trong layout sẽ đặt theo vị trí nào so với layout (trung tâm, trái, phải, trên dƣới…) Weight: để các view phan chia tỉ lệ diện tích hiển thị trên màn hình (tỉ lệ tính theo weight của từng view trên tổng số weight, các view ko khai báo weight thì sẽ xem qua width và height)
  • 68. VÍ DỤ CƠ BẢN Vào link này lấy code cho vào ứng dụng: http://developer.android.com/resources/tutorials/views/hello -linearlayout.html
  • 69. THỰC HÀNH Làm một layout hiển thị nhƣ trong hình: Các bƣớc nhƣ sau:  Phân tích thành phần layout trên giấy  Phân tích đặc điểm các view  Add thêm resource ảnh  Thử trƣớc với với tab layout (khi view file xml trong eclipse)  Đƣa vào thực thi trên máy, đánh giá
  • 70. MỘT SỐ LOẠI LAYOUT KHÁC FrameLayout: các view bên trong đƣợc qui định vị trí bằng khoảng cách so với biên trái và trên so với layout, các view có thể đè lên nhau. RelativeLayout: các view đƣợc thiết kế dựa trên quan hệ giứa chúng với nhau và với layout chứa chúng. AbsoluteLayout: dành cho bạn nào làm nhiều với C#, nhƣng không khuyến khích với Android.…
  • 71. LƢU Ý KHI THIẾT KẾ GIAO DIỆN Hạn chế độ sau của cây Với các Layout phức tạp, đừng dùng RelativeLayout Nên chèn vào dữ liệu tạm để xem trƣớc layout hiển thị ra sao bên tab layout (trong eclipse), nhƣng xong rồi thì nhớ xóa dữ liệu tạm đi. FrameLayout có vấn đề với background Muốn tìm thuộc tính gì, bấm “android:” rồi đợi suggestion xổ ra xem.
  • 72. THỰC HÀNH NHANH Thử thực hành các ví dụ sau: http://developer.android.com/resources/tutorials/views/hello - formstuff.html http://developer.android.com/resources/tutorials/views/hello - webview.html
  • 73. LIST Rất hay dùng trong Android. Đặc biệt các ứng dụng cần lƣu trữ và hiển thị nhiều dữ liệu. List là một danh sách các view thông thƣờng có cùng dạng layout đặt liền nhau.
  • 74. APIDEMOS Mở ứng dụng ApiDemos đã có sẵn:  New android project  Create project from existing source  Browse  mở thƣ mục SDK  platforms  android-1.6  samples  ApiDemos  OK  Finish.  Mở thƣ mục project trong eclipse  src  mở com.example.android.apis.view  mở file List1.java
  • 75. LIST1 Trong code của List1 , các bạn tách bạch phần tạo mới ArrayAdapter ra nhé ArrayAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mStrings); setListAdapter(adapter); Adapter dùng để kết nối dữ liệu cần đƣa vào list với layout hiển thị và cung cấp cho ListView hiển thị.
  • 76. LIST1 Với đoạn tạo một adapter, ta phân tích ra:  this: context, lúc nào làm view cũng cần rồi  android.R.layout.simple_list_item_1: layout để hiển thị mỗi item trong list, ở đây chỉ có một TextView  mStrings: mảng các chuỗi kí tự, là dữ liệu cần hiển thị Sau khi tạo xong adapter, truyền vào cho list hiển thị.
  • 77. LIST1 Tạo một project mới, copy code List1 bỏ qua, rồi làm thêm các thao tác sau:  Tạo 1 file layout có 1 TextView và 1 ImageView  Trong TextView thêm dòng này android:id=“@+id/text”  Sửa lại đoạn tạo mới adapter cho nó dùng cái layout vừa tạo. (tìm xem có cái constructor nào giúp chỉ chính xác đến cái TextView trong layout hay ko) Dạng này: ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)  Chạy ứng dụng

×