TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG
KHOA CNTT & TOÁN ỨNG DỤNG
ĐỒ ÁN
LẬP TRÌNH DI ĐỘNG
ANDROID
Giáo Viên HD:
ThS.Huỳnh Lê Tấn Tài
CN.Lê Văn Vang
Sinh Viên Thực Hiện:
Ngô Thanh Hiền - MSSV: 50921012
Vương Văn Nhanh - MSSV: 50920015
Bùi Quang Khải - MSSV: 50920011
Đinh Đình Đăng - MSSV: 50921002
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
1
Nhóm Sinh viên thực hiện Giáo viên hướng dẫn
CHƯƠNG 1: TÌM HIỂU CÁC PHẦN MỀM DI ĐỘNG
CHO ANDROID
Google Play kho ứng dụng của hệ điều hành Android giúp bạn khám phá, mua
và trải nghiệm các ứng dụng và trò chơi trên thiết bị của bạn hoặc trên web ở
mọi nơi.
Với hàng trăm nghìn ứng dụng trên Google Play, mọi người đều có thể tìm
thấy ứng dụng mình cần.
2
Hiện tại trên kho ứng dụng này có trên 400,000 ứng dụng dành cho các máy sài
hệ điều hành Android, được chia thành nhiều chủng loại đáp ứng nhu cầu của
người sử dụng điện thoại smarkphone, tablet.
Người dùng điện thoại Android từ lâu đã quen với "chợ" ứng dụng Android
Market, nơi họ có thể truy cập để mua và tải về các ứng dụng di động. Tuy nhiên, chợ
ứng dụng này nay đã có tên gọi mới là Google Play, không chỉ cung cấp ứng dụng mà
còn có một số dịch vụ giải trí. Với Google Play, người dùng sẽ có trong tay tất cả
những Google Music, Google eBookStore, Android Market và dịch vụ thuê phim
Android Movie Rental Service.
Cụ thể, bạn có thể làm những điều sau với Google Play:
Bốn dịch vụ chủ đạo nói trên của Google giờ cũng được tích hợp luôn vào Google
Play trên máy tính cá nhân. Đối với nền tảng smartphone hoặc tablet (dùng hệ điều
hành Android), Google sẽ nâng cấp ứng dụng Android Market lên thành ứng dụng
Google Play Store:
Ứng dụng và trò chơi
Từ nay về sau, những trò chơi hoặc ứng dụng trên Android Market sẽ được mua
thông qua ứng dụng Google Play. Chỉ trong một thời gian rất ngắn sắp tới, người
dùng thiết bị Android sẽ nhận thấy việc ứng dụng Android Market tự động cập nhật
và bị thay thế bằng Google Play. Lúc này, người dùng sẽ tiếp cận với bốn hạng mục
chính của Google Play bao gồm: Play, Music, Books và Youtube Rentals.
Giao diện người dùng (UI) dành cho các ứng dụng này vẫn không thay đổi.
Phim ảnh
3
Nói đến dịch vụ thuê phim trực tuyến, người dùng thiết bị di động có xu hướng tìm
đến các dịch vụ nổi tiếng và truyền thống như Netflix, Hulu hoặc Amazon, do đó đây
được xem như nỗ lực giành thị phần từ các đối thủ này của Google.
4
Google Play Music, dịch vụ lưu trữ và phát nhạc trực tuyến, vừa bổ sung thêm ba tính
năng mới nằm trong mục thử nghiệm (Labs). Trước hết là Desktop Notification, một
tính năng cho phép hiển thị một thông báo nhỏ trên màn hình Desktop của bạn để biết
Play đang chơi bài nào. Tính năng thứ hai, HTML5 Audio, sẽ giúp chúng ta chơi
nhạc mà không cần dùng đến flash, mà thay vào đó là dùng hệ thống HTML5 của
trình duyệt. Cuối cùng là tính năng đánh giá 5 sao cho từng bài hát một, xuất hiện ở
thanh công cụ nằm ở cạnh dưới màn hình. Các bạn lưu ý rằng Desktop Notification
chỉ có thể dùng được với trình duyệt Chrome, hai tính năng còn lại hỗ trợ hầu hết các
trình duyệt phổ biến hiện nay.
Để kích hoạt, bạn truy cập vào Google Play Music ở địa chỉ .
Nhìn vào góc bên phải phía trên, có biểu tượng bánh răng, nhấn vào đó và chọn
Music Labs. Một hộp thoại sẽ hiện ra, thích bật tính năng nào thì bạn chọn vào nút
"Enable", không thích nữa thì tắt nó đi bằng nút "Disable". Sau đó nhấn "Save
changes" để lưu lại các thay đổi của bạn. Đối với Desktop Notification, Chrome sẽ
hỏi bạn có cho phép hiển thị hộp thoại lên Desktop hay không. Chọn Allow để tiếp
tục.
Bạn nào chưa dùng được Google Play Music ở Việt Nam mời tham khảo bài viết
Hướng dẫn truy cập và sử dụng Google Music.
5
Chọn vào bánh răng, chọn tiếp Music Labs
Giao diện trang chủ
Tab các ứng dụng TOP
6
Tab phân loại ứng dụng
Các ứng dụng thuộc danh mục Game
7
Danh mục Game có các thể loại: Arcade & Action, Brain & Puzzle, Cards & Casino,
Casual,…
Một vài ứng dụng mà nhóm khảo sát
Aldiko: phần mềm đọc sách hiển thị sách theo kệ tương tự trên iphone
Viber: phần mềm gọi & sms bằng wifi
8
Click vào để cài trực tuyến
Lịch vạn niên
CÁC PHẦN MỀM CÓ TRÊN GOOGLE PLAY
+ ứng dụng:google play books
Google play books chứa một kho sách khổng lồ tìm theo những sách bán chạy
nhất,theo tác giả ….
Ta có thể vào link sau sẽ download ứng dụng này
9
/>sau đó chọn Install:
Sau đây là giao diện màn hình chính
Ứng dụng : Google translate
Là ứng dụng giúp người dung dịch hơn 60 ngôn ngử khác nhau.
Đối với hầu hết các ngôn ngữ, bạn có thể nói cụm từ của bạn và nghe các bản dịch
tương ứng.
Với Google Translate, ta có thể:
* Dịch văn bản giữa 63 ngôn ngữ
* Dịch nói các văn bản thay vì gõ (17 ngôn ngữ)
* Nghe bản dịch của bạn nói to lên (24 ngôn ngữ)
* Giao tiếp với người khác bằng cách sử dụng bài phát biểu-to-speech dịch trong chế
độ Conversation (ALPHA, 14 ngôn ngữ)
* Hiển thị bản dịch trong chế độ toàn màn hình để làm cho nó dễ dàng hơn cho
những người khác gần đó để đọc
* Bản dịch sao yêu thích của bạn để truy cập nhanh ngay cả khi bạn đang offline
* Truy cập lịch sử bản dịch của bạn ngay cả khi bạn đang offline
10
* Giải thích rõ ràng các bản dịch của ngôn ngữ kịch bản không Latin (ví dụ như
Trung Quốc, Nhật Bản, vv.) Trong ký tự Latin để đọc ngữ âm (ví dụ như Hán Việt,
Romaji)
* Xem kết quả từ điển bổ sung cho các từ đơn hay cụm từ ngắn
Bản dịch giữa các ngôn ngữ sau đây được hỗ trợ: Hà Lan Nam Phi, tiếng Albania,
tiếng Ả Rập, tiếng Armenia, Azerbaijan, Basque, Belarus, Bengali, Bungari, Catalan,
Trung Quốc (giản thể), Trung Quốc (truyền thống), Croatia, Cộng hòa Séc, Đan
Mạch, Hà Lan, Anh, Estonia, Philippines, Phần Lan, Pháp…
+Google Earth : ứng dụng hình ảnh từ vệ tinh
Với google Earth ta có thể khám phá các vùng khác nhau trên thế giới
Tìm kiếm bằng giọng nói cho các thành phố, địa điểm, và các doanh nghiệp. Duyệt
qua các lớp bao gồm cả đường bộ, biên giới, địa điểm, hình ảnh và nhiều hơn nữa.
Đối với người dùng máy tính bảng (Android 3.0 hoặc mới hơn), bạn có thể thưởng
thức một kinh nghiệm mới của Google Earth tối ưu hóa cho màn hình lớn.
Ta có thể tải ứng dụng từ đường link sau:
/>id=com.google.earth&feature=search_result
Click vào Install ta có thể cài trực tiếp ứng dụng này.Và đây là một số hình anh của
Google earth
11
+Tuneln Radio:Chương trình nghe FM
Chương trình này có thể giúp người sử dụng khong những nghe được các đài phát
thanh địa phương mà còn nghe được các chương trình phát thanh toàn cầu
Với TuneIn Radio, bạn có thể:
• Tìm kiếm một nghệ sĩ, bài hát hoặc chương trình để tìm các đài phát thanh trên
khắp thế giới chơi sống
• Tạm dừng và tua lại bất kỳ dòng (nâng cấp lên Pro TuneIn Đài phát thanh để ghi lại
bất kỳ dòng)
• Thêm trạm, bài hát, và chương trình cài đặt trước của bạn
• Thức dậy với đồng hồ báo thức hoặc ngủ với giờ giấc ngủ
• Chơi ở chế độ nền trong khi bạn sử dụng các ứng dụng khác
* Link download ứng dụng: />id=tunein.player&feature=related_apps#?
t=W251bGwsMSwxLDEwOSwidHVuZWluLnBsYXllciJd
12
Click vào Install thì có thể cài trực tuyến ứng dụng này về điện thoại
Màn hình giao diện của chương trình
+Kids Doodle-Movies kids paint: Chương trình vẽ hình cho trẻ em
Doodle Kids", một trong những ứng dụng tốt nhất vẽ trẻ em trên điện thoại Android.
Hơn 7.300.000 tải tất cả các nơi trên thế giới với 4,5 sao. Khá dễ dàng để sử dụng,
trong khi khá thú vị và gây nghiện. Nó có hơn mười bàn chải xinh đẹp, chẳng hạn
như neon, cầu vồng, bút chì. Nó cung cấp xây dựng trong bộ sưu tập ghi âm không
chỉ vẽ mà còn tiến bộ. Cụ thể, với chế độ tuyệt vời "Movie", trẻ em có thể xem bức
tranh của họ để phát lại giống như một bộ phim độc đáo, bất cứ lúc nào cùng với gia
đình.
Một trò chơi cho trẻ em, một hạnh phúc cho gia đình - Thưởng thức "Doodle Kids"
trên điện thoại của bạn!
Các tính năng:
* Hỗ trợ hơn 10 kiểu cọ khác, chẳng hạn như neon, cầu vồng, chạm nổi, bút chì.
* Movie chế độ phát lại vẽ nguệch ngoạc giống như một bộ phim
* Gallery tiết kiệm không chỉ vẽ nguệch ngoạc nhưng cũng là thủ tục của mình.
13
Click Install ta có thể cài trực tuyến ứng dụng này
Khá dễ dàng để sử dụng, trong khi khá thú vị và gây nghiện. Nó có hơn mười bàn
chải xinh đẹp, chẳng hạn như neon, cầu vồng, bút chì. Nó cung cấp xây dựng trong
bộ sưu tập ghi âm không chỉ vẽ mà còn tiến bộ. Cụ thể, với chế độ tuyệt vời
"Movie", trẻ em có thể xem bức tranh của họ để phát lại giống như một bộ phim
độc đáo, bất cứ lúc nào cùng với gia đình. Hơn 7.300.000 tải tất cả các nơi trên thế
giới với 4,5 sao.
CHƯƠNG 2: CÀI ĐẶT SỬ DỤNG PHẦN MỀM LẬP
TRÌNH CHO ANDROID
14
1. Vào địa chỉ Download Eclipse IDE for Java
EE Developers, xong giải nén ra là đã dùng được Eclipse
2. Cài đặt ADT Plugin:
- Khởi động Elipse, vào Help - Install New Software
- Một form hiện lên chọn Add, điền ADT Plugin vào phần Name, nhập
vào phần Location. Nhấn OK.
- Nhấn nút Select All - Next, Tiếp tục nhấn Next, Accept, Finish. Xong chọn
Restart để khởi động lại Eclipse.
3. Cài đặt SDK
- Vào download SDK cài đặt vào
máy
- Mở Eclipse, Window - Preferences - Android trong mục SDK Location chọn
Browse đưa đường dẫn đến thư mục SDK mới vừa cái xong bấm apply.
15
4. Cài các Package cho Android SDK:
- Eclipse - Window - Android SDK and AVD Manager (Android SDK
Manager) Chọn tất cả các Package và nhấn Install.
CHƯƠNG 3: TÌM HIỂU LẬP TRÌNH ANDROID
16
I. Các thành phần trong Android:
1. Activity: tạo nền để khởi động hiển thị một màn hình giao diện của ứng
dụng, luôn luôn có một Activity chính khi một chương trình hoạt động. Các Activity
được lưu trữ theo dạng stack cái mới tạo sẽ được hiển thị và đẩy Activity đang hoạt
động xuống trạng thái chờ, khi nào Activity đang hiển thị kết thúc thì, Activity cũ hơn
sẽ được hiển thị.
Vòng đời của Activity
2. Service: thành phần chạy ẩn dùng để đưa ra các cảnh báo hoặc hỗ trợ các
thành phần khác hoạt động và không hiển thị cho người dùng thấy.
3.Content Provider: Quản lý và chia sẽ dữ liệu giữa các ứng dụng
17
4. Intent: là công cụ để truyền tải và hiển thị các thông báo thông qua Activity,
Service.
5. Boardcast Receiver: công cụ để thu nhận các tín hiệu Intent từ bên ngoài
gửi đến ứng dụng.
6. Notifycation: đưa ra các cảnh báo mà không làm các Activity ngừng hoạt
động.
II. Cấu trúc Source Code:
1. Android Mainifest (AndroidManifest.xml):
- Đặt tên cho Java Package của ứng dụng
- Mô tả các thành phần trong Android: Activity, Service, Content
Provider, Intent, Boardcast Receiver
- Cấu hình các Permission của ứng dụng
- Cấu hình phiên bản Android của ứng dụng
2. Values: (res/value) : chứa các tập tin quy định resource cơ bản của chương
trình
a. strings.xml: tập tin lưu trữ tất cả các biến resource dạng string.
b. colors.xml: tập tin lưu trữ tất cả các biến resource quy định màu sắc
cho các control.
3. Java Source File (src/*.java): chứa các file java sourcelập trình điều khiển
chương trình
4. Layout (res/layout/*.xml): chứa các file xml xây dựng nên bố cục của các
control hình thành nên mỗi giao diện của chương trình, mỗi file xml tương ứng với 1
giao diện.
III. Layout: trong android các control được sắp xếp dựa theo các layout cố định, các
layout được tạo ra trong thư mục res\layout hoặc tạo động bằng java code và có các
loại Layout như sau:
1. LinearLayout: sắp xếp các đối tượng liên tiếp nhau theo chiều dọc hoặc
chiều ngang của màn hình
2. RelativeLayout: sắp xếp các đối tượng dựa trên những đối tượng khác trước
hoặc sau đối tượng cần sắp xếp
18
3. FrameLayout: chia khung để sắp xếp các đối tượng
4. TableLayout: chia thành bảng để sắp xếp các đối tượng
IV. Các đối tượng View cơ bản: EditText, TextView, CheckBox, Button, Spinner,
ListView, GridView
1. Các đối tượng View chỉ thể hiện đơn giản một loại dữ liệu (EditText,
TextView, CheckBox, Button, Spinner ): được sử dụng bằng cách lấy id về và sử
dụng dựa trên các thuộc tính đã được android xây dựng sẵn.
2. ListView: các bước để sử dụng đối tượng ListView
a. Thiết kế một layout thể hiện 1 item của ListView: Layout này
không có LinerLayout và chỉ được thể hiện 1 View .
Ví dụ: string.xml (bao gồm 1 TextView)
<?xml version="1.0" encoding="UTF-8"?>
<TextView
xmlns:android=" />android:id="@+id/txtString"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
b. Thiết kế một ListView trên một Layout nào đó cần hiển thị:
Ví dụ: main.xml (có 2 TextView và một ListView)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=" /> android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="2012" />
<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
19
android:layout_height="wrap_content"
android:text=" " />
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
c. Thiết kế một Activity để thể hiện Layout cần hiển thị:
Ví dụ: ListFruitActivity.java (để hiện thị Layout main)
package www.google.com;
import java.lang.reflect.Array;
import java.util.ArrayList;
import android.app.Activity;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
public class ListFruitActivity extends Activity {
static final String[] FRUITS = new String[] { "Apple",
"Avocado", "Banana",
"Blueberry", "Coconut", "Durian", "Guava",
"Kiwifruit",
"Jackfruit", "Mango", "Olive", "Pear", "Sugar-apple"
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
20
setContentView(R.layout.main);
ArrayList<String> array = new ArrayList<String>();
// Có thể thay array ở câu lệnh sau đây bằng một mảng
chuỗi định sẵn như trong ví dụ này là FRUITS
ArrayAdapter<String> arrayAdapter = (new
ArrayAdapter<String>(this, R.layout.congviec,array));
array.add("13h30:17h:30 - Đi tham dự hội thảo quốc tế lữ
hành (Anh Hiền, Chị Phụng) ");
array.add("18h30:19h:30 - Đi tham dự hội thảo quốc tế lữ
hành và phát triển du lịch biển (Anh Hiền, Chị Vân) ");
final ListView listView = (ListView)
findViewById(R.id.listView1);
listView.setAdapter(arrayAdapter);
arrayAdapter.notifyDataSetChanged();
listView.setOnItemClickListener(new
OnItemClickListener() {
public void onItemClick(AdapterView<?> parent,
View view,
int position, long id) {
// When clicked, show a toast with the TextView
text
Toast.makeText(getApplicationContext(),
((TextView) view).getText(),
Toast.LENGTH_SHORT).show();
}
});
}
}
3. GridView: Sử dụng tương tự như ListView nhưng cấu trúc của GridView
như là một mảng các dữ liệu bao gồm nhiều hàng và nhiều cột mà mỗi một ô được
xem như là dữ liệu của GridView.
IV. Các đối tượng ViewGroup: là sự phối hợp các View thông thường và sắp xếp
theo các Layout để tạo ra.
21
1. Các bước để tạo ra một ViewGroup:
a. Thiết kế một layout thể hiện một item của ViewGroup.
Ví dụ: vwg_quantri.xml (bao gồm 01 EditText txtUsername, 01
EditText txtPassword, và 01 CheckBox chkChon)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=" /> android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<EditText
android:id="@+id/txtUsername"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint = "Username" >
</EditText>
<EditText
android:id="@+id/txtPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:inputType="textPassword"
android:text = "Password" />
<CheckBox
android:id="@+id/chkChon"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
b. Viết 1 class để nhận dữ liệu vào và lấy dữ liệu ra cho một item
trong ViewGroup.
Ví dụ: class vwg_quantri.java
package www.google.com;
public class vwg_quantri
{
private String Username;
private String Password;
22
private boolean isChecked;
public vwg_quantri(String Username, String Password)
{
this.Username = Username;
this.Password = Password;
isChecked = false;
}
public String getUsername()
{
return Username;
}
public String getPassword()
{
return Password;
}
public void setChecked(boolean isChecked)
{
this.isChecked = isChecked;
}
public boolean isChecked()
{
return isChecked;
}
}
c. Viết 1 class để lấy layout của một item gom vào ViewGroup.
Ví dụ: class vwg_quantri_group.java
package www.google.com;
import android.content.Context;
import android.view.LayoutInflater;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
23
public class vwg_quantri_group extends LinearLayout
{
public CheckBox chkChon;
public EditText txtUsername;
public EditText txtPassword;
public vwg_quantri_group(Context context)
{
super(context);
LayoutInflater li = (LayoutInflater)
this.getContext().getSystemService(Context.LAYOUT_INFLATER_SE
RVICE);
li.inflate(R.layout.vwg_quantri, this, true);
chkChon = (CheckBox) findViewById(R.id.chkChon);
txtUsername = (EditText)
findViewById(R.id.txtUsername);
txtPassword = (EditText) findViewById(R.id.txtPassword);
}
}
d. Viết 1 Adapter để lấy dữ liệu của từng item chuyển vào ViewGroup:
Ví dụ: class vwg_quantri_adapter.java
package www.google.com;
import java.util.ArrayList;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.CompoundButton.OnCheckedChangeListener;
public class vwg_quantri_adapter extends ArrayAdapter<vwg_quantri>
{
ArrayList<vwg_quantri> array;
int resource;
24
Context context;
public vwg_quantri_adapter(Context context, int
textViewResourceId, ArrayList<vwg_quantri> objects)
{
super(context, textViewResourceId, objects);
this.context = context;
resource = textViewResourceId;
array = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup
parent)
{
View QUANTRIView = convertView;
if (QUANTRIView == null)
{
QUANTRIView = new
vwg_quantri_group(getContext());
}
final vwg_quantri wvgQUANTRI = array.get(position);
if (wvgQUANTRI != null)
{
EditText txtUsername = ((vwg_quantri_group)
QUANTRIView).txtUsername;
EditText txtPassword = ((vwg_quantri_group)
QUANTRIView).txtPassword;
CheckBox chkChon = ((vwg_quantri_group)
QUANTRIView).chkChon;
chkChon.setOnCheckedChangeListener(new
OnCheckedChangeListener()
{
public void
onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
wvgQUANTRI.setChecked(isChecked);
}
});
txtUsername.setText(wvgQUANTRI.getUsername());
txtPassword.setText(wvgQUANTRI.getPassword());
chkChon.setChecked(wvgQUANTRI.isChecked());
}
25