1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu lập trình android và xây dựng ứng dụng contacts demo

53 355 0

Đ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 53
Dung lượng 2,2 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tìm hiểu lập trình android và xây dựng ứng dụng contacts demo

Trang 1

NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN

Ngày Tháng Năm

Giảng Viên Hướng Dẫn

(Ký và ghi rõ họ tên)

Trang 2

LỜI CẢM ƠN

Em xin chân thành cảm ơn các thầy cô trong bộ môn Mạng và truyền thông cùng toàn thể các thầy cô trường Đại Học Công Nghệ Thông Tin và Truyền Thông – Đại học Thái Nguyên đã truyền đạt cho chúng em những kiến thức quý giá trong thời gian qua

Em xin chân thành cảm ơn Thầy Nguyễn Anh Chuyên đã tận tình hướng dẫn, chỉbảo em trong suốt quá trình thực hiện đề tài

Cuối cùng tôi xin cảm ơn các bạn trong khoa Công Nghệ Thông Tin, những người đã giúp đỡ, chia sẽ kiến thức, tài liệu trong suốt quá trình thực hiện nghiên cứu đề tài

Trong phạm vi khả năng cho phép, em đã rất cố gắng để hoàn thành đề tài một cách tốt nhất Song, chắc chắn sẽ không tránh khỏi những thiếu sót Em kính mong nhận được sự cảm thông và những ý kiến đóng góp của quý thầy cô và các bạn

Nhóm sinh viên thực hiện

Thái nguyên, tháng 6 năm 2012

Trang 3

1.1 Tổng quan về điện toán di động 5

1.1.1 Điện toán di động 5

1.1.2 Tiềm năng phát triển của lập trình di động 6

1.2 Nền tảng Android 7

1.2.1 Lược sử về Android 7

1.2.2 Kiến trúc nền tảng Android 9

1.2.3 Các công cụ để tạo một ứng dụng Android 13

2.1.3 Phân tích hệ thống với UML 45

2.2 Xây dựng giao diện chương trình 48

2.2.1 Giao diện chính – hiển thị danh sách thông tin liên lạc 48

2.2.2 Giao diện tìm kiếm thông tin liên lạc 49

2.2.3 Giao diện thêm mới thông tin liên lạc và sửa thông tin liên lạc

Trang 5

MỞ ĐẦU

Hiện nay ngành công nghiệp phần mềm đang rất phát triển và ngành công nghiệpphần mềm trên điện thoại di động cũng không nằm ngoài xu thế đó Tuy còn nhiều hạn chế trong phần cứng của điện thoại di động nhưng nó đã thể hiện đượcsức mạnh của mình trong rất nhiều các lĩnh vực khác nhau như giải trí, các tiện ích, thanh toán điện tử v.v

Các hệ điều hành như Window Mobile, Symbian… phần nào cũng gây ít nhiều khó khăn cho những ai có ý định xây dựng các ứng dụng trên nó Đối với

Window Mobile là một công nghệ của Microsoft và hoàn toàn đóng đối với người dùng, nhà phát triển ứng dụng chỉ dựa hoàn toàn vào công nghệ mà

Microsoft cung cấp, còn Symbian thì việc cấu hình để có thể lập trình trên nó cũng vô vàn khó khăn, đặc biệt là nó sử dụng ngôn ngữ C/C++ để làm nền tảng lập trình rõ ràng là không thuận tiện trong việc phát triển ứng dụng

Xuất phát từ nhu cầu thực tế đó, Google đã mạnh dạn nghiên cứu và đưa ra một nền tảng hệ điều hành mới, đó chính là Android Một nền tảng hệ điều hành mã nguồn mở hoàn toàn và dựa vào một ngôn ngữ lập trình rất mạnh là Java để phát triển ứng dụng Chính vì Android hỗ trợ Java ngay từ trong nền tảng của nó, nên việc viết ứng dụng, ngay cả sử dụng các chức năng của phần cứng là hoàn toàn

dễ dàng thông qua việc sử dụng bộ công cụ hỗ trợ lập trình được cung cấp hoàn toàn miễn phí, là Android SDK

Nhận thấy nhu cầu của con người trong lĩnh vực giải trí trên di động ngày càng cao và Android chính là nền tảng ứng dụng có thể phát triển trong tương lai Chính vì vậy em chọn đề tài “Tìm hiểu lập trình Android và xây dựng ứng dụng quản lý Contacts Demo” nhằm hiểu rõ về các kĩ thuật lập trình trên thiết bị động Android

Trang 6

CHƯƠNG 1 : TỔNG QUAN VỀ ĐIỆN TOÁN DI ĐỘNG VÀ NỀN

TẢNG LẬP TRÌNH ANDROID

Tổng quan về điện toán di động

