1. Trang chủ
  2. » Tất cả

Giáo trình lập trình di động 2 dành cho bậc cao đẳng ngành công nghệ thông tin

102 3 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Định dạng
Số trang 102
Dung lượng 3,95 MB

Nội dung

ỦY BAN NHÂN DÂN TP HỒ CHÍ MINH TRƯỜNG CAO ĐẲNG CÔNG NGHỆ THỦ ĐỨC KHOA CÔNG NGHỆ THÔNG TIN GIÁO TRÌNH HỌC PHẦN: LẬP TRÌNH DI ĐỘNG II NGÀNH/NGHỀ: CƠNG NGHỆ THƠNG TIN TRÌNH ĐỘ: CAO ĐẲNG Ban hành kèm theo Quyết định số: /QĐ-CNTĐ-CN ngày tháng….năm của……………………………… TP Hồ Chí Minh, năm 2021 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 ngun 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 Giáo trình Lập trình di động dùng cho học phần tên Lập trình di động 2, ngành Công nghệ Thông tin, trường Cao đẳng Công nghệ Thủ Đức Đây học phần tự chọn theo hướng Phát triển ứng dụng thiết bị di động với thời lượng 60 tiết Tuy nhiên, nội dung học phần lại chứa đựng nội dung tương đối nhiều, phù hợp với yêu cầu doanh nghiệp Cho nên, giáo trình viết theo hướng tích hợp tái sử dụng ứng dụng có trước đây, cải tiến, hồn thiện thêm, tiết kiệm nhiều thời gian học tập lớp sinh viên Ngoài ra, q trình học, giáo trình có mở rộng thêm nhiều chức mới, nhằm giúp sinh viên có khả tự học, tự nghiên cứu thông qua tập làm thêm, đáp ứng chuẩn đầu CDIO nhu cầu thực tế doanh nghiệp Thành phố Hồ Chí Minh, ngày 07 tháng 11 năm 2021 Giảng viên biên soạn Tiêu Kim Cương MỤC LỤC TRANG DANH MỤC CÁC TỪ VIẾT TẮT DANH MỤC BẢNG BIỂU SỐ LIỆU VÀ HÌNH VẼ CHƯƠNG MỘT SỐ KỸ NĂNG THIẾT KẾ GIAO DIỆN NÂNG CAO 1.1 Theme Style & Bài tập thực hành số & Bài tập thực hành số 12 1.2 Widget tạo Widget 12 & Bài tập thực hành số 13 & Bài tập thực hành số 13 & Bài tập thực hành số 14 & Bài tập thực hành số 15 & Bài tập thực hành số 15 1.3 Multi-Screen and Orientation 16 & Bài tập thực hành số 17 & Bài tập thực hành số 20 1.4 RecyclerView and Card View 20 & Bài tập thực hành số 10 21 & Bài tập thực hành số 11 22 & Bài tập thực hành số 12 25 1.5 Tuỳ biến giao diện hệ thống 25 & Bài tập thực hành số 13 26 & Bài tập thực hành số 14 26 1.6 Câu hỏi tập làm thêm chương 26 CHƯƠNG LÀM VIỆC VỚI TÀI NGUYÊN TRÊN MẠNG INTERNET 28 2.1 Kết nối vào mạng Internet 28 & Bài tập thực hành số 15 29 2.2 Thực thao tác mạng với tiến trình chạy ngầm sử dụng Asynchronous Tasks trích xuất liệu từ Webservice 30 & Bài tập thực hành số 16 30 & Bài tập thực hành số 17 30 & Bài tập thực hành số 18 35 2.3 Sử dụng Download Manager 35 & Bài tập thực hành số 19 37 2.4 Câu hỏi tập chương 37 CHƯƠNG SỬ DỤNG CONTENT PROVIDER, BROADCAST RECEIVER, SERVICE VÀ FIREBASE 39 3.1 Sử dụng Intent để gửi kiện Broadcast thực chúng 39 & Bài tập thực hành số 20 41 & Bài tập thực hành số 21 43 3.2 Xây dựng sử dụng Receiver 46 & Bài tập thực hành số 22 48 3.3 Tạo Content Provider 49 3.4 Sử dụng Content Provider 54 3.4.1 Sử dụng Content Provider tự xây dựng 54 & Bài tập thực hành số 23 54 3.4.2 Sử dụng Content Provider có sẵn Android 55 & Bài tập thực hành số 24 56 & Bài tập thực hành số 25 56 & Bài tập thực hành số 26 58 & Bài tập thực hành số 27 59 3.5 Chia sẻ file dùng File Provider 60 & Bài tập thực hành số 28 62 3.6 Service ứng dụng chạy ngầm 62 & Bài tập thực hành số 29 63 & Bài tập thực hành số 30 67 3.7 Lập lịch cho ứng dụng chạy ngầm 69 & Bài tập thực hành số 31 70 3.8 Notifications 75 & Bài tập thực hành số 32 77 3.9 Kết nối Firebase với ứng dụng Android 77 & Bài tập thực hành số 33 80 & Bài tập thực hành số 34 82 & Bài tập thực hành số 35 85 3.10 Câu hỏi tập chương 85 CHƯƠNG ĐIỀU KHIỂN MÀN HÌNH TƯƠNG TÁC VÀ CẢM BIẾN 87 4.1 Đặt vấn đề 87 4.2 Xử lý số dạng hình tương tác 87 & Bài tập thực hành số 36 88 & Bài tập thực hành số 37 89 4.3 Liệt kê loại cảm biến điện thoại 91 & Bài tập thực hành số 38 91 4.4 Sử dụng Sensor Framework đọc liệu từ cảm biến định 91 & Bài tập thực hành số 39 93 4.5 Câu hỏi tập chương 93 CHƯƠNG BẢN ĐỒ TRỰC TUYẾN MAP VÀ LOCATION 95 5.1 Đặt vấn đề 95 5.2 Kỹ thuật lấy vị trí 95 & Bài tập thực hành số 40 96 5.3 Viết ứng dụng đồ trực tuyến Map 96 & Bài tập thực hành số 41 98 5.4 Câu hỏi tập chương 100 TÀI LIỆU THAM KHẢO 101 PHỤ LỤC 102 DANH MỤC CÁC TỪ VIẾT TẮT STT Từ viết tắt dp dpi sp MIME FCM Cụm từ gốc density-independent pixels dots per inch scalable pixels Multipurpose Internet Mail Extensions Firebase Cloud Messaging Ghi DANH MỤC BẢNG BIỂU SỐ LIỆU VÀ HÌNH VẼ Hình 1.1.1 Bài tập thực hành số 10 Hình 1.2.1 Widget Player 13 Hình 1.3.1 Giao diện ứng dụng hỗ trợ Multi-Orientation 16 Hình 1.3.2 Tạo biến thể cho giao diện ứng dụng theo chiều ngang 17 Hình 1.3.3 Giao diện ứng dụng xoay theo chiều ngang 17 Hình 1.3.4 Thiết kế giao diện hỗ trợ nhiều loại hình 18 Hình 1.3.5 Phân loại hình theo mật độ điểm ảnh 18 Hình 1.3.6 Lựa chọn hỗ trợ nhiều hình theo mật độ điểm ảnh 19 Hình 1.3.7 Lựa chọn chế độ hình để tạo layout 19 Hình 1.6.1 Kết tuỳ biến ActionBar 27 Hình 2.2.1 Màn hình giao diện ứng dụng WeatherForecast 30 Hình 3.1.1 Android tìm đưa danh sách ứng dụng 40 Hình 3.1.2 Màn hình PersonPickerActivity 42 Hình 3.1.3 Giao diện ứng dụng broadcast intent 43 Hình 3.1.4 Activity ứng dụng Contact gọi 44 Hình 3.1.5 Activity gọi tap “Pick a Person” 45 Hình 3.1.6 Kết trả từ “Pick an Contact” “Pick a Person” 46 Hình 3.3.1 Cấu hình Content Provider 49 Hình 3.4.2.1 Mối quan hệ bảng liệu Danh bạ điện thoại 58 Hình 3.6.1 Màn hình giao diện ứng dụng MusicPlayer 64 Hình 3.6.2 Tạo Service cho ứng dụng MusicPlayer 64 Hình 3.7.1 Màn hình giao diện ứng dụng xử lý ảnh 70 Hình 3.7.2 Vịng đời view model Android 72 Hình 3.9.1 Mở cơng cụ Firebase Assistant Android Studio 78 Hình 3.9.2 Thơng báo kết nối Firebase thành công 78 Hình 3.9.3 Ví dụ lưu đối tượng sinh viên firebase 79 Hình 3.9.4 Lưu bảng sinh viên Firebase 80 Hình 3.9.5 Đăng ký tài khoản Firebase cho ứng dụng 84 Hình 4.3.1 Ứng dụng Bài thực hành 38 91 Hình 4.5.1 Ứng dụng Compass, tập 93 Hình 5.3.1 Tạo mã API Key cho đồ trực tuyến 97 Hình 5.3.2 Hiển thị đồ trực tuyến 98 Hình 5.3.3 Ứng dụng hồn thiện Bài tập TH 41 99 GIÁO TRÌNH HỌC PHẦN Tên học phần: LẬP TRÌNH DI ĐỘNG Mã học phần: CNC107315 Vị trí, tính chất, ý nghĩa vai trị học phần: - Vị trí: Là học phần chuyên ngành tự chọn, ngành Công nghệ Thông tin Học phần cần học sau Lập trình di động Cơ sở liệu - Tính chất: Học phần nhằm giúp sinh viên có khả hồn thiện, tìm hiểu sâu kiến thức kỹ học lập trình di động; đồng thời hiểu vận dụng thêm số chuyên đề nâng cao vào việc phát triển ứng dụng vừa nhỏ điện thoại di động Android - Ý nghĩa vai trị mơn học/mô đun: Thông qua hoạt động học tập tổ chức, sinh viên rèn luyện nâng cao khả tự học, kỹ làm việc nhóm phát triển phù hợp với yêu cầu doanh nghiệp, kỹ thuyết trình vấn đề, kỹ viết báo cáo theo mẫu tính chủ động tích cực tình Đặc biệt, suốt trình học tập thực dự án sản xuất mình, sinh viên rèn luyện kỹ nghề nghiệp tích hợp từ việc hình thành ý tưởng, yêu cầu dự án đến phân tích, thiết kế, cài đặt, kiểm thử vận hành phần mềm làm được; qua thấm dần quy tắc, quy định, hành vi mà lập trình viên chun nghiệp cần có để trường em hoàn toàn hoà nhập vào nhóm phát triển doanh nghiệp Mục tiêu học phần: - Về kiến thức: +) Hiểu số kỹ thuật thiết kế giao diện chuyên sâu Android; - Về kỹ năng: +) Vận dụng số kỹ thuật thiết kế giao diện nâng cao (Theme Style, Widget, RecyclerView, Cardview, Multi-Screen size & Orientation; +) Vận dụng cách tuỳ biến giao diện hệ thống lúc chạy chương trình (runtime); +) Viết ứng dụng sử dụng tài nguyên mạng Internet; +) Vận dụng Content Provider, Broadcast Receiver, Service Firebase ứng dụng Android; +) Vận dụng cách điều khiển hình tương tác (Touchscreen) cảm biến; +) Viết ứng dụng android dựa đồ trực tuyến Google - Về lực tự chủ trách nhiệm: +) Hiểu rõ quy tắc, quy định biết cách cư xử cách chuyên nghiệp nhóm phát triển; +) Rèn luyện tính chủ động, tích cực tình huống; +) Rèn luyện kỹ tự học CHƯƠNG MỘT SỐ KỸ NĂNG THIẾT KẾ GIAO DIỆN NÂNG CAO Mục tiêu: - Về kiến thức: Hiểu số kỹ thuật thiết kế giao diện chuyên sâu Android - Về kỹ năng: +) Vận dụng số kỹ thuật thiết kế giao diện nâng cao (Theme Style, Widget, RecyclerView, Cardview, Muti-Screen size & Orientation; +) Vận dụng cách tuỳ biến giao diện hệ thống lúc chạy chương trình (runtime); - Về lực tự chủ trách nhiệm: +) Hiểu rõ quy tắc, quy định biết cách cư xử cách chuyên nghiệp nhóm phát triển; +) Rèn luyện tính chủ động, tích cực tình huống; +) Rèn luyện kỹ tự học Mơ tả nội dung: Trình bày chuyên sâu cách tuỳ biến giao diện hệ thống giao diện ứng dụng dựa Themes Styles 1.1 Theme Style Style hiểu tập hợp thuộc tính thiết lập sẵn tái sử dụng cho nhiều loại giao diện hình khác Do vậy, trường hợp có nhiều thành phần giao diện có thuộc tính thiết lập giống nên gom chúng vào Styles để tái sử dụng mà khơng cần thiết lập lại Cịn Theme tập hợp nhiều Styles khác tạo thành cấu trúc chung cho toàn ứng dụng Mỗi ứng dụng, Activity tạo gắn với Theme định thuộc tính định nghĩa cho Style Theme hiệu ứng cho phần tử tương ứng ứng dụng Tuy nhiên, hồn tồn điều chỉnh số thuộc tính theo ý cách định nghĩa lại thuộc tính tương ứng Theme Styles ứng dụng Android thường định nghĩa thư mục chứa tài nguyên hệ thống (res): res/values/styles.xml Styles thường sử dụng định nghĩa layout Theme dùng file cấu hình Manifest.xml ứng dụng Android (Lưu ý: Sinh viên tham khảo thêm nguồn tài liệu phong phú tại: https://developer.android.com/guide) & Bài tập thực hành số Vận dụng kiến thức, kỹ học Lập trình di động 1, thiết kế giao diện cho ứng dụng sau (Hình 1.1.1) Hãy cho nhận xét! Rõ ràng với giao diện thiết kế có nhiều thuộc tính lặp lại (giống với lập trình tuyến tính ngày trước) dẫn tới file giao diện trông phức tạp không hiệu Ngoài ra, cần chút thay đổi nhỏ giao diện (thao tác thường xuyên người sử dụng yêu cầu viết phần mềm) dẫn tới việc điều chỉnh lặp lặp lại thuộc tính nhiều lần, khó cho q trình bảo trì sau Với ứng dụng dạng này, thường dùng Styles để định nghĩa cho thuộc tính chung tái sử dụng chúng tồn chương trình Hình 1.1.1 Bài tập thực hành số Styles định nghĩa file res\values\styles.xml với hai cú pháp sau đây: Dạng Tự định nghĩa Style attributes value_1 attributes value_2 attributes value_n Dạng Style kế thừa từ thuộc tính Style khác (Parent’s Style) value_1 value_2 value_n Định nghĩa dạng thường dùng cho trường hợp xây dựng Style mới, độc lập với Styles có Cịn định nghĩa dạng cho phép Style kế thừa thuộc tính Style Parent định nghĩa lại thuộc tính có (Trường hợp muốn thay đổi thuộc tính có theo dạng khác muốn tự tuỳ biến thuộc tính hệ thống theo ý – Mục 1.5 đề cập vấn đề này) Ví dụ 1: Với giao diện thiết kế Hình 1.1.1 tối ưu code cách định nghĩa Style cho Button sau: 0dp match_parent 1 center bold 10 Do việc nhận dạng cử chỉ, hành vi giai đoạn cần truyền vào kiện thu thập giai đoạn phương thức onTouch() nên trước tiên cần khai báo đối tượng dùng để nhận dạng trước (GestureDetectorCompat, ScaleGestureDetector, … định dạng tự định nghĩa) truyền kiện cho đối tượng phương thức onTouch & Bài tập thực hành số 36 Viết ứng dụng xử lý Gestures chung Android sử dụng GestureDetectorCompat Bước 0: Khai báo đối tượng GestureDetector mGestureDetector = new GestureDetectorCompat(this, new GestureDetector.OnGestureListener() { // Viết hàm xử lý sau nhận dạng hành vi }); Bước 1: Thực thu thập liệu hành vi người dùng truyền cho đối tượng mGestureDetector @Override public boolean onTouchEvent(MotionEvent event) { if (mGestureDetector.onTouchEvent(event)) { return true; } else { return super.onTouchEvent(event); } } Bước 2: Tiến hành xử lý sau nhận dạng hành vi, cử người dùng Mọi hành vi người dùng tương tác với hình ghi nhận đối tượng event truyền cho đối tượng mGestureDetector Đối tượng vào nhận dạng số hành vi, cử người dùng onDown, onShowPress, onSingleTapUp, onLongPress Hãy thêm phương thức sau vào phần khai báo đối tượng OnGestureListener bước 0: @Override public boolean onDown(MotionEvent motionEvent) { Log.d("onDown", motionEvent.toString()); return true; } @Override public void onShowPress(MotionEvent motionEvent) { Log.d("onShowPress", motionEvent.toString()); } 88 @Override public boolean onSingleTapUp(MotionEvent motionEvent) { Log.d("onSingleTapUp", motionEvent.toString()); return true; } @Override public boolean onScroll(MotionEvent motionEvent, MotionEvent motionEvent1, float x, float y) { Log.d("onScroll", motionEvent.toString() + ":" + motionEvent1.toString() + ":" + x + ":" + y); return true; } @Override public void onLongPress(MotionEvent motionEvent) { Log.d("onLongPress", motionEvent.toString()); } @Override public boolean onFling(MotionEvent motionEvent, MotionEvent motionEvent1, float velocityX, float velocityY) { Log.d("onFling", motionEvent.toString() + ":" + motionEvent1.toString() + ":" + velocityX + ":" + velocityY); return true; } Lưu ý: Nếu ứng dụng, bắt số cử chỉ, hành vi định, ví dụ hành vi scroll, đó, thay khai báo đối tượng mGestureDetector trên, định nghĩa lớp sau: class MySimpleGestureDetector extends GestureDetector.SimpleOnGestureListener { @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { Log.d("onScroll", e1.toString() + ":" + e2.toString() + ":" + distanceX + ":" + distanceY); return true; } } Và khai báo đối tượng mGestureDetector Bước đối tượng lớp & Bài tập thực hành số 37 Viết ứng dụng xử lý Pinch Gesture Ứng dụng sử dụng lớp ScaleGestureDetector để nhận dạng hành vi pinch (dùng hai đầu ngón tay co dãn ảnh/view) cử người dùng Bước 0: Xây dựng lớp đối tượng private class MyScaleGestureListener extends ScaleGestureDetector.SimpleOnScaleGestureListener { // Định nghĩa sau } Và khai báo onCreate: mScaleGestureDetector = new ScaleGestureDetector(this, new MyScaleGestureListener()); 89 Lớp đối tượng nhận dạng hành vi pinch người dùng thực việc tính tốn hệ số co dãn tương ứng dựa phương thức getScaleFactor, từ co hay dãn đối tượng Imageview hình tương tác Việc xử lý thực Bước Bước 1: Thu thập liệu hành vi người dùng public boolean onTouchEvent(MotionEvent event) { if (mScaleGestureDetector.onTouchEvent(event)) { return true; } else { return super.onTouchEvent(event); } } Bước 2: Nhận dạng xử lý @Override public boolean onScale(ScaleGestureDetector detector) { mScaleFactor *= detector.getScaleFactor(); mImageView.setScaleX(mScaleFactor); mImageView.setScaleY(mScaleFactor); return true; } Đối tượng nhận dạng hành vi Pinch người dùng trả vệ hệ số co dãn phương thức getScaleFactor Chúng ta sử dụng thông tin để thay đổi kích thước Imageview ứng dụng Lưu ý chung: Nếu ứng dụng muốn tự định nghĩa cử chỉ, hành vi riêng, giai đoạn thực sau vào hành động cụ thể để định tương ứng: @Override public boolean onTouchEvent(MotionEvent event) { int action = event.getAction(); switch(action) { case (MotionEvent.ACTION_DOWN) : Log.d(ONTOUCH_TAG,"Action was DOWN"); return true; case (MotionEvent.ACTION_MOVE) : Log.d(ONTOUCH_TAG,"Action was MOVE"); return true; case (MotionEvent.ACTION_UP) : Log.d(ONTOUCH_TAG,"Action was UP"); return true; case (MotionEvent.ACTION_CANCEL) : Log.d(ONTOUCH_TAG,"Action was CANCEL"); return true; case (MotionEvent.ACTION_OUTSIDE) : Log.d(ONTOUCH_TAG,"Movement occurred outside bounds " + "of current screen element"); return true; 90 } } default : return super.onTouchEvent(event); 4.3 Liệt kê loại cảm biến điện thoại Làm việc với cảm biến (Sensor) điện thoại di động giúp viết nhiều ứng dụng tiện ích cho sống hàng ngày (La bàn, đo tốc độ, phản ứng với điều kiện ánh sáng, phản ứng với nhiệt độ, độ ẩm, bật/tắt tự động chức điện thoại…) Tuy nhiên, cảm biến trang bị loại điện thoại khác không giống Muốn biết điện thoại hỗ trợ loại cảm biến nào, thực thao tác: Bước 1: Khai báo khởi tạo đối tượng SensorManager private SensorManager mSensorManager; … mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); Bước 2: Sử dụng đối tượng SensorManager để quản lý cảm biến điện thoại List sensors = mSensorManager.getSensorList(Sensor.TYPE_ALL); for (Sensor theSensor : sensors) { // Xử lý cho cảm biến: Ví dụ tên cảm biến, hãng sản xuất… } sensorList.add(theSensor.getName() + " : " + theSensor.getVendor()); & Bài tập thực hành số 38 Hãy viết ứng dụng liệt kê danh sách cảm biến có điện thoại RecyclerView (Kết Hình 4.3.1) 4.4 Sử dụng Sensor Framework đọc liệu từ cảm biến định Để tương tác với cảm biến có sẵn điện thoại định dựa liệu thu từ cảm biến, thực bước sau: Bước 1: Khai báo khởi tạo đối tượng SensorManager Hình 4.3.1 Ứng dụng Bài thực hành 38 91 private SensorManager mSensorManager; … mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); Bước 2: Khai báo định nghĩa chức cho đối tượng SensorEventListener private SensorEventListener mSensorListener = new SensorEventListener() { @Override public void onSensorChanged(SensorEvent event) { // Xử lý việc đọc liệu từ sensor định }; } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { //Nothing to } Bước 3: Khai báo khởi tạo biến Sensor sử dụng đối tượng SensorManager (Trong ví dụ tương tác với cảm biến kiểu ACCELEROMETER) private Sensor mSensor = null; … mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); Bước 4: Đăng ký việc truy xuất liệu từ cảm biến hàm onResume @Override protected void onResume() { super.onResume(); if (mSensor != null) { mSensorManager.registerListener(mSensorListener, mSensor, SensorManager.SENSOR_DELAY_NORMAL); } else { Toast.makeText(SensorExampleActivity.this, "This phone has not the sensor", Toast.LENGTH_SHORT).show(); } } Bước 5: Huỷ đăng ký việc đọc liệu từ cảm biến hàm onPause @Override protected void onPause() { if (mSensor != null) { mSensorManager.unregisterListener(mSensorListener); } else { Toast.makeText(SensorExampleActivity.this, "This phone has not the sensor", Toast.LENGTH_SHORT).show(); } super.onPause(); } Sau đăng ký thành công, cảm biến tương ứng liên tục gửi liệu ứng dụng (thời gian lặp lại định nghĩa biến lấy liệu hàm SensorManager.SENSOR_DELAY_NORMAL) onSensorChanged() Bước để xử lý định 92 & Bài tập thực hành số 39 Hãy viết ứng dụng đọc liệu từ cảm biến ACCELEROMETER thực chức sau: Mỗi người dùng lắc mạnh tay, hình điện thoại tự động khố lại từ chế độ bật hình Gợi ý: - Cần tìm hiểu thêm admin permission cho ứng dụng - Hãy tính giá trị: Root = (x*x+y*y+z*z) / (SensorManager.GRAVITY_EARTH * SensorManager.GRAVITY_EARTH), với z, y, z giá trị đọc từ cảm biến Khi đó, Root > gọi lệnh khố hình (deviceManger.lockNow()) 4.5 Câu hỏi tập chương Hãy trình bày bước bắt kiện hình tương tác? Hãy trình bày bước thực liệt kê danh sách loại cảm biến có điện thoại listview? Hãy trình bày bước thực đọc liệu xử lý liệu cho loại cảm biến cụ thể điện thoại? Hãy viết ứng dụng đọc liệu từ cảm biến loại ACCELEROMETER cho người sử dụng lắc mạnh điện thoại, chương trình Play Music tự động bật lên Nếu lắc mạnh lần nữa, chương trình Play tự động tắt 5* Tìm hiểu thêm cách vẽ đối tượng hàm onDraw, viết ứng dụng game Snack đơn giản (Gợi ý: Sử dụng kiến thức, kỹ học hình tương tác) 6* Hãy viết ứng dụng mơ la bàn Android! Hình 4.5.1 Ứng dụng Compass, tập 93 Gợi ý: - Tìm hiểu thêm RotateAnimation - Tìm hiểu kiểu cảm biến Sensor.TYPE_ACCELEROMETER kiểu cảm biến Sensor.TYPE_MAGNETIC_FIELD Tìm hiểu cách tính góc quay la bàn di chuyển điện thoại dựa giá trị trả từ hai cảm biến - Kết ứng dụng Hình 4.5.1 Hãy viết ứng dụng tập sử dụng cảm biến kiểu Sensor.TYPE_ACCELEROMETER Chạy thử so sánh kết với ứng dụng tập Hãy viết ứng dụng load ảnh từ Internet cho phép người dùng thay đổi kích thước ảnh sử dụng thao tác Pinch 94 CHƯƠNG BẢN ĐỒ TRỰC TUYẾN MAP VÀ LOCATION Mục tiêu: - Về kỹ năng: +) Viết ứng dụng android dựa đồ trực tuyến Google; - Về lực tự chủ trách nhiệm: +) Hiểu rõ quy tắc, quy định biết cách cư xử cách chuyên nghiệp nhóm phát triển; +) Rèn luyện tính chủ động, tích cực tình huống; +) Rèn luyện kỹ tự học Mô tả nội dung: Thiết kế xây dựng ứng dụng với đồ trực tuyến Google dịch vụ Google Location 5.1 Đặt vấn đề Bản đồ trực tuyến Map Location Google dịch vụ quan trọng Google hỗ trợ cho ứng dụng thiết bị di động Các dịch vụ Google có nhiều, nhiên phạm vi giáo trình, đề cập đến hai dịch vụ Các dịch vụ khác sinh viên tự tìm hiểu thêm 5.2 Kỹ thuật lấy vị trí Lấy vị trí người dùng đồ trực tuyến thao tác thường xuyên sử dụng Có hai loại Location Provider GPS Location Provider Network Location Provider Để lấy vị trí tại, thực bước sau: Bước 1: Chuẩn bị Thiết lập quyền truy xuất Internet quyền truy xuất cho hai loại Provider: Thiết lập thư viện sử dụng cho Project: implementation 'com.google.android.gms:play-services-maps:16.1.0' implementation 'com.google.android.gms:play-services-location:16.0.0' Bước 2: Tạo đối tượng LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); Bước 3: Gửi yêu cầu Location đến đối tượng LocationManager locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new LocationListener() { @Override public void onLocationChanged(@NonNull Location location) { 95 }); } Bước 4: Nhận liệu Location từ đối tượng LocationListener Dữ liệu location trả hàm onLocationChanged vị trí người dùng @Override public void onLocationChanged(@NonNull Location location) { currentLocation = new LatLng(location.getLatitude(), location.getLongitude()); Log.d("location", "Lat: " + currentLocation.latitude + " Long: " + currentLocation.longitude); } Lưu ý: Quyền ACCESS_FINE_LOCATION thuộc loại nguy hiểm, nên từ Android 6.0 trở cần viết hàm cấp quyền cho chúng (xem lại phần trước) Ngồi ra, muốn thay GPS_PROVIDER dùng LocationManager.NETWORK_PROVIDER & Bài tập thực hành số 40 Viết ứng dụng lấy vị trí người dùng thông qua GPS_PROVIDER hiển thị giá trị kinh độ, vĩ độ textview Di chuyển từ vị trí A sang B quan sát kết 5.3 Viết ứng dụng đồ trực tuyến Map Bản đồ trực tuyến dịch vụ thông dụng Google ngày sử dụng rộng rãi ứng dụng Android Muốn sử dụng đồ trực tuyến, thực bước sau: Bước 1: Chuẩn bị Đăng ký tài khoản Google tạo mã Google API_KEY cho đồ trực tuyến Đăng ký tài khoản Google => Đăng nhập => Truy xuất vào địa chỉ: https://console.developers.google.com/ => Lấy mã SHA-1 Fingerprint Android Studio (có thể dùng lệnh /gradlew signingReport Terminal) => Credentials để sinh API Key (Hình 5.1) => Dashboard => Enable APIS And Services => Enable dịch vụ Maps SDK for Android, Places API Geocoding API Bước 2: Tạo trường Metadata Manifest Trong trường value chứa API Key tạo 96 Hình 5.3.1 Tạo mã API Key cho đồ trực tuyến Bước 3: Xây dựng layout Sử dụng layout hỗ trợ cho đồ trực tuyến SupportMapFragment: Bước 4: Hiển thị đồ xử lý Khai báo đối tượng GoogleMap cho ứng dụng: private GoogleMap mMap; Trong onCreate lấy đối tượng Map layout: // Obtain the SupportMapFragment and get notified when the map is ready to be used SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); mapFragment.getMapAsync(this); Thực giao diện OnMapReadyCallback để xử lý cho đồ trực tuyến: implements OnMapReadyCallback Sau thực phương thức onMapReady: Xử lý đồ trực tuyến @Override public void onMapReady(GoogleMap googleMap) { 97 mMap = googleMap; mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); } if (currentLocation != null) { mMap.addMarker(new MarkerOptions().position(currentLocation).title("Current Location")); mMap.moveCamera(CameraUpdateFactory.newLatLng(currentLocation)); } Kết thu Hình 5.3.2 Hình 5.3.2 Hiển thị đồ trực tuyến & Bài tập thực hành số 41 Tìm hiểu thêm dịch vụ Geocoder nhằm biến đổi địa thành toạ độ (kinh độ, vĩ độ) đồ trực tuyến, viết ứng dụng tìm kiếm địa đường! Gợi ý: - Tìm hiểu cách làm cho đối tượng nhìn xun thấu (Ơ nhập tên Hình 5.3.3) - Tìm hiểu Geocoder nhằm chuyển tên địa điểm thành toạ độ đồ 98 Kết ứng dụng Hình 5.3.3 Hình 5.3.3 Ứng dụng hồn thiện Bài tập TH 41 99 5.4 Câu hỏi tập chương Trình bày quy trình sử dụng dịch vụ Map Google để tạo đồ trực tuyến Android? Dịch vụ Location dùng để làm gì? Tìm hiểu thêm dịch vụ Geocoder, viết ứng dụng tìm kiếm địa hướng dẫn đường từ vị trí người dùng tới địa Hãy viết ứng dụng tìm kiếm địa điểm khác Android dựa vị trí người sử dụng: Tìm kiếm trạm xe bus, tìm kiếm ATM, tìm kiếm trường học, bệnh viện, đồn cảnh sát… 5* Hãy viết ứng dụng hướng dẫn du lịch Android Hãy viết ứng dụng Map note nhằm ghi quản lý vị trí mà người dùng đến đồ trực tuyến 7* Viết ứng dụng quản lý chuỗi vửa hàng Android, cho phép hiển thị sửa đổi thông tin cửa hàng đồ trực tuyến 100 TÀI LIỆU THAM KHẢO [1] Rick Boyer, Kyle Mew, Android Application Development Cookbook, second edition Pack Publishing, Birmingham Mumbai, 2016 Tài liệu tham khảo [2] Dave Smith, Android Recipes - A problem-solution Approach, fourth edition Appress, 2015 [3] Dawn Griffiths & David Griffiths, Head First Android Development, Published by O’Reilly Media, 2015 101 PHỤ LỤC 102 ... lành mạnh bị nghiêm cấm LỜI GIỚI THIỆU Giáo trình Lập trình di động dùng cho học phần tên Lập trình di động 2, ngành Công nghệ Thông tin, trường Cao đẳng Công nghệ Thủ Đức Đây học phần tự chọn theo... 99 GIÁO TRÌNH HỌC PHẦN Tên học phần: LẬP TRÌNH DI ĐỘNG Mã học phần: CNC107315 Vị trí, tính chất, ý nghĩa vai trị học phần: - Vị trí: Là học phần chuyên ngành tự chọn, ngành Công nghệ Thông tin. .. Hãy xây dựng lại giao di? ??n cho ứng dụng Calculator thiết kế Lập trình di động cách sử dụng Style! Hãy xây dựng lại giao di? ??n cho ứng dụng Trắc nghiệm khách quan Lập trình di động cách sử dụng Style!

Ngày đăng: 18/03/2023, 08:15

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN