TÌM HIỂU VỀ PHƯƠNG PHÁP LẬP TRÌNH TRÊN ANDROID VIẾT CHƯƠNG TRÌNH MÔ PHỎNG ĐÀN PIANO - Pdf 13

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN
THỰC TẬP CHUYÊN NGÀNH
Đề tài :
TÌM HIỂU VỀ PHƯƠNG PHÁP LẬP TRÌNH
TRÊN ANDROID
VIẾT CHƯƠNG TRÌNH MÔ PHỎNG ĐÀN
PIANO
Sinh viên thực hiện: ĐÀO TRUNG SƠN
Lớp: CNPM - K7C
Giáo viên hướng dẫn: Th.S BÙI ANH TÚ
Thái Nguyên, tháng 6 năm 2012
1
LỜI NÓI ĐẦU
Ngày nay, Công nghệ thông tin là một trong những ngành đang phát triển rất
mạnh mẽ và có ảnh hưởng sâu rộng đến mọi mặt đời sống. Nó là nền tảng của nền
kinh tế tri thức, là thước đo trình độ phát triển của một quốc gia. Vì vậy, việc đào
tạo đội ngũ kỹ sư công nghệ thông tin có chất lượng đòi hỏi phải được chú trọng và
đầu tư đúng mức.
Đại học là môi trường cơ bản cung cấp kiến thức chuyên môn, giúp sinh viên
hình thành và phát triển những kĩ năng cần thiết cho công việc. Vì vậy, học đi đôi
với hành luôn là phương châm đào tạo hàng đầu trong các trường đại học hiện nay.
Xã hội và kinh tế phát triển đòi hỏi công nghệ cũng phải phát triển. Công
nghệ phát triển, con người ngày càng phát minh ra những thiết bị công nghệ số
thông minh giúp đỡ con người về rất nhiều mặt trong cuộc sống. Và một trong số đó
là các thiết bị di động cầm tay như một thế giới thu nhỏ trong lòng bàn tay, các thiết
bị này có thể chạy các hệ điều hành đơn giản như Symbian, Winphone, iOS,
Android, và Android là 1 trong số các hệ điều hành phát triển hàng đầu, rất được
ưa chuộng cho các thiết bị di động.
Trong quá trình tìm hiểu về phương pháp lập trình trên Android, em có phát
triển một demo nhỏ. Demo này chủ yếu để minh họa một phần nào đó về phương

+*!:%;3'*
CHƯƠNG 3: DEMO ĐÀN PIANO TRÊN ANDROID 31
TÀI LIỆU THAM KHẢO 37
3
CHƯƠNG 1: TỔNG QUAN VỀ ANDROID
1.1. Android là gì?
Android là 1 hệ điều hành cho thiết bị di động dựa trên phiên bản sửa đổi của
Linux.
Google muốn Android trở thành mở và tự do, nên hầu hết các mã nguồn đều được
phát hành dưới dạng mã nguồn mở Apache Licence, nghĩa là mọi người dùng
Android đều có thể tải mã nguồn đầy đủ của Andoid. Hơn nữa Android có thêm
phần mở rộng để nguời dùng có thể tùy chỉnh tạo ra sự khác nhau giữa những nguời
cùng sử dụng. Yếu tố này làm cho Android hấp dẫn hơn các hệ điều hành cùng
nhóm.
Lợi thế chính của việc sử dụng Android để phát triển ứng dụng là Android
cung cấp cách tiếp cận tốt nhất để phát triển ứng dụng. Các nhà phát triển chỉ cần
phát triển cho Android là các ứng dụng đó có thể chạy trên rất nhiều thiết bị khác
nhau, miễn là thiết bị đó hỗ trợ Android. Trong thế giới của điện thoại thông minh
thì vấn đề thích hợp phần cứng là điểm quan trọng đối với các ứng dụng, khi đã sử
dụng Android làm nền tảng để phát triển thì sẽ có được rất nhiều lợi thế về mặt này
vì các sản phẩm thiết bị thông minh hỗ trợ Android ngày càng đuợc ưa chuộng.
1.2. Các phiên bản Android
Android đã trải qua một số lượng không nhỏ các phiên bản cập nhật, từ phiên
bản 1.1 là phiên bản đầu tiên của Android.
Phiên bản Android Thời gian phát hành
1.1 9 tháng 2 năm 2009
1.5 30 tháng 4 năm 2009
1.6 15 tháng 9 năm 2009
2.0/2.1 26 tháng 10 năm 2009
2.2 20 tháng 5 năm 2010