Theo một báo cáo của hãng Morgan Stanley, đến năm 2015 việc sử dụng và truy cập Internet di động sẽ lớn hơn rất nhiều so với sử dụng Internet trên máy tính PC.( Morgan Stanley là một ngân hàng đầu tư, công ty chứng khoán có trụ sở chính tại Hoa Kỳ Đây là một trong những thể chế tài chính lớn nhất của thể giới.)

Theo báo cáo của Công ty IDC, tại Việt Nam, tổng doanh thu bán hàng của máy tính để bàn quý III-2011 tăng 5%, máy tính xách tay nhỏ gọn tăng 83% so với cùng kỳ năm trước Xu thế hiện nay là sử dụng nhiều thiết bị di động như các dòng điện thoại thông minh, máy tính bảng tablet dựa trên nền tảng web, hệ thống GPS, game video và thiết bị ứng dụng không dây trong gia đình…

Với sự phát triển và cải tiến liên tục thiết bị di động, chúng ta có căn cứ để tin rằng, trong tương lai gần, máy tính truyền thống PC sẽ bị mất ưu thế so với thiết bị cá nhân di động nhỏ gọn, tiện ích và tích hợp đầy đủ chức năng của một chiếc máy tính Chúng ta hoàn toàn có thể nhận định: “Điện toán di động đang là xu thế của thời đại”

Điện toán di động

Điện toán di động là gì ?

Nói một cách tổng quan thì điện toán di động là việc sử dụng những thiết bị cầm tay nhỏ gọn để phục vụ những mục đích của con người như làm việc, vui

chơi,giải trí,học tập v.v Đó là việc sử dụng ngày càng nhiều thiết bị di động như các dòng điện thoại thông minh, máy tính bảng tablet dựa trên nền tảng web,hệ thống GPS, game video và thiết bị ứng dụng không dây trong mọi sinh hoạt của con người

Điện toán di động đang phát triển như thế nào ?

Trang 7

Sự phát triển bùng nổ các giải pháp công nghệ dành cho thiết bị di động cũng là một trong những nhân tố góp phần tạo ra các thiết bị cầm tay nhỏ gọn, đáp ứng mọi nhu cầu tiêu dùng thông tin và ứng dụng của người sử dụng.

Những người kinh doanh, những người quản lý, những người tiêu dùng bình thường hay cả những người lớn tuổi Chúng ta đều trở lên di động và khao khát được di động nhiều hơn Di chuyển khắp thế giới để kinh doanh, hội họp với các đối tác hoặc một môi trường làm việc “di động” đã gần như trở thành một điều rất bình thường trong cuộc sống Chúng ta có thể làm việc mà không cần rời khỏinhà, hoặc làm việc trong khi vẫn còn đang ngồi nhâm nhi tách cà phê trong một quán cà phê Những kỳ nghỉ đơn thuần chỉ là di chuyển từ nước này sang nước khác

Điện toán di động phát triển một cách mạnh mẽ một phần lớn dựa trên nền tảng công nghệ của internet, công nghệ mạng di động 2G, 3G và 4G và đặc biệt là công nghệ điện toán đám mây Người sử dụng, sử dụng những thiết bị cầm tay (máy tính sách tay, tablet, smartphone…) để kết nối vào internet chia sẻ và cập nhật thông tin Sự phát triển mạnh mẽ của điện toán di động được thể hiện rõ ở những con số sau: Tính đến hết quý 1/2012 doanh số bán dòng điện thoại thông minh (smartphone) tăng lên đáng kể, đạt 144,4 triệu chiếc, tăng 44,7% so với quý1/2011 và máy tính xách tay nhỏ gọn tăng 83% so với cùng kỳ năm trước Trong năm 2012, theo IDC dự đoán doanh số bán máy tính bảng đạt khoảng 53,5 triệu máy

Tiềm năng phát triển của lập trình di động

Với sự phát triển như vũ báo của điện toán di động trong thời kì hiện nay, đã kéo theo sự phát triển mạnh mẽ của ngành công nghiệp phần mềm ứng dụng cho thiếtbị di động Trước thực tế đó, rất nhiều công ty, tổ chức đã xây dựng và phát triển các kho ứng dụng của họ cho thiết bị di động

Tháng 7/2008, Apple ra mắt kho ứng dụng di động trực tuyến đầu tiên

với 500 ứng dụng cho các sản phẩm iPhone, iPod Khi đó, thị trường ứng dụng mobile hầu như chưa hề tồn tại Đến nay, App Store đã có hơn 400,000 ứng dụngvới 10 tỷ lượt tải về, dẫn đầu ngành về dịch vụ ứng dụng cho di động Sau thành

Trang 8

