Lập trình ứng dụng trên đầu cuối di động

277 61 0
Lập trình ứng dụng trên đầu cuối di động

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

HỌC VIỆN CƠNG NGHỆ BƢU CHÍNH VIỄN THƠNG KHOA THIẾT KẾ VÀ SÁNG TẠO ĐA PHƢƠNG TIỆN ***** GIÁO TRÌNH BÀI GIẢNG (Phƣơng pháp đào tạo theo tín chỉ) TÊN HỌC PHẦN: PT IT LẬP TRÌNH ỨNG DỤNG TRÊN ĐẦU CUỐI DI ĐỘNG (03 tín chỉ) Biên soạn ThS ĐỖ THỊ LIÊN LƢU HÀNH NỘI BỘ Hà Nội, 11/2014 i LỜI NÓI ĐẦU Trong năm gần đầu cuối di động ngày chứng tỏ phổ biến gần trở thành vật bất ly thân hầu hết người dùng xã hội Song song với gia tăng đầu cuối di động phát triển ứng dụng di động nhằm mang đến dịch vụ, ứng dụng tiện ích thơng qua đầu cuối di động người dùng Lĩnh vực phát triển ứng dụng di động thu hút nguồn lực đông đảo nhà phát triển phần mềm xã hội nhằm gia tăng số lượng, chất lượng ứng dụng phục vụ người dùng di động Đây lĩnh vực mang lại doanh thu đáng kể cho nhà phát triển tương lai Bài giảng nhằm cung cấp cho sinh viên có nhìn tổng quan vấn đề liên quan tới việc phát triển ứng dụng đầu cuối di động kỹ thuật then chốt lập trình ứng dụng di động số tảng di động phổ biến IT Nội dung giảng bao gồm bốn chương: Chƣơng 1: Tổng quan phát triển ứng dụng đầu cuối di động Trình bày cách tổng quát vấn đề liên quan tới việc phát triển ứng dụng đầu cuối di động  Chƣơng 2: Môi trƣờng lập trình ứng dụng di động Trình bày mơi trường lập trình ứng dụng di động tảng di động phổ biến Android, đồng thời bổ trợ kiến thức ngôn ngữ quy trình lập trình ứng dụng di động tảng  Chƣơng 3: Lập trình ứng dụng di động Trình bày kỹ thuật cốt cốt lõi lập trình ứng dụng di động tảng di động nói chung tảng di động phổ biến Android nói riêng  Chƣơng 4: Lập trình ứng dụng di động đa tảng Trình bày vấn đề liên quan đến lập trình ứng dụng di động đa tảng nói chung kỹ thuật lập trình ứng dụng di động đa tảng sử dụng Mono framework nói riêng PT  Mặc dù tác giả có nhiều cố gắng q trình biên soạn giảng này, song khơng thể tránh khỏi thiếu sót Rất mong nhận đóng góp ý kiến sinh viên bạn đồng nghiệp i MỤC LỤC LỜI NÓI ĐẦU i MỤC LỤC ii DANH MỤC HÌNH VẼ vi DANH MỤC BẢNG ix CHƢƠNG 1: ĐỘNG 1.1 TỔNG QUAN VỀ PHÁT TRIỂN ỨNG DỤNG TRÊN ĐẦU CUỐI DI Giới thiệu đầu cuối di động Khái niệm đầu cuối di động 1.1.2 Phân loại đầu cuối di động 1.1.3 Lịch sử hình thành phát triển đầu cuối di động 1.1.4 Các đặc trưng đầu cuối di động 1.2 IT 1.1.1 Giới thiệu hệ sinh thái di động 10 Nhà mạng di động (Operators / Mobile network operators - MNO) 10 1.2.2 Công nghệ mạng (Networks) 11 1.2.3 Đầu cuối di động (Devices) 12 1.2.4 Nền tảng di động (Platforms) 12 1.2.5 Hệ điều hành di động (Operating systems) 13 1.2.6 Khung ứng dụng (Application frameworks) 13 1.2.7 Ứng dụng di động (Applications) 13 1.2.8 Dịch vụ di động (Services) 13 1.3 PT 1.2.1 Giới thiệu quy trình phát triển ứng dụng di động 13 1.3.1 Đưa ý tưởng (Concept) 14 1.3.2 Phân tích yêu cầu (Requirement Analysis) 15 1.3.3 Lập kế hoạch (Planning) 15 1.3.4 Phân tích, thiết kế lập trình (Development) 15 1.3.5 Kiểm thử (Testing & UAC) 15 1.3.6 Phân phối ứng dụng (Final delivery) 16 1.4 Giới thiệu hệ điều hành di động 16 1.4.1 Khái niệm hệ điều hành di động 16 1.4.2 Phân loại hệ điều hành di động 16 1.4.3 Các đặc trưng hệ điều hành di động 18 ii 1.5 Các kỹ thuật phát triển ứng dụng di động 18 1.5.1 Ứng dụng di động dạng native 19 1.5.2 Ứng dụng di động dạng web 20 1.5.3 Ứng dụng di động dạng hybrid 21 1.6 Giới thiệu số ngơn ngữ lập trình cho ứng dụng di động 22 1.6.1 C++ 22 1.6.2 Java 22 1.6.3 C# 25 TỔNG KẾT CHƢƠNG 26 CÂU HỎI VÀ BÀI TẬP CHƢƠNG 26 CHƢƠNG 2: 2.1 MƠI TRƢỜNG LẬP TRÌNH ỨNG DỤNG DI ĐỘNG 28 Thiết lập môi trường lập trình ứng dụng di động 28 Hệ điều hành Android gì? 28 2.1.2 Các đặc trưng hệ điều hành Android 32 2.1.3 Kiến trúc hệ điều hành Android 32 2.1.4 Các thành phần tạo nên ứng dụng Android 37 2.1.5 Thiết lập mơi trường lập trình ứng dụng Android 39 PT 2.2 IT 2.1.1 Bổ trợ kiến thức ngơn ngữ lập trình ứng dụng di động 44 2.2.1 Tập ký tự, từ khóa, tên 44 2.2.2 Cấu trúc chung chương trình qui tắc viết chương trình 47 2.2.3 Khái niệm, phân loại kiểu liệu 52 2.2.4 Biến, hằng, phép toán 54 2.2.5 Các lệnh vào lệnh điều khiển 59 2.2.6 Lớp, đối tượng 65 2.2.7 Kế thừa đa hình 70 2.2.8 Các hàm thư viện chuẩn 81 2.3 Quy trình lập trình ứng dụng di động 81 2.3.1 Khởi tạo ứng dụng 81 2.3.2 Viết chương trình 86 2.3.3 Biên dịch 89 2.3.4 Chạy chương trình gỡ lỗi 89 TỔNG KẾT CHƢƠNG 92 CÂU HỎI VÀ BÀI TẬP CHƢƠNG 92 iii CHƢƠNG 3: 3.1 LẬP TRÌNH ỨNG DỤNG DI ĐỘNG 94 Lập trình quản lý vịng đời ứng dụng di động 94 3.1.1 Mơ hình vịng đời ứng dụng di động 96 3.1.2 Lập trình quản lý vịng đời ứng dụng di động 98 3.2 Lập trình giao diện ứng dụng cho đầu cuối di động 102 3.2.1 Giới thiệu mẫu giao diện ứng dụng di động có sẵn 102 3.2.2 Lập trình ứng dụng với đối tượng giao diện 103 3.3 Lập trình quản lý liệu 155 3.3.1 Quản lý liệu dạng key-value 155 3.3.2 Quản lý liệu từ file nhớ thiết bị 157 3.3.3 Quản lý liệu với sở liệu quan hệ 162 3.4 Lập trình kết nối mạng 167 Wifi 168 3.4.2 Bluetooth 170 3.5 IT 3.4.1 Lập trình chức gọi 180 Cấp quyền cho ứng dụng sử dụng tính gọi 180 3.5.2 Kiểm tra thiết bị có hỗ trợ phần cứng cho tính gọi 181 3.5.3 Khởi tạo gọi từ ứng dụng 181 3.5.4 Lấy thông tin liên quan tới gọi 181 3.5.5 Giám sát trình thay đổi trạng thái gọi 184 3.5.6 Chặn gọi 189 3.5.7 Tự động trả lời gọi đến 190 3.5.8 Hiển thị lịch sử gọi 191 3.6 PT 3.5.1 Lập trình chức nhắn tin ngắn (SMS) 193 3.6.1 Gửi tin nhắn SMS thông qua ứng dụng nhắn tin có sẵn điện thoại 193 3.6.2 Gửi tin nhắn ứng dụng 193 3.6.3 Nhận tin nhắn ứng dụng 196 3.7 Lập trình xử lý đa phương tiện 198 3.7.1 Lập trình xử lý image 199 3.7.2 Lập trình xử lý audio video 209 3.8 Lập trình điều khiển thiết bị phần cứng tích hợp đầu cuối di động 214 3.8.1 Lập trình điều khiển camera 214 3.8.2 Lập trình điều khiển loại sensor 227 iv TỔNG KẾT CHƢƠNG 241 CÂU HỎI VÀ BÀI TẬP CHƢƠNG 242 CHƢƠNG 4: 4.1 LẬP TRÌNH ỨNG DỤNG DI ĐỘNG ĐA NỀN TẢNG 243 Khái niệm, phân loại ứng dụng di động đa tảng 243 4.1.1 Khái niệm ứng dụng di động đa tảng 243 4.1.2 Phân loại ứng dụng di động đa tảng 244 4.2 Giới thiệu số framework phát triển ứng dụng di động đa tảng 245 4.3 Xây dựng ứng dụng di động đa tảng 245 4.3.1 Thiết lập mơi trường lập trình ứng dụng di động đa tảng 246 4.3.2 Các kỹ thuật chia sẻ mã nguồn đa tảng 247 4.3.3 Lập trình ứng dụng di động đa tảng 255 TỔNG KẾT CHƢƠNG 266 IT CÂU HỎI VÀ BÀI TẬP CHƢƠNG 266 PT TÀI LIỆU THAM KHẢO 267 v DANH MỤC HÌNH VẼ PT IT Hình 1.1 P835 WVGA PDA hãng ASUS Hình 1.2 MC55 EDA hãng Motorola Hình 1.3 Một số điện thoại di động tính hãng Nokia chạy hệ điều hành Series 40 (S40) Hình 1.4 Một số điện thoại thông minh Hình 1.5 Máy tính bảng Hình 1.6 Ultra-Mobile PC sản xuất Gigabyte Hình 1.7 Smartwatch Sony Fan Hình 1.8 Kính thơng minh Google glass Hình 1.9 Chiếc điện thoại đời năm 1876 Hình 1.10 Motorola Dyna-Tac - Cell phone năm 1973 Hình 1.11 Nokia candy bar phone Hình 1.12 Điện thoại tính Motorola RAZR Hình 1.13 Điện thoại thơng minh hãng BackBerry chạy hệ điều Symbian Hình 1.14 Một số điện thoại thơng minh cảm biến Hình 1.15 Lịch sử hình thành phát triển điện thoại di động Hình 1.16 Chồng lớp hệ sinh thái di động 10 Hình 1.17 Giao tiếp thành phần mạng di động 11 Hình 1.18 Q trình tiến hóa mạng di động GSM 12 Hình 1.19 Quy trình phát triển ứng dụng di động 14 Hình 1.20 Một số giao diện hệ điều hành di động: (a) Android 4.4 Kit Kat; (b) iOS 7; (c) Windows Phone 8; (d) BlackBerry OS 10; (e) HP web OS; (f) Nokia Symbian 17 Hình 1.21 Thị phần hệ điều hành di động giới tới hết năm 2013 18 Hình 1.22 Ba loại kỹ thuật phát triển ứng dụng di động 19 Hình 1.23 Cách biên dịch truyền thống 24 Hình 1.24 Dịch chương trình Java 24 Hình 2.1 Biểu trưng hệ điều hành Android 28 Hình 2.2 Điện thoại Android, HTC Dream (trái) HTC Magic (phải) 29 Hình 2.3 Máy tính bảng chạy hệ điều hành Android 29 Hình 2.4 Thiết bị đọc sách điện tử (e-book readers) chạy hệ điều hành Android 30 Hình 2.5 Tivi chạy hệ điều hành Android 30 Hình 2.6 Đồng hồ thơng minh chạy hệ điều hành Android 30 Hình 2.7 Lược đồ phân bổ phiên Android tính đến 4/6/2014 31 Hình 2.8 Kiến trúc hệ điều hành Android 33 Hình 2.9 Nhân Linux Android 33 Hình 2.10 Thư viện giao diện lập trình ứng dụng Android 34 Hình 2.11 Khung ứng dụng Android 36 Hình 2.12 Các ứng dụng Android 36 Hình 2.13 Quá trình khởi động hệ điều hành vào điện thoại Android 37 Hình 2.14 Cơng cụ Eclipse để phát triển ứng dụng Android 40 Hình 2.15 Cấu hình Android SDK Manager 41 vi PT IT Hình 2.16 Giao diện tham chiếu Eclipse tới Android SDK 42 Hình 2.17 Android Virtual Device manager 42 Hình 2.18 Tạo Android Emulator 43 Hình 2.19 Android Emulator 44 Hình 2.20 Kiến trúc khối dự án 49 Hình 2.21 Màn hình nhập thơng số tạo Android Project 82 Hình 2.22 Cấu trúc Android project 83 Hình 2.23 Cấu trúc bên AndroidManifest.xml 85 Hình 2.24 Cấu trúc bên string.xml 86 Hình 2.25 Thiết kế giao diện ứng dụng GraphicalLayout 87 Hình 2.26 Thiết kế giao diện ứng dụng mã xml 88 Hình 2.27 File file R.java tham chiếu tới tài nguyên project 88 Hình 2.28 Giao diện viết code xử lý cho ứng dụng 89 Hình 2.29 Cơ chế dịch XML thành Java code 89 Hình 2.30 Ứng dụng Hello chạy Android Emulator 90 Hình 2.31 Ứng dụng Hello cài đặt Android Emulator 90 Hình 2.32 Màn hình debug ứng dụng Android 91 Hình 2.33 Quản lý thiết bị Android thơng qua DDMS 92 Hình 3.1 Thứ tự ưu tiên tiến trình hệ điều hành Android 95 Hình 3.2 Activity stack 96 Hình 3.3 Mơ hình vịng đời Activity 97 Hình 3.4 Sử dụng Eclipse để tạo Activity 99 Hình 3.5 Quản lý vòng đời Activity qua hàm kiện 101 Hình 3.6 Các mẫu giao diện ứng dụng Android 103 Hình 3.7 Cấu trúc giao diện ứng dụng Android 104 Hình 3.8 Hình ảnh View/ ViewGroup Android 105 Hình 3.9 Hình ảnh ứng dụng chạy Android 4.0 sử dụng số đối tượng giao diện 108 Hình 3.10 Hình ảnh ứng dụng sử dụng số đối tượng giao diện chạy thiết bị Google Nexus S(Android 2.3.6) 110 Hình 3.11 Hình ảnh ứng dụng sử dụng số đối tượng giao diện chạy thiết bị Asus Eee Pad Transformer (Android 3.2.1) 111 Hình 3.12 Hoạt động ProgressBar ứng dụng Android 113 Hình 3.13 Hoạt động AutoCompleteTextView ứng dụng Android 116 Hình 3.14 Hoạt động TimePicker activity chế độ 12 118 Hình 3.15 Hoạt động TimePicker activity chế độ 24 119 Hình 3.16 Hoạt động TimePicker dialog chế độ 12 120 Hình 3.17 Hoạt động DatePicker activity 121 Hình 3.18 Hoạt động DatePicker dialog 123 Hình 3.19 Hoạt động ListView 124 Hình 3.20 Hoạt động SpinnerView 127 Hình 3.21 Bố trí widget sử dụng LinearLayout 134 Hình 3.22 Giao diện ứng dụng sử dụng LinearLayout 135 vii PT IT Hình 3.23 Giao diện ứng dụng sử dụng AbsoluteLayout 137 Hình 3.24 Giao diện ứng dụng sử dụng TableLayout 138 Hình 3.25 Giao diện ứng dụng sử dụng RelativeLayout 140 Hình 3.26 Giao diện ứng dụng sử dụng FrameLayout 141 Hình 3.27 Giao diện ứng dụng sử dụng ScrollView 143 Hình 3.28 Dùng Intent để truyền liệu Activity 144 Hình 3.29 Ví dụ kết hợp Fragment Activity 150 Hình 3.30 Ứng dụng sử dụng Fragment 153 Hình 3.31 Minh họa vị trí file lưu nhớ ứng dụng 159 Hình 3.32 Minh họa vị trí file lưu nhớ thiết bị 162 Hình 3.33 Hiển thị hình ảnh với Gallery ImageView 202 Hình 3.34 Hiển thị hình ảnh với Gallery ImageSwitcher 206 Hình 3.35 Hiển thị hình ảnh với GridView 209 Hình 3.36 Máy trạng thái quản lý việc phát audio video thông qua MediaPlayer 210 Hình 3.37 Hệ trục tọa độ sử dụng Android sensor API 234 Hình 4.1 Giải pháp xây dựng ứng dụng đa tảng Mono framework 245 Hình 4.2 Kiến trúc chia sẻ mã nguồn Mono framework 246 Hình 4.3 Quá trình xuất đăng ký kiện mơ hình quan sát 251 Hình 4.4 Chỉ thị miêu tả mơi trường biên dịch định nghĩa Mono 253 Hình 4.5 Định nghĩa thị biên dịch Visual Studio (phía trên) MonoDevelop (phía dưới) 254 Hình 4.6 Ứng dụng Twitter iOS 259 Hình 4.7 Ứng dụng Twitter Android 263 Hình 4.8 Ứng dụng Twitter Windows Phone 265 viii DANH MỤC BẢNG PT IT Bảng 1.1 Các nhà mạng hàng đầu giới cập nhật tới tháng năm 2007 11 Bảng 1.2 Môi trường phát triển cho số tảng di động 20 Bảng 1.3 So sánh đặc tính ba loại ứng dụng di động (native, hybrid, web) 21 Bảng 2.1 Các phiên Android tính đến 4/6/2014 31 Bảng 2.2 Một số đặc trưng hệ điều hành Android 32 Bảng 2.3 Danh sách gói API cung cấp Android runtime 34 Bảng 2.4 Các thành phần cấu thành lên ứng dụng Android 38 Bảng 2.5 Một số thành phần khác sử dụng ứng dụng Android 38 Bảng 2.6 Tập từ khóa Java 45 Bảng 2.7 Nhóm loại từ khóa Java 46 Bảng 2.8 Các kiểu liệu Java 52 Bảng 2.9 Các kiểu liệu đối tượng Java 53 Bảng 2.10 Giá trị mặc định kiểu liệu Java 53 Bảng 2.11 Các toán tử số học Java 55 Bảng 2.12 Các toán tử bit Java 57 Bảng 2.13 Các toán tử quan hệ Java 57 Bảng 2.14 Các toán tử logic Java 58 Bảng 2.15 Thứ tự ưu tiên toán tử Java 59 Bảng 2.16 Ý nghĩa file / folder Package Explore ứng dụng Android 83 Bảng 3.1 Các thuộc tính chung View ViewGroup 103 Bảng 3.2 Các Event Listener Event Handler 128 Bảng 3.3 Các điểm khác biệt nhớ nhớ thiết bị Android 157 Bảng 3.4 Tập lớp/ giao diện chứa API bluetooth cung cấp Android 171 Bảng 3.5 Các loại cảm biến hỗ trợ Android 228 Bảng 3.6 Cảm biến chuyển động hỗ trợ tảng Android 234 Bảng 3.7 Cảm biến vị trí hỗ trợ tảng Android 237 Bảng 3.8 Cảm biến môi trường hỗ trợ tảng Android 240 ix { // only including updated parts to this class } } - Trong project SharedLibrary.MonoAndroid, tạo file có tên ParkingSpotTracker.Extensions.cs thư mục Chapter3 nhằm chứa phần khai báo mở rộng riêng tảng Android Lưu ý file đặt thư mục với file liên kết với lớp chia sẻ không ảnh hưởng tới tảng khác // ParkingSpotTracker.Extensions.cs namespace SharedLibrary.Chapter3 { public partial class ParkingSpotTracker { public void HonkHorn() { // honk the car horn } } } Conditional compilation IT  PT Kỹ thuật biên dịch có điều kiện (Conditional compilation) cho phép trình biên dịch đoạn mã lệnh tương ứng với thị miêu tả môi trường biên dịch, đoạn mã lệnh khác không thuộc môi trường biên dịch bị bỏ qua Lưu ý việc lạm dụng kỹ thuật khiến mã nguồn khó đọc bảo trì Trong trường hợp việc sử dụng kỹ thuật “Abstraction” lựa chọn tốt Dưới thị miêu tả môi trường biên dịch định nghĩa Mono: Hình 4.4 Chỉ thị miêu tả mơi trường biên dịch định nghĩa Mono Ngồi ra, lập trình viên tự tạo thị miêu tả biên dịch project cách: Visual Studio, mở properties project, chọn mục Build, điền thị mong muốn vào textbox, MonoDevelop, mở properties project, chọn mục mở mục Compiler 253 IT Hình 4.5 Định nghĩa thị biên dịch Visual Studio (phía trên) MonoDevelop (phía dưới) PT Minh họa sử dụng kỹ thuật việc xây dựng ứng dụng yêu cầu với chức cập nhật vị trí người dùng (UpdateIntervalSeconds) có giá trị tương ứng với tảng khác sau: Android: 30, iOS: 45, Windows Phone: 60 Việc cài đặt thực sau: Example 3-9 ParkingSpotTracker.cs (updates only) using System; namespace SharedLibrary.Chapter3 { public class ParkingSpotTracker { // only including updated parts to this class public int UpdateIntervalSeconds { get { #if ANDROID return 30; #elif MONOTOUCH return 45; #elif WINDOWS_PHONE return 60; #else return 120; #endif } } } } 254 4.3.3 Lập trình ứng dụng di động đa tảng Nội dung phần nhằm áp dụng kỹ thuật chia sẻ đa tảng trình bày vào việc xây dựng ứng dụng đa tảng Cụ thể: xây dựng ứng dụng có tên Twitter client kết nối mạng để tải hiển thị danh sách tweet trang web Twitter người dùng Mô tả giải pháp xây dựng ứng dụng sau: Xây dựng thư viện chia sẻ đa tảng chứa mã nguồn truy cập mạng lấy thông tin tweet trang web Twitter người dùng; Xây dựng ứng dụng tảng (iOS, Android, Windows phone) chia làm phần: phần giao diện ứng dụng tạo riêng cho tảng, phần xử lý logic ứng dụng sử dụng lại từ thư viện chia sẻ đa tảng tạo trước Các bước thực sau:  Tạo thƣ viện chia sẻ đa tảng Mở project SharedLibrary tạo thư mục Chapter4 để chứa lớp chia sẻ đa tảng Thêm lớp Tweet vào thư mục Chapter4, lớp xác định thông tin đối tượng tweet, bao gồm: ID, thời gian tạo, nội dung thông tin // Tweet.cs IT using System; PT namespace SharedLibrary.Chapter4 { public class Tweet { public long Id { get; set; } public DateTime CreatedAt { get; set; } public string Text { get; set; } } } Twitter cho phép lấy liệu thông qua REST API từ URL sau: https://api.twitter.com/1/statuses/user_timeline.xml?screen_name=OReillyMedia Kết trả API dạng file XML dạng sau: // Sample XML response from Twitter (simplified) Mon Dec 12 11:28:54 +0000 2011 111111111111111111 Sun Dec 11 16:20:10 +0000 2011 222222222222222222 Thêm lớp có tên TwitterClient vào thư mục Chapter4 // TwitterClient.cs 255 using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Threading; using System.Xml.Linq; namespace SharedLibrary.Chapter4 { public class TwitterClient { private const string baseUrl = https://api.twitter.com/1/statuses/"; public void GetTweetsForUser(string user, Action callback) { string url = _baseUrl + "user_timeline.xml?screen_name=" + Uri.EscapeUriString(user); var client = new WebClient(); PT IT client.DownloadStringCompleted += (sender, args) => { var tweets = XDocument.Parse(args.Result).Root Elements("status").Select(status => new Tweet { Id = long.Parse(status.Element("id").Value), CreatedAt = DateTime.ParseExact(status.Element("created_at").Value, "ddd MMM dd HH:mm:ss zz00 yyyy", null), Text = status.Element("text").Value }) ToList(); callback(tweets); }; client.DownloadStringAsync(new Uri(url)); } } } Trong đó:  Phương thức GetTweetsForUser() dùng để lấy liệu từ website Twitter thông qua Twitter API Phương thức có tham số truyền vào tên người dùng (user) phương thức callback xử lý kết trả danh sách tweet người dùng  Q trình tải liệu từ Twitter q trình khơng đồng với tiến trình chính, q trình tải liệu kết thúc, kết tả thông qua phương thức callback Sau thư viện chia sẻ tạo ra, tiến hành liên kết file project SharedLibrary.MonoTouch, SharedLibrary.MonoAndroid, SharedLibrary.WindowsPhone để sử dụng thư viện đa tảng 256  Xây dựng ứng dụng tảng iOS Tạo project trống tên Chapter4.MonoTouchApp Thêm project SharedLibrary.MonoTouch vào solution tham chiếu project Chapter4.MonoTouchApp tới project SharedLibrary MonoTouch để phép truy cập tới thư viện TwitterClient xây dựng  Tạo lớp TwitterViewController xử lý việc load giao diện tới người dùng trình tải danh sách tweet thực hiện, sau hiển thị danh sách kết trả giao diện tới người dùng // TwitterViewController.cs using MonoTouch.UIKit; using SharedLibrary.Chapter4; namespace Chapter4.MonoTouchApp { public class TwitterViewController : UITableViewController { private TwitterClient _client; IT public override void ViewDidLoad() { base.ViewDidLoad(); _client = new TwitterClient(); PT var loading = new UIAlertView("Downloading Tweets", "Please wait ", null, null, null); loading.Show(); var indicator = new UIActivityIndicatorView(UIActivityIndicatorViewStyle.WhiteLarge); indicator.Center = new System.Drawing.PointF(loading.Bounds.Width/2, loading.Bounds.Size.Height - 40); indicator.StartAnimating(); loading.AddSubview(indicator); _client.GetTweetsForUser("OReillyMedia", tweets => { InvokeOnMainThread(() => { TableView.Source = new TwitterTableViewSource(tweets); TableView.ReloadData(); loading.DismissWithClickedButtonIndex(0, true); }); }); } } } // TwitterTableViewSource.cs using System.Collections.Generic; 257 using MonoTouch.Foundation; using MonoTouch.UIKit; using SharedLibrary.Chapter4; namespace Chapter4.MonoTouchApp { public class TwitterTableViewSource : UITableViewSource { private readonly IList _tweets; private const string TweetCell = "TweetCell"; public TwitterTableViewSource(IList tweets) { _tweets = tweets; } public override int RowsInSection(UITableView tableView, int section) { return _tweets.Count; } { return 60; PT } IT public override float GetHeightForRow(UITableView tableView, NSIndexPath indexPath) public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath) { var cell = tableView.DequeueReusableCell(TweetCell) ?? new UITableViewCell(UITableViewCellStyle.Subtitle, TweetCell); var tweet = _tweets[indexPath.Row]; cell.TextLabel.Text = tweet.Text; cell.DetailTextLabel.Text = tweet.CreatedAt.ToLocalTime().ToString(); return cell; } public override void RowSelected(UITableView tableView, NSIndexPath indexPath) { var selectedTweet = _tweets[indexPath.Row]; new UIAlertView("Full Tweet", selectedTweet.Text, null, "Ok", null).Show(); } } } 258  Bổ sung mã nguồn cho AppDelegate.cs để TwitterViewController load ứng dụng khởi động // AppDelegate.cs using MonoTouch.Foundation; using MonoTouch.UIKit; namespace Chapter4.MonoTouchApp { [Register ("AppDelegate")] public partial class AppDelegate : UIApplicationDelegate { private UIWindow _window; private TwitterViewController _twitterViewController; public override bool FinishedLaunching(UIApplication app, NSDictionary options) { _window = new UIWindow (UIScreen.MainScreen.Bounds); IT _twitterViewController = new TwitterViewController(); _window.RootViewController = _twitterViewController; _window.MakeKeyAndVisible (); return true; } PT } } Kết chạy ứng dụng: Hình 4.6 Ứng dụng Twitter iOS 259  Xây dựng ứng dụng tảng Android Tạo project trống tên Chapter4.MonoAndroid Thêm project SharedLibrary.MonoAndroid vào solution tham chiếu project Chapter4.MonoAndroid tới project SharedLibrary.MonoAndroid để phép truy cập tới thư viện TwitterClient xây dựng  Cấp quyền cho ứng dụng Twitter Android truy cập Internet cách: Visual studio mở properties project MonoDevelop chọn Mono for Android Application, chọn Android Manifest, mục Required permissions, tích chọn INTERNET  Từ thư mục Resources/Layout project, thêm file layout Android tên Twitter.axml, thêm ListView vào layout để hiển thị danh sách tweet Tiếp theo thêm file layout tên Tweet.axml để hiển thị thông tin chi tiết người dùng chọn tweet danh sách, layout chứa TextView để hiển thị nội dung thời gian tweet PT IT //Twitter.axml //Tweet.axml 260  Thêm Activity tên TwitterActivity vào project dùng để điều khiển việc hiển thị danh sách tweet tới người dùng // TwitterActivity.cs using Android.App; using Android.OS; using Android.Widget; using SharedLibrary.Chapter4; namespace Chapter4.MonoAndroidApp { [Activity (Label = "\\@OReillyMedia", MainLauncher = true)] public class TwitterActivity : Activity { protected override void OnCreate(Bundle bundle) { base.OnCreate (bundle); SetContentView (Resource.Layout.Twitter); var client = new TwitterClient(); IT var loading = ProgressDialog.Show(this, "Downloading Tweets", "Please wait ", true); PT client.GetTweetsForUser("OReillyMedia", tweets => { RunOnUiThread (() => { var tweetList = FindViewById(Resource.Id.Tweets); tweetList.Adapter = new TweetListAdapter(this, tweets); tweetList.ItemClick += (object sender, ItemEventArgs e) => { var selectedTweet = tweets[e.Position]; new AlertDialog.Builder(this) SetTitle("Full Tweet") SetMessage(selectedTweet.Text) SetPositiveButton("Ok", delegate { }) Show(); }; loading.Hide(); }); }); } } } // TweetListAdapter.cs using System.Collections.Generic; using Android.App; using Android.Views; 261 using Android.Widget; using SharedLibrary.Chapter4; namespace Chapter4.MonoAndroidApp { public class TweetListAdapter : BaseAdapter { private readonly Activity _context; private readonly IList _tweets; public TweetListAdapter(Activity context, IList tweets) { _context = context; _tweets = tweets; } IT public override View GetView(int position, View convertView, ViewGroup parent) { var view = convertView ?? _context.LayoutInflater.Inflate(Resource.Layout.Tweet, null); var tweet = _tweets[position]; PT view.FindViewById(Resource.Id.Text).Text = tweet.Text; view.FindViewById(Resource.Id.CreatedAt).Text = tweet.CreatedAt.ToLocalTime().ToString(); return view; } public override int Count { get { return _tweets.Count; } } public override long GetItemId(int position) { return position; } public override Tweet this[int position] { get { return _tweets[position]; } } } } Kết chạy ứng dụng: 262 Hình 4.7 Ứng dụng Twitter Android IT  Xây dựng ứng dụng tảng Windows Phone  PT Tạo project trống tên Chapter4.WindowsPhoneApp Thêm project SharedLibrary.WindowsPhone vào solution tham chiếu project Chapter4 WindowsPhoneApp tới project SharedLibrary.WindowsPhone để phép truy cập tới thư viện TwitterClient xây dựng Tạo giao diện ứng dụng cách chỉnh sửa mã nguồn MainPage.xaml: // MainPage.xaml 263 PT IT  Viết code điều khiển việc hiển thị danh sách tweet tới người dùng MainPage.xaml.cs: // MainPage.xaml.cs using System.Windows; using System.Windows.Controls; using Microsoft.Phone.Controls; using SharedLibrary.Chapter4; namespace Chapter4.WindowsPhoneApp { public partial class MainPage : PhoneApplicationPage { public MainPage() { InitializeComponent(); } protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) 264 { base.OnNavigatedTo(e); var client = new TwitterClient(); client.GetTweetsForUser("OReillyMedia", tweets => { Deployment.Current.Dispatcher.BeginInvoke(() => { DataContext = tweets; Loading.Visibility = Visibility.Collapsed; }); }); } private void TweetSelected(object sender, SelectionChangedEventArgs e) { var tweet = (Tweet)e.AddedItems[0]; MessageBox.Show(tweet.Text, "Full Tweet", MessageBoxButton.OK); } PT Kết chạy ứng dụng: IT } } Hình 4.8 Ứng dụng Twitter Windows Phone 265 TỔNG KẾT CHƢƠNG Nội dung chương trình bày vấn đề liên quan đến lập trình ứng dụng di động đa tảng, là:  Khái niệm ứng dụng di động đa tảng, ưu nhược điểm việc phát triển ứng dụng di động đa tảng; Phân loại ứng dụng di động đa tảng gồm loại: ứng dụng di động đa tảng ứng dụng web thiết kế cho di động (web-apps) ứng dụng xây dựng dành riêng cho tảng mục tiêu (mobile native apps)  Giới thiệu số framework phát triển ứng dụng di động đa tảng PhoneGap, Titanium mobile, Corona SDK, Mono, Xamarin, Unity3D, Cocos2D-x…  Xây dựng ứng dụng di động đa tảng sử dụng framework Mono Trong nội dung giảng giới thiệu cách thiết lập môi trường, kỹ thuật chia sẻ mã nguồn đa tảng với framework Mono minh họa cách áp dụng kỹ thuật chia sẻ mã nguồn đa tảng việc phát triển ứng dụng đa tảng dạng native IT CÂU HỎI VÀ BÀI TẬP CHƢƠNG Ứng dụng di động đa tảng gì? Ưu nhược điểm việc phát triển ứng dụng di động đa tảng so với việc phát triển ứng dụng di động đơn tảng gì? PT Ứng dụng di động đa tảng phân chia thành loại nào? Mỗi loại ứng dụng đa tảng phù hợp với mục đích xây dựng ứng dụng nào? Nêu số framework phát triển ứng dụng đa tảng Việc lựa chọn framework để phát triển ứng dụng đa tảng tiêu chí nào? Nêu kỹ thuật chia sẻ mã nguồn đa tảng đưa mục đích sử dụng loại kỹ thuật chia sẻ Xây dựng ứng dụng máy tính đa tảng Phát triển tiếp ứng dụng Twitter đa tảng nhằm mục đích đưa thông tin báo tới người dùng người dùng cộng đồng mạng Twitter đề cập tới Xây dựng ứng dụng quản lý sinh viên đa tảng 266 TÀI LIỆU THAM KHẢO [1] Brian Fling, Mobile design and development 1st edition O‟Reilly Media, 2009 [2] Wei-Meng Lee, Beginning Android Application Development John Wiley & Sons, Inc, 2012 [3] Reto Meier, Professional Android Application Developmemt John Wiley & Sons, Inc,2012 [4] Scott Olson, John Hunter, Ben Horgen, Kenny Goers, Professional Cross Platform Mobile Development in C# John Wiley & Sons,Inc, 2012 [5] Greg Shackles, Mobile Development with C# O‟Reilly Media, 2012 PT IT [6] Trần Đình Quế, Lập trình hướng đối tượng, Học Viện Cơng Nghệ Bưu Chính Viễn Thơng 267 ... ngôn ngữ quy trình lập trình ứng dụng di động tảng  Chƣơng 3: Lập trình ứng dụng di động Trình bày kỹ thuật cốt cốt lõi lập trình ứng dụng di động tảng di động nói chung tảng di động phổ biến... số ngôn ngữ lập trình cho ứng dụng di động IT Giới thiệu đầu cuối di động 1.1 1.1.1 Khái niệm đầu cuối di động Đầu cuối di động thiết bị tính tốn cầm tay di động Một đầu cuối di động thơng thường... 3.1 LẬP TRÌNH ỨNG DỤNG DI ĐỘNG 94 Lập trình quản lý vịng đời ứng dụng di động 94 3.1.1 Mơ hình vịng đời ứng dụng di động 96 3.1.2 Lập trình quản lý vịng đời ứng dụng di động

Ngày đăng: 19/03/2021, 17:03

Tài liệu cùng người dùng

Tài liệu liên quan