và sửa đổi rất nhiều để phù hợp với tính chất của những thiết bị cầm tay như hạn chế
về bộ vi xử lý, dung lượng bộ nhớ, kích thước màn hình, nhu cần kết nối mạng
không dây
Tầng này có các thành phần chủ yếu :
- Display Driver : Điều khiển việc hiển thị lên màn hình cũng như thu nhận những
điều khiển của người dùng lên màn hình (di chuyển, cảm ứng ).
- Camera Driver : Điều kiển hoạt động của camera, nhận luồng dữ liệu từ camera
trả về.
- Bluetooth Driver : Điều khiển thiết bị phát và thu sóng Bluetooth.
- USB driver : Quản lý hoạt động của các cổng giao tiếp USB.
- Keypad driver : Điều khiển bàn phím.
- Wifi Driver : Chịu trách nhiệm về việc thu phát sóng wifi.
- Audio Driver : điều khiển các bộ thu phát âm thanh, giải mã các tính hiệu dạng
audio thành tín hiệu số và ngược lại.
- Binder IPC Driver : Chịu trách nhiệm về việc kết nối và liên lạc với mạng vô
tuyến như CDMA, GSM, 3G, 4G, E để đảm bảo những chức năng truyền thông
được thực hiện.
- M-System Driver : Quản lý việc đọc ghi lên các thiết bị nhớ như thẻ SD, flash.
- Power Madagement : Giám sát việc tiêu thụ điện năng.
1.4.2. Tầng Library và android runtime
Phần này có 2 thành phần là phần Library và Android Runtime.
1. Phần Libraries:
Phần này có nhiều thư viện được viết bằng C/C++ để các phần mềm có thể sử dụng,
các thư viện đó được tập hợp thành một số nhóm như :
6
- Thư viện hệ thống (System C library) : thư viện dựa trên chuẩn C, được sử dụng
chỉ bởi hệ điều hành.
- Thư viện Media (Media Libraries) : Có nhiều codec để hỗ trợ việc phát và ghi
các loại định dạng âm thanh, hình ảnh, video thông dụng.
- Thư viện web (LibWebCore) : Đây là thành phần để xem nội dung trên web,

cấp công cụ điều khiển các Activity.
- Telephony Manager : Cung cấp công cụ để thực hiện việc liên lạc như gọi điện
thoại.
- XMPP Service : Cung cấp công cụ để liên lạc trong thời gian thực.
- Location Manager : Cho phép xác định vị trí của điện thoại thoại dựa vào hệ
thống định vị toàn cầu GPS và Google Maps.
- Window Manager : Quản lý việc xây dựng và hiển thị các giao diện người dùng
cũng như tổ chức quản lý các giao diện giữa các ứng dụng.
- Notication Manager : Quản lý việc hiển thị các thông báo (như báo có tin nhắn,có
e-mail mới ).
- Resource Manager : Quản lý tài nguyên tĩnh của các ứng dụng bao gồm các file
hình ảnh, âm thanh, layout, string. (Những thành phần không được viết bởi ngôn
ngữ lập trình).
1.4.4. Tầng Application
Đây là lớp ứng dụng giao tiếp với người dùng, bao gồm các ứng dụng như :
Các ứng dụng cơ bản, được cài đặt đi liền với hệ điều hành là gọi điện (phone), quản
lý danh bạ (Contacts), duyệt web (Browser), nhắn tin (SMS), lịch làm việc
(Calendar), đọc e-mail (Email-Client), bản đồ (Map), quay phim chụp ảnh
(camera)
Các ứng dụng được cài thêm như các phần mềm chứng khoán (Stock), các trò
chơi(Game), từ điển
Các chương trình có các đặc điểm là :
- Viết bằng Java, phần mở rộng là apk
8
- Khi mỗi ứng dụng được chạy, nó có một phiên bản Virtual Machine được dựng lên
để phục vụ cho nó. Nó có thể là một Active Program : Chương trình có giao diện với
người sử dụng hoặc là một background : chương trình chạy nền hay là dịch vụ.
- Android là hệ điều hành đa nhiệm, nghĩa là trong cùng một thời điểm, có thể có
nhiều chương trình cùng chạy một lúc, tuy nhiên, với mỗi ứng dụng thì có duy nhất
một thực thể (instance) được phép chạy mà thôi. Điều đó có tác dụng hạn chế sự lạm

