TÌM HIỂU HỆ ĐIỀU HÀNH ANDROID TẠI CÔNG TY TNHH KIẾN VIỆT
Trang 1Trường Đại học Bách Khoa Tp HCM
Khoa Điện- Điện tử
Bộ môn Điện Tử
-o0o -
Cộng Hoà Xã Hội Chủ Nghĩa Việt Nam Độc lập – Tự do – Hạnh phúc -o0o -
THỰC TẬP TỐT NGHIỆP
Họ và tên: Nguyễn Hoàng Sang MSSV: 40902228 Nông Văn Hiếu MSSV: 40900822 Lớp DD09KSVT Ngành: Điện tử- Viễn thông 1.1 ĐẦU ĐỀ ĐỒ ÁN TÌM HỆ ĐIỀU HÀNH ANDROID TẠI CÔNG TY TNHH KIẾN VIỆT 1.2 NHIỆM VỤ - Tìm hiểu kiến trúc HDH Android, môi trường hoạt động - Lập trình Android trên thiết bị di động - Giao tiếp giữa thiết bị Android và MCU định hướng phát triển luận văn 1 Ngày giao nhiệm vụ :
2 Ngày hoàn thành nhiệm vụ:
3 Họ và tên giáo viên hướng dẫn: ThS BÙI QUỐC BẢO 4 Tên công ty thực tập: CÔNG TY TNHH KIẾN VIỆT Nội dung và yêu cầu ĐA đã thông qua Bộ môn Ngày tháng năm
CHỦ NHIỆM BỘ MÔN GIÁO VIÊN HƯỚNG DẪN PHẦN DÀNH CHO KHOA, BỘ MÔN Người duyệt (chấm sơ bộ):
Đơn vị:
Ngày bảo vệ:
Điểm tổng kết:
Trang 2NHẬN XÉT CỦA CÔNG TY THỰC TẬP
Ngày tháng năm Giám đốc (đại diện)
Trang 3NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Trang 4
LỜI CẢM ƠN
Qua một thời gian nghiên cứu và thực hiện, đến nay chúng em đã hoàn thành
chương trình thực tập với đề tài: “Tìm hiểu HDH Android tại công ty Kiến Việt” do
thầy Bùi Quốc Bảo hướng dẫn Trong suốt thời gian nghiên cứu và thực hiện đề tài, em
đã gặp không ít khó khăn và đã nhận được sự giúp đỡ nhiệt tình và quý báu của thầy và các kĩ sư bên công ty Kiến Việt
Trước tiên, chúng em gửi lời cảm ơn sâu sắc tới thầy Bùi Quốc Bảo đã tin tưởng giới thiệu em với CTY KIẾN VIỆT để thực tập Chúng em cũng xin được gửi lời cảm
ơn chân thành tới các các anh kĩ sư bên CTY KIẾN VIỆT đã tạo điều kiện thuận lợi để chúng em hoàn thành đúng tiến độ chương trình thực tập
Do năng lực và thời gian còn hạn chế nên việc tìm thêm nhiều tài liệu cho quá trình tìm hiểu và nghiên cứu còn thiếu sót Em rất mong nhận được nhiều hơn nữa ý kiến đóng góp của các thầy, sự chia sẻ tài liệu của các bạn sinh viên để chúng em có thể hoàn thiện kiến thức của mình hơn
Em xin chân thành cảm ơn!
Trang 5Mục Lục
Mục Lục 5
Danh sách hình vẽ 8
1 CHƯƠNG 1: TỔNG QUAN 9
1.1 Lịch sử hình thành 9
1.1.1 Lịch sử hình thành 9
1.1.2 Hướng phát triển trong tương lai 11
1.2 Môi trường cài đặt 12
1.2.1 Giới thiệu một số gói cần thiết 12
1.2.2 Làm quen với IDE 15
1.3 Các thành phần cơ bản của một ứng dụng Android 18
1.3.1 Activity 18
1.3.2 Service 20
1.3.3 ContentProvider 20
1.3.4 Broadcast Receiver 20
2 CHƯƠNG 2: XÂY DỰNG GUI 22
2.1 Layouts 24
2.1.1 FrameLayout 25
2.1.2 LinearLayout 26
2.1.3 RelativeLayout 27
2.1.4 TableLayout 28
2.1.5 AbsoluteLayout 28
Trang 62.2.4 Radio Button 33
2.2.5 Toast Notification và Alert Dialog 34
2.3 ListView 35
2.3.1 ListView với mảng dữ liệu định sẵn 35
2.3.2 ListView với ArrayList 37
2.3.3 CustomListview 39
3 CHƯƠNG 3: XÂY DỰNG ỨNG DỤNG GTALK 42
3.1 Giới thiệu 42
3.1.1 Kiến trúc XMPP(Extensible Messaging and Presence Protocol) 42
3.1.2 Address trong XMPP 43
3.1.3 XMPP protocol 43
3.1.4 Giới thiệu về gói thư viện asmack.jar 44
3.2 Xây dựng project XMPPChatDemo 44
3.2.1 Code 44
3.2.2 Demo 50
4 CHƯƠNG 4: XÂY DỰNG ỨNG DỤNG STREAM AUDIO VÀ VIDEO 54
4.1 Giới thiệu về Audio trên Android 54
4.1.1 Định dạng hỗ trợ Audio 54
4.1.2 Khởi chạy Audio thông qua Intent 54
4.1.3 Xây dựng một ứng dụng Audio 56
4.2 Background and Networked Audio 59
4.2.1 Background Audio Playback 59
4.2.2 Networked Audio 59
4.3 Giới thiệu về Video playback 66
4.3.1 Định dạng hỗ trợ của Android 66
4.3.2 Cách mở một tập tin video lưu trữ trong SD card 66
Trang 74.3.3 Network video 66
4.3.4 Giao thức hỗ trợ HTTP và RTSP 67
4.3.5 Giao thức hỗ trợ HTTP và RTSP 68
5 CHƯƠNG 5: KẾT QUẢ ĐẠT ĐƯỢC VÀ ĐÁNH GIÁ HƯỚNG LUẬN VĂN 75
5.1 Kết quả đạt được 75
5.2 Hướng phát triển luận văn 75
Trang 8Danh sách hình vẽ
Hình 1.1.1 Tỉ lệ sử dụng các phiên bản Android 11
Hình 1.1.2 Biểu đồ thể hiện thị phần của Android 11
Hình 1.2.1 Download JDK 12
Hình 1.2.2 Download ADT cho windown 13
Hình 1.2.3 Install Android SDK 14
Hình 1.2.4 Cấu trúc cây thư mục của một ứng dụng 15
Hình 1.2.5 Vùng thao tác với layout 15
Hình 1.2.6 Tạo máy ảo AVD device 16
Hình 1.2.7 Máy ảo AVD bản 4.2.2 17
Hình 1.2.8 Giao diện DDMS 17
Hình 1.2.9 Activity lifecycle 19
Trang 92 là BB os với 28% và iOS ở vị trí thứ 3 với 22% Android có một cộng đồng những nhà phát triển rất lớn viết các ứng dụng cho hệ điều hành của mình Hiện tại có khoảng 1000,000 ứng dụng cho Android OS và vào khoảng 1000,000 ứng dụng đã được đệ trình, điều này khiến Android trở thành hệ điều hành di động có môi trường phát triển lớn thứ 2 Các nhà phát triển viết ứng dụng cho Android dựa trên ngôn ngữ Java Sự ra mắt của Android vào ngày 5 tháng 11 năm 2007 gắn với sự thành lập của liên minh thiết bị cầm tay mã nguồn mở, bao gồm 78 công ty phần cứng, phần mềm và viễn thông nhằm mục đính tạo nên một chuẩn mở cho điện thoại di động trong tương lai Google công bố hầu hết các mã nguồn của Android theo bản cấp phép Apache Hệ điều hành Android bao gồm
12 triệu dòng mã; 3 triệu dòng XML, 2.8 triệu dòng mã C, 2.1 triệu mã JAVA và 1.75 triệu dòng mã C++.Chi tiết lịch sử phát triển như sau:
Tháng 7 năm 2005, Google mua lại Android, Inc., một công ty nhỏ mới thành lập có trụ sở ở Palo Alto , California , Mỹ Những nhà đồng sáng lập của Android chuyển sang làm việc tại Google gồm có Andy Rubin (đồng sáng lập công ty Danger), Rich
Miner (đồng sáng lập công ty Wildfire Communications), Nick Sears (từng là
Trang 10động dựa trên hạt nhân Linux, được họ tiếp thị đến các nhà sản xuất thiết
bị cầm tay và các nhà mạng trên những tiền đề về việc cung cấp một hệ thống mềm dẻo, có khả năng nâng cấp mở rộng cao Một số nguồn tin cho biết trước đó Google đã lên danh sách các thành phần phần cứng và các đối tác phần mềm, đồng thời ra hiệu với các nhà mạng rằng họ sẵn sàng hợp tác ở nhiều cấp độ khác nhau Ngày càng nhiều suy đoán rằng Google sẽ tham gia thị trường điện thoại di động xuất hiện trong tháng 12 năm 2006 Tin tức của BBC và Nhật Báo Phố Wall chú thích rằng Google muốn đưa công nghệ tìm kiếm và các ứng dụng của họ vào điện thoại di động và họ đang nỗ lực làm việc để thực hiện điều này Các phương tiện truyền thông in và online cũng sớm có bài viết về những tin đồn cho rằng Google đang phát triển một thiết bị cầm tay mang thương hiệu Google Và lại càng có nhiều suy đoán sau bài viết về việc Google đang định nghĩa các đặc tả công nghệ và trình diễn các mẫu thử với các nhà sản xuất điện thoại di động và nhà mạng.Tháng 9 năm 2007, Information Week đăng tải một nghiên cứu của Evalueserve cho biết Google đã nộp một số đơn xin cấp bằng sáng chế trong lĩnh vực điện thoại di động
Trang 11Hình 1.1.1 Tỉ lệ sử dụng các phiên bản Android
Hình 1.1.2 Biểu đồ thể hiện thị phần của Android
Trang 121.2 Môi trường cài đặt
1.2.1 Giới thiệu một số gói cần thiết
1.2.1.1 Java SE Development Kit(JDK)
Java SE là hệ thống nền tảng Java và thường được cài đặt lên máy PC hay laptop
để tiện lợi cho các nhà lập trình tiến hành phát triển các ứng dụng có nền tảng java Android SDK là bộ phát triển ứng dụng Android trên nền Java và nó đòi hỏi Java SE JDK phiên bản 5 hay cao hơn Hiệp hội các thiết bị cầm tay mở và Google chọn Java là nền tảng để xây dụng Android không chỉ có lí do là nó là mã nguồn
mở mà còn có lí do quan trọng không kém là nó được hỗ trợ trên nhiều hệ điều hành khác nhau từ Windows, Macintosh(x86), Solaris cho đến Linux
Hình 1.2.1 Download JDK
Trên Java SE JDK là nền tảng, còn để lập trình trên Java thì có nhiều môi trường phát triển phần mềm (IDE) chẳng hạn như Eclipse, Netbean…
Trang 131.2.1.2 Giới thiệu về plugin ADT(Android Development Tools)
ADT là plugin mở rộng được tích hợp vào môi trường phát triển phần mềm Eclipse Nó cho phép ta tạo và kiểm lỗi ứng dụng Android dễ dàng hơn và nhanh chóng hơn Cho phép ta thực hiện các công việc sau:
Truy xuất trực tiếp đến các công cụ phát triển Android khác bên trong Eclipse Ví dụ, ADT cho phép truy xuất đến chức năng của công cụ DDMS như: chụp màn hình, quản lý liên kết với thiết bị, đặt điểm dừng để kiểm lỗi, và xem thông tin các luồng và tiến trình trự tiếp từ Eclipse
Nó cung cấp New Project Wizard, mà giúp ta tạo và thiết lập tất cả các tập tin cơ bản cần thiết cho một ứng dụng Android mới
Nó tự động hóa và làm đơn giản hóa tiến trình xây dựng ứng dụng Android
Nó cung cấp trình biên tập mã lệnh Android mà giúp ta viết lệnh XML cho tập tin AndroidManifest và các tập tin tài nguyên khác
Xuất ra tập tin apk “đã đăng ký” (signed) hoặc “chưa đăng ký” (unsigned) để mà phân phối ứng dụng cho người dùng cuối
1.2.1.3 Sử dụng ADK
Sau khi cài đặt xong nền tảng JDK ta tải về Eclipse ADT ADT tích hợp sẵn trong phiên bản này tại địa chỉ :http://developer.android.com/sdk/index.html
Trang 14Chọn đúng hệ điều hành và tải về, sau đó giải nén chạy eclipse.exe Sau đó ta tiến hành install Android SDK cho eclipse Chú ý chỉ cài những version cần thiết
Hình 1.2.3 Install Android SDK
Như vậy ta đã thiết lập đầy đủ điều kiện để tiến hành lập trình ứng Android
Trang 151.2.2 Làm quen với IDE
1.2.2.1 Project explorer
MainActivity.java và main.xml:
Khi một ứng dụng được tao ra thì thông
thường sẽ có một Activity để khởi chạy
ứng dụng Ta hiểu rằng MainActivity.java
chính là class chứa toàn bộ source code,
còn main.xml chính là phần giao diện Đối
với Android khi một Activity tạo ra thì
thường nó đi kèm với một layout riêng
Bất kì một Activity nào muốn
được triệu gọi thành công trong Android
Project thì bắt buộc nó phải được khai báo
trong tập tin AndroidManifest.xml Nếu
như không khai báo Activity mà gọi đến nó
thì chương trình sẽ bị lỗi và tắt
là thư mục do Android tự động tạo ra Tất
cả những giao diện hay thiết lập string.xml,
menu Mọi thứ liên quan tới resource đều
được sinh ra trong R.java Dựa vào đây để
ta có thể truy xuất các đối tượng trong
Quan sát file main.xml :
Hình 1.2.4 Cấu trúc cây thư mục của
một ứng dụng
Trang 16Vùng này bao gồm:
vùng giao diện
o Vùng giao diện chính là vùng mà ta cần thiết kế
o Các tùy chọn chế độ hiện thị cho layout đang làm việc như đứng hay ngang, zoom in hoặc zoom out
o Vùng properties :Vùng này thiết lập các thuộc tính cho các control được kéo thả vào giao diện
1.2.2.2 DDMS và máy ảo AVD (Android Virtual Device)
Chọn Window=> Android virtual Device Manager => new và thiết lập các thông số như hình sau:
Hình 1.2.6 Tạo máy ảo AVD device
Chọn start để khởi động máy ảo :
Trang 17Hình 1.2.7 Máy ảo AVD bản 4.2.2
Vào window => open perspective => DDMS
Trang 18o Cửa sổ device bên trái cho biết thiết bị thật hay ảo này đang kết nối với ADT và nhưng app nào đang chạy trên thiết bị
o Cửa sổ bên phải là File Explorer cho thấy hệ thống các file trong thiết bị bao gồm cả Sdcard ta có thể nạp file vào sdcard hay lấy file dữ liệu ra thông qua màn hình này
o Dưới cùng là màn hình longcat cho phép ta theo dõi tiến trình nào đang chạy hoặc lỗi xảy ra, rất tiện dụng cho việc phát hiện và kiểm tra code
1.3 Các thành phần cơ bản của một ứng dụng Android
1.3.1 Activity
Hiểu một cách đơn giản thì Activity là nền của 1 ứng dụng Khi khởi động 1 ứng dụng Android nào đó thì bao giờ cũng có 1 main Activity được gọi, hiển thị màn hình giao diện của ứng dụng cho phép người dùng tương tác Để hiểu được cách thức hoạt động của một Activity ta quan sát vòng đời của nó
Trang 19Hình 1.2.9 Activity lifecycle
Trang 201.3.2 Service
Một service là một thành phần chạy ẩn (runs in the background) để thực hiện các thao tác chạy lâu dài hoặc điều khiển các tiến trình Service thì không có giao diện người dùng
Ví dụ: Một service phát nhạc (không cần giao diện ) trong khi người dùng đang
sử dụng một ứng dụng khác, hoặc nó trao đổi dữ liệu qua mạng mà không làm ngăn cản sự tương tác của người dùng với một activity Một thành phần khác, chẳng hạn như một activity, có thể start service và tương tác với nó
Một service được implement như là một subclass của lớp Service
1.3.4 Broadcast Receiver
Một broadcast receiver là một thành phần phản ứng với các thông báo từ bên ngoài gửi tới hệ thống Nhiều broadcasts có nguồn gốc từ hệ thống chẳng hạn, một broadcast thông báo các màn hình đã tắt, pin yếu, hoặc chụp hình Các ứng dụng cũng có thể khởi tạo các broadcast ví dụ, để cho các ứng dụng khác biết được rằng một số dữ liệu đã được tải về thiết bị và sẵn sàng để sử dụng Mặc dù broadcast không hiển thị 1 giao diện người dùng, chúng có thể tạo một thông báo trên thanh trạng thái để cảnh báo người dùng khi có một sự kiện broadcast xảy ra Thông
Trang 21thường hơn, một broadcast receiver là một “cửa ngõ” (gateway) cho các thành phần khác và được dự định để làm một số lượng tối thiểu các công việc Ví dụ nó
có thể khởi tạo một service để thực hiện một vài công việc dựa trên các sự kiện.Một broadcast receiver được implement như là một subclass của BroadcastReceiver và mỗi broadcast được dẫn xuất như là một đối tượng Intent
Trang 222 CHƯƠNG 2: XÂY DỰNG GUI
Có thể nói hầu hết mọi ứng dụng trên thiết bị di động đều cần phải có một giao diện người dùng (GUI) để cho phép người sử dụng có thể tương tác với thiết bị Cho nên đây là một phần quan trọng và căn bản để bắt đầu xây dựng một ứng dụng Android Trong phần này ta sẽ lần lượt tìm hiểu các thành phần giao diện
hiểu các giao diện điều khiển nâng cao như ListView…
Tất cả các giao diện người dùng được thực thi trong Android app đều được xây dựng lên từ dối tượng View và ViewGroup.Một View là một đối tượng xuất hiện trên màn hình mà người dùng có thể tương tác với nó Một ViewGroup là đối tượng mà bao gồm các View hoặc ViewGroup khác để định nghĩa lớp giao tiếp
Giao diện người dùng được xây dựng theo kiểu cây phân cấp, cấu tạo nên từ các đối tượng View và ViewGroup được chỉ ra trong hình vẽ Mỗi ViewGroup xem như một nhóm các View và ViewGroup con Trong khi View và ViewGroup con có thể là điểu khiển đầu vào (Input control) hoặc đơn giản chỉ là một phần của giao diện hiện thị
Trang 23Ví dụ: Bố trí đơn giản của một layout cơ bản
<? xml version ="1.0" encoding ="utf-8"?>
< LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android"
Trang 242.1 Layouts
Layout xác định cách bố trí hình ảnh cho một giao diện người dùng trên screen, Chẳng hạn như giao diện cho một activity hoặc app widget Chúng ta có thể khai báo layout theo 2 cách:
Khai báo thành phần giao diện người dùng trong XML
Khai báo layout trong thời gian chạy ứng dụng
Trong Android chúng ta có thể sự dụng linh hoạt một hoặc cả hai cả hai phương pháp
để khai báo bố trí và quản lí các thành phần lauout Ví dụ, chúng ta có thể khai báo các thành phần giao diện mặc định của ứng dụng trong XML, bao gồm các thành phần màn hình sẽ xuất hiện trong nó và thuộc tính của nó Sau đó chúng ta có thể thêm mã trong ứng dụng của mình có thể sẽ thay đổi trạng thái của các đối tượng màn hình, bao gồm
cả những khai báo trong XML trong khi ứng dụng đang chạy
Một điều nữa là bản thân layout chỉ là một thành phần giao diện hiện thị, tự nó không thể load lên sceen cũng như không thể tiếp nhận các tương tác với người dùng nên để
nó có thể hoạt động thì bắt buộc phải có một file Activity.Java điều khiển nó Thông thường một file layout.xml thường sẽ đi kèm với một file Activity.java để điều khiển
nó Ví dụ: chúng ta tạo một main_layout.xml với nội dung giống như trong ví dụ trên Để lauout đó xuất hiện trên screen thi trong file Activity.java ta phải gọi
setContentView(R.layout main_layout.xml) để load layout lên screen
public void onCreate (Bundle savedInstanceState ) {
super onCreate ( savedInstanceState );
setContentView ( layout main_layout );
}
Layout cũng có nhiều loại như: LinearLayout, TableLayout, FrameLayout,
RelativeLayout, AbsoluteLayout Trong một ứng dụng ta thường phải kết hợp các loại layout nay lại với nhau
Trang 252.1.1 FrameLayout
Là loại Layout cơ bản nhất, đặc điểm của nó là khi gắn các control lên giao diện thì các control này sẽ luôn được “Neo” ở góc trái trên cùng màn hình, nó không cho phép chúng ta thay đổi vị trí của các control theo một Location nào đó Các control đưa vào sau nó sẽ đè lên trên và che khuất control trước đó (trừ khi ta thiết lập transparent cho control sau)
Ví dụ: chúng ta có đoạn xml sau
<? xml version ="1.0" encoding ="utf-8"?>
< FrameLayout xmlns:android ="http://schemas.android.com/apk/res/android"
Ta thấy, hình màu đỏ và màu xanh luôn được
“neo” ở góc trái màn hình Hình màu đỏ đưa vào
sau sẽ đè lên trên hình màu xanh
Trang 262.1.2 LinearLayout
Đây là layout được dùng rất phổ biến cùng với TableLayout và RelativeLayout Layout này cho phép các control sắp xếp theo 2 hướng giao diện không chồng lắp lên nhau: hướng từ trái sang phải(horiental) và từ trên xuống dưới
(vertical)
Ví dụ:
<? xml version ="1.0" encoding ="utf-8"?>
<LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android"
Trang 272.1.3 RelativeLayout
RelativeLayout cho phép sắp xếp các control theo vị trí tương đối giữa các control khác trên giao diện (kể cả control chứa nó) Thường nó dựa vào Id của các control khác để sắp xếp theo vị trí tương đối Do đó khi làm RelativeLayout
ta phải chú ý là đặt Id control cho chuẩn xác, nếu sau khi Layout xong mà bạn lại đổi Id của các control thì giao diện sẽ bị xáo trộn (do đó nếu đổi ID thì phải đổi luôn các tham chiếu khác sao cho khớp với Id bạn mới đổi)
Ví dụ:
<? xml version ="1.0" encoding ="utf-8"?>
<RelativeLayout xmlns:android ="http://schemas.android.com/apk/res/android"
Trang 282.1.4 TableLayout
Đây là một dạng control cũng rất hay sử dụng Nó cho phép sắp xếp các control
theo dạng dòng và cột
TableLayout sẽ xem xét dòng nào có nhiều control nhất để xác định số lượng
cột Nó sẽ lấy dòng có số cột nhiều nhất để lấy làm số cột
Theo như hình trên thì TableLayout này có 3 dòng 4 cột
2.1.5 AbsoluteLayout
Cho phép thiết lập các control giao diện theo vị trí tùy thích Tuy nhiên loại
control này lại khó sử dụng vì bản chất hệ điều hành Android chạy trên nhiều dòng
máy khác nhau nên có rât nhiều loại screen với các kích thước khác nhau Do đó
các phiên bản android về sau google không khuyến khích các lập trình viên sử
dụng loại lauout này
Như vậy ta đa đi qua đặc điểm cơ bản của các loại layout Trong thực tế ta
thường phải sử dụng kết hợp các loại layout này với nhau để tạo giao diện màn
hình
Trang 292.2 Các control cơ bản
Trong phần trước ta đã hiểu về layout, tiếp phần này ta sẽ tìm hiểu về cách sử dụng các control cơ bản như :Button, TextView, EditText… Bảng dưới mô tả các loại control thường sử dụng trong android
Control Type Description Related Classes
Button A push-button that can be pressed, or
clicked, by the user to perform an action
Button
Text field An editable text field You can use
theAutoCompleteTextView widget to create a text entry widget that provides auto-complete suggestions
EditText , AutoComple teTextView
Checkbox An on/off switch that can be toggled by the
user You should use checkboxes when presenting users with a group of
selectable options that are not mutually exclusive
CheckBox
Radio button Similar to checkboxes, except that only
one option can be selected in the group
RadioGroup
RadioButton
Toggle
button
An on/off button with a light indicator ToggleButton
Spinner A drop-down list that allows users to select
one value from a set
Spinner
Pickers A dialog for users to select a single value
for a set by using up/down buttons or via a swipe gesture Use aDatePickercode>
DatePicker , TimePick er
Trang 302.2.1 Button
Một Button bao gồm một text
hoặc một icon (hoặc cả text và
icon) mà đáp ứng lại những hành
động xẩy ra khi người dùng chạm vào nó Tùy thuộc vào mục đích của mình mà
ta có thể tạo ra một button trong layout theo một trong 3 cách
Với text, sử dụng lớp button:
Đáp ứng sử kiện OnClick trên button:
Button button = (Button) findViewById ( id button_send );
button setOnClickListener ( new View.OnClickListener()
public void onClick (View v ) {
// Do something in response to button click
}
});
Trang 312.2.2 EditText và TextView
Trong android đối trượng EditText được sự dụng như một TextView hoặc một TextBox Giá trị thuộc tính singleLine bằng false, EditText sẽ là một TextBox ngược lại là một TextView
Để lấy id của đối tượng tương ứng
Trang 322.2.3 Checkboxes
Checkboxes cho phép người
dùng lựa chọn một hoặc nhiều
public void onCheckboxClicked (View view ) {
// Is the view now checked?
boolean checked ((CheckBox) view ) isChecked ();
// Check which checkbox was clicked
switch ( view getId ())
Trang 33public void onRadioButtonClicked (View view ) {
// Is the button now checked?
boolean checked ((RadioButton) view ) isChecked ();
// Check which radio button was clicked
switch ( view getId ())
Trang 342.2.5 Toast Notification và Alert Dialog
Trong nhiều ứng dụng chúng ta phải đưa ra thông báo hay là để đưa ra một cảnh báo để người dùng xác nhận thì lúc này Toast Notification và Alert Dialog là hai đối tượng rất hữu dụng Toast Notification chỉ đơn thuần đưa ra thông báo cho người dùng trong khoản thời gian từ 1-3s rồi tự động tắt trong khi Alert Dialog cho phép người dùng tương tác vói nó
Để hiện thị một Toast Notification ta tạo một đối tượng thuộc Toast và cho hiện thị chúng
// example toast
Toast toast =
Toast.makeText(MainActivity.this ,
"Vi du ve toast" , Toast.LENGTH_LONG);
// example alert dialog
AlertDialog.Builder alertdialog = new AlertDialog.Builder(
Trang 352.3 ListView
Trong phần trước ta đã biết cách sử
dụng các control cơ bản, trong phần
này ta tiếp tục sử dụng các control
nâng cao hơn, cụ thể là ListView
Trong các ứng dụng cần lưu trữ và hiện
thị danh sách các thông tin đa thành
phần thì chúng ta sài ListView Đây là
một công cụ khó sử dụng nhưng lại
hay được dùng Khi đã sử dụng ListView nhần nhuyễn rồi thì các control nâng cao khác chúng ta cũng sẽ sử dụng dễ dàng
Vì ListView được sử dụng theo nhiều cách khác nhau, và rất tùy biến nên trong phần này ta sẽ lần lượt đi qua từng cách sử dụng ListView và cuối cùng là Custom lại ListView
2.3.1 ListView với mảng dữ liệu định sẵn
Là Đây là outline để ta tiện thiết kế giao diện xml
Trang 36Đây là phần xử lí gán data vào ListView :
// khoi tao du lieu cho mang array
final String arr[] = { "Cao Văn Hoàn" , "Nguyễn Hoàng Trung" ,
"Nông văn hiếu" , "Nguyễn Hoàn Sang" , "Hồ thị Kỷ" ,
"Trần thị Liên" };
// lay doi tuong listview dua vao id ListView lvPerson = (ListView) findViewById(R.id.lvPerson); // Gan data source vao array adapter
ArrayAdapter<String> adapter = new ArrayAdapter<String>( this ,
AdapterView.OnItemClickListener() {
int arg2, long arg3) { // đối số arg2 là vị trí phần tử trong Data Source (arr) tvSelect.setText( "position :" + arg2 + " ; value =" +
arr[arg2]);
} });
}
}
Như vậy để gán data vào ListView ta phải sử dụng một adapter Đầu tiên ta gán mảng arr vao ArrayAdapter sau do gán tiếp ArrayAdapter vào ListView để hiện thị Trong code trên ta có sử dụng phương thức setOnItemClickListener()
để lắng nghe sự kiện click trên phần tử bất kì của ListView
Trang 372.3.2 ListView với ArrayList
Ở đây thay vì gán một mảng dữ liệu vào ArrayAdapter thì ta tạo một đối tượng arrayList để gán vào ArrayAdapter