So sánh 3 kỹ thuật handler-messenger handler post asynctask năm 2024

Module 7: Thao tác với thiết bị cảm ứng Nội dung kiến thức thực hành: - Thực hành về SensorManager, Sensor, SenSorEventListener, SensorEvent: Cách thức đăng ký Sensor, cách thức gỡ bỏ đăng ký, cách lấy Sensor mặc định, cách lấy danh sách Sensors, cách lấy các giá trị trong SensorEvent - Thực hành về các thiết bị cảm biến cụ thể: cảm biến nhiệt độ, cảm biến ánh sáng, cảm biến áp suất, cảm biển khoảng cách, cảm biến gia tốc, cảm biến con quay hồi chuyển, cảm biến định hướng - Thực hành về Pin điện thoại: Cách đăng ký Broadcast Receiver để đọc thông số Pin - Phải thử trên điện thoại Android thiệt

So sánh 3 kỹ thuật handler-messenger handler post asynctask năm 2024
78 trang | Chia sẻ: | Lượt xem: 3817 | Lượt tải: 1
So sánh 3 kỹ thuật handler-messenger handler post asynctask năm 2024

Bạn đang xem trước 20 trang tài liệu Hướng dẫn thực hành Lập trình cho thiết bị di động (Android OS), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên

ào ListView - Khi chọn từng phần tử trong ListView, chương trình sẽ hiển thị vị trí và giá trị của phần tử đang chọn vào TextView màu xanh Hướng dẫn: - Sử dụng hàm notifyDatasetChanged của ArrayAdapter để tự động cập nhật lại danh sách cho ListView khi ArrayList thay đổi dữ liệu. - Chi tiết xem slide 81, 82 phần xử lý giao diện người dùng Bài tập 18: Mục đích: - Thực hành và hiểu được các control nâng cao trong Android: o ListView - Hiểu được cách sử dụng ListActivity, ArrayAdapter Yêu cầu: - Thiết kế giao diện như yêu cầu bên dưới (kế thừa từ ListActivity thay vì Activity): Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 29 Hướng dẫn: - Kế thừa từ ListActivity - Đặt id cho ListView là @android:id/list – Chính là tên mặc định trong Android - Chi tiết xem slide 83, 84, 85, 86 phần Xử lý giao diện Bài tập 19: Mục đích: - Thực hành và hiểu về các control nâng cao trong Android: o Học cách tạo Custom ListView o Cách kế thừa ArrayAdapter Yêu cầu: - Hãy xây dựng ứng dụng Android như hình bên dưới, yêu cầu hiệu chỉnh lại ListView để có thể hiện thị theo ý muốn riêng - Mỗi phần tử trong ListView sẽ có 1 hình ảnh và 1 nội dung, nếu nội dung có số lượng ký tự <=3 thì hình ngôi sao, còn lại hình địa cầu - Mỗi lần chọn từng phần tử trong ListView sẽ hiển thị thông tin của phần tử đó lên TextView Hướng dẫn: - Xem slide 143, 144, 145, 146 phần xử lý giao diện Bài tập 20: Mục đích: - Thực hành và hiểu về các control nâng cao trong Android: o Spinner o Kết hợp Spinner, ListView Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 30 Yêu cầu: - Thiết kế ứng dụng như màn hình bên dưới: - Khi ứng dụng khởi đông, Danh mục sản phẩm sẽ hiển thị vào trong Spinner như hình - Mỗi lần chọn vào danh mục trong Spinner, chương trình sẽ hiển thị danh sách sản phẩm vào ListView theo danh mục tương ứng: - ứng với mỗi sản phẩm là điện thoại sẽ có mỗi hình ảnh riêng - Khi chọn từng sản phẩm trong ListView, chương trình sẽ dùng Toast để hiển thị chi tiết Hướng dẫn: - Áp dụng Custom Layout để thiết kế cho ListView - Giả lập 2 ArrayList, ArrayList 1 chứa danh sách Danh Mục Sản phẩm, ArrayList 2 chứa danh sách sản phẩm theo danh mục - ứng dụng để load từ CSDL lên giao diện cho phần học kế tiếp Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 31 Bài tập 21 (*): Mục đích: - Thực hành và hiểu về các control nâng cao trong Android: o Hiểu và sử dụng được AutoCompleTextView o Hiểu và sử dụng được GridView, kết hợp với Spinner Yêu cầu: - Thiết kế giao diện nằm ngang như hình bên dưới và thực hiện các yêu cầu: - Khi khởi động chương trình sẽ load danh sách danh mục sản phẩm vào Spinner - Mỗi lần chọn Danh mục sản phẩm, chương trình sẽ hiển thị danh sách sản phẩm của danh mục đang chọn vào GridView (xem hình) - Khi người sử dụng nhập 1 tên sản phẩm mới vào AutoCompleteTextView và chọn nút Nhập thì chương trình sẽ đưa sản phẩm mới này vào đúng danh mục đang chọn; cập nhập vào AutoComplete và đồng thời cập nhật vào GridView (2 chỗ cập nhật) - Mỗi lần chọn từng phần tử trong GridView, chương trình sẽ dùng Alert Dialog để hiển thị thông tin chi tiết cho từng phần tử. Hướng dẫn: - Cả 3 đối tượng: Spinner, AutoCompleteTextView, GridView đều sử dụng ArrayAdapter - Như vậy mỗi lần có sự thay đổi dữ liệu (List chứa dữ liệu tương ứng thay đổi) thì ta gọi hàm notifyDatasetChanged của ArrayAdapter tương ứng cho mỗi đối tượng. - Thiết lập android:completionThreshold="1" cho AutoCompleteTextView. Tùy vào ý đồ của người lập trình mà ta thiết lập các giá trị khác nhau, Số này có ý nghĩa để kích hoạt chức năng AutoComplete, nếu thiết lập là 1 thì gõ 1 ký tự nó sẽ kích hoạt, nếu thiết lập là 3 thì gõ 3 ký tự nó sẽ kích hoạt… - setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); để thiết lập ứng dụng nằm ngang điện thoại. Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 32 Bài tập 22 (*): Mục đích: - Thực hành và hiểu về các control nâng cao trong Android: o Hiểu cách đưa hình ảnh vào GridView, biết cách sử dụng BaseAdapter Yêu cầu: - Viết ứng dụng trình diễn hình ảnh như sau (sử dụng GridView): - Khi chọn từng hình ảnh trong GridView thì sẽ mở một màn hình mới để hiển thị thông tin chi tiết của hình đang chọn (ví dụ chọn hình chú Cừu): - Chọn nút Back để trở về màn hình chính Hướng dẫn: - Xem hướng dẫn chi tiết slide 120, 121, 122, 123, 124 phần xử lý giao diện người dùng Bài tập 23: Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 33 Mục đích: - Thực hành và hiểu các control nâng cao trong Android: - Hiểu và sử dụng được Time Selection: o AnalogClock o Chronometer o TimePickerDialog o DatePickerDialog Yêu cầu: - Viết chương trình quản lý mục tiêu hoàn thành công việc hàng tuần: Lý do chúng ta làm việc không có quy củ, không nhất quán, gặp đâu làm đó, đang làm việc này thấy việc kia sảy ra lại nhảy qua việc đó làm để dở công việc cũ chưa xong, không theo quy trình định sẵn dẫn đến kết thúc một ngày mà cuối cùng không hoàn thành được việc gì cả. - Thiết kế giao diện như hình bên dưới và thực hiện một số chức năng: - Khi chọn nút Date sẽ hiển thị DatePickerDialog – cập nhật Ngày hoàn thành - Khi chọn nút Time sẽ hiển thị TimePickerDialog – cập nhật giờ hoàn thành - Khi chọn nút Thêm công việc (Thêm CV), chương trình sẽ cập nhập vào ListView bên dưới màn hình Hướng dẫn: - Xem hướng dẫn cách sử dụng DatePickerDialog và TimePickerDialog ở slide 113, 114 phần Xử lý giao diện người dùng Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 34 Bài tập 24: Mục đích: - Thực hành và hiểu các control nâng cao trong Android: o Hiểu và sử dụng được TabSelector Yêu cầu: - Thiết kế ứng dụng như yêu cầu bên dưới: - ứng dụng gồm có 2 Tab: tab Login và tab Help - ứng với mỗi Tab sẽ có giao diện khác nhau, sinh viên tự tạo giao diện tùy thích để thao tác với TabSelector Hướng dẫn: - Xem Slide 128, 129, 130 phần Xử lý giao diện người dùng Bài tập 25: Mục đích: - Thực hành và hiểu các control nâng cao trong Android: - Hiểu và sử dụng được Menu, ContextMenu Yêu cầu: - Hiệu chỉnh bài tập 23, thêm 1 Menu và 1 ContextMenu như sau: - Thiết lập ContextMenu cho ListView (bấm long time để hiển thị ContextMenu): chọn sửa cho phép sửa công việc, chọn Xóa cho phép xóa công việc, và đếm số CV - Thiết lập Menu cho ứng dụng (bấm vào nút Menu của emulator sẽ hiển thị Menu): Xem công việc đã hoàn thành, chưa hoàn thành và xóa toàn bộ công việc Hướng dẫn: - Xem hướng dẫn ở slide 133140 phần xử lý giao diện người dùng Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 35 Bài tập 26 (*): Mục đích: - Thực hành và hiểu về Webkit: o Thao tác được với Webkit Browser o Các Browser Command o Cách đăng ký đối tượng trong Android vào JavaScript o Tương tác Javascript và Android Yêu cầu: - Xây dựng ứng dụng tìm vị trí (dùng dữ liệu giả), cho phép tương tác giữa Android với HTML (Java Script). Giao diện màn hình như sau: - Khi chọn nút “Click to get location”, chương trình sẽ lấy thông số từ Android và hiển thị lên giao diện HTML - Khi chọn nút “Talking to Android”, chương trình sẽ gửi thông số trên HTML tới Android và Android dùng Toast để hiển thị những thống số đã lấy được từ HTML này Hướng dẫn: - Dùng Microsoft Express Web hoặc trình soạn thảo bất kỳ để thiết kế HTML như trên - Chú ý nội dung tập tin HTML chỉ có chứa tag html ngoài cùng, tuyệt đối không chứa các Tag lạ khác. - Kéo thả tập tin HTML vào thư mục assets của ứng dụng Android - Chi tiết xem slide hướng dẫn 161167 phần xử lý giao diện người dùng - Nhớ thiết lập 3 thông số này vào Manifest XML Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 36 Bài tập 27: Mục đích: - Thực hành và hiểu được về Intent (phải làm hết bài tập này, rất quan trọng): o Explicit Intent o Implicit Intent o Cách lấy kết quả qua lại giữa các Activity thông qua Intent Yêu cầu: - Viết chương trình quản lý bài hát, thiết kế giao diện như hình bên dưới: - Phải tạo Album trước khi vào chức năng quản lý bài hát - Khi chọn chức năng thêm Album, chương trình sẽ xuất hiện màn hình dưới đây (chú ý mở dưới dạng Dialog): o Chọn “lưu album này” để lưu, chọn xóa trắng để xóa dữ liệu vừa nhập, focus tới mã. - Khi chọn “xem danh sách album”, chương trình sẽ mở một màn hình mới để hiển thị danh sách Album đã tạo – chú ý dùng CustomLayout cho ListView: Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 37 - Khi chọn từng Album trong danh sách, sẽ hiển thị màn hình cho phép chỉnh sửa Album: o Chọn Update để cập nhật lại Album - Khi nhấn Thật Lâu (Long time) vào từng Album trong danh sách, chương trình sẽ hiển thị Alert Dialog hỏi xem có muốn xóa Album này hay không? - Chọn Có để xóa album muốn xóa, chọn Không để trở về màn hình xem danh sách - Khi chọn chức năng “quản lý bài hát” ở màn hình chính chương trình sẽ hiển thị: o Load danh sách album vào Spinner o Sử dụng DatePickerDialog để chọ ngày ra đĩa o Chọn “Thêm bài hát” để đưa bài hát mới vào ListView bên dưới. Hướng dẫn: - Xem hướng dẫn sử dụng Intent, get result trong slide 170180; 191205 phần xử lý giao diện người dùng. Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 38 Bài tập 28: Mục đích: - Thực hành và hiểu được về Intent: o Explicit Intent o Implicit Intent o Cách lấy kết quả qua lại giữa các Activity thông qua Intent Yêu cầu: - Viết chương trình quản lý nhân sự như bên dưới (sử dụng Context Menu hoặc Menu): - Chọn Chỉnh sửa để hiệu chỉnh nhân viên đang chọn trong ListView o Chọn Lưu để cập nhật - Chọn Thêm mới để thêm nhân viên mới: o Chọn Lưu để thêm mới Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 39 - Khi chọn Xóa, chương trình sẽ hiển thị Alert Dialog xác nhân xem có xóa hay không? Hướng dẫn: - Xem hướng dẫn sử dụng Intent, get result trong slide 170180; 191205 phần xử lý giao diện người dùng. Bài tập 29: Mục đích: - Thực hành và hiểu về chạm đa điểm trong Android Yêu cầu: - Viết một ứng dụng kiểm tra nếu như có 3 ngón tay của người sử dụng lướt trên màn hình thì chuyển màu nền sang Màu đỏ - Nếu có 5 ngón tay của người sử dụng lướt trên màn hình thì mở một bài nhạc bất kỳ nào đó (dùng Implicit Intent). Hướng dẫn: - Xem slide hướng dẫn Multitouch 207212 phần xử lý giao diện người dùng Bài tập 30: Mục đích: - Thực hành và hiểu về đa ngôn ngữ trong Android Yêu cầu: - Viết một ứng dụng cho phép xử lý đa ngôn ngữ trong Android (ứng dụng bất kỳ) Hướng dẫn: - Xem hướng dẫn đa ngôn ngữ 215218 phần xử lý giao diện người dùng Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 40 Module 3: Xử lý tập tin, lưu trạng thái, CSDL, Content Provider Nội dung kiến thức thực hành: - Thao tác với các tập tin trong Android: Internal Storage, External Storage và Cache files - Thực hành về XML Parser: DOM, SAX - Thực hành về lưu trạng thái ứng dụng: Share Preferences - Thực hành về Sqlite: cách tạo/ xóa CSDL, tạo bảng, truy vấn, thêm, sửa, xóa dữ liệu… - Thực hành về Content Provider: thao tác với các Content Provider có sẵn, cách tạo mới các Content Provider Bài tập 1: Mục đích: - Thực hành và hiểu được cơ chế lưu tập tin trong Android: o Internal Storage o External Storage o Cache files Yêu cầu: - Viết chương trình cho phép đọc / ghi một TextFile bất kỳ từ ứng dụng: - Khi bấm Write Data, chương trình sẽ lưu toàn bộ thông tin trong EditText xuống tập tin - Khi bấm Read Data, chương trình sẽ đọc thông tin từ tập tin và hiển thị lên EditText - Chú ý thử trên 2 trường hợp: Internal và SD card, quan sát nơi lưu trữ tập tin trong File Explorer của DDMS Hướng dẫn: - Xem slide 8 , 9 phần xử lý tập tin Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 41 Bài tập 2: Mục đích: - Thực hành và hiểu được cơ chế lưu tập tin trong Android: o Internal Storage o External Storage o Cache files Yêu cầu: - Viết chương trình cho phép load toàn bộ danh sách Cache files lên giao diện, mỗi lần chọn vào từng Cache sẽ cho phép đọc thông tin từ cache. Chương trình còn hỗ trợ chức năng Xóa từng Cache và xóa toàn bộ Cache Hướng dẫn: - Sử dụng Intent để mở Activity xem chi tiết nội dung của từng cache chọn trên ListView - Sử dụng lệnh sau để lấy toàn bộ Cache: File cachDir=getCacheDir(); File listCache[]=cachDir.listFiles(); Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 42 Bài tập 3: Mục đích: - Thực hành và hiểu được XML Parser: o Kỹ thuật dùng DOM o Kỹ thuật dùng SAX Yêu cầu: - Cho cấu trúc XML sau: - Hãy dùng 2 kỹ thuật DOM và SAX (viết 2 cách ) để thực hiện đọc file XML trên và đưa lên giao diện như hình bên dưới: - Chương trình sẽ đọc danh sách Title vào Spinner (chú ý không được trùng lắp) - Chọn Title nào thì sẽ hiển thị danh sach nhân viên tương ứng vào ListView theo Title đó. Hướng dẫn: - Xem kỹ thuật DOM, SAX trong slide 2733 phần xử lý tập tin Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 43 Bài tập 4: Mục đích: - Thực hành và hiểu được Share Preferences: o Cách tạo và sử dụng Share Preferences o Cách sử dụng Share Preferences Change listener (tạo các Settings Activity) Yêu cầu: - Viết ứng dụng với giao diện giống hình dưới đây: - Yêu cầu thực hiện: o Khi người sử dụng chọn Đăng nhập thì đóng ứng dụng này lại. Chú ý nếu checkbox Lưu thông tin được checked thì chương trình sẽ lưu toàn bộ thông tin (user, password). Nếu checked =false thì xóa toàn bộ thông tin lưu trước đó. o Khi khởi động lại ứng dụng, chương trình sẽ tìm xem thông tin có được lưu hay không, nếu có lưu thì hiển thị lại lên màn hình cho người sử dụng Hướng dẫn: - Xem slide hướng dẫn 38 , 39 phần xử lý tập tin Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 44 Bài tập 5: Mục đích: - Thực hành và hiểu được Share Preferences: o Cách tạo và sử dụng Share Preferences o Cách sử dụng Share Preferences Change listener (tạo các Settings Activity) Yêu cầu: - Viết ứng dụng dạng PreferenceActivity có giao diện như bên dưới: - Khi bấm Start my Setting sẽ hiển thị màn hình Setting: o Nếu checked màn hình chính sẽ có màu đỏ o Nếu unchecked màn hình chính sẽ có màu xanh - Chú ý là màn hình chính phải đăng ký Share Preferences Listener thì mới tự động bắt được những sự thay đổi trong Setting Activity Hướng dẫn: - Xem hướng dẫn trong slide 4853 phần xử lý tập tin. Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 45 Bài tập 6: Mục đích: - Thực hành và hiểu về SQLite o Tạo được CSDL o Thao tác với bảng dữ liệu: thêm, sửa , xóa o Và một số tính năng khác được cung cấp bởi SQLite Yêu cầu: - Viết chương trình quản lý sách được mô tả như sau: o Một tác giả sẽ có nhiều cuốn sách, thông tin tác giả gồm: mã , tên o Mỗi cuốn sách thuộc về một nhà tác giả nào đó, thông tin mỗi cuốn sách gồm: mã sách, tên sách, ngày xuất bản o Hãy chọn kiểu dữ liệu hợp lý để tạo cơ sở dữ liệu (sử dụng SQLite) cho đúng với mô tả trên - Thiết kế giao diện như hình bên dưới: - Phải tạo Tác giả trước khi vào chức năng quản lý Sách - Khi chọn chức năng thêm Tác giả, chương trình sẽ xuất hiện màn hình dưới đây (chú ý mở dưới dạng Dialog): o Chọn “Lưu tác giả” để lưu, chọn xóa trắng để xóa dữ liệu vừa nhập, focus tới mã. - Khi chọn “xem danh sách Tác giả”, chương trình sẽ mở một màn hình mới để hiển thị danh sách Tác giả đã tạo – chú ý dùng CustomLayout cho ListView: Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 46 - Khi chọn từng tác giả trong danh sách, sẽ hiển thị màn hình cho phép chỉnh sửa tác giả: o Chọn Update để cập nhật lại Tác giả - Khi nhấn Thật Lâu (Long time) vào từng tác giả trong danh sách, chương trình sẽ hiển thị Alert Dialog hỏi xem có muốn xóa Tác giả này hay không? o Chọn Có để xóa tác giả hiện tại, o Chọn Không để trở về màn hình xem danh sách Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 47 - Khi chọn chức năng “quản lý sách” ở màn hình chính chương trình sẽ hiển thị: o Load danh sách Tác giả vào Spinner o Sử dụng DatePickerDialog để chọ ngày xuất bản o Chọn “Thêm sách” lưu vào CSDL đúng với tác giả chọn trong Spinner, đồng thời cập nhập vào ListView bên dưới. Hướng dẫn: - Xem hướng dẫn cách sử dung SQLite trong slide 5468 phần xử lý tập tin Bài tập 7: Mục đích: - Thực hành và hiểu về Content Provider: o Sử dụng được Built – in Content Provier o Tự xây dựng được Content Provider riêng Yêu cầu: - Viết chương trình để sử dụng một số Content Provider phổ biến, thiết kế giao diện giống như hình bên dưới: Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 48 - Khi chọn Show All Contact, chương trình sẽ hiển thị danh sách các Contact được lưu trong điện thoại: - Tương tự như vậy viết chương trình sử dụng Content Provider có sẵn để sử dụng Call Log, Media Store, Book Marks Hướng dẫn: - Xem hướng dẫn chi tiết slide 7380 phần xử lý tập tin Bài tập 8 (***): Mục đích: - Thực hành và hiểu về Content Provider: o Sử dụng được Built – in Content Provier o Tự xây dựng được Content Provider riêng Yêu cầu: - Tự xây dựng một Content Provider cho phép tương tác với Movie Object, thiết kế giao diện như bên dưới: Hướng dẫn: - Làm lại slide hướng dẫn từ 8397, dành cho sinh viên khá giỏi Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 49 Module 4: Xử lý đa tiến trình và dịch vụ Nội dung kiến thức thực hành: - Thực hành về đa tiến trình: Cách thức lập trình với Handler class và AsyncTask - Thực hành về Intent Filter - Thực hành về BroadCast Receiver: Cách đăng ký broadcast Receiver trong coding và trong Manifest XML, thao tác với một số chức năng trong Broadcast Receiver - Thực hành về Android Service: cách thức giao tiếp với Service thông qua Broadcast, Binder, Messenger. - Thực hành về System Service: Pending Intent, Alarm Manager, NotificationManager - Thực hành về .Net Webservice: Cách tạo .net webservice, cách cấu hình IIS, cách thức tương tác dữ liệu giữa Android và .Net Webservice: KSOAP Api Bài 1: Mục đích: - Thực hành và hiểu được kỹ thuật lập trình Đa tiến trình o Cách tiếp cận bằng Handler o Cách tiếp cận băng AsyncTask Yêu cầu: - Viết chương trình sau dưới dạng đa tiến trình: - Yêu cầu thực hiện với nhiều cách (thực hiện bài này với 3 cách khác nhau): o Handler using sendMessage o Handler using post o Dùng AsyncTask - Khi bấm Start chương trình sẽ cập nhật thông số từ 1% 100% đồng thời ProgressBar cũng được thực thi theo (xem hình trên) - Khi đạt 100% chương trình tự động đóng. - Thử cố gắng chọn nút Start thật nhiều lần, quan sát và giải thích hiện tượng sảy ra. Hướng dẫn: Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 50 Bài tập 2: Mục đích: - Thực hành và hiểu được kỹ thuật lập trình Đa tiến trình o Cách tiếp cận bằng Handler o Cách tiếp cận băng AsyncTask Yêu cầu: - Viết chương trình cho phép vẽ các Button tự động lúc Runtime: - Yêu cầu thực hiện với nhiều cách (thực hiện bài này với 3 cách khác nhau): o Handler using sendMessage o Handler using post o Dùng AsyncTask - Khi người sử dụng nhập số lượng các Button cần vẽ vào EditText và chọn chức năng Draw Button thì cứ 100 miliseconds mỗi Button sẽ được vẽ ra (xem hình), đồng thời viết sự kiện động cho các Button này. Mỗi lần chọn các Button mới vẽ thì dùng Toast Thông báo là chẵn hay lẻ. - Chú ý nên dùng ScrollView để chứa các Button vì có thể số lượng Button lớn, vượt quá chiều dài của màn hình Hướng dẫn: - llbutton là một View nào đó (do logic lập trình của mỗi người chọn) - gán sự kiện giống như cách viết bình thường Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 51 Bài tập 3 (*): Mục đích: - Thực hành và hiểu được kỹ thuật lập trình Đa tiến trình o Cách tiếp cận bằng Handler o Cách tiếp cận băng AsyncTask o Kết hợp nhuần nhuyễn giữa Handler và AsyncTask Yêu cầu: - Kết hợp Handler và AsyncTask, viết chương trình như hình dưới đây: o Màn hình được chia ra làm 2 Layout (suy nghĩ cách dùng Layout cho tối ưu), o Layout 1 vẽ các Button với các số ngẫu nhiên o Layout 2 vẽ các Button là các số nguyên tố (chú ý rằng các số nguyên tố này là kết quả sau khi AsyncTask thực hiện công việc vẽ các Button ngẫu nhiên ở Layout 1) Hướng dẫn: - Xem hướng dẫn ở slide 3137 phần xử lý đa tiến trình và dịch vụ Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 52 Bài tập 4: Mục đích: - Thực hành và hiểu về Intent filter, Broadcast Receiver o Cách khai báo và sử dụng Intent filter o Cách đăng ký/ gỡ bỏ Broadcast Receiver o Cách xử lý Broadcast Receiver trong coding o Cách xử lý Broadcast Receiver trong Manifest XML Yêu cầu: - Viết ứng dụng Android xử lý tin nhắn rác. - Hiện nay rất nhiều tin nhắn quẳng cáo gửi vô tội vạ, cái Alô của bạn phải nhận rất nhiều tin nhắn như thế gây phiền hà và mất thời gian cho bạn. - Hãy viết chương trình để giải quyết vấn đề này, yêu cầu như sau: o Chương trình có giao diện thêm, sửa, xóa các đầu số mà bạn cho là đầu số rác. Như vậy nên dùng SQLite hoặc XML để lưu các đầu số rác. o Chương trình phải tự động nhận tin nhắn và phát hiện ra được tin nhắn nào là gửi đi từ các đầu số rác đó. o Nếu phát hiện ra đó là đầu số rác thì xóa nó khỏi inbox của messaging đồng thời phát ra Audio là “đây là tin nhắn rác, đã bị xử” để người sử dụng không phải mở điện thoại lên xem. - Yêu cầu viết theo 2 cách (tức là bài tập này làm thành 2 Project khác nhau): o Đăng ký Broadcast Receiver để nhận tin nhắn tới trong coding o Đăng ký Broadcast Receiver để nhận tin nhắn tới trong Manifest XML - Sau khi làm xong theo 2 cách trên, hãy so sánh sự khác biệt giữa chúng. Và kết luận chúng ta nên chọn cách nào? - Chương trình phải cài đặt và chạy được trên điện thoại Android thiệt. - Khi nhấn thật lâu vào 1 đầu số trong ListView thì số này sẽ tự động Remove khỏi CSDL Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 53 Hướng dẫn: - Phải sử dụng 2 permission sau để thao tác với SMS, Audio sẽ xem trong Multimedia - Để đăng ký BroadCast Receiver trong Manifest: - Với MySmsReceiver là class ta tạo ra kế thừa từ BroadcastReceiver - Cách broadcast một SMS đã hướng dẫn trong Slide 5260 phần xử lý đa tiến trình - Để mở một tập tin Audio, xem hướng dẫn trong Multimedia APIs (phần kế tiếp) - Cách xóa một tin nhắn trong điện thoại như sau (dựa vào đây để truy vấn danh sách đầu số rác trong CSDL để xử lý), dưới đây có 2 ví dụ về xóa tin nhắn: o Xóa toàn bộ tin nhắn do 1 đầu số nào đó gửi tới (tức là xóa luôn trong inbox cũ) private void XoaToanBoSms(Context con, SmsMessage[] msgs, String phoneNumber) { try { for (int i=0; i