cũng được khuyên dùng.
Các kiến thức về các gói lập trình cho Desktop như java.awt, java.swing hoàn
toàn không cần thiết, hay các gói của J2ME cũng vậy Lập trình Android tuy cũng là
lập trình di động, nhưng các điện thoại sử dụng hệ điều hành Android có cấu hình
rất mạnh (Nexus One có VXL lên tới 1Ghz), vì vậy 2 nền tảng Android và J2ME
cũng rất khác nhau. Android có những gói riêng hỗ trợ lập trình cho nó và không
yêu cầu khắt khe về việc tối ưu code như J2ME. Thật đáng tiếc vì có thể những kiến
thức học được từ J2ME không ứng dụng được nhiều vào trong lập trình Android
(tuy nhiên 1 số kỹ thuật cơ bản cho lập trình game 2D như Sprite, double buffering,
Tile thì không hề phí phạm chút nào )
2.2. Hiểu ứng dụng Android:
Việc hiểu được các thành phần (component) tạo nên một ứng dụng Android
là rất cần thiết cho việc lập trình. Các thành phần này được chia làm 6 loại bao gồm:
1. Activity: hiểu một cách đơn giản thì Activity là nền của một ứng dụng. Khi khởi
động một ứng dụng Android nào đó thì bao giờ cũng có một 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.
2. Service: thành phần chạy ẩn trong Android. Service sử dụng để update dữ liệu,
đưa ra các cảnh báo (Notification) và không bao giờ hiển thị cho người dùng thấy.
11
3. Content Provider: kho dữ liệu chia sẻ. Content Provider được sử dụng để quản
lý và chia sẻ dữ liệu giữa các ứng dụng.
4. Intent: nền tảng để truyền tải các thông báo. Intent được sử dụng để gửi các
thông báo đi nhằm khởi tạo một Activity hay Service để thực hiện công việc mong
muốn. VD: khi mở một trang web, thì cần gửi một intent đi để tạo một activity mới
hiển thị trang web đó.
5. Broadcast Receiver: thành phần thu nhận các Intent bên ngoài gửi tới. VD: viết
một chương trình thay thế cho phần gọi điện mặc định của Android, khi đó cần một
Broadcast Receiver để nhận biết các Intent là các cuộc gọi tới.
6. Notification: đưa ra các cảnh báo mà không làm cho các Activity phải ngừng
hoạt động.

- stop: Activity bị thay thế hoàn toàn bởi Activity mới sẽ tiến đến trạng thái stop.
- killed: Khi hệ thống bị thiếu bộ nhớ, nó sẽ giải phóng các tiến trình theo nguyên
tắc ưu tiên. Các Activity ở trạng thái stop hoặc paused cũng có thể bị giải phóng và
khi nó được hiển thị lại thì các Activity này phải khởi động lại hoàn toàn và phục
hồi lại trạng thái trước đó.
13
Hình 2.1 - Biểu đồ miêu tả Activity state
Vòng đời của Activity:
- Entire lifetime: Từ phương thức onCreate( ) cho tới onDestroy( )
- Visible liftetime: Từ phương thức onStart( ) cho tới onStop( )
- Foreground lifetime: Từ phương thức onResume( ) cho tới onPause( )
Khi xây dựng Actitvity cho ứng dụng cần phải viết lại phương
thức onCreate( ) để thực hiện quá trình khởi tạo. Các phương thức khác có cần viết
lại hay không tùy vào yêu cầu lập trình.
Các phương thức của vòng đời:
Phương thức: onCreate()
 Được gọi khi activity lần đầu tiên được tạo.
 Ở đây bạn làm tất cả các cài đặt tĩnh – tạo các view, kết nối dữ liệu đến list…
14
 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 bởi onStart().
Phương thức: onRestart()
 Được gọi trước khi một activity đã được dừng, chỉ một khoảng đang khởi
động lần nữa (stared again).
 Luôn theo sau bởi onStart().
Phương thức: onStart()
 Được gọi trước khi một activity visible với người dùng.
 Theo sau bởi onResume() nếu activity đến trạng thái foreground hoặc
onStop() , nó trở nên ẩn.

XML sẽ giúp việc chỉnh sửa ứng dụng sau này trở nên dễ dàng.
Về nguyên tắc, khi lập trình ứng dụng thì thiết kế giao diện bằng XML và cài
đặt các xử lý khi tương tác với giao diện trong code java.
Để có thể lập trình viết các ứng dụng cho Android thì cần phải sử dụng đến
bộ công cụ cần thiết. Muốn phát triển ứng dụng Android có thể sử dụng một máy
tính chạy Mac, Linux, Window,
2.4. Các công cụ cần thiết
Trước tiên ta cần một IDE để lập trình (nói dễ hiểu là 1 công cụ soạn thảo, gỡ
lỗi và biên dịch mã nguồn). Trong khuôn khổ báo cáo này, Eclipse IDE được sử
dụng vì nó chạy được trên nhiều hệ điều hành như Windows, Mac, Linux và là 1
IDE đa ngôn ngữ, hỗ trợ các ngôn ngữ như C/C+, Java, Cobol, Python,
Eclipse IDE có thể được download tại: />Vì Eclipse là phần mềm viết trên java và lập trình Android cũng sử dụng java
làm ngôn ngữ chính cho nên cần phải có bộ thư viện của java (JDK)
JDK có thể được download tại địa chỉ:
/>Cuối cùng là cần phải có gói công cụ và thư viện của android về để có thể lập
trình trên android (Android SDK)
Download Android SDK tại: />16
2.5. Android Emulator
Android SDK và Plugin Eclipse được gọi là một Android Deverloper
Tool(ADT).
Các nhà phát triển ứng dụng Android sẽ cần phải sử dụng công cụ IDE
(Integrated Development Environment) này để phát triển , gỡ lỗi và kiểm thử cho
ứng dụng. Tuy nhiên, các nhà phát triển cũng có thể không cần phải sủ dụng IDE mà
thay vào đó là sử dụng command line để biên dịch và tất nhiên là vẫn có Emulator
như bình thường.
Android Emulator là một chương trình giả lập hệ điều hành Android trên máy
tính, Android Emulator được trang bị đầy đủ hầu hết các tính năng của một thiết bị
thật. Tuy nhiên, một số đã bị giới hạn như là kết nối qua cổng USB, camera và
video, nghe phone, nguồn điện giả lập và bluetooth.
Android Emulator thực hiện các công việc thông qua một bộ xử lý mã nguồn

