Hướng dẫn thực hành lập trình di động android

  • 78 trang
  • file: .pdf

đang tải dữ liệu....

Tài liệu bị giới hạn, để xem hết nội dung vui lòng tải về máy tính.

Tải xuống - 78 trang

Nội dung text: Hướng dẫn thực hành lập trình di động android

Lập trình cho thiết bị di động
Khối: Đại Học
Năm 2013
Hướng dẫn:
 Bài tập thực hành được chia theo Module
 Mỗi Module được thiết kế cho thời lượng là 312 tiết thực hành tại lớp với
sự hướng dẫn của giảng viên.
 Tùy theo số tiết phân bổ, mỗi tuần học có thể thực hiện nhiều Module.
 Sinh viên phải làm tất cả các bài tập trong các Module ở tuần tương ứng.
Những sinh viên chưa hòan tất phần bài tập tại lớp có trách nhiệm tự làm
tiếp tục ở nhà.
 Các bài có dấu (*) là các bài tập nâng cao dành cho sinh viên khá giỏi.
Biên soạn: GV Trần Duy Thanh
Trang 1
Lập trình cho thiết bị di động
MỤC LỤC
Module 1: Giới thiệu môi trường phát triển điện thoại di động.................................. 3
Module 2: Xử lý giao diện người dùng ....................................................................... 13
Module 3: Xử lý tập tin, lưu trạng thái, CSDL, Content Provider ........................... 40
Module 4: Xử lý đa tiến trình và dịch vụ .................................................................... 49
Module 5: Networking APIs và Multimedia APIs ..................................................... 62
Module 6: Telephony APIs và Location Base Service APIs ...................................... 70
Module 7: Thao tác với thiết bị cảm ứng .................................................................... 74
Module 8: Danh sách đề tài môn học .......................................................................... 77
Trang 2
Lập trình cho thiết bị di động
Module 1: Giới thiệu môi trường phát triển điện thoại di động
Nội dung kiến thức thực hành:
- Làm quen với môi trường phát triển điện thoại di động
- Sử dụng Eclipse, DDMS – cách thức Debug
- Cách cài đặt Android SDK, Update Android API, Upgrade Firmware
- Sử dụng Android Virtual Device
- Tìm hiểu các thành phần trong Android App
- Tìm hiểu các đơn vị đo lường trong Android
- Tìm hiểu vòng đời của ứng dụng
- Tìm hiểu Google Play
Bài tập 1:
Mục đích:
- Cài đặt được Java JDK, Android SDK, ADT plugin for Eclipse, update Android SDK.
Yêu cầu:
- Tải và cài đặt Java JDK: http://java.sun.com/javase/downloads/index.jsp
- Tải và cài đặt Android SDK: http://developer.android.com/sdk/index.html , tải gói ADT
Bundle for Windows, gói này sẽ chứa các thành phần:
o Eclipse + ADT plugin
o Android SDK Tools
o Android Platform tools
o Android API mới nhất
o Android system image mới nhất cho Emulator
- Cập nhật ADT plugin mới nhất cho Eclipse:
1. Vào menu Help / chọn Install New Software
2. Nhập đường dẫn: https://dl-ssl.google.com/android/eclipse/ và bấm nút Add ở góc
bên phải
3. Chọn các thông số thích hợp để tiến hành cập nhật.
- Cập nhật Android SDK
- Tham chiếu Android SDK
Hướng dẫn:
- Sau khi cấu hình thành công và khởi động Eclipse thì ta sẽ có màn hình như dưới đây:
Trang 3
Lập trình cho thiết bị di động
- Đóng màn hình Welcome bằng cách click vào dấu chéo kế bên chữ Android IDE
- Để tham chiếu tới Android SDK, ta vào menu Windows/ Preferences/ chọn Android vào
Browse tới SDK location mà bạn lưu trữ:
- Để cập nhật Android SDK, ta vào menu Windows/ Android SDK Manager (hoặc bấm
vào biểu tượng trên thanh toolbar), chọn các gói cần cập nhật và bấm Install packages…:
Trang 4
Lập trình cho thiết bị di động
Bài tập 2:
Mục đích:
- Tạo và thao tác được với Android Virtual Device
- Sử dụng được DDMS
- Cấu hình thiết bị để debug
Yêu cầu:
- Tạo Android Virtual Device:
o Đặt tên cho thiết bị
o Chọn loại thiết bị
o Chọn Target API
o Cấu hình Keyboard, Skin, Camera
o Thiết lập internal storage
o Thiết lập SD Card
o Chức năng Snapshot
- Khởi động AVD vừa mới tạo, tiến hành thực hiện: quan sát và thử nghiệm các chức năng
bên trong AVD, thiết lập USB Debugging
- Thao tác trên DDMS:
o Kiểm tra cấu trúc thư mục, kéo thả một số tập tin vào AVD và quan sát hiện tượng
o Thực hiện unmount và Mount SD Card
o Thực hiện chức năng Gọi điện và gửi tin nhắn trong Emulator Control
Hướng dẫn:
- Từ menu Windows/ chọn Android Virtual Device Manager:
- Tại màn hình này chọn nút New
Trang 5
Lập trình cho thiết bị di động
- Chọn các thông số kỹ thuật cần thiết và bấm OK
- Muốn khởi động AVD nào thì click chọn AVD đó và bấm nút Start, quan sát:
Trang 6
Lập trình cho thiết bị di động
Bài tập 3:
Mục đích:
- Dalvik Virtual machine
- Hiểu được các thành phần bên trong ứng dụng Android:
o Cách tạo Android Project
o Activity, Intent, View
o Auto gen
o Android libs
o Resource
o Layout, menu, values
o Manifest XML
Yêu cầu:
- Tạo một Android Project, ứng dụng đơn giản chỉ xuất hiện dòng chữ “Hello World!”
- Kiểm tra tất cả cấu trúc thư mục của ứng dụng, cho nhận xét
- Chạy ứng dụng này trên Emulator/ trên điện thoại thật có hệ điều hành Android.
- Giải thích cơ chế mà Android Project được thực hiện trên thiết bị như thế nào: cách thức
biên dịch, cách thức đóng gói, cách thức upload cài đặt vào thiết bị
- Tiến hành xóa thư mục Auto gen (gen), quan sát hiện tượng
- Vào menu Project/ chọn Clean, chọn Build automatically, quan sát hiện tượng
- Bấm chuột phải vào Project/ chọn Build Path/ configure build Path, quan sát màn hình
- Bấm chuột phải vào Project/ chọn Android Tools/ quan sát chức năng Fix project
Properties và các chức năng khác
- Tiến hành Uninstall ứng dụng ra khỏi máy
Hướng dẫn:
- Để tạo một Android Project: Vào menu File/ chọn new/ chọn Android Application
Project
- Hoặc trong Package Explorer/ bấm chuột phải/ chọn new / chọn Android Application
Project
- Trong một số trường hợp không thấy Package Explorer (màn hình chính để lập trình), ta
vào menu Windows/ chọn Show View/ chọn Package Explorer
- Có thể hiển thị Logcat trong Windows/ show view/ logcat để quan sát thông tin quá trình
ứng dụng thực thi
Trang 7
Lập trình cho thiết bị di động
Bài tập 4:
Mục đích:
- Tìm hiểu vòng đời của ứng dụng Android: các sự kiện sảy ra theo trình tự như thế nào
Yêu cầu:
- Tạo một Android Project, đặt tên là LearnAndroidLifetime
- Trong MainActivity, tiến hành Override các hàm onStart, onResume, onPause, onStop,
onDestroy, onRestart; trong mỗi hàm này đơn giản chỉ sử dùng Toast để hiển thị tên hàm
được thực thi.
- Hãy tìm cách để cho các hàm Override ở trên sảy ra, cho nhận xét.
Hướng dẫn:
- Cách sử dụng Toast:
- Để chương trình tự thêm các Override method, ta làm như sau: Bấm chuột phải vào màn
hình soạn thảo/ chọn Source/ chọn Override Implement methods:
- Khi đó cửa sổ Implement sẽ hiển thị lên, ta chọn các hàm mong muốn rồi bấm nút Ok
Trang 8
Lập trình cho thiết bị di động
Bài tập 5:
Mục đích:
- Hiểu được Activity Stack
- Hiểu sâu hơn về vòng đời của ứng dụng
- Hiểu được Foreground lifetime và Visible lifetime
Yêu cầu:
- Hiệu chỉnh LearnAndroidLifetime Project trong bài 4
- Trong Project này tạo thêm 2 Activity lần lượt tên là SubActivity1 và SubActivity2
(như vậy Project sẽ có tổng cộng 3 Activity bao gồm 2 cái vừa tạo và 1 MainActivity)
- Chú ý rằng cấu hình sao cho SubActivity1 sẽ hiển thị dưới dạng Dialog (khi
SubActivity1 kích hoạt thì nó sẽ nằm phía trên MainActivity, nhưng mà vẫn nhìn thấy
màn hình MainActivity – tức là đồng thời nhìn thấy 2 Activity). Còn khi SubActivity2
hiển thị thì nó sẽ chiếm toàn bộ màn hình, không thể thấy được MainActivity.
- Trong MainActivity tạo 2 Button để cho phép hiển thị SubActivity1, và SubActivity2.
Trong mỗi trường hợp hãy quan sát sự kiện sảy ra trong MainActivity và cho nhận xét
(chú ý là các sự kiện chắc chắn sẽ sảy ra khác nhau trong 2 trường hợp này).
o Foreground Lifetime sảy ra từ onResume()onPause()
o Visible Lifetime sảy ra từ onStart()onStop()
Hướng dẫn:
- Project sẽ như hình sau:
- Cấu hình để SubActivity1 hiển thị dưới dạng Dialog: Trong Manifest XML, thêm
android:theme= "@android:style/Theme.Dialog". Ta có thể dùng GUI trong Eclipse để
thay đổi thông số cho dễ dàng.
- Cách mở một Activity trong Android: Ở đây từ MainActivity ta mở SubActivity1 và
SubActivity2 khi người sử dụng chọn Button1, Button2
Trang 9
Lập trình cho thiết bị di động
- Phương thức findViewById để trả về View theo đúng Id truyền vào, mọi Control trong
Android đều kế thừa từ View, ở đây ta ép kiểu về cho đúng kiểu Button.
- Dùng phương thức startActivity để mở một Activity, chú ý là Activity này được đưa vào
một Intent với cách khai báo như trên.
- Cách chạy SubActivity1 và SubActivity2 là hoàn toàn giống nhau. Chỉ khác nhau ở lúc
hiển thị lên màn hình điện thoại (như đã giải thích ở trên).
- Ta sẽ học rõ hơn về Intent trong phần sau, tạm thời phần này chưa cần phải hiểu sâu về
nó. Chỉ cần biết rằng để chạy 1 Activity nào đó thì phải tiến hành như vậy.
Trang 10
Lập trình cho thiết bị di động
Bài tập 6:
Mục đích:
- Tìm hiểu Google Play
Yêu cầu:
- Vào trong https://play.google.com/store tiến hành đăng ký và upload .apk (có đóng phí,
hiện tại là 25USD)
- Xem hướng dẫn cụ thể : http://support.google.com/googleplay/android-
developer/answer/113469?hl=en
Hướng dẫn:
Bài tập này sinh viên nào có nhu cầu thì làm. Khi có ứng dụng tốt muốn chia sẻ với cộng đồng
thì nên làm bài tập này.
Trang 11
Lập trình cho thiết bị di động
Bài tập 7 (*):
Mục đích:
- Biết được cách Upgrade Firmware cho một số thiết bị thật sử dụng hệ điều hành Android.
Yêu cầu:
- Tìm hiểu Odin mode
- Một số trang hữu ích : http://androidmuscle.com/how-to-update-your-galaxy-s2-i9100-
to-jelly-bean-4-1-2-xxlsj-firmware-tutorial/
- http://www.theandroidsoul.com/?s=Odin
Hướng dẫn:
- Phải kiểm tra kỹ thông số kỹ thuật của điện thoại xem có tương thích hay không sau đó
mới tiến hành Upgrade Firmware
- Nếu không có chắc chắn thì đừng có thực hiện (nhất là đối với những điện thoại mắc
tiền)
- Đôi khi các sinh viên phải mạo hiểm với thiết bị của mình để khám phá (khuyến khích)
Trang 12
Lập trình cho thiết bị di động
Module 2: Xử lý giao diện người dùng
Nội dung kiến thức thực hành:
- Thực hành về XML Layout – XML Container
- Các kiểu lập trình sự kiện trong Android
- Thực hành về Toast & Alert Dialog
- Thực hành các control cơ bản: View, TextView, EditText, Button, RadioButton,…
- Thực hành các control nâng cao: ListView, GridView, Spinner, Autocomplete, Menu…
- Cách tạo Custom Layout
- Thực hành về Webkit, Javascript
- Thực hành về Intent: cách mở nhiều màn hình (Activity) trong Android
- Cách lập trình chạm đơn điểm và đa điểm trong Android
- Cách cấu hình đa ngôn ngữ trong Android
Bài tập 1:
Mục đích:
- Tạo và hiệu chỉnh XML Layout
- Sử dụng XML Layout
Yêu cầu:
- Tạo một Android Project
- Tạo thêm một XML Layout (tùy ý) đặt tên là new_my_layout.xml
- Kéo thả một số control vào layout mới này: Button, Checkbox, Radio…
- Tiến hành thay đổi layout mới này qua các loại: FrameLayout, LinearLayout,
TableLayout, RelativeLayout, AbsoluteLayout, … và quan sát hiện tượng
- Trong MainActivity, sửa dòng lệnh setContentView(R.layout.activity_main); thành
setContentView(R.layout. new_my_layout);
- Chạy ứng dụng này và cho nhận xét
Hướng dẫn:
- Để tạo một XML Layout: Bấm chuột phải vào Project/ New/ Android XML File:
o Màn hình tạo Android XML File sẽ hiển thị lên, tại màn hình này Resource Type
chọn là Layout, phần Root Element chọn loại Layout giả sử là LinearLayout,
mục File nhập tên là new_my_layout rồi bấm nút Finish (xem hình trang bên).
Trang 13
Lập trình cho thiết bị di động
- Để thay đổi Layout ta làm như sau: trong Graphical Layout/ bấm chuột phải chọn
Change Layout
- Chọn loại Layout rồi bấm nút OK để thay đổi Layout
- Để xem cấu trúc XML layout dưới dạng outline: vào meu Windows/ Show View/ Outline
Trang 14
Lập trình cho thiết bị di động
Bài tập 2:
Mục đích:
- Thực hành và hiểu về FrameLayout
Yêu cầu:
- Tạo một Android Project, chuyển Layout qua loại FrameLayout
- Thêm 2 ImageView vào FrameLayout này
- Chạy ứng dụng này và cho nhận xét về vị trí xuất hiện của 2 ImageView trên
Hướng dẫn:
Bài tập 3:
Mục đích:
- Thực hành và hiểu về LinearLayout:
o Cách tạo LinearLayout (vertical, horizontal)
o Orientation
o Fill model
o Weight
o Gravity
o Padding
o Margin
Yêu cầu:
- Tạo Android Project có các control như hình bên dưới:
- Thay đổi android:orientation="horizontal" và android:orientation="vertical" để quan
sát các control trên giao diện sắp xếp khác nhau.
- Trong mỗi control thay đổi android:layout_width và android:layout_height: thiết lập
3 thông số (125dip, wrap_content, fill_parent), quan sát sự thay đổi
- Thiết lập TextView User Name có android:layout_weight="1", EditText thanhtran có
android:layout_weight="2", Button OK có android:layout_weight="1", quan sát sự
thay đổi của các control trên giao diện
- Thiết lập thông số android:layout_gravity="right" cho Button OK, quan sát sự thay đổi
của các control có giống như màn hình bên dưới hay không:
Trang 15
Lập trình cho thiết bị di động
- Thiết lập thông số android:gravity="right" cho Button OK, quan sát sự thay đổi. Hãy
cho nhận xét sự khác nhau giữa layout_gravity và gravity
- Thiết lập thông số android:padding="30dip" và android:layout_margin="10dip" cho
EditText, hãy cho biết sự khác biệt giữa padding và margin
Hướng dẫn:
- Để thiết lập các thông số cho control trên giao diện, ta sử dụng GUI của eclipse trong chế
độ Graphical Layout, hoặc chỉnh sửa trực tiếp trong file XML layout:
Chế độ Graphical Layout
Chế độ XML editor
Trang 16
Lập trình cho thiết bị di động
Bài tập 4:
Mục đích:
- Thực hành và hiểu về TableLayout:
o Tạo và sử dụng được TableLayout
o Hiểu được TableRow
o Hiểu được android:layout_span
o Hiểu được android:column
o Hiểu được android:stretchColumns
Yêu cầu:
- Tạo Android Project có kiểu layout là TableLayout, thiết kế các control trên giao diện
giống như hình bên dưới:
- Dòng 1 chứa TextView Input Catalog (có nền màu vàng)
- Dòng 2 chứa Text View Cate Id và EditText
- Dòng 3 chứa Text View Cate Name và EditText
- Dòng 4 chứa Button InsertCate
- Chạy ứng dụng và cho nhận xét.
- Hãy giải thích ý nghĩa của android:layout_span, android:layout_column và
android:stretchColumns
- Thêm 2 Button nữa vào dòng số 4, chạy ứng dụng và cho nhận xét
Hướng dẫn:
- Làm theo outline layout sau:
- Thiết lập các thông số:
o android:stretchColumns="*" cho TableLayout
o android:layout_span="2" cho TextView ở dòng 1
o android:layout_column="1" cho Button ở dòng 4
Trang 17
Lập trình cho thiết bị di động
Bài tập 5:
Mục đích:
- Thực hành và hiểu về RelativeLayout
o Tạo và sử dụng được RelativeLayout
o Hiểu được các RelativeLayout Parameter android:layout_ : width, height, below,
above, alignTop, alignParentTop, alignBottom, alignParentBottom, toLeftOf,
toRightOf, padding, margin.
Yêu cầu:
- Tạo Android Project có kiểu Layout là RelativeLayout, thiết kết các control như giao
diện bên dưới:
- Sau khi thiết kế các control giống như trên, yêu cầu thiết lập lại Id cho EditText
duythanhcse, quan sát hiện tượng sảy ra đối với các control còn lại và cho nhận xét; Tìm
cách sửa lại các parameter để giữ được giao diện thiết kế ban đầu.
- Thêm 2 Checkbox lần lượt có id=chk1, id=chk2. Hai Checkbox này phải cùng nằm trên
một dòng và chk1 nằm ở bên trái màn hình, chk2 nằm bên phải màn hình
Hướng dẫn:
- Làm theo outline layout sau:
- Thiết lập các thông số:
o alignParentLeft="true", alignParentTop="true" cho lblusername
o alignParentLeft="true", below="@+id/lblusername" cho editUserName
o alignParentRight="true", below="@+id/editUserName" cho btnOK
o alignBaseline="@+id/btnOK", alignBottom="@+id/btnOK",
toLeftOf="@+id/btnOK" cho btnCancel
Trang 18
Lập trình cho thiết bị di động
Bài tập 6:
Mục đích:
- Thực hành và hiểu về RelativeLayout (tiếp tục)
Yêu cầu:
- Dùng RelativeLayout, thiết kế giao diện như hình bên dưới:
Hướng dẫn:
Bài tập 7:
Mục đích:
- Kết hợp nhiều loại Layout
Yêu cầu:
- Thiết kế giao diện như hình bên dưới:
Hướng dẫn:
Trang 19
Lập trình cho thiết bị di động
Bài tập 8:
Mục đích:
- Thực hành và hiểu được các kiểu lập trình sự kiện trong Android
o Onclick in XML
o Inline anonymous listener
o Activity is listener
o Listener in variable
o Explicit listener class
o View Subclassing
Yêu cầu:
- Thiết kế giao diện như hình bên dưới và thực hiện các yêu cầu sau:
- Mỗi lần click chuột vào các Button thì sẽ thực hiện phép toán tương ứng: ví dụ khi click
chuột vào Tổng 2 số thì kết quả ở trên là 113.
- Riêng nút Thoát chương trình: cho phép đóng chương trình
- Tổng 2 số viết theo Onclick In XML
- Hiệu 2 số viết theo Inline anonymous listener
- Tích 2 số viết theo Activity is listener
- Thương 2 số viết theo Listener in variable
- Ước số chung lớn nhất viết theo Explicit listener class
- Và Thoát chương trình viết theo View Subclassing
Hướng dẫn:
- Để lấy số a: EditText edita=(EditText)findViewById(R.id.editsoa);
int a=Integer.parseInt(edita.getText()+"");
- Để thoát chương trình gọi hàm: finish();
Trang 20