Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 93 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
93
Dung lượng
2,51 MB
Nội dung
BỘ CÔNG THƯƠNG TRƯỜNG CAO ĐẲNG CÔNG NGHIỆP NAM ĐỊNH GIÁO TRÌNH LẬP TRÌNH TRÊN THIẾT BỊ DI ĐỘNG NGÀNH/CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN (Lưu hành nội bộ) Dùng cho đào tạo: Cao đẳng Nam Định, năm 2020 BỘ CÔNG THƯƠNG TRƯỜNG CAO ĐẲNG CÔNG NGHIỆP NAM ĐỊNH GIÁO TRÌNH LẬP TRÌNH TRÊN THIẾT BỊ DI ĐỘNG NGÀNH/CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN (Lưu hành nội bộ) CHỦ BIÊN: LÊ HỮU TOẢN Nam Định, năm 2020 LỜI GIỚI THIỆU Trong khoảng thời gian gần đây, lập trình di động ngành hot Các mẩu tin tuyển dụng gần đọc thường tuyển Android developer, iOS developer, … với mức lương cao, khơng thua lập trình web hay lập trình hệ thống nhúng Ngồi ra, biết cách lập trình ứng dụng, bạn làm freelance, tự phát triển ứng dụng kiếm tiền thơng qua ứng dụng Để phục vụ việc học tập nghiên cứu sinh viên Công nghệ thông tin, trường Cao đẳng Công nghiệp Nam Định, chúng tơi biên soạn giáo trình Lập trình thiết bị di động Giáo trình bao gồm bài, chương có phần kiến thức lý thuyết, câu hỏi phần thực hành cụ thể: Giáo trình Lập trình thiết bị di động hướng dẫn sinh viên xây dựng ứng dụng thiết bị di động từ đến nâng câo Được biên soạn với phương châm đảm bảo tính logic, khoa học, thiết thực, dễ hiểu nhằm trang bị sinh viên kiến thức phục vụ cho nghiên cứu, thiết kế ứng dụng di động Tài liệu xây dựng nhằm đáp ứng nhu cầu học tập nghiên cứu sinh viên trường Cao đẳng Công nghiệp Nam Định Do thời gian có hạn nên phạm vi giáo trình, khơng thể đề cập tất vấn đề nóng hổi lĩnh vực xây dựng ứng dụng di động Nhóm tác giả mong nhận ý kiến đóng góp từ thầy để tài liệu hoàn chỉnh Nam Định, 27 tháng 04 năm 2020 Chủ biên MỤC LỤC LỜI GIỚI THIỆU MỤC LỤC Bài 1: NHỮNG KIẾN THỨC CƠ BẢN VỀ THIẾT BỊ DI ĐỘNG VÀ LẬP TRÌNH CHO THIẾT BỊ DI ĐỘNG 1.1 Các thiết bị di động 1.1.1 Phân loại thiết bị di động 1.1.2 Các hệ điều hành thiết bị di động thông minh 1.1.3 Xu hướng di động hóa 1.2 Tổng quan lập trình cho thiết bị di động 11 Bài 2: NHẬP MƠN LẬP TRÌNH ANDROID 13 2.1 Thiết bị Android - hệ điều hành máy ảo 13 2.1.1 Giao diện ứng dụng 13 2.1.2 Phát triển 15 2.1.3 Bảo mật tính riêng tư 17 2.1.4 Máy ảo android 19 2.2 Lập trình cho thiết bị Android 21 2.2.1 Bộ phát triển phần mềm Android (Android SDK) 21 2.2.2 Môi trường phát triển 23 Bài 3: GIAO DIỆN NGƯỜI DÙNG CỦA ỨNG DỤNG ANDROID 31 3.1 View ViewGroup 31 3.1.1 LinearLayout 31 3.1.2 AbsoluteLayout 35 3.1.3 TableLayout 35 3.1.4 RelativeLayout 36 3.1.5 FrameLayout 38 3.1.6 ScrollView 39 3.2 Bố cục giao diện thích nghi với hướng hình 40 3.2.1 Thay đổi kích thước vị trí 41 3.2.2 Điều khiển hướng hình 43 3.3 Sử dụng trình đơn (Menu) 44 3.3.1 Trình đơn 46 3.3.2 Trình đơn ngữ cảnh 47 3.4 Sử dụng tác vụ (Action Bar) 48 3.5 Xử lý kiện tương tác với thành phần đồ họa 50 3.5.1 Nạp chồng hàm xử lý kiện Activity 51 3.5.2 Đăng ký kiện cho View 51 Bài 4: THIẾT KẾ GIAO DIỆN NGƯỜI DÙNG VỚI CÁC VIEW CƠ BẢN 53 4.1 Sử dụng View Android 53 4.2 TimePicker DatePicker 56 4.3 Hiển thị ảnh với ImageView Gallery 61 4.4 Sử dụng ListView để hiển thị danh sách dài 65 4.5 Hiển thị nội dung trang web với WebView 68 Bài 5: LƯU TRỮ DỮ LIỆU 71 5.1 Lưu trữ liệu cố định với shared preferences 71 5.2 Lưu trữ liệu với file nhớ nhớ 74 5.2.1 Làm việc với file nhớ 74 5.2.2 Làm việc với file nhớ 77 5.3 CSDL SQLite ứng dụng Android 77 Bài 6: GOOGLE PLAY STORE VÀ VIỆC PHÂN PHỐI ỨNG DỤNG 83 6.1 Chuẩn bị ứng dụng trước phân phối 83 6.1.2 Đánh số phiên phần mềm 83 6.2 Phân phối ứng dụng 87 6.2.1 Sử dụng công cụ adb 87 6.2.2 Phân phối web server 88 6.2.3 Phân phối Google Play Store 88 Bài 1: NHỮNG KIẾN THỨC CƠ BẢN VỀ THIẾT BỊ DI ĐỘNG VÀ LẬP TRÌNH CHO THIẾT BỊ DI ĐỘNG - Mục tiêu + Trình bày loại hệ điều hành phổ biến thiết bị di động 1.1 Các thiết bị di động 1.1.1 Phân loại thiết bị di động Các thiết bị di động trải qua nhiều năm phát triển với nhiều loại thiết bị khác nhau, kể đến máy nhắn tin di động, điện thoại di động, thiết bị trợ giúp cá nhân (PDA, Palm ), điện thoại thơng minh, máy tính bảng Các thiết bị nghe nhìn khác máy ảnh, máy quay kỹ thuật số, máy nghe nhạc xếp vào "thiết bị di động" Tuy nhiên giáo trình bỏ qua thiết bị mang tính chất lịch sử (đã khơng cịn gần khơng cịn) thiết bị nghe nhìn mà đề cập đến loại thiết bị điện toán cầm tay phổ biến thị trường tiêu dùng Các thiết bị thường phân theo loại sau: Điện thoại di động (basic phone featured phones) - điện thoại di động với tính nghe, gọi, danh bạ số ứng dụng dựng sẵn đơn giản Các thiết bị thường có kích thước nhỏ, hình độ phân giải thấp, có khơng có bàn phím, pin dùng lâu, kết nối khả phát triển thêm phần mềm nhà phát triển (gần như) khơng có Điện thoại di động thơng minh (smart phones) - điện thoại trang bị cấu hình tốt hơn, chạy hệ điều hành thông minh với SDK cho phép lập trình viên phát triển đa dạng ứng dụng phục vụ mục đích sống Các thiết bị thường có kích thước hình lớn nhiều so với featured phones, cấu hình phần cứng (CPU, RAM, GPU, camera ) cao, đa dạng kết nối (Wifi, Bluetooth, 3G/4G, GPS, Glonass, NFC ), có khơng nhiều loại cảm biến (cảm biến gia tốc, la bàn, cảm biến tiệm cận, cảm biến ánh sáng, quay hồi chuyển ) Với ngần trang bị, dù thường trang bị thỏi pin lớn featured phones, thời lượng pin điện thoại thông thường hạn chế so với featured phones Máy tính bảng - thiết bị thơng minh, tương tự smart phones có kích thước hình lớn nhiều (thơng thường từ 7"-13"), có khơng có hỗ trợ khe cắm SIM-card (phục vụ việc nhắn tin, gọi điện truy cập internet qua WiFi/3G) Điện thoại thơng minh lai máy tính bảng (phablet) - loại thiết bị lai smartphone máy tính bảng, tính smart phone, trang bị hình cỡ lớn smart phone thơng thường nhỏ kích thước phổ biến hình tablet Màn hình phablet thường có kích thước 5.0"-6.9" Trong lập trình, phablet thường xếp gộp chung vào smart phones Do khả lập trình điện thoại hạn chế (thường phải làm việc với lớp thấp hơn, khơng có công cụ phát triển tiện dụng) nên điện thoại chiếm thị phần chủ yếu, nội dung giáo trình "Phát triển ứng dụng di động" tập trung nhắm đến thiết bị thông minh (điện thoại thơng minh, máy tính bảng điện thoại lai) Về mặt phần mềm, thiết bị tương đương, giáo trình gọi "Lập trình cho điện thoại thơng minh" Biểu đồ thể tỷ lệ thị phần Smart Phones Featured Phones năm gần đây, liệu khảo sát tập người trưởng thành Hoa Kỳ (theo số liệu PewSearchCenter, tháng năm 2013): • Thuê bao di động: 120 triệu • Thuê bao 3G: 20 triệu • Tỷ lệ người dùng smartphone: 21% 1.1.2 Các hệ điều hành thiết bị di động thông minh Các hệ điều hành thiết bị di động đại tổng hợp nhiều tính máy tính cá nhân truyền thống hỗ trợ tính đặc trưng cho thiết bị di động hình cảm ứng, sóng di động (GSM/CDMA), 3G/4G, Bluetooth, WiFi, GPS, Glonass, chụp ảnh, quay phim, nhận dạng giọng nói, ghi âm, trình chơi nhạc, NFC, phát hồng ngoại Những hệ điều hành di động phổ biến gồm có: *) Android Android hệ điều hành miễn phí, mã nguồn mở, phát triển "gã khổng lồ" Google Android dựa tảng Linux thiết kế dành cho thiết bị di động có hình cảm ứng điện thoại thơng minh máy tính bảng Ban đầu, Android phát triển Tổng công ty Android, với hỗ trợ tài từ Google sau Google mua lại vào năm 2005 Android mắt vào năm 2007 với tuyên bố thành lập Liên minh thiết bị cầm tay mở: hiệp hội gồm công ty phần cứng, phần mềm, viễn thông với mục tiêu đẩy mạnh tiêu chuẩn mở cho thiết bị di động Chiếc điện thoại chạy Android bán vào tháng 10 năm 2008 Android có mã nguồn mở Google phát hành mã nguồn theo Giấy phép Apache Chính mã nguồn mở với giấy phép khơng có nhiều ràng buộc cho phép nhà phát triển thiết bị, mạng di động lập trình viên nhiệt huyết điều chỉnh phân phối Android cách tự Ngồi ra, Android cịn có cộng đồng lập trình viên đơng đảo chun viết ứng dụng để mở rộng chức thiết bị, loại ngơn ngữ lập trình Java có sửa đổi Vào tháng 10 năm 2012, có khoảng 700.000 ứng dụng Android, số lượt tải ứng dụng từ Google Play, cửa hàng ứng dụng Android, ước tính khoảng 25 tỷ lượt Những yếu tố giúp Android trở thành tảng điện thoại thông minh phổ biến giới, vượt qua Symbian vào quý năm 2010, công ty công nghệ lựa chọn họ cần hệ điều hành khơng nặng nề, có khả tinh chỉnh, giá rẻ chạy thiết bị công nghệ cao thay tạo dựng từ đầu Kết thiết kế để chạy điện thoại máy tính bảng, Android xuất TV, máy chơi game thiết bị điện tử khác Bản chất mở Android khích lệ đội ngũ đơng đảo lập trình viên người đam mê sử dụng mã nguồn mở để tạo dự án cộng đồng quản lý Những dự án bổ sung tính cao cấp cho người dùng thích tìm tịi đưa Android vào thiết bị ban đầu chạy hệ điều hành khác Android chiếm 75% thị phần điện thoại thơng minh tồn giới vào thời điểm quý năm 2012, với tổng cộng 500 triệu thiết bị kích hoạt 1,3 triệu lượt kích hoạt ngày Sự thành cơng hệ điều hành khiến trở thành mục tiêu vụ kiện liên quan đến phát minh, góp mặt gọi "cuộc chiến điện thoại thông minh" công ty công nghệ *) iOS iOS hệ điều hành thiết bị di động Apple Ban đầu hệ điều hành phát triển để chạy iPhone (gọi iPhone OS), sau mở rộng để chạy thiết bị Apple iPod touch, iPad Apple TV Ngày 31 tháng 5, 2011, App Store Apple chứa khoảng 500 000 ứng dụng iOS, tải tổng cộng khoảng 15 tỷ lần Trong quý năm 2010, có khoảng 26% điện thoại thông minh chạy hệ điều hành iOS, sau hệ điều hành Android Google Symbian Nokia Giao diện người dùng iOS dựa sở thao tác tay Người dùng tương tác với hệ điều hành thông qua nhiều động tác tay hình cảm ứng thiết bị Apple Phiên là: 6.1.4 (ra ngày 2/5/2013) dành riêng cho iPhone 6.1.3 (ra ngày 19/3/2013) cho thiết bị iOS lại *) Blackberry BlackBerry OS tảng phần mềm tư hữu RIM (Research In Motion) phát triển cho dòng sản phẩm cầm tay BlackBerry BlackBerry OS cung cấp khả đa nhiệm, thiết kế cho thiết bị sử dụng phương pháp nhập đặc biệt, thường trackball hình cảm ứng Hệ điều hành hỗ trợ MIDP 1.0 WAP 1.2 Các phiên trước cho phép đồng hóa khơng dây thư điện tử lịch với Microsoft Exchange Server , với Lotus Domino Phiên OS hỗ trợ MIDP 2.0, có khả kích hoạt khơng dây hoàn toàn đồng thư điện tử, lịch, công việc, ghi danh bạ với Exchange, khả hỗ trợ Novell GroupWise, Lotus Notes kết hợp với BlackBerry Enterprise Server Các cập nhật cho BlackBerry OS có nhà mạng cung cấp thông qua dịch vụ BlackBerry OTASL Các bên thứ ba phát triển ứng dụng dùng API tư hữu BlackBerry, ứng dụng sử dụng chức giới hạn cần phải chứng thực trước cài đặt Việc chứng thực xác nhận tác giả chương trình, khơng bảo đảm tính an tồn bảo mật ứng dụng *) BlackBerry 10 Là hệ hệ điều hành BlackBerry OS, phát triển BlackBerry Limited (Research In Motion đổi tên), dành cho điện thoại lẫn máy tính bảng Thiết bị gần sử dụng hệ điều hành smartphone cao cấp BlackBerry Q10 *) Windows phone Windows Phone hệ điều hành Microsoft dành cho smartphone kế tục tảng Windows Mobile, chúng khơng tương thích với Khác với Windows Mobile, Windows Phone tập trung vào phát triển Marketplace - nới nhà phát triển cung cấp sản phẩm (miễn phí có phí) tới người dùng Windows Phone bán vào tháng 10 năm 2010 đầu năm 2011 Châu Á Phiên tài Windows Phone Microsoft phát triển Windows Phone Apollo Plus, tương lai cịn có Windows Blue (hay Windows 9) giúp tương thích với hệ điều hành Windows máy tính Với Windows Phone , Microsoft phát triển giao diện người dùng mang tên Modern (trước tên Metro) - tích hợp khả liên kết với phần cứng phần mềm hãng thứ ba cách dễ dàng Ngày 11 tháng năm 2011, trước mặt báo giới, CEO Microsoft Steve Balmer CEO Nokia Stephen Elop công bố trở thành đối tác nhau, đồng nghĩa với việc Windows Phone trở thành hệ điều hành Nokia, thay Symbian già cỗi Sự kiện đánh dấu mốc quan trọng chiến với Android iOS, ví "cuộc đua ngựa" Theo đó, cơng ty hợp tác với Microsoft việc sản xuất điện thoại Windows Phone (hiện Windows Phone 8) Nokia hứa hẹn sẽ: Tập trung vào Windows Phone 7/8 Đưa thiết kế mới, bổ sung gói ngơn ngữ phổ biến chúng nhiều cho người tiêu dùng thông qua thiết kế phần cứng, nhiều phân khúc giá thị trường Hợp tác lĩnh vực marketing, phát triển phần mềm cho điện thoại di động Bing trở thành tảng tìm kiếm thiết bị dịch vụ Nokia Kho ứng dụng riêng Nokia tích hợp chung với Marketplace Ngoài hệ điều hành trên, thị trường cịn có thiết bị chạy hệ điều hành khác với thị phần không đáng kể như: Bada (của Samsung), BlackBerry Tablet OS (cho máy tính bảng BlackBerry PlayBook), GridOS (do Fusion Garage phát triển dựa Android), Linux, Brew (của Qualcomm), webOS (của Palm, sau HP mua lại, lại bán lại cho LG hồi tháng năm 2013), Tizen (do Samsung Intel phối hợp hỗ trợ, dựa LiMo - Linux for Mobile), Windows RT (của Microsoft cho thiết bị sử dụng chip kiến trúc ARM) Một số tổ chức, công ty nỗ lực phát triển hệ điều hành di động mới, nhắc đến nhiều số kể đến: *) Aliyun OS Aliyun OS đời tháng năm 2011, hệ điều hành dựa Linux, phát triển AliClound, công ty Alibaba Group, Trung Quốc Ý tưởng chung hệ điều hành Aliyun "đám mây hóa" tính thiết bị di động (clound functionality) Theo Google Aliyun phát triển từ hệ điều hành mã nguồn mở Android mình, Alibaba phủ nhận điều này, nhiên hệ điều hành chạy hầu hết ứng dụng Android Trên chợ ứng dụng Aliyun chí cịn chứa nhiều ứng dụng Android vi phạm quyền Thiết bị chạy hệ điều hành điện thoại K-Touch W700 FireFox OS Là hệ điều hành cho điện thoại di động máy tính bảng, phát triển Linux, phát triển tổ chức phi lợi nhuận Mozilla Foundation (tổ chức làm trình duyệt FireFox tiếng) Được thiết kế để cung cấp hệ thống toàn diện cho thiết bị di động, sử dụng công nghệ mở phổ biến HTML5, Javascript, web API với khả truy cập trực tiếp vào phần cứng thiết bị, FireFox OS nhắm đến cạnh tranh với ông lớn khác Apple's iOS, Google's Android, Microsoft's Windows Phone, hệ điều hành xuất Ubuntu Touch OS FireFox OS giới thiệu tháng năm 2012 vài điện thoại chạy Android, kit Raspberry Pi vào năm 2013 Tháng năm 2013, triển lãm thiết bị điện tử tiêu dùng quốc tế CES 2013, hãng ZTE xác nhận sản xuất điện thoại chạy hệ điều hành đến tháng năm 2013, Telefónica thức giới thiệu điện thoại thương mại chạy FireFox OS Tây Ban Nha: điện thoại ZTE Open *) Ubuntu Touch OS Là giao diện di động hệ điều hành mã nguồn mở tiếng - Ubuntu Canonical Ltd., thiết kế dành cho thiết bị di động với hình cám ứng điện thoại thơng minh máy tính bảng Điểm mạnh Ubuntu Touch việc dựa công nghệ lõi hệ điều hành Ubuntu cho máy tính, giúp ứng dụng dành cho Ubuntu Ubuntu Touch chạy lẫn mà khơng cần phát triển lại phiên riêng Ngoài thiết bị chạy Ubuntu Touch biến thành Ubuntu cho máy tính với đầy đủ tính máy tính cá nhân kết nối vào hình ngồi kết nối qua đế (dock) Với phổ biến hệ điều hành Ubuntu khả tương thích Ubuntu Touch, trở thành hệ điều hành phổ biến tương lai Bảng thể tương quan thị phần hệ điều hành di động thông minh phổ biến từ năm 2012-2013, theo số liệu ngày 16/05/2013 IDC Worldwide Quarterly Mobile Phone Tracker, May 2013 (đơn vị: triệu thiết bị) 5.2.2 Làm việc với file nhớ File nhớ truy cập ứng dụng tạo Ngồi dung lượng lưu trữ nhớ thường hạn chế nhớ ngồi (SDCard) Vì trường hợp ta muốn chia sẻ thông tin lưu trữ với ứng dụng khác, ta nên sử dụng nhớ Làm việc với file nhớ hoàn toàn tương tự với file nhớ trong, khác phần lấy FileInputStream FileOutputStream: Thay dùng: FileOutputStream fOut = openFileOutput("textfile.txt", MODE_PRIVATE); Ta dùng: File sdCard = Environment.getExternalStorageDirectory(); File directory = new File(sdCard.getAbsolutePath() + "/MyFiles"); directory.mkdirs(); File file = new File(directory, "textfile.txt"); FileOutputStream fOut = new FileOutputStream(file); Và thay vì: FileInputStream fIn = openFileInput("textfile.txt"); Ta dùng: File sdCard = Environment.getExternalStorageDirectory(); File directory = new File (sdCard.getAbsolutePath() + "/MyFiles"); File file = new File(directory, "textfile.txt"); FileInputStream fIn = new FileInputStream(file); InputStreamReader isr = new InputStreamReader(fIn); Mọi thao tác ứng xử trường hợp trước, khác bị trí lưu trữ file thư mục: 5.3 CSDL SQLite ứng dụng Android Trong phần trước ta tìm hiểu cách lưu liệu vào file vào shared preferences Tuy nhiên với loại liệu quan hệ sử dụng sở liệu quan hệ thuận tiện nhiều Ví dụ ta cần lưu trữ kết kiểm tra sinh viên trường học, dùng sở liệu cho phép truy vấn kết tập sinh viên định theo tiêu chí khác nhau, việc thêm, bớt, thay đổi thông tin thông qua câu truy vấn SQL dễ dàng nhiều so với việc thao tác file Android sử dụng hệ sở liệu SQLite CSDL 77 ứng dụng tạo truy xuất ứng dụng đó, file CSDL nằm nhớ dành riêng cho ứng dụng (/data/data/{package-name}/databases/) Một thói quen tốt thường lập trình viên kinh nghiệm sử dụng tập trung tất mã lệnh truy cập đến CSDL vào lớp riêng để thao tác CSDL trở nên suốt với mơi trường ngồi Chúng ta tạo trước lớp vậy, gọi DBAdapter Tạo lớp DBAdapter Trong ví dụ ta tạo CSDL tên MyDB, chứa bảng contacts, bảng chứa trường _id, name email Lớp DBAdapter có mã nguồn sau: import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class DBAdapter { static final String KEY_ROWID = "_id"; static final String KEY_NAME = "name"; static final String KEY_EMAIL = "email"; static final String TAG = "DBAdapter"; static final String DATABASE_NAME = "MyDB"; static final String DATABASE_TABLE = "contacts"; static final int DATABASE_VERSION = 2; static final String DATABASE_CREATE = "create table contacts (_id integer primary key autoincrement, " + "name text not null, email text not null);"; final Context context; DatabaseHelper DBHelper; SQLiteDatabase db; public DBAdapter(Context ctx) { this.context = ctx; DBHelper = new DatabaseHelper(context); } private static class DatabaseHelper extends SQLiteOpenHelper { DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { try { db.execSQL(DATABASE_CREATE); } catch (SQLException e) { 78 e.printStackTrace(); } } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.w(TAG, "Upgrading database from version " + oldVersion + " to " + newVersion + ", which will destroy all old data"); db.execSQL("DROP TABLE IF EXISTS contacts"); onCreate(db); } } // -opens the database public DBAdapter open() throws SQLException { db = DBHelper.getWritableDatabase(); return this; } // -closes the database public void close() { DBHelper.close(); } // -insert a contact into the database public long insertContact(String name, String email) { ContentValues initialValues = new ContentValues(); initialValues.put(KEY_NAME, name); initialValues.put(KEY_EMAIL, email); return db.insert(DATABASE_TABLE, null, initialValues); } // -deletes a particular contact public boolean deleteContact(long rowId) { return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0; } // -retrieves all the contacts public Cursor getAllContacts() { return db.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_NAME, KEY_EMAIL}, null, null, null, null, null); } // -retrieves a particular contact public Cursor getContact(long rowId) throws SQLException { Cursor mCursor = db.query(true, DATABASE_TABLE, new String[] {KEY_ROWID, KEY_NAME, KEY_EMAIL}, KEY_ROWID + "=" + rowId, null, null, null, null, null); 79 if (mCursor != null) { mCursor.moveToFirst(); } return mCursor; } // -updates a contact public boolean updateContact(long rowId, String name, String email) { ContentValues args = new ContentValues(); args.put(KEY_NAME, name); args.put(KEY_EMAIL, email); return db.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0; } } Trước tiên ta khai báo số: tên CSDL, tên bản, tên trường để dễ dàng truy xuất thay đổi trình phát triển Ngồi ta khai báo phiên (do ta tự đánh số) CSDL ứng dụng viết sẵn câu truy vấn dùng để tạo CSDL: static final String KEY_ROWID = "_id"; static final String KEY_NAME = "name"; static final String KEY_EMAIL = "email"; static final String TAG = "DBAdapter"; static final String DATABASE_NAME = "MyDB"; static final String DATABASE_TABLE = "contacts"; static final int DATABASE_VERSION = 2; static final String DATABASE_CREATE = "create table contacts (_id integer primary key autoincrement, " + "name text not null, email text not null);"; Ta tạo thêm lớp cục (lớp DatabaseHelper trên) để trợ giúp cho việc tạo CSDL nâng cấp cấu trúc có thay đổi phiên Lớp kế thừa từ lớp SQLiteOpenHelper Hàm dựng lớp gọi hàm dựng lớp mẹ với tên phiên CSDL ứng dụng: super(context, DATABASE_NAME, null, DATABASE_VERSION); Ngoài lớp ta nạp chồng hàm: Hàm onCreate(): gọi để khởi tạo CSDL lần chạy ứng dụng, hàm ta tiến hành thực thi câu lệnh tạo CSDL (DATABASE_CREATE) Hàm onUpgrade(): gọi ta nâng cấp ứng dụng thay đổi giá trị phiên CSDL (DATABASE_VERSION) Trong ví dụ trên, có thay đổi phiên này, ta xóa CSDL cũ tạo lại Ngoài ta viết thêm hàm để mở CSDL, tạo ghi, cập nhật ghi, lấy tất ghi, lấy ghi theo id… (xem code trên) Sau có lớp DBAdapter này, việc truy xuất CSDL trở nên tương đối đơn giản, đoạn mã minh họa thao tác thêm, bớt, truy vấn CSDL: DBAdapter db = new DBAdapter(this); // - thêm ghi db.open(); long id = db.insertContact("Wei-Meng Lee", "weimenglee@learn2develop.net"); id = db.insertContact("Mary Jackson", "mary@jackson.com"); 80 db.close(); // lấy danh sách tất ghi db.open(); Cursor c = db.getAllContacts(); if (c.moveToFirst()) { { DisplayContact(c); } while (c.moveToNext()); } db.close(); // - lấy ghi theo id db.open(); c = db.getContact(2); if (c.moveToFirst()) DisplayContact(c); else Toast.makeText(this, "No contact found", Toast.LENGTH_LONG).show(); db.close(); // - cập nhật ghi db.open(); if (db.updateContact(1, "Wei-Meng Lee", "weimenglee@gmail.com")) Toast.makeText(this, "Update successful.", Toast.LENGTH_LONG).show(); else Toast.makeText(this, "Update failed.", Toast.LENGTH_LONG).show(); db.close(); // - xóa ghi db.open(); if (db.deleteContact(1)) Toast.makeText(this, "Delete successful.", Toast.LENGTH_LONG).show(); else Toast.makeText(this, "Delete failed.", Toast.LENGTH_LONG).show(); db.close(); Trong hàm DisplayContact(c)chỉ đơn giản hiển thị lên hình nội dung ghi dạng Toast: public void DisplayContact(Cursor c) { Toast.makeText(this, "id: " + c.getString(0) + "\n" + "Name: " + c.getString(1) + "\n" + "Email: " + c.getString(2), Toast.LENGTH_LONG).show(); } Chạy ứng dụng dùng trình duyệt file Emulator, ta thấy file CSDL tạo thư mục /data/data/{package-name}/databases/myDB: 81 Nếu ta lấy file máy tính đọc phần mềm hỗ trợ CSDL SQLite (như NaviCat) ta thấy nội dung bảng contacts bên 82 Bài 6: GOOGLE PLAY STORE VÀ VIỆC PHÂN PHỐI ỨNG DỤNG - Mục tiêu + Chứng thực ứng dụng cho Android + Trình bày phương pháp phân phối ứng dụng qua kênh khác 6.1 Chuẩn bị ứng dụng trước phân phối Google đưa quy trình tương đối đơn giản giúp người dùng đóng gói đưa ứng dụng lên Google Play Store để phân phối đến người dùng Các bước sau: Xuất ứng dụng file apk (Android Package) Tạo chứng thực ký điện tử tiến hành ký ứng dụng (file apk) theo chứng thực tạo Xuất ứng dụng ký Có nhiều cách xuất như: cài trực tiếp lên thiết bị, đưa lên web site, phân phối lên chợ ứng dụng (cả hãng lẫn khơng hãng) 6.1.2 Đánh số phiên phần mềm Phiên phần mềm đánh số file AndroidManifest.xml, hai thuộc tính android:versionCode android:versionName: … Trong versionCode số hiệu phiên bản, có kiểu số nguyên, dùng cho hệ thống để phân biệt phiên ứng dụng cài đăt Mỗi bạn nâng cấp phiên ứng dụng, bạn cần thay đổi (tăng lên) số trước phân phối Còn tham số versionName tên phiên bản, thông số không dùng hệ thống, mà tên phiên người dùng nhìn thấy xuất lên chợ ứng dụng VersionName có kiểu chuỗi đặt tùy ý, nhiên định dàng thường dùng .., số hiệu phiên chính, phiên phụ, số hiệu cập nhật nhỏ phiên phụ, ví dụ “1.0.1”, “2.1.0”… Trong nhiều trường hợp, ta cần lấy số hiệu phiên ứng dụng lúc chạy chương trình, đó, ta dùng lấy thơng tin PackageInfo sau: PackageManager pm = getPackageManager(); try { // -get the package info PackageInfo pi = pm.getPackageInfo("net.learn2develop.LBS", 0); 83 // -display the versioncode Toast.makeText(getBaseContext(), "VersionCode: " +Integer.toString(pi.versionCode), Toast.LENGTH_SHORT).show(); } catch (NameNotFoundException e) { e.printStackTrace(); } Ngoài để ứng dụng phân phối chợ ứng dụng, bạn cần icon tiêu đề ứng dụng để hiển thị danh sách ứng dụng, để làm điều này, ta cần đặt giá trị cho tham số android:icon android:label thẻ (xem ví dụ trên) 6.1.3 Chứng thực số cho ứng dụng Android Tất ứng dụng Android phải ký theo chứng thực số trước cài đặt lên thiết bị Android Emulator Không số hệ khác yêu cầu bạn phải mua chứng số từ hãng chuyên cung cấp chứng thực, hệ thống Android cho phép tự sinh chứng thực số để ký ứng dụng Eclipse ADT cung cấp sẵn công cụ giúp ta tạo chứng thực cách rât trực quan dễ dàng Trong q trình bạn phát triển ứng dụng, bạn chạy ứng dụng thiết bị trình giả lập Đó Eclipse+ADT ký sẵn ứng dụng bạn theo chứng thực mặc định trước chuyển ứng dụng lên thiết bị, chứng thực mặc định chứa file debug.keystore: Tuy nhiên chứng thực dùng trình phát triển, trước bạn xuất ứng dụng, bạn cần ký ứng dụng theo chứng thực khác Phần mô tả q trình sinh chứng thực số đóng gói ứng dụng theo chứng thực Để xuất ứng dụng, từ trình đơn File Eclipse, chọn Export , cửa sổ mở ra, chọn Export Android Application, bấm Next: 84 Trong hình tiếp theo, chọn tên dự án muốn xuất bản: Tiếp ta cần vị trí file chứa chứng thực số cần dùng để ký ứng dụng nhập vào mật chứng thực (mật ta đặt lúc tạo chứng thực số) Trong trường hợp chưa có chứng thực số, ta chọn “Create new keystore” để tạo mới: 85 Trong trường hợp tạo keystore, ta cần nhập thông tin để tạo key (dùng để ký ứng dụng), ví dụ ta điền thơng tin bên dưới: Cuối ta nhập tên file apk cần xuất bấm Finish: 86 Khi trình kết thúc, ta thu ứng dụng file apk đóng gói sẵn sang để phân phối 6.2 Phân phối ứng dụng Sau đóng gói ký theo chứng thực số cần thiết, file apk sẵn sàng để phân phối lên chợ ứng dụng Có nhiều cách để phân phối ứng dụng đến người dùng như: Cài đặt trực tiếp lên thiết bị đầu cuối thông qua công cụ adb.exe Đặt file cài đặt (.apk) lên web server phân phối đường link tải xuống cho người dùng Phân phối ứng dụng chợ ứng dụng: điển hình Google Play Store 6.2.1 Sử dụng cơng cụ adb Cơng cụ adb sử dụng để cài trực tiếp ứng dụng lên thiết bị đầu cuối Để dùng công cụ này, ta cần: Kết nối thiết bị với máy tính thơng qua cổng USB Cài đặt driver cho thiết bị (nếu chưa có) Bật tùy chọn “USB debugging” “Developer options” mục cấu hình (Settings) thiết bị Android Để kiểm tra thiết bị kết nối thành công với máy tính chưa, ta gõ lệnh “adb devices: từ hình console (cmd.exe): Hình cho thấy có 01 thiết bị với mã “05863c50” kết nối với máy tính Lưu ý: cơng cụ adb.exe nằm thư mục platform-tools Android SDK Khi thiêt bị kết nối, ta dùng lệnh “adb install ” để cài đặt ứng dụng lên thiết bị: 87 Chữ “success” báo hiệu trình cài đặt thành công, ta thấy ứng dụng xuất danh sách ứng dụng thiết bị sẵn sàng hoạt động 6.2.2 Phân phối web server Cách thứ đưa ứng dụng bạn lên web server phân phối link tải (ví dụ: http://myserver.com/app/LBS.apk ) đến người dùng Người dùng cần bấm vào link từ thiết bị android mình, gõ đường link vào địa trình duyệt web thiết bị, ứng dụng tự động tải Sau tải xong, bấm chọn file vừa tải để thực cài đặt, nhiên để cài đặt ứng dụng từ nguồn (không phải từ Google Play Store), bạn cần bật tùy chọn “Unknown source” phần Settings > Security thiết bị: 6.2.3 Phân phối Google Play Store Kênh phân phối thống tiềm cho ứng dụng Android chợ ứng dụng Google Play Store (cửa hàng Play) Google Để phân phối ứng dụng cửa hàng Play, ta cần đăng ký tài khoản lập trình viên Google Android Lệ phí lập tài khoản $25 trọn đời tài khoản Bạn tốn khoản tiền thẻ tốn thẻ tín dụng quốc tế (Visa, Master, America Express, Discovery…) Để đăng ký tài khoản lập trình viên, ta truy cập https://play.google.com/apps/publish/signup/ đăng nhập tài khoản google bạn (nếu chưa có tài khoản google, bạn cần tạo mới, miễn phí): 88 Bấm chấp nhận điều khoản tiếp tục (Continue to payment) Trong hình tiếp theo, nhập thơng tin thẻ quốc tế để toán bấm “Đồng ý tiếp tục”: Nếu thẻ bạn chấp nhận, Google đưa tài khoản bạn vào trạng thái chờ kiểm tra, sau khoảng vài ngày có phản hồi từ Google chấp nhận tài khoản bạn 89 hay không Trong trường hợp không chấp nhận, Google yêu cầu bạn gửi thêm tài liệu chứng thực thông tin cá nhân tài khoản ngân hàng bạn Trong thời gian chờ đợi Google kiểm tra trạng thái tốn, bạn đưa ứng dụng lên server Google, nhiên chưa thể phân phối đến người dùng Giao diện Developer console sau đăng ký thành cơng có dạng sau: Tài khoản có ứng dụng phân phối đến người dùng, ứng dụng có 2071 người dùng tổng số 15180 lượt tải, có 93 người bình chọn điểm trung bình 3.98/5 sao!!!! Để phân phối ứng dụng khác, ta bấm vào nút “+ Add new application” phía trang (nút bơi vàng hình) Bạn cần cung cấp đầy đủ thông tin yêu cầu ứng dụng trước phân phối đến người dùng, bao gồm thông tin: Tải file ứng dụng (apk) bạn lên hệ thống: Đặt giá bán ứng dụng (hiện Việt Nam ta phép đăng ứng dụng miễn phí) quốc gia muốn phân phối ứng dụng: 90 Cuối bấm “Save and publish”, ứng dụng bạn bắt đầu phân phối hệ thống Google Play Chú ý: cần phải đến vài tiếng đến vài ngày để ứng dụng vượt qua hệ thông kiểm tra Google phân phối khắp mạng CDN Google Sau hoàn tất bước ta hoàn thành việc phát triển ứng dụng cho hệ điều hành Android phân phối đến người dùng Bạn thường xuyên ghé thăm trang dành cho developer để xem thống kê khác liên quan đến việc cài đặt sử dụng ứng dụng như: số lượt cài đặt/gỡ bỏ theo ngày, tỉ lệ phiên Android dùng, lỗi crash ứng dụng, đánh giá, phản hồi người dùng…, hình minh họa hình thống kê Phần kết thúc giáo trình “Lập trình cho thiết bị di động” chúng ta! 91 ... VỀ THIẾT BỊ DI ĐỘNG VÀ LẬP TRÌNH CHO THIẾT BỊ DI ĐỘNG - Mục tiêu + Trình bày loại hệ điều hành phổ biến thiết bị di động 1.1 Các thiết bị di động 1.1.1 Phân loại thiết bị di động Các thiết bị di. .. BẢN VỀ THIẾT BỊ DI ĐỘNG VÀ LẬP TRÌNH CHO THIẾT BỊ DI ĐỘNG 1.1 Các thiết bị di động 1.1.1 Phân loại thiết bị di động 1.1.2 Các hệ điều hành thiết bị di động... tơi biên soạn giáo trình Lập trình thiết bị di động Giáo trình bao gồm bài, chương có phần kiến thức lý thuyết, câu hỏi phần thực hành cụ thể: Giáo trình Lập trình thiết bị di động hướng dẫn sinh