layout_x, layout_y: toạ độ hiển thị của thành phần trên màn hình (cái này sử dụng
với AbsoluteLayout).
19
Ví dụ 1 đoạn XML thiết kế giao diện
Mã:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=" /> android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText
android:id="@+id/edit_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/edit_hint"/>
<TextView
android:id="@+id/text_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/text_color"
android:textSize="28px"
android:typeface="monospace"/>
</LinearLayout>
Trong đoạn XML này được khai báo một Linear Layout với hai thành phần
con của nó là một Edit Text (dùng để gõ xâu ký tự) với một Text View (hiển thị xâu
ký tự). Linear Layout được khai báo với từ khóa orientation nhằm chỉ ra chiều sắp
xếp của hai thành phần con là chiều dọc. Còn với layout_width, layout_height có
thể cho giá trị bằng "fill_parent" hoặc "wrap_content" để thông báo thành phần
này sẽ có chiều rộng (dài) phủ đầy thành phần cha hoặc chỉ vừa bao đủ nội dung.
Trong Edit Text và Text View có từ khóa id, từ khóa này cho phép khai báo id của
các thành phần để lấy về trong code.

findViewById:
Mã:
package tunghuynh.com;
import ;
public class Example1_XMLActivity extends Activity {
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Thiết lập giao diện lấy từ file main.xml
setContentView(R.layout.main);
//Lấy về các thành phần trong main.xml thông qua id
final EditText edit = (EditText) findViewById(R.id.edit_text);
final TextView text = (TextView) findViewById(R.id.text_view);
//Thiết lập xử lý cho sự kiện nhấn nút giữa của điện thoại
edit.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// code here
}
});
}
}
21
Trong Android, các lớp sử dụng để tạo giao diện (Edit Text, Text View ) đều là lớp
con của lớp View.
Một số lớp thường xuyên được sử dụng để tạo giao diện:
- TextView: Hiển thị chuỗi lên màn hình
- EditText: Tạo ô để nhập dữ liệu
- ListView: Hiển thị 1 danh sách các phần tử lên màn hình
- Spinner: Hộp combobox chọn phần tử

- AbsoluteLayout: Hiển thị các thành phần con dựa theo tọa độ x, y.
Layout được sử dụng nhằm mục đích thiết kế giao diện cho nhiều độ phân giải.
Thường khi lập trình nên kết hợp nhiều layout với nhau để tạo ra giao diện mong
muốn.
2.5.3. Android Manifest
Mỗi ứng dụng đều cần có AndroidManifest.xml để mô tả những thông tin
quan trọng của nó cho hệ thống Android biết.
File này được tự động tạo ra khi tạo project nhưng nếu dùng đến intent hay dùng
thêm activity thì phải khai báo bổ sung vào file này để hệ thống chấp nhận và có thể
sử dụng.
Mã:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=" /> package="tunghuynh.com"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon"
android:label="@string/app_name">
<activity android:name=".Example1_XMLActivity"
android:label="@string/app_name
android:screenOrientation="landcape"

android:theme="@android:style/Them.NotitleBar.Fullscreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
23
</application>

public static final class attr { }
public static final class drawable {
public static final int icon=0x7f020000;
}
public static final class id {
public static final int textview=0x7f050000;
}
public static final class layout {
public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f040001;
public static final int hello=0x7f040000;
}
}
2.5.5. Button và ToggleButton
Đây là thành phần diện cho một widget . Button có thể được nhấn, hoặc bấm
bởi người sử dụng để thực hiện một hành động. Với Button thông thường thì chỉ sự
kiện chính là button được nhấn, còn với ToggleButton thì có 2 chế độ khi nhấn đó là
tắt và bật, nó giống như một công tắc điện.
Ví dụ một button và togglebutton cơ bản, gồm có các thành phần như id, kích
thước và tên hiển thị.
Mã:
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
/>
Mã:


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status