công của Apple, các hãng di động nhận thấy tiềm năng của thị trường Mobile Apps đã liên tiếp cho ra mắt kho ứng dụng của mình Tiêu biểu là Ovi Store của Nokia (55,000 ứng dụng, 760 triệu download), Android Market của Google (200,000 ứng dụng,4,5 tỉ download), App World của Blackberry (30,000 ứng dụng, 3 triệu download/ngày), và mới đây là Huawei Technology - dành cho các nhà mạng di động trên toàn cầu với hơn 80.000 ứng dụng di động/nhạc, phim, e-book cho HĐH Android, Symbian và Windows Mobile Góp vào tổng doanh thu hàng năm ngành lên tới 7 tỷ USD, dự báo sẽ đạt 30 tỷ USD trong 3 năm tới.Tại Việt Nam, một số doanh nghiệp đã xây dựng kho ứng dụng di động riêng nhưF-Store của FPT, mStore của Tổng công ty Viễn thông Quân đội Viettel, LG Application Mobile của LG hay Nokia Ovi với phiên bản dành cho thị trường Việt Nam VTC Mobile, một trong các đơn vị dẫn đầu thị phần dịch vụ giá trị giatăng trên di động giai đoạn 2006-2010 tại Việt nam cũng đã hợp tác với Q-

mobile để xây dựng Q-Store, cung cấp các ứng dụng do Việt Nam xây dựng tới hàng triệu người sử dụng Q Mobile Việt Nam hiện có tới 50 triệu thuê bao di động hoạt động thường xuyên và nền tảng 3G đã được các nhà mạng triển khai rộng khắp với 69% người sử dụng ở độ tuổi trung bình 15 – 24 tạo nên một thị trường có tốc độ phát triển nhanh chóng và mạnh mẽ

Như vậy, lập trình di động hiện đang có tiềm năng rất lớn, đây ngành, lĩnh vực cực kì sôi động và phát triền trong thời đại hiên nay

Nền tảng Android

1.2.1 Lược sử về Android

Android được phát hành phiên bản đầu tiên 11/11/2007, là một môi trường hệ điều hành hoàn chỉnh dựa trên hệ điều hành nhân Linux V2.6 Lúc đầu, đích triểnkhai đối với Android là lĩnh vực điện thoại di động, gồm các loại điện thoại thông minh và các loại thiết bị điện thoại kiểu gập chi phí thấp Tuy nhiên, phạm

vi đầy đủ các dịch vụ điện toán của Android và sự hỗ trợ chức năng phong phú của nó có tiềm năng mở rộng ra ngoài thị trường điện thoại di động Android còn

có thể hữu ích đối với các nền tảng và ứng dụng khác

Trang 9

Nền Android là sản phẩm của Open Handset Alliance (Liên minh thiết bị cầm taymở), một tập đoàn các tổ chức cùng hợp tác với nhau để xây dựng nên một loại điện thoại di động tốt hơn Tập đoàn do Google đứng đầu này gồm các nhà vận hành (điện thoại) di động, các nhà sản xuất thiết bị cầm tay, sản xuất linh kiện, các nhà cung cấp nền và giải pháp phần mềm và các công ty tiếp thị Từ một quan điểm phát triển phần mềm, Android trở thành trung tâm của thế giới mã nguồn mở và rất có tiềm năng phát triển.

Thiết bị cầm tay có khả năng Android đầu tiên trên thị trường là thiết bị G1 do HTC sản xuất và được bán trên T-Mobile Nó trở nên sẵn có sau gần một năm đồn đại, khi mà các công cụ phát triển phần mềm sẵn có duy nhất chỉ là một số bản phát hành Bộ công cụ phát triển phần mềm (SDK) được cải tiến dần từng bước Khi ngày phát hành G1 gần đến, nhóm Android đã phát hành SDK V1.0 vàcác ứng dụng bắt đầu vượt lên nhằm hướng tới nền tảng mới này

Để kích thích đổi mới và phát triển các ứng dụng của Android, Google đã tài trợ hai vòng cuộc thi “Các thách thức nhà phát triển Android”, và hàng triệu đô la đãđược đổ vào các ứng dụng dự thi hàng đầu Vài tháng sau G1, Android Market được phát hành, cho phép người sử dụng duyệt và tải về các ứng dụng trực tiếp vào điện thoại của họ Trong vòng 18 tháng, một nền di động mới đã chính thức

có mặt trên thị trường và sẽ là đối thủ cạnh tranh nặng ký của các nền di động phổ biến trước đó như Symbian hay Window Mobile

Android cung cấp khá đầy đủ các công cụ cơ bản và được thiết kế sao cho các nhà phát triển có thể tận dụng tối đa lợi thế của thiết bị cầm tay để xây dựng nên các ứng dụng thực sự thuyết phục Họ có thể tạo một ứng dụng có thể gọi thực hiện các chức năng lõi trong điện thoại như thực hiện cuộc gọi, gửi tin nhắn SMS, dùng camera … Hay chia sẻ thông tin cá nhân lên trang web chẳn hạn như thông tin liên lạc, vị trí địa lí, lịch biểu… Các nhà phát triển còn có thể làm bất

cứ việc gì trên thiết bị Android bởi vì hệ thống Android giao tiếp thông qua các Intents – nó đơn giản là một chuỗi mô tả một hành động nào đó – ví dụ:

