GIỚI THIỆU ĐỀ TÀI
Lý do chọn đề tài
Android là hệ điều hành di động do Google phát triển, dựa trên nền tảng Linux kernel và phần mềm mã nguồn mở, nhằm cạnh tranh với các hệ điều hành khác Kể từ khi ra mắt chính thức vào năm 2008, Android đã nhanh chóng chiếm lĩnh thị trường smartphone với tính mở và khả năng tùy biến cao, đạt thị phần 56.1% vào quý 1 năm 2012.
Việt Nam đang theo kịp xu hướng phát triển công nghệ, với thu nhập ngày càng cao, nhu cầu về thông tin và giải trí tăng lên, khiến việc sở hữu smartphone trở nên khả thi Các nhà sản xuất lớn như Samsung, HTC, và Motorola cung cấp đa dạng mẫu mã, cấu hình và mức giá, không yêu cầu cấu hình tối thiểu, phù hợp với mọi thiết bị phần cứng Bên cạnh đó, kho ứng dụng phong phú với nhiều ứng dụng miễn phí cũng góp phần nâng cao trải nghiệm người dùng.
Nhu cầu nhân lực trong lĩnh vực lập trình Android đang gia tăng mạnh mẽ với hàng trăm vị trí tuyển dụng chưa được lấp đầy Chính vì vậy, tôi đã chọn nền tảng Android để nghiên cứu Ứng dụng VietTour cung cấp thông tin về các địa danh du lịch trên toàn quốc và hướng dẫn đường đi từ vị trí người dùng đến các địa điểm đó Điểm mạnh của ứng dụng là hiển thị kết quả trực quan trên màn hình, giúp người dùng dễ dàng tiếp cận và lập kế hoạch cho chuyến đi với chi phí hợp lý Hơn nữa, VietTour cũng giúp tôi tìm hiểu sâu về hệ điều hành Android, kết hợp sử dụng cơ sở dữ liệu SQLite và truy vấn qua Google Maps API.
Khoá luận này cung cấp cái nhìn tổng quan về Android và phát triển ứng dụng trên nền tảng này, giúp sinh viên nắm bắt xu hướng lập trình ứng dụng smartphone Điều này không chỉ đáp ứng nhu cầu ngày càng tăng của thị trường xây dựng ứng dụng di động mà còn mở ra cơ hội việc làm hấp dẫn sau khi tốt nghiệp.
Chức năng và hướng phát triển của ứng dụng VietTour
1.1.2.1 Chức năng của ứng dụng Viet Tour
Để hỗ trợ những người đam mê du lịch và quảng bá các điểm đến nổi bật của Việt Nam, tôi đã chọn ứng dụng Viet Tour làm minh chứng.
Ứng dụng cho phép người dùng cập nhật thông tin về các địa điểm du lịch nổi tiếng tại Việt Nam như SaPa, Hà Nội, Thành phố Hồ Chí Minh, Hạ Long, Huế, Đà Nẵng, Nha Trang, Vũng Tàu, Phú Quốc và Phan Thiết Chức năng đặc biệt của ứng dụng là xác định vị trí các điểm du lịch và hướng dẫn đường đi từ vị trí hiện tại đến các địa điểm này một cách đơn giản, giúp người dùng tiết kiệm chi phí khi du lịch.
Ứng dụng cho phép người dùng cập nhật các địa danh du lịch bằng cách cung cấp thông tin đầy đủ như tên, mô tả chung, mô tả chi tiết và hình ảnh đại diện Hình ảnh đại diện sẽ được chọn từ thẻ nhớ của điện thoại, trong khi tọa độ của địa danh sẽ tự động được cập nhật dựa trên vị trí của người dùng Lưu ý rằng ứng dụng yêu cầu kết nối internet để hoạt động hiệu quả.
1.1.2.2 Hướng phát triển của ứng dụng
Trong tương lai, phần mềm sẽ tích hợp thêm các chức năng tìm kiếm cây ATM, cây xăng gần vị trí người dùng, cũng như các quán cà phê, nhà hàng, khách sạn và điểm vui chơi giải trí tại các khu du lịch Những tính năng này sẽ mang lại sự thuận tiện tối đa cho người dùng khi đi du lịch xa.
Phần mềm sẽ được bổ sung phiên bản tiếng Anh, nhằm phục vụ du khách nước ngoài khi đến Việt Nam, qua đó góp phần quảng bá hình ảnh đất nước đến bạn bè quốc tế.
KHẢO SÁT ĐỀ TÀI
Khảo sát các nền tảng trên điện thoại di động hiện nay
Thị trường di động hiện nay đang chứng kiến sự phát triển mạnh mẽ với nhiều nhãn hiệu, kiểu dáng và tính năng đa dạng Sự cạnh tranh giữa các nhà sản xuất hệ điều hành di động ngày càng trở nên khốc liệt.
Hình 1.1: Một số hệ điều hành di động phổ biến hiện nay 1.2.2.1 Hệ điều hành Symbian
Hệ điều hành Symbian của Nokia được biết đến với giao diện thân thiện và dễ sử dụng, đặc biệt phù hợp với điện thoại có màn hình cứng và bàn phím T9 Kho ứng dụng phong phú của Symbian đáp ứng tốt nhu cầu công việc và đời sống hàng ngày của người dùng.
1.2.1.2 Hệ điều hành Windows Mobile
Hệ điều hành cùng thời với Symbian được đánh giá là chuyên nghiệp, phục vụ tốt cho công việc và giải trí, nhưng lại không dễ sử dụng và thân thiện như Symbian Điều này đã giúp Symbian thống trị thị trường trong nhiều năm Tuy nhiên, Symbian dường như đã ngủ quên trên chiến thắng, thiếu sự phát triển đột phá và cập nhật thường xuyên.
1.2.1.3 Hệ điều hành iOS iOS là hệ điều hành "đóng" hoạt động trên iPhone, iPad, iPod iOS đã quyết định rất nhiều đối với sự thành công của Apple, với giao diện bóng bẩy, đẹp mắt, và dễ sử dụng Tất cả chỉ là chạm và lướt để thực thi Cùng với chính sách hợp lý để thu hút các lập trình viên viết ứng dụng, kho ứng dụng Appstore ngày càng lớn khiến cho người dùng càng thêm thích thú, mọi nhu cầu của từng người đều có thể được đáp ứng. Việc Apple tung ra cập nhật, vá các lỗi liên tục khi phát hiện, khiến cho iOS ngày càng trở nên "thông minh" hơn, an toàn hơn Tuy nhiên, iOS chỉ được cài giới hạn trên thiết bị của Apple gồm những thiết bị như iPhone, iPad, iPod Thị phần của thiết bị Apple trên thế giới nói chung là không lớn.
1.2.1.4 Hệ điều hành Windows Phone
Windows Phone, được phát triển bởi Microsoft, mang đến một giao diện Metro hiện đại, dễ sử dụng và giống như một tờ tạp chí Hệ điều hành này đã thu hút sự chú ý trong làng công nghệ nhờ vào thiết kế độc đáo và cách xử lý khác biệt Dù kho ứng dụng Marketplace còn hạn chế, nhưng vẫn cung cấp nhiều phần mềm hữu ích được kiểm soát chặt chẽ bởi Microsoft.
Mặc dù ra đời muộn hơn, Android đã nhanh chóng trở thành hệ điều hành di động hàng đầu nhờ tính mở và linh hoạt của nó, với khoảng 850.000 điện thoại Android được kích hoạt mỗi ngày Nền tảng Google đã thu hút nhiều nhà sản xuất như HTC, Samsung, LG, Motorola và Sony Ericsson, khiến Android trở thành hệ điều hành chính cho cả smartphone và máy tính bảng Sự phát triển mạnh mẽ của Android Market, nơi ngày càng nhiều ứng dụng được phát triển, đã tạo ra sự cạnh tranh trực tiếp với AppStore của Apple Nhờ vào tính thân thiện, dễ sử dụng và linh hoạt, Android được dự đoán sẽ tiếp tục thống trị thị trường hệ điều hành di động trong tương lai, mặc dù iOS và Windows Phone cũng rất mạnh mẽ.
Khảo sát các ứng dụng cùng chức năng trên điện thoại Android
1.2.3.1 Ứng dụng chỉ đường: diadiem.com Ưu điểm của ứng dụng này là sử dụng giao diện 3D đẹp và thân thiện bằng tiếng Việt Phầm mềm cung cấp bản đồ chi tiết đường đi của khá nhiều tỉnh thành tại Việt Nam.
Phần mềm này không chỉ hỗ trợ xác định vị trí bằng GPS mà còn cho phép người dùng nghe nhạc, xem video clip, tra cứu các phân loại tin rao vặt, đọc báo và thực hiện thanh toán trực tuyến.
1.2.3.2 Ứng dụng Vietbando Ứng dụng có các chức năng như tìm thông tin vị trí địa điểm, vị trí các điểm dịch vụ, tìm lộ trình đường đi, quản lý danh sách các điểm yêu thích và lưu kết quả tìm đường điphục vụ cho việc xem lại trong trường hợp ngắt kết nối. Để sử dụng được phần mềm, điện thoại của người dùng phải kết nối GPRS hoặc WIFI Ngoài ra đây là phần mềm trả phí và người sử dụng chỉ được dùng thử trong 7 ngày.
HỆ ĐIỀU HÀNH ANDROID 8
LỊCH SỬ PHÁT TRIỂN HỆ ĐIỀU HÀNH ANDROID
Hình 2.1: Logo của Google Android
Android, có nghĩa là “một người máy có hình dáng của con người”, là hệ điều hành mã nguồn mở dành cho thiết bị di động, hiện nay cũng được sử dụng trên một số đầu phát HD và HD Player Hệ điều hành này được phát triển bởi công ty Android Inc.
Năm 2005, Google đã mua lại hệ điều hành và bắt đầu đầu tư mạnh mẽ vào nó Đến năm 2007, Liên minh thiết bị di động cầm tay mã nguồn mở (Open Handset Alliance) được thành lập với sự tham gia của nhiều tên tuổi lớn trong ngành công nghệ như Samsung, LG, HTC, Motorola, và Qualcomm Mục tiêu của liên minh là phát triển một chuẩn cho các thiết bị cầm tay mã nguồn mở Đến năm 2008, liên minh đã mở rộng với 14 thành viên mới, bao gồm ASUS, Sony, và Toshiba.
Ngày 23 – 9 – 2008, chiếc điện thoại di động đầu tiên trên thế giới sử dụng hệ điều hành Android chính thức được Google – nhà cung cấp dịch vụ mạng T – Mobile của Mỹ và nhà sản xuất thiết bị di động HTC giới thiệu ra thị trường: Google G1 hayHTC dream.
KIẾN TRÚC HỆ ĐIỀU HÀNH ANDROID
Sơ đồ sau thể hiện cụ thể những thành phần chính của hệ điều hành Android.Mỗi thành phần được mô tả chi tiết bên dưới.
Hình 2.2: Kiến trúc hệ điều hành Android 2.2.1 Tầng Applications
Android đi kèm với một bộ ứng dụng cốt lõi, bao gồm email client, ứng dụng gửi SMS, lịch, bản đồ, trình duyệt và ứng dụng quản lý danh bạ Tất cả các ứng dụng này được phát triển bằng ngôn ngữ lập trình Java.
Android cung cấp một môi trường phát triển mở, cho phép các nhà phát triển xây dựng ứng dụng sáng tạo và phong phú Họ có thể tận dụng phần cứng thiết bị, truy cập thông tin vị trí, sử dụng dịch vụ chạy ngầm, cài đặt báo động và thêm thông báo vào thanh trạng thái, mở ra nhiều khả năng phát triển ứng dụng.
Các nhà phát triển có quyền truy cập toàn diện vào framework API của các ứng dụng cốt lõi, giúp đơn giản hóa việc tái sử dụng các thành phần Mỗi ứng dụng có thể công bố khả năng của mình, cho phép các ứng dụng khác sử dụng những khả năng này, với điều kiện tuân thủ các ràng buộc an toàn của framework Cơ chế này tạo điều kiện cho việc thay thế các bộ phận bởi người dùng.
Dưới tất cả ứng dụng, có một hệ thống dịch vụ bao gồm: một bộ Views giúp xây dựng ứng dụng với các thành phần như list, grid, text box, button và web browser nhúng; Content provider cho phép truy xuất và chia sẻ dữ liệu giữa các ứng dụng; Resource Manager cung cấp quyền truy cập vào tài nguyên không phải mã như chuỗi, hình ảnh và file layout; Notification Manager cho phép các ứng dụng hiển thị thông báo trên thanh trạng thái; và Activity Manager quản lý vòng đời ứng dụng, cung cấp backstack để chuyển đổi giữa các ứng dụng.
Android bao gồm một bộ thư viện C/C++ thiết yếu cho các bộ phận của hệ thống, được truy cập thông qua Android application framework Các thư viện cốt lõi bao gồm: System C library, một phiên bản từ BSD của thư viện chuẩn C, được tối ưu cho thiết bị nhúng Linux; Media libraries, hỗ trợ playback và thu âm các định dạng đa phương tiện; Surface Manager, quản lý truy cập tới các hệ thống con và kết hợp đồ họa 2D và 3D; LibWebCore, một engine trình duyệt web cho Android; SGL, engine đồ họa 2D; thư viện 3D dựa trên OpenGL ES 1.0 với khả năng tăng tốc phần cứng; FreeType, công cụ vẽ font vector và bitmap; và SQLite, hệ thống cơ sở dữ liệu mã nguồn mở cho phép ứng dụng tạo và quản lý cơ sở dữ liệu riêng, chỉ cho phép ứng dụng đó truy cập.
Android bao gồm một bộ thư viện cốt lõi, cung cấp hầu hết các tính năng có sẵn trong thư viện cốt lõi của ngôn ngữ lập trình Java.
Mỗi ứng dụng Android hoạt động trên các tiến trình riêng biệt trong môi trường máy ảo Dalvik (Dalvik Virtual Machine) Dalvik được thiết kế để cho phép một thiết bị chạy nhiều máy ảo một cách hiệu quả Máy ảo Dalvik thực thi các tệp có định dạng Dalvik Executable (.dex), tối ưu hóa cho các hoạt động yêu cầu bộ nhớ Nó thực hiện việc đăng ký và chuyển đổi các tệp class đã được biên dịch bởi trình biên dịch Java thành định dạng dex và sau đó thực thi chúng Dalvik VM phụ thuộc vào kernel Linux để cung cấp các tính năng như đa luồng và quản lý bộ nhớ cấp thấp.
Android dựa vào các dịch vụ của kernel Linux phiên bản 2.6, bao gồm bảo mật, quản lý bộ nhớ, quản lý tiến trình, mạng và mô hình driver Kernel này đóng vai trò như một lớp trừu tượng, kết nối phần cứng với các thành phần khác của phần mềm.
CÁC PHIÊN BẢN CỦA HỆ ĐIỀU HÀNH ANDROID
Hệ điều hành Android của Google đã có sự phát triển mạnh mẽ chỉ trong bốn năm, từ khi ra mắt trên điện thoại G1 T-Mobile Trong khoảng thời gian này, Android đã cho ra mắt 8 phiên bản, trong khi Microsoft chỉ phát hành 10 phiên bản Windows trong 25 năm Thị trường Smartphone chứng kiến sự phát triển nhanh chóng, với Android trở thành trung tâm Phiên bản Android 4.0 – Ice Cream Sandwich, ra mắt trên Samsung Galaxy Nexus, đã gây tiếng vang lớn trên các diễn đàn công nghệ toàn cầu Hệ điều hành di động của Google đã phát triển với tốc độ chóng mặt, dần thay thế iOS để trở thành người dẫn đầu thị trường Smartphone hiện nay.
Các phiên bản của Google Android được đặt tên theo quy ước dựa trên các loại bánh kẹo theo bảng chữ cái Phiên bản 1.5 – Cupcake là phiên bản thứ ba, tiếp theo là Android 1.6 Donut, Android 2.0/2.1 Eclair, Android 2.2 Froyo, Android 2.3 GingerBread, Android 3.0 HoneyComb, và Android 4.0 Ice Cream Sandwich Phiên bản 5.0 sắp tới có thể sẽ được gọi là Jerrybean.
Phiên bản Android 1.5 Cupcake, ra mắt vào tháng 4/2009, đánh dấu cột mốc quan trọng với nhiều tính năng nổi bật nhằm tăng cường tính cạnh tranh trên thị trường Các tính năng đáng chú ý bao gồm khả năng ghi lại và xem video, tải video lên YouTube và ảnh lên Picasa trực tiếp từ điện thoại, bàn phím ảo mới với tính năng đoán trước văn bản, hỗ trợ bluetooth A2DP và AVRCP, khả năng tự động kết nối với thiết bị bluetooth trong khoảng cách nhất định, và chức năng chuyển tiếp màn hình động.
Mặc dù không phải là một bản nâng cấp lớn như Cupcake, Android 1.6 Donut vẫn là một bước tiến quan trọng sau Android 1.5 với nhiều cập nhật đáng chú ý Bản cập nhật này đã tăng cường ứng dụng Android Market, cải thiện giao diện tích hợp cho máy ảnh, máy quay và bộ sưu tập Ngoài ra, nó cung cấp thư viện cho phép người dùng chọn nhiều ảnh để xoá, cùng với việc cập nhật chức năng tìm kiếm và quay số bằng giọng nói với phản ứng nhanh hơn và tích hợp sâu hơn với các ứng dụng bản địa Android 1.6 cũng cho phép người dùng đánh dấu trang tìm kiếm, lịch sử, liên lạc và trang web từ màn hình chính, đồng thời tăng tốc độ cho các ứng dụng tìm kiếm và máy ảnh.
Trong phiên bản Android Donut, hệ điều hành lần đầu tiên hỗ trợ mạng CDMA, đồng thời cũng cho phép chạy trên nhiều chế độ phân giải màn hình và tỷ lệ chiều dài: chiều rộng khác nhau Điều này đã tạo điều kiện cho sự phát triển của nhiều loại điện thoại với độ phân giải đa dạng, từ những chiếc smartphone có màn hình nhỏ cho đến các thiết bị với kích thước cực lớn.
Sau một năm kể từ khi G1 ra mắt, Android 2.0 đã được phát hành, mang đến một trong những bản cập nhật lớn nhất với nhiều ý tưởng mới mẻ Eclair, lần đầu tiên xuất hiện trên Motorola Droid của Verizon, đã đánh dấu một trong những smartphone thành công nhất trong lịch sử Android Bản cập nhật này bao gồm tối ưu hóa tốc độ phần cứng, tái cấu trúc giao diện người dùng, giao diện trình duyệt mới hỗ trợ HTML 5, danh bạ mới, cải thiện Google Maps 3.1.2, hỗ trợ Microsoft Exchange, chức năng MotionEvent cho xử lý chạm đa điểm, cải thiện bàn phím ảo và hình nền động.
Android đánh dấu một sự thay đổi chiến lược quan trọng của Google khi hợp tác trực tiếp với HTC để phát triển dòng sản phẩm mới Kết quả của sự hợp tác này là sự ra đời của Google Nexus One, một thiết bị mỏng với bộ vi xử lý Qualcomm SnapDragon 1 GHz mạnh mẽ và màn hình AMOLED tiên tiến có độ phân giải WVGA.
Các thay đổi đáng chú ý bao gồm tối ưu hóa toàn bộ hệ điều hành Android về tốc độ, bộ nhớ và hiệu năng, cùng với việc cải tiến tốc độ thực hiện của JIT Hệ thống cũng tích hợp động cơ V8 JavaScript của Chrome vào ứng dụng trình duyệt, tăng cường hỗ trợ Microsoft Exchange với các chính sách an ninh, tự động phát hiện, tìm kiếm GAL, đồng bộ hóa lịch và xóa từ xa Ngoài ra, ứng dụng được cải thiện với các phím tắt để khởi chạy nhanh các ứng dụng điện thoại và trình duyệt, cùng với cập nhật thị trường ứng dụng với nhiều tính năng tự động Người dùng có thể nhanh chóng chuyển đổi giữa bàn phím đa ngôn ngữ và từ điển, thực hiện quay số bằng giọng nói và chia sẻ liên hệ qua Bluetooth Hệ thống cũng hỗ trợ tải tập tin trong ứng dụng trình duyệt, cài đặt ứng dụng với bộ nhớ mở rộng và hỗ trợ Adobe Flash 10.1.
Vào thời điểm này, Google đã hợp tác với Samsung, nhà sản xuất thành công dòng điện thoại Galaxy S, để cho ra mắt chiếc Nexus S Mặc dù Gingerbread không có nhiều thay đổi lớn, nhưng những cải tiến nhỏ lại có ảnh hưởng đáng kể đến toàn bộ nền tảng, bao gồm hỗ trợ phát lại video webM và cải thiện chức năng sao chép - dán.
Android 3.1, phiên bản dành riêng cho thiết bị màn hình lớn như máy tính bảng, mang đến nhiều nâng cấp đáng chú ý Giao diện được thiết kế lại với khả năng thay đổi kích thước widget, cùng với các chế độ mới cho phép người dùng nhập ảnh trực tiếp từ máy ảnh kỹ thuật số Phiên bản này còn tích hợp ứng dụng Google Movies, cho phép thuê hàng ngàn bộ phim từ Google Play, cùng với ứng dụng đọc sách Books và Movie Studio để chỉnh sửa video Trình duyệt web được cải thiện đáng kể về tốc độ và có thêm thanh menu điều khiển nhanh, nâng cao trải nghiệm người dùng.
2.3.7 Ice Cream Sandwich(ICS) – Android 4.0 tháng 9 – 2011
Phiên bản ICS đã mang đến nhiều thay đổi lớn cho điện thoại thông minh, kế thừa nhiều thiết kế từ phiên bản Honeycomb trước đó Những cải tiến nổi bật bao gồm các nút bấm ảo, sự chuyển đổi màu sắc từ xanh lá sang xanh da trời, hỗ trợ widget đa dạng hơn, tính năng đa nhiệm và một "action bar" được nâng cấp đáng kể.
GOOGLE PLAY VÀ VIMARKET
Android Market là kho phần mềm online do Google phát triển cho thiết bị Android, với khoảng 200.000 game, ứng dụng và widget vào tháng 12/2010 Đến tháng 4/2011, Google thông báo đã có hơn 3 tỷ ứng dụng Android được cài đặt, và con số này đã đạt 6 tỷ lượt cài vào cuối tháng 6/2011 Tính đến đầu tháng 1/2012, tổng số lượt tải đã vượt mốc 10 tỷ và theo ghi nhận của TechCrunch vào tháng 5/2012, con số này đã tăng lên 15 tỷ, với mức tăng trung bình một tỷ lượt tải mỗi tháng, thể hiện sự phát triển ấn tượng của nền tảng này.
Ngày 7 – 3 – 2012, Google chính thức đổi tên dịch vụ chia sẻ phần mềm cho hệ điều hành Android – Android Market sang tên Goolge Play Và Google cũng cho ra mắt ứng dụng Google Play Store nhằm hỗ trợ người dùng tốt hơn ngay trên Android. Với Google Play, người dùng có thể tìm, thưởng thức và chia sẻ những giai điệu âm nhạc, những bộ phim, những cuốn sách hay những ứng dụng ưa thích của mình trên nền web và trên điện thoại Android hay máy tính bảng Android.
Google Play là nền tảng dựa trên công nghệ điện toán đám mây, cho phép người dùng lưu trữ âm nhạc, phim ảnh, sách và ứng dụng trực tuyến, dễ dàng truy cập mọi lúc, mọi nơi mà không lo mất mát dữ liệu Người dùng có thể lưu trữ miễn phí đến 20.000 bài hát và mua hàng triệu ca khúc mới, tải về hơn 450.000 ứng dụng và trò chơi cho Android, khám phá kho sách điện tử lớn nhất thế giới, và thuê hàng trăm bộ phim yêu thích, bao gồm cả những bộ phim HD mới nhất.
2.4.2 Vimarket – chợ ứng dụng Android cho người Việt
Sau 3 tháng được tác giả Lê Văn Giáp miệt mài nghiên cứu và phát triển, Vimarket – sản phẩm chợ ứng dụng chạy trên điện thoại Android đầu tiên ở Việt Nam đã chính thức được giới thiệu tới cộng đồng vào ngày 12 tháng 4 năm 2011 Cuối
Vào năm 2011, Vimarket đã thu hút hơn 50.000 khách hàng với hơn 500 ứng dụng và game, cùng hàng chục nghìn lượt tải mỗi ngày Nền tảng này cung cấp hai phiên bản: phiên bản di động và phiên bản web.
Vimarket đã xóa bỏ rào cản ngôn ngữ với giao diện hoàn toàn bằng tiếng Việt, cung cấp chức năng tương đương với các sản phẩm quốc tế Người dùng có thể dễ dàng tìm kiếm, tải về, đánh giá và bình luận về các sản phẩm trên hệ thống Ứng dụng này được đánh giá cao nhờ giao diện thân thiện và khả năng phân loại rõ ràng, cho phép người dùng lựa chọn từ các tab như top ứng dụng tải nhiều, top ứng dụng được đánh giá cao, danh mục game và danh mục ứng dụng.
Vimarket cung cấp chức năng cho phép khách hàng đăng tải ứng dụng và game, giúp người dùng và doanh nghiệp quảng bá sản phẩm tới hàng triệu người qua vimarket.vn và ứng dụng Vimarket Bên cạnh đó, Vimarket còn hỗ trợ việc bán ứng dụng dễ dàng nhờ tích hợp nhiều cổng thanh toán như nganluong.vn, VTC Ebank, FPT gate, sohapay.vn và các phương thức thanh toán qua SMS, thẻ cào điện thoại.
THỊ PHẦN HỆ ĐIỀU HÀNH ANDROID
Hình 2.5: Thị phần hệ điều hành Smartphone
Theo đánh giá của công ty nghiên cứu Canalys trong Quý 2/2009, Android chiếm 2.8% thị phần smartphone toàn cầu Tỷ lệ này đã tăng 33% vào quý 4/2010, giúp Android trở thành hệ điều hành smartphone bán chạy nhất Đến đầu năm 2012, có đến 850.000 thiết bị Android được kích hoạt mỗi ngày, đánh dấu mức tăng trưởng 250% so với cùng kỳ năm trước.
2010 Theo ông Andy Rubin, phó chủ tịch bộ phận di động của Google, hiện trên thế giới có khoảng 300 triệu chiếc điện thoại Android đang sử dụng.
Theo báo cáo mới nhất từ Gartner Research, trong Quý 1/2012, hệ điều hành Android đã chiếm 56.1% thị phần nền tảng di động, tương đương với doanh số 81.1 triệu sản phẩm bán ra, và dự báo sẽ tiếp tục tăng trưởng mạnh trong thời gian tới.
Hình 2.6: Thị phần Android Quý 1 / 2012
CÁC THÀNH PHẦN CHÍNH CỦA MỘT ỨNG DỤNG ANDROID
Khái niệm Activity trong Android tương tự như Form trong C# hay VisualBasic, được sử dụng để hiển thị một màn hình trong ứng dụng Activity cho phép người dùng tương tác với ứng dụng, và mỗi khi khởi động một ứng dụng Android, một main Activity sẽ được gọi để hiển thị giao diện, từ đó người dùng có thể thực hiện các hành động như gọi điện, chụp ảnh, gửi email, hoặc xem bản đồ.
Mỗi activity trong ứng dụng Android được hiển thị trong một cửa sổ riêng, cho phép người dùng tương tác với giao diện Ứng dụng thường bao gồm nhiều activity, trong đó có những activity "chính" được hiển thị khi ứng dụng khởi động Các activity này có thể gọi nhau để thực hiện các hành động khác nhau Khi một activity mới được khởi động, các activity trước đó sẽ bị dừng lại, và Android quản lý chúng theo cơ chế stack (LIFO – Last in First out).
Hệ điều hành Android quản lý Activity theo cấu trúc stack, trong đó khi một Activity mới được khởi tạo, nó sẽ được đưa lên đầu stack và trở thành Activity đang chạy Các Activity trước đó sẽ bị tạm dừng và chỉ tiếp tục hoạt động khi Activity mới được giải phóng.
Hình 2.7: Biểu đồ mô tả trạng thái của Activity
Activity trong ứng dụng Android bao gồm bốn trạng thái chính: Được kích hoạt hoặc đang chạy (Active or running), khi người dùng tương tác trực tiếp với Activity hoặc nó ở đỉnh của Stack; Tạm dừng (Paused), khi Activity vẫn hiển thị nhưng không thể tương tác, thường xảy ra khi chuyển đổi giữa các Activity hoặc khi bộ nhớ máy hết; Dừng hẳn (Stop), khi Activity bị thay thế hoàn toàn bởi Activity mới; và Killed, khi hệ thống thiếu bộ nhớ và giải phóng các tiến trình theo nguyên tắc ưu tiên, khiến các Activity ở trạng thái dừng hoặc tạm dừng phải khởi động lại và phục hồi trạng thái trước đó khi được hiển thị lại.
Các phương thức của chu kỳ sống Activity: o Phương thức onCreate() Được gọi khi activity lần đầu tiên được tạo.
Phương thức này gửi qua một đối tượng Bundle chứa đựng từ trạng thái trước của Activity.
Luôn theo sau phương thức onSart() o Phương thức onStart() Được gọi khi một activity sẵn sàng đối với người dùng
Phương thức onResume() được gọi khi activity bắt đầu tương tác với người dùng, đánh dấu thời điểm activity ở trạng thái foreground và nằm trên đỉnh của stack activity Ngược lại, onStop() được gọi khi activity trở nên ẩn.
Phương thức onPause() được gọi khi activity hiện tại tạm dừng do người dùng tương tác với activity trước đó Tiếp theo là onStop(), được kích hoạt khi activity không còn sẵn sàng cho người dùng Nếu activity bị treo, onRestart() sẽ được gọi khi nó có thể tương tác trở lại, hoặc onDestroy() sẽ được thực thi nếu activity bị dừng Cuối cùng, onDestroy() được gọi khi activity bị hủy bởi hệ thống, nhằm giải phóng bộ nhớ.
The lifecycle of an Activity in Android consists of three key phases: the entire lifetime, which spans from the onCreate() method to onDestroy(); the visible lifetime, occurring between onStart() and onStop(); and the foreground lifetime, which is defined by the period from onResume() to onPause().
Khi phát triển Activity cho ứng dụng, cần phải ghi đè phương thức onCreate() để thực hiện quá trình khởi tạo Việc ghi đè các phương thức khác phụ thuộc vào yêu cầu cụ thể của ứng dụng.
Service được sử dụng khi ứng dụng cần thực hiện các tiến trình dài mà không cần tương tác với người dùng, cho phép chạy ngầm mà không có giao diện Nó được kế thừa từ lớp cha Service, giúp quản lý các tác vụ nền hiệu quả.
Hình 2.8: Vòng đời của Service
Một service cơ bản có thể có hai hình thức: o Started
Service được khởi động khi một thành phần ứng dụng, chẳng hạn như activity, gọi phương thức startService() Khi được khởi động, service có thể hoạt động trên nền tảng vô thời hạn, ngay cả khi các thành phần khởi động nó đã bị hủy Thông thường, service thực hiện một nhiệm vụ đơn lẻ mà không trả về kết quả cho thành phần gọi.
Ví dụ, nó có thể tải về hoặc tải lên một tập tin qua mạng Khi hoạt động được thực hiện, các service nên dừng lại bản thân. o Bound
Service được coi là "bound" khi một thành phần ứng dụng kết nối với nó thông qua phương thức bindService() Service ràng buộc cung cấp giao diện client-server, cho phép các thành phần tương tác, gửi yêu cầu và nhận kết quả, bao gồm cả việc giao tiếp qua InterProcess (IPC) Service này chỉ hoạt động khi có ít nhất một thành phần khác đang liên kết với nó Nhiều thành phần có thể kết nối với cùng một service, nhưng khi tất cả đều unbind, service sẽ bị hủy.
Trong vòng đời của một Service trong Android, có bốn phương thức chính mà hệ thống sẽ gọi Đầu tiên, phương thức onStartCommand() được gọi khi một component như activity yêu cầu khởi động service thông qua startService(), cho phép service chạy trong background vô thời hạn Thứ hai, onBind() được gọi khi một component muốn liên kết với service, thường để thực hiện Remote Procedure Call (RPC) qua bindService() Tiếp theo, onCreate() được gọi khi service được tạo lần đầu, thực hiện các thủ tục thiết lập một lần, nhưng không được gọi nếu service đã đang chạy Cuối cùng, onDestroy() được gọi khi service không còn được sử dụng và đang được phá hủy.
Content provider là một công cụ quản lý dữ liệu cho phép chia sẻ thông tin giữa các ứng dụng Nó thường được sử dụng để tạo cơ sở dữ liệu công khai, giúp các ứng dụng khác có thể truy cập dữ liệu Dữ liệu này thường được lưu trữ trong hệ thống tệp hoặc trong cơ sở dữ liệu SQLite Các loại dữ liệu như danh bạ, nhật ký cuộc gọi và cấu hình cài đặt trên điện thoại đều được quản lý thông qua Content Provider.
Content provider thiết lập một tập các phương thức chuẩn cho phép các ứng dụng khác truy xuất và lưu trữ dữ liệu Tuy nhiên, các ứng dụng không thể gọi trực tiếp các phương thức này mà phải sử dụng lớp Content Resolver Content Resolver có khả năng giao tiếp với nhiều content provider, giúp quản lý mọi giao tiếp nội bộ liên quan.
Theo Google, Intent được định nghĩa là một miêu tả về hoạt động cần thực hiện Nói một cách đơn giản, Intent là cơ chế truyền thông điệp giữa các thành phần trong một ứng dụng và giữa các ứng dụng với nhau.
LẬP TRÌNH ANDROID 24
TỔNG QUAN VỀ LẬP TRÌNH ANDROID
Môi trường lập trình Android phổ biến nhất hiện nay là sử dụng Eclipse kết hợp với Android Development Tool (ADT) Việc cài đặt môi trường lập trình là bước khởi đầu quan trọng để bắt đầu hành trình lập trình Android.
To get started with Android development, download and install the necessary tools: the Android SDK from http://dl.google.com/android/android-sdk_r16-windows.zip, Eclipse for Java Developers available at http://www.eclipse.org/downloads/, and the Android Development Tool (ADT) from http://dl.google.com/android/ADT-.
3.1.2 Cấu trúc của một Android project o Thư mục src chứa source code ứng dụng Gồm các package và các class. o Thư mục gen chứa các file tự động phát sinh (mà thường gặp nhất là R.class). o Thư mục res để chứa các resource dùng trong ứng dụng (thông qua ID). o Thư mục assets chứa các resource file mà ứng dụng cần dùng (dưới dạng file). o File Manifest là file khai báo thông tin về ứng với hệ thống (như ứng dụng gồm những màn hình nào, có service nào… xin các quyền gì, phiên bản bao nhiêu, dùng từ SDK phiên bản nào…)
Hình 3.1: Cấu trúc của một Android Project
ANDROID EMULATOR
Bộ Android SDK của Google bao gồm một mô phỏng thiết bị di động ảo (android emulator) hoạt động trên máy tính cá nhân, giúp bắt chước tất cả các đặc tính phần cứng và phần mềm của thiết bị thật, ngoại trừ việc không thực hiện được cuộc gọi thực Mô phỏng này cho phép người dùng tương tác qua chuột hoặc bàn phím, cung cấp màn hình hiển thị ứng dụng cùng với các ứng dụng Android khác Để dễ dàng kiểm tra ứng dụng, emulator có một phần thiết lập cấu hình gọi là Android Virtual Device (AVD), cho phép thay đổi cấu hình phần cứng nhằm thử nghiệm trên nhiều thiết bị khác nhau.
Emulator cũng đi kèm nhiều tiện ích để debug như console để log output của ứng dụng ra ngoài, mô phỏng việc gửi SMS hoặc gọi điện thoại.
Android emulator là ứng dụng dựa trên QEMU, cho phép người dùng chạy ứng dụng Android trên thiết bị di động ảo ARM Người dùng có thể tùy chỉnh phiên bản hệ thống Android thông qua việc thiết lập AVD, cũng như điều chỉnh giao diện và cấu hình phím Khi sử dụng emulator, có thể áp dụng các lệnh khác nhau để điều khiển hành vi của nó trong quá trình thực thi.
Android Emulator là công cụ mô phỏng thiết bị thật, giúp đảm bảo tính chính xác khi kiểm tra ứng dụng Để trải nghiệm tốt nhất với các ứng dụng đồ họa cao như game và hiệu ứng hình ảnh, việc sử dụng thiết bị thật là lựa chọn tối ưu Emulator hỗ trợ thử nghiệm trên nhiều cấu hình khác nhau thông qua các AVDs.
HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU SQLITE
3.2.1 Tìm hiểu chung về SQLite
SQLite là một phần mềm quản lý cơ sở dữ liệu gọn nhẹ và tự chứa, được tích hợp sẵn trong hệ điều hành Android mà không cần cài đặt hay cấu hình Nó hỗ trợ chức năng của cơ sở dữ liệu đơn và không yêu cầu user, password hay quyền hạn SQLite được phát triển bởi Richard Hipp và nhận tài trợ từ các công ty lớn như Adobe, Oracle, Bloomberg, và Mozilla Thông tin chi tiết có thể được tìm thấy tại trang web chính thức của SQLite: http://www.sqlite.org.
SQLite là một hệ quản trị cơ sở dữ liệu nhỏ gọn, chỉ chiếm dưới 400KB và tiêu tốn rất ít bộ nhớ Vì vậy, nó là sự lựa chọn lý tưởng cho việc quản lý cơ sở dữ liệu trên các thiết bị di động như Android và iOS.
3.2.2 Các ưu điểm của SQLite o Tính toàn vẹn: đảm bảo dữ liệu được chuyển đổi đầy đủ, không gây ra mất mát dữ liệu khi có lỗi phần cứng. o Cấu trúc gọn nhẹ, không cần cài đặt cấu hình. o Các thao tác đơn giản sẽ nhanh hơn hệ thống server. o Mã nguồn mở. o Trong Android, chúng ta không cần cài đặt nhiều, chỉ cần cung cấp các hàm để thao tác và chương trình sẽ quản lí phần còn lại.
Trong hệ điều hành Android, SQLite hoạt động như một dịch vụ của hệ thống, khác với các hệ quản trị cơ sở dữ liệu như SQL Server hay MySQL Mỗi cơ sở dữ liệu ứng dụng chỉ có thể được truy cập bởi ứng dụng đó Để chia sẻ dữ liệu với các ứng dụng khác, người dùng có thể sử dụng Content Provider.
Khi tạo cơ sở dữ liệu thì dữ liệu sẽ được trong
DATA/data/APP_NAME/databases/FILENAME
Trong đó: o Data: lấy hàm Environment.getDataDirectory() để lấy kết quả (thông thường là trên thẻ nhớ) o APP_NAME: tên ứng dụng. o FILENAME: tên lúc tạo.
Cơ sở dữ liệu do SQLite tạo ra sẽ private, tức là chỉ sử dụng cho bản thân ứng dụng.
3.2.4 Tạo, truy vấn và thao tác trong Android SQLite
3.2.4.1 Tạo cơ sở dữ liệu Để tạo hoặc upgrade một cơ sở dữ liệu trong ứng dụng Android, chúng ta thường thừa kế lớp SQLiteOpenHelper, lớp này nằm trong gói android.database Sau đó chúng ta override các phương thức onCreate() và onUpgrade(): o onCreate(): Được gọi khi database được tao ra Trong phương thức này ta tạo table, trigger, view. o onUpgrade(): Để upgrade cơ sở dữ liệu trong trường hợp cần thay đổi mô hình cơ sở dữ liệu như alter table, drop table, tạo mới table.
Cả hai phương thức này đều có đối số là một đối tượng của lớp
SQLiteOpenHelper cung cấp phương thức “getReadableDatabase()” và
Hàm “getWriteableDatabase()” cho phép người dùng truy cập vào một đối tượng của lớp “SQLiteDatabase”, cung cấp khả năng truy cập cơ sở dữ liệu với chế độ đọc hoặc ghi.
Phương thức onCreate() chỉ được một lần, khi database chưa được tạo ra. Những lần chạy ứng dụng sau, phương thức này không được gọi lại nữa.
3.2.4.2 Truy vấn và thao tác trong Android SQLite Để truy vấn và thao tác trong cơ sở dữ liệu, chúng ta sử dụng lớp SQLiteDatabase và giao diện Cursor Cả hai đều nằm trong gói android.database.
Class “SQLiteDatabase” cung cấp các phương thức quan trọng cho việc quản lý cơ sở dữ liệu, bao gồm các chức năng như tạo, xóa và thực thi câu lệnh SQL Một số phương thức cụ thể bao gồm insert() để thêm hàng vào bảng, update() để thay đổi giá trị của hàng, delete() để xóa một hoặc nhiều hàng, execSQL() để thực thi câu lệnh SQL không trả về dữ liệu, và query() cùng rawQuery() để thực hiện truy vấn cơ sở dữ liệu.
Phương thức “rawQuery()” sử dụng câu truy vấn SQL trực tiếp, trong khi “query()” cung cấp giao diện cho truy vấn động khi chưa xác định các cột cần truy vấn Cả hai phương thức này đều trả về đối tượng Cursor, đại diện cho kết quả truy vấn vào cơ sở dữ liệu, và cung cấp các phương thức cho việc đọc hoặc viết ngẫu nhiên từ kết quả truy vấn.
3.2.5 Sao chép, sử dụng cơ sở dữ liệu có sẵn trong ứng dụng Android
Sao chép tệp cơ sở dữ liệu vào thư mục “assets” trong dự án ứng dụng, sau đó tạo lớp DatabaseHelper kế thừa từ SQLiteOpenHelper trong gói “android.database.sqlite” Lớp này sẽ có các phương thức tương tự, nhưng thay vì tạo cơ sở dữ liệu trong hàm onCreate(), chúng ta sẽ thêm phương thức createDataBase() để sao chép tệp cơ sở dữ liệu từ thư mục “assets” vào thư mục chứa cơ sở dữ liệu của ứng dụng.
LẬP TRÌNH ANDROID
3.3.1 Các thành phần giao diện
Trong ứng dụng Android, giao diện người dùng được tạo thành từ các đối tượng View và ViewGroup, với nhiều loại khác nhau Mỗi loại View và ViewGroup là một thể hiện của lớp View, được gọi chung là các Widget Tất cả các Widget này đều sở hữu các thuộc tính cơ bản giống nhau như cách trình bày vị trí, nền, kích thước và lề.
ViewGroup là một thành phần trong Android, thực chất là các widget Layout dùng để sắp xếp các đối tượng khác trên màn hình Có nhiều loại ViewGroup khác nhau, mỗi loại phục vụ cho các mục đích bố trí khác nhau.
LinearLayout là một công cụ hữu ích trong việc sắp xếp các thành phần giao diện theo chiều ngang hoặc dọc trên một dòng duy nhất mà không cần xuống dòng Nó giúp các thành phần bên trong không bị ảnh hưởng bởi kích thước màn hình, đồng thời cho phép chúng được phân bố một cách cân xứng dựa trên các ràng buộc giữa các thành phần.
FrameLayout là một kiểu bố trí cho phép sắp xếp các đối tượng giống như các lớp trong Photoshop, trong đó các đối tượng thuộc lớp dưới sẽ bị che khuất bởi các đối tượng ở lớp trên Kiểu bố trí này thường được sử dụng để tạo ra các đối tượng có khung hình bên ngoài, chẳng hạn như nút hình ảnh liên hệ.
AbsoluteLayout là một kiểu bố trí cho phép sắp xếp các widget tại vị trí tùy ý dựa trên tọa độ x, y Tuy nhiên, loại layout này ít được sử dụng do các đối tượng có vị trí cố định và không tự điều chỉnh khoảng cách giữa chúng Khi ứng dụng được chuyển sang màn hình có kích thước khác với thiết kế ban đầu, vị trí của các đối tượng sẽ không còn chính xác như trước.
RetaliveLayout cho phép bố trí widget theo trục đối xứng ngang hoặc dọc bằng cách xác định mối ràng buộc giữa các widget Các ràng buộc này bao gồm vị trí trái, phải, trên và dưới so với widget khác hoặc layout cha Nhờ vào các mối ràng buộc này, RetaliveLayout không phụ thuộc vào kích thước màn hình thiết bị, giúp tiết kiệm tài nguyên và tăng tốc độ xử lý khi tải layout.
TableLayout là một công cụ hữu ích cho việc thiết kế bảng dữ liệu hoặc sắp xếp các widget theo hàng và cột Nó thường được sử dụng trong các giao diện như máy tính đơn giản hoặc danh sách dữ liệu, giúp tổ chức thông tin một cách rõ ràng và dễ dàng truy cập.
Hiển thị 1 nút nhấn; được dùng nhiều nhất trong hầu hết các ứng dụng Android.
3.3.2.2 ImageView Được dùng để thể hiện một hình ảnh, giống như ImageButton nhưng không có hình dáng của một Button
Để hiển thị một danh sách thông tin trên màn hình, cần có ba yếu tố chính: đầu tiên là Data Source, có thể là ArrayList, HashMap hoặc bất kỳ cấu trúc dữ liệu nào dạng danh sách; thứ hai là Adapter, lớp trung gian giúp ánh xạ dữ liệu từ Data Source vào vị trí hiển thị trong ListView; và cuối cùng là ListView, đối tượng dùng để trình bày thông tin một cách trực quan và cho phép người dùng thao tác trực tiếp.
TextView không chỉ hiển thị văn bản mà còn cho phép định dạng nội dung bằng thẻ HTML Người dùng có thể định dạng nội dung của TextView trực tiếp trong XML bằng cách sử dụng các thẻ HTML.
3.3.2.5 EditText Được sử dụng như một TextField hoặc một TextBox
Khi sử dụng EditText trong Android, có một số thuộc tính quan trọng cần chú ý Đầu tiên, thuộc tính android:inputType giúp xác định phương thức nhập liệu cho EditText, ví dụ như để nhập mật khẩu hoặc địa chỉ email Thứ hai, thuộc tính android:singleLine với giá trị "true" sẽ biến EditText thành một TextField, trong khi nếu không có thuộc tính này, nó sẽ hoạt động như một TextBox.
Nhận 2 giá trị true hoặc false Đối tượng CheckBox cho phép chọn nhiều item cùng một lúc
3.3.2.7 ContextMenu Được sử dụng để hiển thị các tuỳ chọn khi người dùng nhấn dài vào một dòng nào đó trong ListView
Khuôn khổ tìm kiếm mới trên hệ thống Android cho phép người dùng nhanh chóng tìm kiếm mọi thứ có trên điện thoại của họ cũng như các tài nguyên trực tuyến Tính năng này hiển thị kết quả tìm kiếm ngay khi người dùng bắt đầu gõ, mang lại trải nghiệm tìm kiếm mượt mà và hiệu quả.
GOOGLE MAPS API
3.4.1 Tổng quan về Goolge Maps API
MapView là một điều khiển trong các ứng dụng Android, cho phép hiển thị bản đồ thông qua Google Maps API Nó cung cấp giao diện tương tác với bản đồ, cho phép người dùng di chuyển và thu nhỏ giống như trên phiên bản web của Google Maps Ngoài ra, MapView cũng hỗ trợ nhiều chế độ hiển thị tiêu chuẩn của Google Maps, bao gồm chế độ vệ tinh, chế độ đường phố và chế độ giao thông.
3.4.1.1 Đăng kí và lấy key Google Maps API
MapView là một điều khiển hữu ích cho việc hiển thị bản đồ một cách dễ dàng Để sử dụng Google Maps API trong ứng dụng, bạn cần đăng ký một key miễn phí từ Google Các bước để đăng ký bao gồm việc lấy mã MD5 fingerprint code.
- Lấy đường dẫn của debug.keystore Eclipse -> Windows -> Preferences ->Android -> Build để lấy đường dẫn như bên dưới:
Hình 3.3: Lấy đường dẫn keystore
- Sau khi lấy được debug.keystore, bật cmd lên và chạy command sau để lấy MD5 fingerprint code:
Mã: keytool -list -alias androiddebugkey -keystore .keystore - storepass android -keypass android
Keytool.exe -v -list -alias androiddebugkey -keystore C:\Documents and Settings\ Namkute\.android\debug.keystore -storepass android -keypass android
Như trên thì MD5 fingerprint code là :
Mã: 40:A2:85:10:F4:B5:4E:52:A8:C4:F3:B0:47:0C:8C:4B o Bước 2: Lấy key Google Maps API:
To access the Google Maps API, visit the following link: http://code.google.com/android/maps-api-signup.html Enter your MD5 fingerprint code and click on "Generate API key." The site will automatically generate a key for you.
Hình 3.5: Key Google Maps API 3.4.2 Hiển thị bản đồ và các điều khiển trong Map View
3.4.2.1 Hiển thị bản đồ Để hiển thị bản đồ ta cần làm 2 việc chính sau:
To modify the AndroidManifest.xml file, add the element to declare the use of the "com.google.android.maps" library, and include the necessary Internet access permission within the element.
- Thêm thành phần Map View vào giao diện chương trình, để hiển thị bản đồ.
3.4.2.2 Một số tùy chỉnh với MapView Để thay đổi các chế độ hiển thị khác nhau trên MapView, ta có thể dùng các hàm: setSatellite(): hiển thị chế độ vệ tinh
setStreetView(): hiển thị chế độ đường phố (hiện nay chỉ hỗ trợ một số nước) setTraffic(): hiển thị chế độ giao thông.
Lớp MapController cho phép người dùng điều hướng đến vị trí cụ thể trên bản đồ thông qua hàm animateTo(), đồng thời có thể thiết lập mức độ phóng đại (zoom) tối đa lên đến 21 bằng hàm setZoom().
Hình 3.6: Hiển thị map view và các điều khiển 3.4.3 Mô phỏng GPS trên Android Emulator
Khi làm việc với Location & Maps trên Android, để lấy vị trí GPS hiện tại của thiết bị, bạn cần lưu ý rằng Emulator không hỗ trợ tính năng này Thay vào đó, Emulator cho phép bạn thay đổi vĩ độ và kinh độ để dễ dàng kiểm tra Để thực hiện việc này, bạn có thể làm theo hai cách, nhưng cần đảm bảo rằng Emulator đã được mở trước khi thực hiện.
Cách 1: Dùng tools trong Android SDK hỗ trợ chúng ta.
- Mở màn hình dos lên Start -> gõ cmd.
- Chuyển đường dẫn đến thư mục tools nằm trong android sdk.
VD: D:\Eclipse\android-sdk-windows\tools\ (Thư mục để ở ổ D).
Chạy lệnh ddms.bat để hiển thị cửa sổ Dalvik Debug Monitor Trong tab Emulator Control, mục Location Controls cho phép người dùng thay đổi thông số GPS Location của Emulator.
Để cập nhật vị trí cho Emulator trong Eclipse, hãy chọn DDMS ở góc phải, sau đó chuyển sang cửa sổ khác Tại đây, bạn sẽ thấy mục điều khiển Emulator, nơi bạn có thể nhập kinh độ và vĩ độ Sau khi nhập xong, nhấn nút "send" để thiết bị giả lập cập nhật vị trí thành công.
Hình3.7 Lấy tọa độ trên thiết bị mô phỏng
CHƯƠNG IV: XÂY DỰNG ỨNG DỤNG
PHÂN TÍCH YÊU CẦU
Nhận thấy nhu cầu du lịch tăng cao của người dân và du khách quốc tế đến Việt Nam, tôi đã quyết định phát triển ứng dụng VietTour Ứng dụng này hỗ trợ người dùng trong việc khám phá và lên kế hoạch cho chuyến đi thông qua việc tích hợp bản đồ số Google Map, đồng thời giúp tôi hiểu rõ hơn về hệ điều hành Android và lập trình trên nền tảng này.
Ứng dụng này nhằm cung cấp thông tin chi tiết về các địa danh du lịch tại Việt Nam, tuy nhiên chỉ tương thích với điện thoại sử dụng hệ điều hành Android Với việc áp dụng công nghệ tiên tiến nhất, ứng dụng được tối ưu hóa cho các thiết bị di động, đảm bảo đáp ứng đầy đủ các yêu cầu khắt khe của ứng dụng không dây.
Người dùng điện thoại Android có thể dễ dàng tải ứng dụng từ Google Play hoặc ViMarket, sau đó ứng dụng sẽ tự động cài đặt và sẵn sàng sử dụng ngay lập tức Tuy nhiên, để sử dụng ứng dụng, người dùng cần có kết nối internet.
PHÂN TÍCH CHỨC NĂNG
Ứng dụng VietTour - ứng dụng hỗ trợ những người đi du lịch, được xây dựng cho điện thoại Android có các chức năng chính sau:
Danh sách các địa điểm du lịch nổi tiếng của Việt Nam được hiển thị với hình ảnh đại diện, tên địa danh và mô tả chung về từng địa điểm Những thông tin này giúp du khách dễ dàng tìm hiểu và lựa chọn điểm đến phù hợp cho chuyến hành trình khám phá vẻ đẹp văn hóa và thiên nhiên của đất nước.
Khi người dùng nhấp vào một địa danh trong danh sách, ứng dụng sẽ hiển thị màn hình thông tin chi tiết về địa danh đó, bao gồm tên, ảnh đại diện và mô tả chi tiết Bên cạnh đó, sẽ có một nút để thực hiện các thao tác tiếp theo.
“Dẫn đường” để nếu người dùng có yêu cầu dẫn đường thì ứng dụng sẽ chỉ đường cho người dùng
Khi người dùng nhấn nút “Dẫn đường”, ứng dụng sẽ xác định vị trí hiện tại của họ và hướng dẫn họ đến địa điểm mong muốn Kết quả sẽ được hiển thị trực tiếp trên bản đồ, giúp người dùng dễ dàng theo dõi và sử dụng.
- Cho phép người dùng cập nhật thêm địa danh mới.
THIẾT KẾ GIAO DIỆN ỨNG DỤNG
- Màn hình giao diện chính của ứng dụng Địa danh của chương trình (Button) Địa danh của tôi
(Button) Thêm địa danh mới
Hình 4.1: Thiết kế màn hình giao diện ứng dụng
- Màn hình danh sách các địa danh du lịch Ảnh địa danh 1 Tên địa danh 1
Thông tin mô tả chung địa danh 1 Ảnh địa danh 2 Tên địa danh 2
Thông tin mô tả chung địa danh 2
Ảnh địa danh n Tên địa danh n
Thông tin mô tả chung địa danh n
Hình 4.2: Thiết kế màn hình hiển thị danh sách các Địa danh
- Màn hình chi tiết một địa danh (Khi người dùng chạm vào một địa danh bất kỳ)
Mô tả chi tiết về địa danh(TextView)
Hình 4.3: Màn hình hiển thị chi tiết một địa danh
- Màn hình dẫn đường – kết quả hiển thị trên bản đồ: Kết quả hiển thị trực tiếp trên MapView với sự hỗ trợ của Google.
- Màn hình người dùng thêm địa danh mới:
Bước 1: Nhập thông tin cơ bản (TextView) Tên địa danh muốn lưu (EditText) Thông tin cơ bản về địa danh (EditText)
Mô tả chi tiết về địa danh (EditText)
Hình 4.4: Màn hình thêm địa danh mới (bước 1)
Bước 2: Chọn ảnh đại diện cho địa danh
(TextView) Ảnh được chọn (bitmap)
Danh sách ảnh từ thẻ nhớ
Hình 4.5: Màn hình thêm địa danh mới (bước 2)
Sau khi ứng dụng tự động cập nhật toạ độ, địa danh sẽ được lưu vào danh sách “Địa danh của tôi”
XÂY DỰNG CHỨC NĂNG
Hình 4.6: Sơ đồ hoạt động của ứng dụng
Khi người dùng mở ứng dụng, giao diện chính của chương trình được hiển thị, cho phép người dùng có những lựa chọn:
- Xem danh sách các địa danh mặc định (địa danh sẵn có của ứng dụng).
- Xem danh sách các địa danh trong “Địa danh của tôi” – những địa danh người dùng đã thêm trong những lần chạy ứng dụng trước đó.
- Thêm địa danh mới vào “Địa danh của tôi”.
Khi duyệt qua danh sách các địa danh, người dùng chỉ cần chạm vào địa điểm mong muốn để xem thông tin chi tiết Sau đó, có thể chọn tính năng dẫn đường để hiển thị lộ trình từ vị trí hiện tại đến địa danh đã chọn.
Thêm địa danh mới rất đơn giản: chỉ cần chọn menu, nhập thông tin chi tiết và lưu vào "địa danh của tôi" Trong những lần sử dụng tiếp theo, người dùng có thể dễ dàng xem thông tin về địa danh và hướng dẫn đường đi đến địa điểm đó.
4.4.1 Chức năng hiển thị danh sách các địa danh mặc định
Khi người dùng lần đầu tiên khởi động ứng dụng, nó sẽ tự động tải ảnh đại diện từ một địa chỉ cụ thể và lưu vào thư mục VietTour trên thẻ nhớ điện thoại Trong các lần khởi động sau, quá trình tải ảnh sẽ không diễn ra nữa Tuy nhiên, nếu người dùng xóa thư mục hoặc các tệp tin này, ứng dụng sẽ tự động tải lại chúng khi khởi động.
Adapter được sử dụng để truyền tải dữ liệu như tên, ảnh đại diện, mô tả chung và mô tả chi tiết của các địa danh, nhằm hiển thị chúng trong một ListView.
4.4.2 Chức năng hiển thị thông tin chi tiết một địa danh bất kỳ
Khi người dùng chọn một địa danh từ danh sách, ứng dụng sẽ chuyển hướng đến màn hình hiển thị thông tin chi tiết về địa danh đó Việc sử dụng Intent giúp kết nối hai Activity, VietTour và ChiTiet, một cách hiệu quả.
4.4.3 Chức năng dẫn đường từ vị trí người dùng đến địa danh
Lập các class để lưu lại đường đi: Point, Road
Lớp KMLHandler được tạo ra bằng cách kế thừa từ lớp DefaultHandler, có nhiệm vụ gửi thông tin truy vấn dẫn đường giữa hai điểm đến GoogleMap Dữ liệu trả về sẽ là một file XML chứa thông tin chi tiết về lộ trình từ hai địa chỉ đã chỉ định.
Xử lý và bóc tách dữ liệu từ file XML để trích xuất tập điểm cần đi qua trên bản đồ, sau đó nối các điểm này lại với nhau trên bản đồ.
4.4.4 Chức năng thêm địa danh mới từ người dùng
Trên giao diện chính của ứng dụng, người dùng có thể chọn “Thêm địa danh” để nhập thông tin cần thiết và chọn ảnh đại diện cho địa danh Ứng dụng sẽ hỗ trợ xác định vị trí bằng cách cho phép người dùng di chuyển điểm đánh dấu đến đúng địa danh Sau khi hoàn tất, thông tin địa danh sẽ được lưu vào cơ sở dữ liệu.
THIẾT KẾ CƠ SỞ DỮ LIỆU CHO ỨNG DỤNG
Cơ sở dữ liệu của ứng dụng bao gồm bảng "place", lưu trữ thông tin chi tiết về các địa danh Thiết kế của cơ sở dữ liệu được tối ưu hóa để đảm bảo tính đơn giản, phù hợp với nhu cầu của ứng dụng và hỗ trợ truy cập dữ liệu nhanh chóng.
STT Tên trường Kiểu dữ liệu Ràng buộc Mô tả
1 _id integer Khoá chính, autoincreament
2 name String Not null Tên địa danh
3 title String Not null Mô tả chung
4 description String Not null Mô tả chi tiết
5 latitude String Not null Vĩ độ
6 longitude String Not null Kinh độ
7 imgID String Not null Ảnh đại diện
Hình 4.7: Cơ sở dữ liệu cho ứng dụng
TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ
Sau khi ứng dụng Viet Tour hoàn thành, tiến hành kiểm thử trên giả lập Android Emulator ta được kết quả sau:
4.6.1 Chức năng hiển thị danh sách các Địa danh
- Màn hình chính khi bắt đầu chạy ứng dụng:
Hình 4.8: Màn hình giao diện chính
- Danh sách các địa danh nổi tiếng tại Việt Nam:
Hình 4.9: Danh sách các địa danh du lịch của Việt Nam 4.6.2 Chức năng xem chi tiết một địa danh bất kỳ
- Khi chạm vào một địa danh bất kỳ:
Hình 4.10: Chi tiết địa danh Hồ Gươm
4.6.3 Chức năng Dẫn đường đến địa danh
- Khi muốn được chỉ đường đến địa danh, chạm vào nút “Dẫn đường”
Hình 4.11: Dẫn đường từ vị trí người dùng đến Hồ Gươm 4.6.4 Chức năng thêm địa danh mới từ người dùng
Khi chức năng thêm địa danh mới được chọn, người dùng tiến hành nhập các thông tin cho Địa danh
Hình 4.12: Thêm thông tin cho Địa danh
Hình 4.13: Chọn ảnh đại diện cho Địa danh
Hình 4.14: Dẫn đường đến địa danh của tôi
Khoá luận này cung cấp cái nhìn tổng quan về hệ điều hành Android, là nền tảng lý tưởng cho những người mới bắt đầu lập trình Qua quá trình thực hiện khoá luận, em đã tích lũy được nhiều kiến thức, nâng cao kinh nghiệm thực tế và hiểu biết sâu sắc hơn về hệ điều hành Android cũng như lập trình trên nền tảng này.
Hệ điều hành Android, một nền tảng mã nguồn mở đang phát triển nhanh chóng trên toàn cầu, cung cấp cho người dùng những tính năng vượt trội Đặc điểm nổi bật của Android là tính mở, cho phép các nhà sản xuất tùy chỉnh giao diện theo nhu cầu của từng người dùng Hơn nữa, Android còn tích hợp đầy đủ các dịch vụ hỗ trợ từ Google như Gmail, Google Talk và Google Calendar, giúp nâng cao trải nghiệm người dùng so với các hệ điều hành di động khác.
Understanding how to create interfaces using Android's provided tools and customizing these tools is essential Key layouts include Linear Layout and Relative Layout, while important controls consist of ListView, Button, and ImageView.
Tìm hiểu và thực hành lập trình với Emulator Android trên PC giúp bạn phát triển những chương trình nhỏ đầu tiên Sử dụng Eclipse và SDK do Google cung cấp sẽ hỗ trợ bạn trong quá trình này.
- Tìm hiểu kiến trúc hệ điều hành Android, các thành phần quan trọng cơ bản như: Activity, Intent, Broadcast Resever, Content Provider, MapView, Geocoder, Services…
- Lập trình được ứng dụng đầu tiên: ứng dụng VietTour Qua đó hiểu được một cách đầy đủ nhất về lập trình trên hệ điều hành Android.
Để cải thiện ứng dụng, cần cập nhật thêm nhiều địa danh nhằm mở rộng cơ sở dữ liệu, hiện tại vẫn còn hạn chế do thời gian Bên cạnh đó, ứng dụng cần được tối ưu hóa để nâng cao hiệu suất hoạt động Cuối cùng, một số màn hình giao diện cần được thiết kế lại với màu sắc hấp dẫn hơn để thu hút người dùng.