Giáo trình lập trình thiết bị di động 2 (nghề ứng dụng phần mềm trình độ cao đẳng)

266 2 0
Giáo trình lập trình thiết bị di động 2 (nghề ứng dụng phần mềm   trình độ cao đẳ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

TUYÊN BỐ BẢN QUYỀN Tài liệu thuộc loại sách giáo trình nên nguồn thơng tin phép dùng nguyên trích dùng cho mục đích đào tạo tham khảo Mọi mục đích khác mang tính lệch lạc sử dụng với mục đích kinh doanh thiếu lành mạnh bị nghiêm cấm LỜI GIỚI THIỆU Trong thập kỷ vừa qua, Android trở thành tảng phổ biến hết với 1.4 tỷ người dùng 80% số lượng thiết bị di động sử dụng hệ điều hành Android Con số ấn tượng cho thấy nhu cầu phát triển ứng dụng chạy hệ điều hành Android Lập trình ứng dụng dần trở thành công việc với hội nghề nghiệp rộng mở mức lương hấp dẫn Lập trình thiết bị di động mô đun sở của nghề Ứng dụng phần mềm biên soạn dựa theo Bài trình đào tạo xây dựng ban hành năm 2021 của trường Cao đẳng nghề Cần Thơ dành cho nghề Ứng dụng phần mềm hệ Cao đẳng Khi biên soạn, nhóm biên soạn dựa kinh nghiệm thực tế giảng dạy, tham khảo đồng nghiệp, tham khảo giáo trình có cập nhật kiến thức có liên quan để phù hợp với nội dung Bài trình đào tạo phù hợp với mục tiêu đào tạo, nội dung biên soạn gắn với nhu cầu thực tế Nội dung giáo trình biên soạn với lượng thời gian đào tạo 45 gồm có: Bài MĐ29-01: Lưu trữ liệu – SQLITE Bài MĐ29-02: Quản lý liệu với Content Provider Bài MĐ29-03: Menu - Action Bar - Toolbar Bài MĐ29-04: Action Provider, điều khiẻn tìm kiếm chuyển hoạt Bài MĐ29-05: Asynctask - Thread - Handler Bài MĐ29-06: Service - Broadcast Receiver Notification Bài MĐ29-07: Khai thác tài nguyên internet giao thức kết nối Webservice Bài MĐ29-08: Thao tác với liệu XML JSON Bài MĐ29-09: Google Map Google Cloud Messaging Bài 10 MĐ29-10: Các điều khiển đa truyền thông Bài 11 MĐ29-11: Telephone & Sms cảm biến Mặc dù cố gắng tổ chức biên soạn để đáp ứng mục tiêu đào tạo khơng tránh thiếu sót Rất mong nhận đóng góp ý kiến của thầy, bạn đọc để nhóm biên soạn điều chỉnh hồn thiện Cần Thơ, ngày tháng năm 2021 Tham gia biên soạn Chủ biên Nguyễn Hoàng Vũ MỤC LỤC LỜI GIỚI THIỆU MỤC LỤC GIÁO TRÌNH MƠN HỌC/MÔ ĐUN BÀI 1: LƯU TRỮ DỮ LIỆU – SQLITE 10 Mã BÀI: MĐ29-01 10 KHÁI NIỆM CƠ SỞ DỮ LIỆU (DATABASE CONCEPTS) 10 GIỚI THIỆU SQLITE 10 XÂY DỰNG CƠ SỞ DỮ LIỆU VỚI SQLITE 11 3.1 Tạo Cơ sở liệu 11 3.2 Mở Cơ sở liệu 12 TRUY VẤN DỮ LIỆU 13 4.1 Truy vấn (Query) 13 4.1.1 Truy vấn với câu lệnh SQL 13 4.1.2 Truy vấn với cú pháp hàm 14 4.2 Quản lý 15 4.2.1 Insert 15 4.2.2 Update 15 4.2.3 Delete 16 SẮP XẾP DỮ LIỆU 16 5.1 Truy vấn xếp 16 5.1.1 Tăng dần (ASCENDING) 16 5.1.2 Giảm dần (DESCENDING) 16 5.2 Truy vấn gom nhóm 16 Bài tập của học viên 18 Hướng dẫn thực 18 Những trọng tâm cần ý 26 Bài mở rộng nâng cao 26 Yêu cầu đánh giá kết học tập 26 BÀI 2: QUẢN LÝ DỮ LIỆU VỚI CONTENT PROVIDER 28 Mã BÀI: MĐ29 - 02 28 Giới thiệu Content Provider 28 1.1 Content Provider 28 1.2 Lợi ích Content Providers 29 1.3 Kiến trúc Content Providers 30 1.3.1 Data and Open Helper 30 1.3.2 Contract 30 1.3.3 Content Provider 30 1.3.4 Content Resolver 31 1.4 Content URI 31 1.5 ContentResolver 31 Xây dựng Content Provider cho ứng dụng 33 2.1 Vấn đề xây dựng ContentProvider 33 2.2 Authority & UriMatcher 33 2.2.1 Authority: 34 2.2.2 UriMatcher: 34 TRUY VẤN DỮ LIỆU HỆ THỐNG VỚI CONTENT PROVIDER 34 3.1 Các phương thức điều khiển Cursor 34 3.2 Truy vấn liệu hệ thống 35 Bài tập của học viên 36 Hướng dẫn thực 36 Những trọng tâm cần ý: 39 Bài mở rộng nâng cao 39 Yêu cầu đánh giá kết học tập 40 BÀI : MENU - ACTION BAR - TOOLBAR 41 Mã BÀI: MĐ29 -03 41 MENU 41 1.1 Option Menu 41 1.2 Context Menu 42 1.3 PopUp Menu 45 ACTION BAR .47 2.1 Giới thiệu 47 2.2 Tạo ActionBar 49 2.3 Thao tác với ActionBar 50 CHẾ ĐỘ ĐIỀU HƯỚNG 52 TOOLBAR 53 4.1 Giới thiệu 53 4.1 Tạo ToolBar 54 4.2 Thao tác với Toolbar 55 Bài tập của học viên 56 Hướng dẫn thực 56 Những trọng tâm cần ý: 69 Bài mở rộng nâng cao 69 Yêu cầu đánh giá kết học tập 70 BÀI : ACTION PROVIDER, ĐIỀU KHIẺN TÌM KIẾM VÀ CÁC CHUYỂN HOẠT 71 Mã BÀI: MĐ29 - 04 .71 ACTION PROVIDER 71 ĐIỀU KHIỂN TÌM KIẾM 72 PROPERTY ANIMATION 75 VIEW ANIMATION .76 4.1 Tween Animation 76 4.2 Frame Animation 77 DRAWABLE ANIMATION 78 Bài tập của học viên 79 Hướng dẫn thực 79 Những trọng tâm cần ý: 88 Bài mở rộng nâng cao 89 Yêu cầu đánh giá kết học tập 89 BÀI 5: ASYNCTASK - THREAD - HANDLER 90 Mã BÀI: MĐ29 - 05 .90 THREAD VÀ MULTITHREADING 90 1.1 Thread 90 1.2 Multithreading 91 1.3 Main Thread UI Thread, Worker Thread 91 1.4 Hiện tượng ANR Android 92 ASYNCTASK 93 Handler 96 3.1 Giới thiệu 96 3.2 Cách sử dụng Handler 97 Bài tập thực hành của sinh viên 98 Hướng dẫn thực 99 Những trọng tâm cần ý: 100 Bài mở rộng nâng cao 101 Yêu cầu đánh giá kết học tập 101 BÀI 6: SERVICE - BROADCAST RECEIVER VÀ NOTIFICATION 102 Mã BÀI: MĐ29 - 06 102 SERVICE 102 1.1 Giới thiệu 102 1.2 Tạo Service 103 1.3 IntentService 105 BROADCAST RECEIVER 106 2.1 Tạo BroadcastReceiver 106 2.2 Đăng ký BroadcastReceiver 106 NOTIFICATION 107 Bài tập thực hành của sinh viên 110 Hướng dẫn thực 110 Những trọng tâm cần ý: 139 Bài mở rộng nâng cao 140 Yêu cầu đánh giá kết học tập 140 BÀI 7: KHAI THÁC TÀI NGUYÊN INTERNET VÀ GIAO THỨC KẾT NỐI WEBSERVICE 141 Mã BÀI: MĐ29 - 07 141 TỔNG QUAN TÀI NGUYÊN INTERNET 141 1.1 Tài nguyên Internet thiết bị di động 141 1.2 Các vấn đề kết nối Internet 141 1.3 Các hình thức kết nối Internet 142 1.4 Lớp khai báo kết nối 142 1.4.1 Thực kết nối Internet (HTTP) 143 1.4.2 Thực kết nối Internet (HTTPS) 143 SỬ DỤNG DỊCH VỤ DOWNLOAD MANAGER 144 2.1.Giới thiêu đích vụ Download Manager 144 2.2 Khai báo sử dụng Download Manager 144 2.3 Tùy chỉnh thông báo cho Download Manager 145 2.4 Chỉ định nơi lưu trữ 146 2.5 Truy vấn nội dung tải DownloadManager 147 DỊCH VỤ WEBSERVICE 147 3.1 Giới thiệu Web Service 147 3.2 Các chuẩn dịch vụ WEB 148 CÁC LOẠI WEBSERVICE 148 4.1 Giao thức HTTP 148 4.2 SOAP 151 4.3 REST 152 4.4 RESTful Service 152 XÂY DỰNG ỨNG DỤNG KẾT NỐI DỊCH VỤ WEB RESTFUL 153 5.2 Khai báo kiểm soát yêu cầu kết nối 153 5.2 Thực hiên kết nối 153 5.3 Truy xuất liệu trả 154 Bài tập thực hành của sinh viên .155 Hướng dẫn thực .155 Những trọng tâm cần ý: 160 Bài mở rộng nâng cao 160 Yêu cầu đánh giá kết học tập 160 BÀI 8: THAO TÁC VỚI DỮ LIỆU XML VÀ JSON .162 Mã BÀI: MĐ29 - 08 162 Đọc ghi liệu XML 162 1.1 Định dạng XML 162 1.2 Đọc ghi liêu XML 162 1.2.1 Ghi liêu XML 162 1.2.2 Đọc liệu XML 165 ĐỌC GHI DỮ LIỆU JSON 166 2.1 Định dạng JSON 166 2.2 Đọc ghi liệu JSON 167 2.2.1 Ghi liệu JSON 168 2.2.2 Đọc liệu JSON 169 Bài tập thực hành của sinh viên .173 Hướng dẫn thực .173 Những trọng tâm cần ý: 185 Bài mở rộng nâng cao 185 Yêu cầu đánh giá kết học tập 186 BÀI 9: GOOGLE MAP VÀ GOOGLE CLOUD MESSAGING 188 Mã BÀI: MĐ29 - 09 188 GOOGLE PLAY SERVICE SDK 188 GOOGLE MAPS ANDROID API 189 2.1 Tạo dự án Google Maps (Google Maps project) 189 2.2 Google Maps Android API Key 190 2.3 GoogleMap & Xây dựng Đối tượng 191 2.4 Đồ họa Google Map 193 2.4.1 Marker: 193 2.4.2 InfoWindow: 194 2.4.3 Shape: 194 Giới thiệu Google Cloud Messaging 197 CẤU HÌNH CHO GOOGLE CLOUD MESSAGING .198 4.1 Đăng ký dịch vụ GCM 198 4.2 Cấu hình mơi trường hoạt đông cho GCM 201 4.3 Chuẩn bị máy ảo với Google API: 201 4.4 Tạo Project để đăng ký GCM 202 4.5 Sử dụng “backend” Android Studio 203 Bài tập thực hành của sinh viên .209 Hướng dẫn thực .209 Những trọng tâm cần ý: 217 Bài mở rộng nâng cao 217 Yêu cầu đánh giá kết học tập 217 BÀI 10: CÁC ĐIỀU KHIỂN ĐA TRUYỀN THÔNG 219 Mã BÀI: MĐ29 - 10 219 MEDIA PLAYER 219 1.1 Giới thiệu 219 1.2 Xây dựng MediaPlayer Audio 219 1.3 Xây dựng MediaPlayer Video 220 1.4 Các điều khiển MediaPlayer 221 THU ÂM THANH VÀ HÌNH ẢNH (RECODING) 222 CAMERA 224 3.1 Điều khiển chụp hình với Camera 224 3.2 Lưu tập tin Media vào MediaStore 226 Bài tập thực hành của sinh viên 227 Hướng dẫn thực 228 Những trọng tâm cần ý: 243 Bài mở rộng nâng cao 243 Yêu cầu đánh giá kết học tập 243 BÀI 11: TELEPHONE & SMS VÀ BỘ CẢM BIẾN 245 Mã BÀI: MĐ29 - 11 245 TELEPHONE 245 SMS 248 Giới thiệu sơ lược cảm biến 251 Lấy thông tin điều khiển cảm biến 253 XỬ LÝ THÔNG TIN MỘT SỐ CẢM BIẾN 254 5.1 Accelerometer 254 5.2 Near Field Communacation Sensor (NFC) 255 Bài tập thực hành của sinh viên 257 Hướng dẫn thực 257 Những trọng tâm cần ý: 263 Bài mở rộng nâng cao 263 Yêu cầu đánh giá kết học tập 263 TÀI LIỆU THAM KHẢO 266 GIÁO TRÌNH MƠN HỌC/MƠ ĐUN Tên mơn học/mơ đun: LẬP TRÌNH THIẾT BỊ DI ĐỘNG Mã mơn học/mơ đun: MĐ 29 Vị trí, tính chất, ý nghĩa vai trị mơ đun  Vị trí: mơ đun bố trí giảng dạy dạy từ đầu khóa học, trước học môn chuyên môn nghề như: Quản trị mạng, Quản trị sở liệu, Thiết kế Web với ASP.NET, Lập trìnhọpython, Xây dựng phần mềm quản lý liệu (Bán hàng/ Nhân sự/ Khách sạn),  Tính chất của mô đun: mô đun bắt buộc thuộc chuyên mơn nghề của Bài trình đào tạo Cao đẳng Ứng dụng phần mềm  Ý nghĩa vai trò: Đây môn học sở ngành của ngành ứng dụng phần mềm, cung cấp cho sinh viên kiến thức bảo mật hệ thống mạng để làm tản cho việc bảo mật giải vấn đề cần thiết  Vai trị: Giáo trình “Lập trình thiết bị di động 2” nhằm cung cấp cho sinh viên kiến thức phương pháp kỹ thuật đo lường đại lượng vật lý Mục tiêu môn học: Sau học xong mô đun học viên có lực - Kiến thức:  Truy xuất tài nguyên dùng chung thiết bị  Xây dựng ứng dụng với chế chia sẻ tài ngun  Mơ hình tổ chức liệu theo cấu trúc sở liệu  Tối ưu hoá trải nghiệm người dùng với chế xếp bố cục giao diện, chuyển hoạt tuỳ chỉnh hiển thị điều khiển  Tăng tốc ứng dụng với luồng xử lý khác  Xây dựng chế độ làm việc ngầm cho ứng dụng  Xây dựng ứng dụng theo mơ hình MVC  Thiết lập nhận gửi thơng báo cho ứng dụng  Một trường hợp kiểm thử không tốt (không thành công) trường hợp mà khả tìm thấy lỗi chưa biết đến  Khai thác dịch vụ Internet;  Xây dựng ứng dụng đồ với Google Map;  Sử dụng cảm biến kết nối khơng dây;  Xây dựng ứng dụng giải trí đa phương tiện;  Kết nối với hệ thống khác thông qua WebService  - Kỹ năng:  Triển khai truy xuất tài nguyên dùng chung thiết bị  Xây dựng ứng dụng với chế chia sẻ tài nguyên  Triển khai tối ưu hoá trải nghiệm người dùng với chế xếp bố cục giao diện, chuyển hoạt tuỳ chỉnh hiển thị điều khiển  Tăng tốc ứng dụng với luồng xử lý khác  Xây dựng chế độ làm việc ngầm cho ứng dụng  Xây dựng ứng dụng theo mô hình MVC  Thiết lập nhận gửi thơng báo cho ứng dụng  Khai thác dịch vụ Internet;  Xây dựng ứng dụng đồ với Google Map;  Sử dụng cảm biến kết nối không dây;  Xây dựng ứng dụng giải trí đa phương tiện;  Kết nối với hệ thống khác thông qua WebService - Năng lực tự chủ trách nhiệm:  Nghiêm túc, tỉ mỉ việc tiếp nhận kiến thức  Chủ động, tích cực thực hành tìm kiếm nguồn tập liên quan  Rèn luyện tính tổ chức, khoa học, hệ thống, xác, cẩn thận Nội dung mơ đun: Thời gian (giờ) Thực Số hành, thí Tên mô đun Tổng Lý Kiểm TT nghiệm, số thuyết tra thảo luận, tập Bài 1: Lưu trữ liệu – SQLITE Bài 2: Quản lý liệu với Content Provider Bài 3: Menu - Action Bar - Toolbar 4 Bài : Action Provider, điều khiẻn tìm kiếm chuyển hoạt Bài 5: Asynctask - Thread - Handler Bài 6: Service - Broadcast Receiver Notification Bài 7: Khai thác tài nguyên internet giao thức kết nối Webservice Bài 8: Thao tác với liệu XML JSON Bài 9: Google Map Google Cloud Messaging 10 Bài 10: Các điều khiển đa truyền thông 11 Bài 11: Telephone & Sms cảm biến Tổng 75 15 57 BÀI 1: LƯU TRỮ DỮ LIỆU – SQLITE Mã BÀI: MĐ29-01 Giới thiệu Những ứng dụng cần sử dụng khối lượng liệu lớn hơn, cần cách lưu trữ khác Và đặc biệt với dạng liệu có cấu trúc, cần truy cập sau theo dạng truy vấn khơng thích hợp sở liệu (Database) Trong phần điểm qua DAO (Data Access Object) DAO có nhiệm vụ xử lý kết nối với Database để truy cập chỉnh sửa liệu DAO có nhiệm vụ chuyển đổi từ đối tượng database thành đối tượng Java tương ứng Tuy nhiên sử dụng DAO lúc hợp lý Đôi dùng trực tiếp thẳng vào database, sử dụng Content Provider tốt (vì đỡ phải tạo model) Mục tiêu: - Trình bày khái niệm sở liệu - Hiểu thực việc xây dựng sở liệu SQLITE - Thực truy vấn liệu SQLITE - Thực xếp sở liệu - Có tính chủ động, khoa học, cẩn thận, tỉ mỉ, xác Nội dung chính: KHÁI NIỆM CƠ SỞ DỮ LIỆU (DATABASE CONCEPTS)  Dữ liệu kiện ghi lại có ý nghĩa  Một sở liệu (CSDL) tập hợp liệu có liên quan với nhau, lưu trữ máy tính, có nhiều người sử dụng tổ chức theo mơ hình  Một CSDL biểu thị khía cạnh của giới thực Thơng tin đưa vào CSDL tạo thành không gian CSDL “thế giới nhỏ” (miniworld)  Một CSDL tập hợp liệu liên kết với cách logic mang ý nghĩa Một CSDL thiết kế phổ biến cho mục đích riêng Một hệ quản trị sở liệu tập chương trình giúp cho người sử dụng tạo ra, trì khai thác CSDL Người ta gọi sở liệu hệ quản trị sở liệu thuật ngữ chung hệ sở liệu  Hệ quản trị sở liệu (tiếng Anh: Database Management System - DBMS), phần mềm hay hệ thống thiết kế để quản trị sở liệu Cụ thể, chương trình thuộc loại hỗ trợ khả lưu trữ, sửa chữa, xóa tìm kiếm thơng tin CSDL Có nhiều loại hệ quản trị CSDL khác nhau: từ phần mềm nhỏ chạy máy tính cá nhân hệ quản trị phức tạp chạy nhiều siêu máy tính  Tuy nhiên, đa số hệ quản trị CSDL thị trường có đặc điểm chung sử dụng ngôn ngữ truy vấn theo cấu trúc mà tiếng Anh gọi Structured Query Language (SQL) Các hệ quản trị CSDL phổ biến nhiều người biết đến MySQL, Oracle, PostgreSQL, SQL Server, DB2, Infomix, v.v Phần lớn hệ quản trị CSDL kể hoạt động tốt nhiều hệ điều hành khác Linux, Unix MacOS ngoại trừ SQL Server của Microsoft chạy hệ điều hành Windows GIỚI THIỆU SQLITE  SQLite sở liệu mở viết dạng thư viện tích hợp nhúng vào Android, hỗ trợ đặc điểm quan hệ chuẩn của sở liệu cú pháp, transaction, câu lệnh SQLite sử dụng rộng rãi ứng dụng di động Android, iOS, Mozilla Firefox sử dụng SQLite để lưu trữ liệu cấu hình 10 - Các hành động cảm biến thực chiều chúng cho phép thực hành động mặc định sẵn (trừ NFC) - GPS cảm biến khơng tích hợp vào tảng cảm biến Android - Các loại cảm biến có thiết bị:  Light Sensor  Proximity Sensor  Temparature Sensor  Pressure Sensor  Gyroscope Sensor  Accelerometer Sensor  Magnetic Field Sensor  Orientation Sensor  Gravity Sensor (Android 2.3)  Linear Accelerometer Sensor (Android 2.3)  Rotation Vector S ensor (Android 2.3)  Near Field Communication Sensor (Android 2.3) - Có cách để nhận biết thiết bị hổ trợ loại cảm biến nào:  Sử dụng đối tượng thuộc lớp SensorManager để thực thao tác lấy danh sách loại cảm biến thiết bị  Thiết lập tập tin AndroidManifest để định tính thiết bị cần có cho ứng dụng uses-feature android:name= “android.hardware.sensor.proximity”/> - Ví dụ lấy thơng tin cảm biến thiết bị thông qua SensorManager: SensorManager mgr = (SensorManager)this.getSystemService(SENSOR_SERVICE); List sensors = mgr.getSensorList(Sensor.TYPE_ALL); StringBuilder message = new StringBuilder(2048); message.append("The sensors on this device are:\n"); for(Sensor sensor : sensors) { message.append(sensor.getName() + "\n"); message.append(" Type: " + sensorTypes.get(sensor.getType()) + "\n"); message.append("Vendor: " + sensor.getVendor() + "\n"); message.append(" Version: " + sensor.getVersion() + "\n"); message.append(" Resolution: " + sensor.getResolution() + "\n"); message.append(" Max Range: " + sensor.getMaximumRange() + "\n"); message.append(" Power: " + sensor.getPower() + " mA\n"); } text.setText(message); 252 Hình 7.1 kết Lấy thơng tin điều khiển cảm biến - Cần đăng ký lắng nghe (Listener) thay đổi của cảm biến để thực lấy thơng tin - Ví dụ: tạo lớp thực thi giao diện SensorEventListioner public class MainActivity extends Activity implements SensorEventListener{ private SensorManager mfr; private Sensor light; private TextView text; private StringBuilder msg = new StringBuilder(2048); @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); mgr = (SensorManager) this.getSystemService(SENSOR_SERVICE); light = mgr.getDefaultSensor(Sensor.TYPE_LIGHT); text = (TextView) findviewById(R.id.text); } } - Override onResume onPause để thực thiết lập cảm biến - Ví dụ: đăng ký hủy đăng ký lắng nghe @Override protected void onResume(){ mgr.registerListener(this, light, SensorManager.SENSOR_DELAY_NORMAL); super.onresume(); } @Override protected void onPause() 253 { mgr.unregisterListener(this, light); super.onPause(); } - Trong phương thức registrerListener() ta thiết lập thông số để nắm bắt giá trị thay đổi của cảm biến  SENSOR_DELAY_NORMAL  SENSOR_DELAY_UI  SENSOR_DELAY_GAME  SENSOR_DELAY_FASTEST - Theo dõi hoạt động của cảm biến - Ví dụ: thực callback phương thức onAccuracyChanged() onSensorChanged() public void onAccuracyChanged(Sensor sensor, int accuracy) { msg.insert(0, sensor.getName() + “accuracy changed: “ + accuracy + (accuracy + (accuracy==1?” (LOW)” : (accuracy == 2?” (MED)”:“(HIGH)”)) +“\n”); text.setText(msg); text.invalidate(); } public void onSensorChangeed(SensorEvent event) { msg.insert(0, “Got a sensor event: “ + event.values[0] + “SI lux units\n”); text.setText(msg); text.invalidate(); } - Một số vấn đề phát sinh sử dụng Cảm biến  Phương thức onAccuracyChanged() gọi lại loại cảm biến sử dụng thiết lập thông số cao  Khó truy cập trực tiếp đến giá trị của của cảm biến theo thời gian cho trước trừ thực phương thức API của driver cảm biến thiết lập lại giao diện (Interface) để sử dụng  Tốc độ truy xuất liệu của cảm biến không đủ nhanh để đáp ứng số tác vụ Có thể tùy chỉnh phương thức có sẵn của thư viện thơng qua chế JNI  Android 2.1 khơng hổ trợ trì cảm biến hình hiển thị tắt XỬ LÝ THÔNG TIN MỘT SỐ CẢM BIẾN 5.1 Accelerometer - Cảm biến Gia tốc sử dụng đế thu nhận thay đổi hướng vật lí của thiết bị khơng gian có mối tương quan với trọng lực lực tác dụng lên thiết bị - Đơn vị tính: m/s2 254 Hình 7.2 mơ - Các thơng số trục x,y,z tổng hợp trả giá trị Rotation thiết bị thay đổi trạng thái phương hướng Hình 7.3 - Ví dụ sử dụng cảm biến gia tốc SensorManager sm = (SensorManager)getSystemService(Context.SENSOR_SERVICE); Int sensorType = Sensor.TYPE_ACCELEROMATER; Sm.registerListener(mySennorEventListener, sm.getDefaultSensor(sensorType), SensorManager.SENSOR_DELA Y_NORMAL); final SennorEventListener mySennerEventListener = new SensorEventListener() { public void onSensorChanged(SensorEvent sensorEvent) { if(sensorEvent.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { float xAxis_lateralA = sensorEvent.values[0]; float yAxis_longitudinalA = sensorEvent.values[1]; float zAxis_verticalA = sensorEvent.values[2]; } } }; 5.2 Near Field Communacation Sensor (NFC) - NFC (Near Field Communacation) chuẩn giao tiếp thiết bị di động với thẻ thông tin gọi NFC Tags với thiết bị khác - Có kiểu tiếp nhận liệu NFC:  Tương tác với thẻ tag cho việc nhận ghi thông tin thiết bị di động 255 Thiết bị di động xem nơi để thiết bị khác truy xuất thông tin Hai thiết bị trao đổi tiếp nhận thông tin của - NFC làm việc liệu dạng NDEF (NFC Data Exchange Format) sử dụng hệ thống Tag Dispatch để phân biệt loại liệu khởi động ứng dụng tương ứng - Hệ thống Tag Dispatch thực theo chế:  Phân tích liệu NDEF chuyển liệu sang kiểu MIME URI  Đóng gói liệu MIME URI vào Intent  Khởi động ứng dụng tương ứng với gói Intent - Dữ liệu NDEF gói NdefMessage chứa dạng NdefRecord với trường liệu sau:  3-bit TNF (Type Name Format ): trường định định dạng liệu  Variable Length Type: kiểu độ dài liệu  Variable Length ID: Id định record  Variable Length Playload: liệu của record - Cảm biến NFC điều khiển NFCAdapter để nhận gói Intent: NfcManager manager = (NfcManager)context.getSystemService(Context.NFC_SERVICE); NfcAdapter adapter = manager.getDefaultAdapter(); Cần thực phương thức isEnable() để kiểm tra trạng thái của cảm biến NFC Khơng có phương thức cho phép tắt mở NFC startActivityForResult( new Intent( android.provider.Settings.ACTION_WIRELESS_SETTINGS), 0); - Thứ tự ưu tiên xử lý gói Intent gửi tới thiết bị:  ACTION_NDEF_DISCOVERED: intent sử dụng để khởi chạy Activity ứng dụng có đăng ký xử lý gói intent  ACTION_TECH_DISCOVERED: khơng có Activity đăng ký việc xử lý gói intent đến, hệ thống khởi động ứng dụng thích hợp  ACTION_TAG_DISCOVERED: hệ thống chuyển sang xử lý kiểu liệu Tag thơng thường   Hình 11.4 ưu tiên xử lý - Cần đăng kí AndroidManifest để sử dụng NFC 256 - Lưu ý phiên của ứng dụng: - Cho phép ứng dụng cài đặt thiết bị có hỗ trợ NFC: Chỉnh sửa MainActivity Bên phương thức onCreate() lớp MainActivity, tạo intent với ACTION_SENDTO đối số URI smsto: đối số thứ hai Tin nhắn văn giá trị của extra sms_body: 01 // 02 Button sendMessageBtn = (Button) findViewById(R.id.btn_send_message); 257 03 final EditText messagetEt = (EditText) findViewById(R.id.et_message); 04 sendMessageBtn.setOnClickListener(new View.OnClickListener() { 05 @Override 06 public void onClick(View view) { 07 String message = messagetEt.getText().toString(); 08 String phoneNo = mPhoneNoEt.getText().toString(); 09 if(!TextUtils.isEmpty(message) && !TextUtils.isEmpty(phoneNo)) { 10 Intent smsIntent = new Intent(Intent.ACTION_SENDTO, 11Uri.parse("smsto:" + phoneNo)); 12 smsIntent.putExtra("sms_body", message); 13 startActivity(smsIntent); 14 } 15 } 16 }); // Tại đây, ứng dụng SMS theo dõi trạng thái gửi tin nhắn Chạy ứng dụng Khi tất trường nhập, nhấp vào nút Send SMS mở ứng dụng SMS của người dùng, cung cấp cho người dùng tuỳ chọn để chọn ứng dụng chưa chọn hình 11 hình chạy ứng dụng SMS Sử dụng ứng dụng quay số trực tiếp từ ứng dụng để giúp dễ dàng cho người dùng Tạo Layout Hiện giờ, layout của có trường EditText nút Dial: Hình 11.2 giao diện telephone Chỉnh sửa lớp MainActivity 259 Trong khối code bên dưới, tạo intent ACTION_DIAL để hiển thị trình quay số Số điện thoại phân tách từ lược đồ URI tel của chúng ta: tel:XXXXXXXX Lưu ý bạn không cần quyền để làm việc này: import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button mDialButton = (Button) findViewById(R.id.btn_dial); final EditText mPhoneNoEt = (EditText) findViewById(R.id.et_phone_no); mDialButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String phoneNo = mPhoneNoEt.getText().toString(); if(!TextUtils.isEmpty(phoneNo)) { String dial = "tel:" + phoneNo; startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(dial))); }else { Toast.makeText(MainActivity.this, "Enter a phone number", Toast.LENGTH_SHORT).show( } } }); } } Nếu bạn chạy ứng dụng nhấp vào nút Dial, bạn đưa đến ứng dụng quay số, từ bạn thực quay số Bạn thay đổi trình để thật tạo gọi từ bên ứng dụng của bạn cách đơn giản thay đổi intent ACTION_DIAL thành ACTION_CALL Tuy vậy, điều địi hỏi quyền android.permission.CALL_PHONE 260 Hình 11.3 giao diện gọi Thiết kế ứng dụng cách sử dụng cảm biến Bước Tạo project Android Studio: File ⇒ New Project set minimum SDK version Android 6.0 (API 23) Hình 11.4 Tạo project Bước Vì làm việc với xác thực vân tay, cần thêm quyền USE_FINGERPRINT file AndroidManifest.xml Bước Chọn thư mục res ⇒ values cập nhật file colors Bước Chọn thư mục res ⇒ values cập nhật file strings Bước Tạo fingerprint icon với hỗ trợ của Android Image Assets Bằng cách click chuột phải vào thư mục drawable tạo ⇒ Image Asset named ic_action_fingerprint 261 Hình 11.5 Tạo fingerprint icon Tạo Fingerprint Activity Bước Tạo file layout với tên activity_fingerprint.xml thay đoạn code Bước Tạo activity với tên FingeprintActivity.java Trong phương thức onCreate () inflate layout activity_fingerprint.xml  GenerateKey(): tạo khóa mã hóa sau lưu trữ an toàn thiết bị  CipherInit(): khởi tạo mật mã sử dụng để tạo FingerprintManager mã hóa  Đối tượng CryptoObject kiểm tra khác trước bắt đầu trình xác thực thực bên phương thức onCreate() Tạo Home Activity Bước Tạo activity cách chuột phải vafpo project, New ⇒ Activity ⇒ Basic Activity cập nhật file bên Creating Fingerprint Authentication Handler Class Bước Tạo class với tên FingerprintHandler.java Lớp Handler kế thừa từ FingerprintManager.AuthenticationCallback bao gồm số module bổ sung Thay thiết lập đoạn code bên Testing the Project Thử nghiệm thiết bị thật Thay dấu vân tay của bạn máy quét dấu vân tay Nếu vân tay xác thực thành công, người dùng đưa đến Hoạt động chủ hình 262 Hình 11.6 Testing the Project Những trọng tâm cần ý:  Trình bày Telephone Android  Trình bày SMS  Trình bày thực Lấy thơng tin điều khiển cảm biến  Thực xử lý thông tin số cảm biến  Thiết kế gửi tin nhắn SMS cách sử dụng ứng dụng SMS của thiết bị  Sử dụng ứng dụng quay số trực tiếp từ ứng dụng để giúp dễ dàng cho người dùng  Thiết kế ứng dụng cách sử dụng cảm biến Bài mở rộng nâng cao Thiết kế gửi tin nhắn SMS cách sử dụng ứng dụng SMS của thiết bị Xây dựng chức Cho phép Giám sát kiện gọi điện Điện thoại ba trạng thái:  idle (khi khơng sử dụng)  ringing (khi có gọi đến)  off-hook (khi trả lời gọi) Xây dựng chức sâu cảm biến Android: Cảm biến tiệm cận quay hồi chuyển Yêu cầu đánh giá kết học tập Nội dung  Về kiến thức:  Trình bày Telephone Android 263 Trình bày SMS Trình bày thực Lấy thông tin điều khiển cảm biến Thực xử lý thông tin số cảm biến Thiết kế gửi tin nhắn SMS cách sử dụng ứng dụng SMS của thiết bị  Về kỹ năng:  Thiết kế gửi tin nhắn SMS cách sử dụng ứng dụng SMS của thiết bị  Sử dụng ứng dụng quay số trực tiếp từ ứng dụng để giúp dễ dàng cho người dùng  Thiết kế ứng dụng cách sử dụng cảm biến  Năng lực tự chủ trách nhiệm: Tỉ mỉ, cẩn thận, xác, linh hoạt ngăn nắp công việc Phương pháp  Về kiến thức: Đánh giá hình thức kiểm tra viết, trắc nghiệm, vấn đáp  Về kỹ năng:  Thiết kế gửi tin nhắn SMS cách sử dụng ứng dụng SMS của thiết bị  Sử dụng ứng dụng quay số trực tiếp từ ứng dụng để giúp dễ dàng cho người dùng  Thiết kế ứng dụng cách sử dụng cảm biến  Năng lực tự chủ trách nhiệm: Tỉ mỉ, cẩn thận, xác, linh hoạt ngăn nắp cơng việc     264 Điều kiện để hoàn thành mô đun để dự thi kết thúc mô đun: + Người học tham dự 70% thời gian học lý thuyết đầy đủ học tích hợp, học thực hành, thực tập + Điểm trung bình chung điểm kiểm tra đạt từ 5,0 điểm trở lên theo thang điểm 10; + Người học có giấy xác nhận khuyết tật theo quy định hiệu trưởng xem xét, định ưu tiên điều kiện dự thi sở sinh viên phải bảo đảm điều kiện điểm trung bình điểm kiểm tra + Số lần dự thi kết thúc mô đun theo quy định khoản Điều 13 Thông tư 09/2017/TT-BLĐTBXH, ngày 13 tháng năm 2017 Điều kiện để công nhận, cấp chứng nhận đạt mô đun đào tạo: Người học công nhận cấp chứng nhận đạt mơ đun có điểm trung bình mơ đun theo thang điểm 10 đạt từ 4,0 trở lên 265 TÀI LIỆU THAM KHẢO [1] ThS Trương Thị Ngọc Phượng, Giáo trình Android, Trường Đại học sư phạm kỹ thuật TP HCM, năm 2012 [2] Bộ Tiêu chuẩn kỹ nghề Quốc gia nghề Quản trị mạng máy tính [3] developer.android.com 266

Ngày đăng: 23/12/2023, 10:17

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

Tài liệu liên quan