“android.provider.Telephony.SMS_RECEIVED” Android còn cung cấp sẵn các dịch vụ định vị (và đây là một thế mạnh của Google) cùng với một tập các ứng

Trang 10

dụng về “Map” với các tính năng rất ấn tượng như dò đường, tính khoảng cách địa điểm, tìm bạn… Ngoài ra còn có một số tính năng nổi bật khác như

Animation và đồng thời cũng hỗ trợ media-playback

Sự phát triển của hệ điều hành Android nổi bật qua các phiên bản chính dành chođiện thoại di động (Android 2.3), dành cho tablet (Android 3.0) … Phiên bản mớinhất hiện nay là Android 4.0.x (Ice Cream Sandwich) là phiên bản dành cho cả smatphone và tablet

1.2.2 Kiến trúc nền tảng Android

Với khả năng rộng rãi của Android, sẽ rất dễ dàng nhầm lẫn nó với một hệ điều hành máy tính để bàn Android là một môi trường phân tầng, xây dựng trên nền của hệ điều hành nhân Linux, và nó bao hàm nhiều chức năng phong phú Hệ thống giao diện người sử dụng gồm có:

Android khoe ra một mảng dồi dào nhiều tùy chọn kết nối, gồm WiFi, Bluetooth

và dữ liệu không dây qua một kết nối di động (như GPRS, EDGE và 3G).Một kỹ thuật phổ biến trong các ứng dụng Android là liên kết tới Google Maps để hiển thị một địa chỉ trực tiếp trong một ứng dụng Việc hỗ trợ cho các dịch vụ dựa trênđịa điểm (chẳng hạn như GPS) và các dụng cụ đo gia tốc cũng có sẵn trong gói phần mềm Android, mặc dù không phải tất cả các thiết bị Android được trang bị với các phần cứng cần thiết Ngoài ra còn có cả hỗ trợ máy ảnh nữa (camera).Về mặt lịch sử, có hai lĩnh vực mà các ứng dụng di động đã gắng sức theo kịp các đối tác máy tính để bàn là đồ họa/đa phương tiện và phương thức lưu trữ dữ liệu Android giải quyết thách thức về đồ họa bằng sự hỗ trợ dựng sẵn cho đồ họa

Trang 11

2D và 3D, gồm cả thư viện OpenGL Gánh nặng lưu trữ dữ liệu được giảm nhẹ vìnền Android có gồm cả cơ sở dữ liệu SQLite mã nguồn mở phổ biến Hình 1 cho thấy một khung hình đơn giản hóa về các tầng phần mềm Android.

Tầng Libraries và Android runtime

Libraries (thư viện)

Android bao gồm một bộ thư viện C/C++, được sử dụng bởi các thành phần khác nhau của hệ thống Android Những khả năng tiếp xúc với các nhà phát triển

Trang 12

thông qua các khuôn khổ ứng dụng Android Dưới đây là một số các thư viện lõi của Android:

System C library - một BSD-có nguồn gốc thực hiện các hệ thống thư viện chuẩn

C (LIBC), điều chỉnh cho nhúng dựa trên Linux các thiết bị

Media Libraries - dựa trên OpenCORE PacketVideo's; sự hỗ trợ các thư viện phát lại và ghi âm của âm thanh và phổ biến nhiều định dạng video, cũng như cáctập tin hình ảnh tĩnh, bao gồm MPEG4, H.264, MP3, AAC, AMR, JPG, và PNG.Surface Manager - quản lý quyền truy cập vào hệ thống con hiển thị và hoàn toànphù hợp chất 2D và 3D lớp từ nhiều ứng dụng đồ họa

LibWebCore - một trình duyệt web hiện đại, động cơ có quyền hạn cả hai trình duyệt web của Android và một xem nhúng

SGL - các công cụ đồ họa 2D

OpenGLJES – Thư viện đồ họa 2D và 3D

3D libraries - một việc thực hiện dựa trên OpenGL ES 1,0 API; các thư viện, hoặc sử dụng phần cứng tăng tốc 3D (nếu có) hoặc bao gồm, cao tối ưu rasterizerphần mềm 3D

SQLite - một mạnh mẽ và nhẹ quan hệ cơ sở dữ liệu có sẵn cho tất cả các ứng dụng

Android Runtime (Thời gian chạy Android)

Android bao gồm một tập các thư viện lõi mà cung cấp hầu hết các chức năng sẵn có trong thư viện cốt lõi của ngôn ngữ lập trình Java

Mỗi ứng dụng Android chạy trong tiến trình riêng của mình, với trường hợp riêng của các máy ảo Dalvik Dalvik đã được viết nên một thiết bị có thể chạy nhiều máy ảo hiệu quả VM Dalvik thực hiện tác phẩm trong các Executable Dalvik (dex) Định dạng được tối ưu hóa cho bộ nhớ tối thiểu VM là đăng ký trên, và chạy các lớp học biên soạn bởi một trình biên dịch ngôn ngữ Java đã được chuyển thành các định dạng dex Do dx "bao gồm" công cụ VM Dalvik dựa vào hạt nhân Linux cho các chức năng tiềm ẩn như luồng và cấp quản lý bộ nhớ thấp

Tầng Application Framework

Trang 13

Bằng cách cung cấp một nền tảng phát triển mở, Android cung cấp cho các nhà phát triển khả năng để xây dựng các ứng dụng vô cùng phong phú và sáng tạo Các nhà phát triển được miễn phí để tận dụng lợi thế của các thiết bị phần cứng, thông tin địa điểm truy cập, dịch vụ chạy nền, thiết lập hệ thống báo động, thêm các thông báo đến các thanh trạng thái, và nhiều, nhiều hơn nữa.

Các nhà phát triển có thể truy cập vào các API cùng một khuôn khổ được sử dụng bởi các ứng dụng lõi Kiến trúc ứng dụng được thiết kế để đơn giản hóa việc tái sử dụng các thành phần Cơ chế này cũng cho phép các thành phần được thay thế bởi người sử dụng

Nằm bên dưới tất cả các ứng dụng là một tập hợp các dịch vụ và hệ thống, bao gồm:

Một tập phong phú và mở rộng của xem có thể được sử dụng để xây dựng một ứng dụng, bao gồm các danh sách, lưới, hộp văn bản, các nút, và thậm chí một trình duyệt web nhúng

Nhà cung cấp nội dung cho phép các ứng dụng để truy cập dữ liệu từ các ứng dụng khác (như Contacts), hoặc chia sẻ dữ liệu của riêng mình

Một quản lý tài nguyên, cung cấp quyền truy cập vào tài nguyên phi mã như dây bản địa hoá, đồ họa, và bố trí tập tin

Một Notification Manager cho phép tất cả các ứng dụng tùy chỉnh để hiển thị cảnh báo trong thanh trạng thái

Một Activity Manager quản lý vòng đời của các ứng dụng và cung cấp một backstack phổ biến chuyển hướng

Tầng ứng dụng

Android sẽ ship với một bộ các ứng dụng lõi bao gồm một ứng dụng email, lịch chương trình tin nhắn SMS,, bản đồ, trình duyệt, liên lạc, và những người khác Tất cả các ứng dụng được viết bằng cách sử dụng ngôn ngữ lập trình Java

1.2.3 Các công cụ để tạo một ứng dụng Android

Để bắt đầu phát triển các ứng dụng Android, chúng ta cần có Bộ công cụ phát triển phần mềm Android (SDK) và môi trường phát triền tích hợp Eclipse

(Eclipse IDE) Việc phát triển Android có thể diễn ra trên Microsoft Window,

Trang 14

Mac OS X hoặc Linux Trong tiểu luận này, em thực hiện sẽ phát triển ứng dụng Android bằng Microsoft Window.

Eclipse IDE:

Các ứng dụng Android được viết bằng ngôn ngữ Java, nhưng biên dịch và thi hành bằng máy ảo Dalvik.Viết mã bằng ngôn ngữ Java trong Eclipse là rất trực quan Eclipse cung cấp một môi trường Java phong phú, gồm cả việc trợ giúp theo ngữ cảnh và các mách nước gợi ý về mã Khi bộ mã Java được biên dịch thành công, Android Developer Tools sẽ đảm bảo rằng ứng dụng đó được đóng gói một cách đúng đắn, gồm cả tập tin AndroidManifest.xml

Android SDK:

Bộ công cụ phát triển ứng dụng Android SDK là công cụ giả lập thiết bị ảo trên máy tính để phát triển ứng dụng với các hàm API hỗ trợ cho những lập trình viênlập trình trên các thiết bị di động sử dụng nền tảng Android thông qua ngôn ngữ lập trình Java SDK gồm có:

android.jar : tập tin lưu trữ Java chứa toàn bộ các lớp SDK Android cần thiết để xây dựng ứng dụng

documention.html và thư mục docs: tài liệu SDK được cung cấp tại chỗ và trên web, chủ yếu nó ở dạng JavaDocs, tạo điều kiện dễ dàng cho việc hướng dẫn trong nhiều gói SDK Tài liệu cũng gồm cả hướng dẫn phát triển mức cao và các liên kết đến cộng đồng Android rộng rãi

Thư mục sample (các ví dụ mẫu): thư mục con samples chứa bộ mã nguồn đầy

đủ dùng cho một loạt các ứng dụng, gồm cả ApiDemo, nó sử dụng nhiềuAPI Ứng dụng mẫu là một nơi khám phá tuyệt vời khi bắt đầu phát triển ứng dụng Android

Thư mục tools (các công cụ): chứa toàn bộ các công cụ dòng lệnh để xây dựng nên các ứng dụng Android Công cụ được dùng phổ biến và hữu ích nhất là tiện ích adb (Android Debug Bridge)

Usb_driver: thư mục chứa các trình điều khiển cần thiết để kết nối môi trường phát triển với một thiết bị có khả năng chạy Android, chẳng hạn như G1 hay điện

Trang 15

thoại đã được phát triển Android Dev 1 Các tập tin này là đòi hỏi duy nhất đối với các nhà phát triển đang sử dụng nền Windows.

1.2.4 Xây dựng các thành phần ứng dụng Android

1.2.4.1 Hoạt động(Activity)

Mỗi một Activity đại diện cho một màn hình Các ứng dụng phức tạp có thể có nhiều hơn một Activity Cần tạo một Activity cho mỗi màn hình cần hiển thị Cụ thể là ít nhất một màn hình chính điều khiển các chức năng của ứng dụng, các activity khác nhằm mục đích nhập thông tin, cung cấp các khung nhìn khác nhau trên dữ liệu hoặc hỗ trợ các chức năng khác

Hầu hết các Activity được thiết kế để chiếm giữ toàn bộ màn hình, tuy nhiên có thể tạo các Activity có một nữa độ trong suốt, các Activity nổi, hoặc các dialog

Tạo một Activity:

Để tạo một Activity mới, cần thừa kế từ lớp Activity, sử dụng các View để cung cấp các tương tác với người dùng, khai báo các thành phần giao diện và thực thi các chức năng của ứng dụng

package com.paad.myapplication;

import android.app.Activity;

import android.os.Bundle;

public class MyActivity extends Activity {

/** Called when the activity is first created */

@Overridepublic void onCreate(Bundle icicle) {

super.onCreate(icicle);

}}

Một lớp Activity cơ bản đưa ra một màn hình rỗng chứa cửa sổ hiển thị Vì vậy việc cần thực hiện đầu tiên là khai báo bố cục cho nó bằng cách sử dụng các View và layout.Activity UI được tạo thành bởi các View View là các điều khiển giao diện người dùng, hiển thị dữ liệu và cung cấp tương tác đến người dùng

Trang 16

Để gắn một giao diện cho một Activity, sử dụng phương thức setContentView trong lớp Activity được kế thừa.

setContentView là một resource ID

Vòng đời của Activity:

Trang 17

Hình 2 – Vòng đời của Activity

Khởi động một Activity

Để khởi động một Activity, chúng ta dùng Intent:

Khai báo tường minh: cung cấp chính xác thông tin của activity cần gọi (nếu cùng ứng dụng chỉ cần cung cấp tên class, nếu ứng dụng khác nhau thì cung cấp tên package, tên class)

Intent intent = new Intent(getApplicationContext(),TargetActivity.class);

Trang 18

Với cách khởi động activity không tường minh, chúng ta cần phải biết một chút về Intent-filter Intent-filter sẽ giúp một activity đăng ký với hệ thống mình có thể làm được thao tác gì, trong nhóm nào, với loại dữ liệu nào Như vậy khi intent và intent-filter khớp nhau, activity sẽ được hệ thống khởi động.

Liên lạc giữa 2 activity:

Có thể khởi động một activity với một yêu cầu nào đó và activity kia khi làm xong công việc sẽ trả lại kết quả cho activity trước Ví dụ activity A yêu cầu một activity làm giúp việc chụp ảnh, activity B đáp ứng được việc này, sau khi user chụp ảnh xong sẽ trả lại file ảnh cho activity A Để liên lạc 2 activity chúng ta làm nhu sau:

Khi khởi động một activity, ta có thể gửi kèm dữ liệu trong intent như ví dụ sau:intent.putExtra("value1", new String("Hello"));

intent.putExtra(“value2", new Long(100));

Bên phía activity được khởi động, có thể lấy dữ liệu được gửi như sau:

getIntent().getExtras().getString("value1");

getIntent().getExtras().getLong("value2");

Trình thu phát (BroadcastReceiver)

BroadcastReceiver là một trong bốn loại thành phần trong ứng dụng

Android.Chức năng của nó là dùng để nhận các sự kiện mà các ứng dụng hoặc hệthống phát đi

BroadcastReceiver chỉ có duy nhất một phương thức onReceive()

Khi có sự kiện mà BroadcastReceiver đã đăng ký nhận được phát đi, thì phương thức onReceive() của BroadcastReceiver đó sẽ được gọi

Trang 19

Sau khi thực thi xong phương thức này, vòng đời của BroadcastReceiver kết thúc.

Một số broadcast thông dụng

Báo hệ thống khởi động xong

Báo pin có sự thay đổi

Báo có package mới cài vào hoặc xóa đi

Báo tắt máy

Báo cắm sạc, rút sạc

Thông báo tin nhắn tới

Thông báo cắm, rút thẻ nhớ

Thông báo có cuộc gọi đi

Broadcast do người phát triển ứng dụng tự định nghĩa (giúp liên lạc hoặc thông báo một sự kiện giữa các ứng dụng)

Hàm onReceive()

Phương thức này được gọi khi có sự kiện tương ứng được phát đi.Ở trong

phương thức này, ta truyền vào context (ngữ cảnh) và intent (nơi nhận)

context: vì lớp Receiver không kế thừa từ lớp Context nên cần truyền context mà receiver này đang chạy vào Thứ nhất là để có thể xử lý các phương thức yêu cầutruyền thêm Context, thứ hai là để sử dụng các phương thức của lớp Context.intent: intent được truyền vào sẽ có đầy đủ thông tin như sự kiện nào mà receivernày đăng ký đã xảy ra dẫn đến onReceive() được gọi,có gửi kèm thông tin gì hoặc dữ liệu gì hay không Xem các api:

Trang 20

Dùng để xử lý các thao tác mất thời gian và không nhất thiết phải hiển thị lên activity (download, upload…).

Đôi khi cần một ứng dụng vận hành liên tục để xử lý những việc mong muốn mà không làm phiền người dùng

Làm những thao tác tính toán, xử lý đều đặn nào đó và kết quả khi nào người dùng cần thì mới xem

Tạo ra một Service

Để tạo ra một Service, ta tạo ra một class mới kế thừa lớp Service và override cácphương thức onStart(),onCreate() và onBind()

public void onStart(Intent intent, int startId) {

// TODO: Actions to perform when service is started

}

@Override

public void onCreate() {

// TODO: Actions to perform when service is created

}

@Override

public IBinder onBind(Intent intent) {

// TODO: Replace with service binding implementation

return null;

}

}

Trang 21

Để bắt đầu một Service, sử dụng phương thức startService.Nếu Service yêu cầu quyền truy cập không tồn tại trong ứng dụng thì một ngoại lệ

SecurityException sẽ được đưa ra Có 2 cách để bắt đầu một Service mới

Cách 1: khởi động ngầm Ví dụ:

startService(new Intent(MyService.MY_ACTION));

Cách 2: khởi động tường minh Ví dụ:

startService(new Intent(this, MyService.class));

Để dừng một Serivce, sử dùng phương thức stopService, truyền vào Intentxác định Service cần ngưng hoạt động Ví dụ:

ComponentName service = startService(new Intent(this, BaseballWatch.class));// ngừng dịch vụ bằng cách xác định tên dịch vụ

stopService(new Intent(this, service.getClass()));

// ngừng dịch vụ bằng cách tường minh

try {

Class serviceClass = Class.forName(service.getClassName());

stopService(new Intent(this, serviceClass));

} catch (ClassNotFoundException e) {}

Vòng đời của Services

Trang 22

Hình 3 – Vòng đời của service

Khi có một context nào đó gọi startService() để khởi động một dịch vụ mong muốn Nếu dịch vụ đó chưa được tạo thì sẽ gọi onCreate() rồi gọi tiếp onStart()

và khi đó dịch vụ chạy nền bên dưới

Nếu sau đó lại có một context muốn khởi độngdịch vụ này mà dịch vụ đã đang chạy thì chỉ có phương thức onStart() của dịch vụ được gọi

Dù dịch vụ có được gọi khởi động bao nhiêu lần thì cũng chỉ có thể hiện của dịch

vụ và chỉ cần gọi stopService() một lần để kết thúc dịch vụ

Kết nối dịch vụ

Khi một Activity được kết nối tới một Service, nó duy trì một tham chiếu đến một thực thể Service Để kết nối đến thực thể này, thực thi phương thức onBind như sau:

private final IBinder binder = new MyBinder();

Service đang chạy

tự stop

Trang 23

// tham chiếu đến dịch vụ

private MyService serviceBinder;

// xử lý kết nồi giữa service và activity

private ServiceConnection mConnection = new ServiceConnection() {

public void onServiceConnected(ComponentName className, IBinder

service) {

// được gọi khi liên kết được thực hiệnserviceBinder = ((MyService.MyBinder)service).getService(); }

public void onServiceDisconnected(ComponentName className) {

// nhận khi dịch vụ ngắt kết nối một cách bất ngờserviceBinder = null;

Intent bindIntent = new Intent(MyActivity.this, MyService.class);

bindService(bindIntent, mConnection, Context.BIND_AUTO_CREATE);

Trang 24

Hoạt động của bindService(): kết nối dịch vụ

Hình 4 – Hoạt động kết nối dịch vụ

Thông thường, vòng đời của dịch vụ khi có client kết nối từ đầu như sau:

Cũng bắt đầu bằng onCreate() rồi đến onBind() và dịch vụ chạy dưới nền

Khi không còn client kết nối tới thì dịch vụ gọi onUnbind() rồi onDestroy()

Có một số trường hợp không thông thường, ví dụ như:

Có một context khởi động một dịch vụ, sau đó có một số client kết nối (bind) tới service

Có nhiều client cùng lúc kết nối tới dịch vụ

Một activity vừa gọi startService() vừa gọi bindService()

Trình cung cấp nội dung (Content Providers)

onCreate(

Service đangchạ

onUnbind()

Service không còn kết nối với client nào nữa

và cũng ko có context nào start service nàyonDestroy()

Service còn chạy, client muốn kết nối với service

onRebind()

Lần trước unBind() với client này trả về true

Trang 25

Có thể coi trình cung cấp nội dung như là một máy chủ cơ sở dữ liệu Công việc của nó là quản lý truy cập và chia sẻ dữ liệu đang tồn tại, chẳng hạn như một cơ

sở dữ liệu SQLite.Nó có thể được cấu hình để cho phép các ứng dụng khác truy xuất và ngược lại.Nếu ứng dụng rất đơn giản thì không nhất thiết phải tạo ra một trình cung cấp nội dung

Content Provider giúp tách biệt tầng ứng dụng ra khỏi tầng dữ liệu Nó có đầy đủcác quyền điều khiển và được truy xuất thông qua mô hình URI đơn giảnnhư là

có thể thêm, xóa, cập nhật dữ liệu của các ứng dụng

Tạo một Content Provider mới

Tạo Content Provider:

Để tạo một Content Provider cần thừa kế lại từ lớp trừu tượng ContentProvide, override lại phương thức onCreate

return true;

}}

Nên cung cấp một biến static CONTENT_URI trả về một URI của provider này Content URI phải là duy nhất giữa các provider, vì thế nên dựa vào tên package

để xác định URI, hình thức chung cho việc định nghĩa một Content Provider URIlà:

content://com.<CompanyName>.provider.<ApplicationName>/<DataPath>

Trang 26

Các đơn giản nhất để làm việc này là sử dụng URIMatcher Cấu hình

UriMatcher để phân tích hình thức của nó khi provider đang được truy xuất đến thông qua một Content Resolver

Đưa ra truy xuất Data Source:

Có thể cung cấp các truy vấn và thực thi với Content Provdier bằng cách thực hiện các phương thức delete, insert, update và query.Các phương thức này hoạt động như các giao tiếp chung đến nguồn dữ liệu bên dưới, chúng cho phép các ứng Android chia sẽ dữ liệu với nhau mà không phải tạo một giao tiếp riêng cho mỗi ứng dụng

Bước cuối cùng trong quá trình tạo một Content Provider là định nghĩa kiểu MIME làkiểu dữ liệu mà Provider trả về, override phương thức getType để trả vềmột kiểu String mô tả cho kiểu dữ liệu Kiểu trả về bao gồm cả 2 hình thức: trường đơn và tất cả dữ liệu

Thêm Content Provider vừa tạo vào trong manifest.xml Sử dụng thẻ authorities

để chỉ định địa chỉ của nó:

<provider android:name=”MyProvider”

android:authorities=”com.paad.provider.myapp”/>

Truy vấn, thêm, cập nhật và xóa nội dung trong Content Provide

Ngày đăng: 21/05/2016, 14:35

HÌNH ẢNH LIÊN QUAN

Hình 8 – Expanded menu - Tìm hiểu lập trình android và xây dựng ứng dụng contacts demo
Hình 8 – Expanded menu (Trang 34)
Hình 14: Biểu đồ tuần tự cho chức năng sửa thông tin liên lạc. - Tìm hiểu lập trình android và xây dựng ứng dụng contacts demo
Hình 14 Biểu đồ tuần tự cho chức năng sửa thông tin liên lạc (Trang 45)
Hình 16: Giao diện chính – hiển thị danh sách liên lạc - Tìm hiểu lập trình android và xây dựng ứng dụng contacts demo
Hình 16 Giao diện chính – hiển thị danh sách liên lạc (Trang 46)
Hình 15: Biểu đồ tuần tự cho chức năng xóa thông tin liên lạc. - Tìm hiểu lập trình android và xây dựng ứng dụng contacts demo
Hình 15 Biểu đồ tuần tự cho chức năng xóa thông tin liên lạc (Trang 46)
Hình 17: Giao diện tìm kiếm - Tìm hiểu lập trình android và xây dựng ứng dụng contacts demo
Hình 17 Giao diện tìm kiếm (Trang 47)
Hình 18: Giao diện thêm và sửa thông tin liên lạc - Tìm hiểu lập trình android và xây dựng ứng dụng contacts demo
Hình 18 Giao diện thêm và sửa thông tin liên lạc (Trang 48)
Hình 19: Giao diện menu chọn chức năng sửa, xóa - Tìm hiểu lập trình android và xây dựng ứng dụng contacts demo
Hình 19 Giao diện menu chọn chức năng sửa, xóa (Trang 48)
Hình 20: Giao diện menu chọn chức năng thêm mới - Tìm hiểu lập trình android và xây dựng ứng dụng contacts demo
Hình 20 Giao diện menu chọn chức năng thêm mới (Trang 49)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w