Tải bản đầy đủ (.docx) (20 trang)

Báo cáo thực tập tốt nghiệp doanh nghiệp samsung rd

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (628.59 KB, 20 trang )

HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG
KHOA CƠNG NGHỆ THÔNG TIN 1
----------

BÁO CÁO
THỰC TẬP TỐT NGHIỆP
Đơn vị: Samsung R&D Center Vietnam

Giảng viên hướng dẫn:
Sinh viên thực hiện:
Mã sinh viên:
Lớp:

Hà Nội, 2023


LỜI MỞ ĐẦU
Trong suốt thời gian học tập và rèn luyện tại Học viện Cơng nghệ Bưu chính
Viễn thơng cho đến nay, là sinh viên ngành Công nghệ thông tin, em đã nhận được rất
nhiều sự quan tâm, giúp đỡ, dìu dắt của q thầy cơ và bạn bè. Với lòng biết ơn sâu
sắc và chân thành nhất, em xin gửi đến các thầy cô ở Khoa Công nghệ thông tin của
Học viện đã truyền đạt kiến thức và kinh nghiệm cho em trong suốt khoảng thời gian
học tập và rèn luyện tại đây.
Trong học kỳ này, nhận được sự đồng ý của khoa Công nghệ thông tin và
Samsung R&D Center Vietnam (SRV), em đã được tham gia chương trình thực tập tốt
nghiệp cho sinh viên tại trung tâm. Đây là hành trang vô cùng quý báu để em tiếp tục
phát triển sự nghiệp của bản thân trong tương lai.
Em xin chân thành cảm ơn ThS, thầy đã tận tâm hướng dẫn em và các bạn trong
suốt kì thực tập này. Bên cạnh đó, em cũng xin bày tỏ biết ơn Ban lãnh đạo Samsung
R&D Center Vietnam (SRV), nhờ có sự giúp đỡ nhiệt tình của các anh chị ở các
phòng ban, đã tạo điều kiện thuận lợi nhất cho em trong suốt thời gian thực tập tại


công ty. Em xin chân thành cảm ơn!
Hà Nội ngày 07 tháng 07 năm 2023
Sinh viên thực hiện

i


NHẬN XÉT KẾT QUẢ THỰC TẬP
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................

.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................

MỤC LỤC
LỜI MỞ ĐẦU...............................................................................................................i
NHẬN XÉT KẾT QUẢ THỰC TẬP.........................................................................ii
DANH MỤC CÁC TỪ VIẾT TẮT............................................................................iv
DANH MỤC HÌNH ẢNH............................................................................................v
PHẦN I: BÁO CÁO THỰC TẬP TẠI CƠNG TY....................................................1
CHƯƠNG I: TỔNG QUAN VỀ ĐƠN VỊ THỰC TẬP.........................................1
1.1.

Giới thiệu về đơn vị thực tập......................................................................1

1.2.

Lịch sử hình thành và phát triển...............................................................1

1.3.

Nhiệm vụ......................................................................................................2

CHƯƠNG II: Q TRÌNH THỰC TẬP...............................................................3
2.1. Lịch trình thực tập.........................................................................................3
2.2. Giải pháp thực hiện........................................................................................4
2.3. Nội dung thực tập...........................................................................................4
2.4. Kết quả thực hiện.........................................................................................12
ii



KẾT LUẬN CHUNG.................................................................................................13
TÀI LIỆU THAM KHẢO.........................................................................................14

iii


DANH MỤC CÁC TỪ VIẾT TẮT
Từ viết tắt
SRV

Viết đầy đủ
Samsung R&D Center

Giải thích nghĩa
Trung tâm nghiên cứu và phát

Vietnam

triển Samsung Việt Nam

iv


DANH MỤC HÌNH ẢNH
Hình 1. Tịa nhà Samsung R&D Center Vietnam.....................................................1
Hình 2. Buổi lễ trao tặng giấy chứng nhận hồn thành khóa thực tập..................13

v



PHẦN I: BÁO CÁO THỰC TẬP TẠI CÔNG TY
CHƯƠNG I: TỔNG QUAN VỀ ĐƠN VỊ THỰC TẬP
1.1.

Giới thiệu về đơn vị thực tập
Tên đơn vị: Trung tâm Nghiên cứu và Phát triển Samsung Việt Nam
Tên tiếng anh: Samsung R&D Center Vietnam
Tên viết tắt: SRV
Địa chỉ: Tịa nhà Samsung, Đ. Hồng Minh Thảo, KĐT Tây Hồ Tây, Q. Bắc Từ
Liêm, Hà Nội

Hình 1. Tịa nhà Samsung R&D Center Vietnam

1.2.

Lịch sử hình thành và phát triển

Tiền thân của SRV là SVMC (Samsung Vietnam Mobile R&D Center) – đơn vị
dẫn đầu về phát triển phần mềm, nghiên cứu phát triển các mạng 4G và 5G tại Việt
Nam và bán cho các nhà mạng di động. Năm 2022, SVMC chuyển về cơ sở mới tại
Xuân Đỉnh, Tây Hồ, Hà Nội và đổi tên thành SRV. Lễ khánh thành của SRV vào
tháng 12/2022 đã vinh dự đón Thủ tướng Phạm Minh Chính tới tham dự.
SVMC được thành lập vào năm 2012 với mục tiêu sử dụng nguồn nhân lực có kỹ
năng và khả năng cơng nghệ của Việt Nam để thúc đẩy sự đổi mới trong ngành công
1


nghiệp di động.

Từ khi thành lập, SVMC đã đóng vai trò quan trọng trong việc phát triển các thiết
bị di động của Samsung. Trung tâm này chịu trách nhiệm thiết kế và phát triển các
thành phần và tính năng của điện thoại thông minh Samsung, bao gồm phần mềm,
phần cứng và cải tiến trải nghiệm người dùng. SVMC cũng tiến hành nghiên cứu và
kiểm tra để đảm bảo chất lượng và hiệu suất của các sản phẩm di động của Samsung.
Trong suốt thời gian qua, SVMC đã phát triển mạnh mẽ về quy mô và phạm vi hoạt
động. Trung tâm đã mở rộng khả năng nghiên cứu và phát triển, thu hút những nhân
tài hàng đầu trong lĩnh vực công nghệ di động. Sự phát triển này đã cho phép SVMC
đóng góp vào việc phát triển các cơng nghệ và sản phẩm di động tiên tiến cho
Samsung.
Sự hiện diện của SVMC tại Việt Nam khơng chỉ mang lại lợi ích cho Samsung mà
cịn góp phần phát triển nền kinh tế địa phương. Trung tâm đã tạo ra nhiều cơ hội việc
làm và đóng góp vào sự phát triển của ngành cơng nghệ của đất nước. Ngồi ra,
SVMC cịn tích cực tham gia các hoạt động trách nhiệm xã hội doanh nghiệp, hỗ trợ
các cộng đồng địa phương và thúc đẩy phát triển bền vững.

1.3.

Nhiệm vụ

Lĩnh vực hoạt động: nghiên cứu và phát triển các sản phẩm phần mềm và phần
cứng cho các thiết bị: Điện thoại thơng minh, máy tính bảng, đồng hồ thơng minh. Với
4 nhóm lĩnh vực chính:
- Phát triển các phần mềm thương mại cho các thiết bị thông minh của Samsung,
đáp ứng tốt nhất nhu cầu khắt khe của thị trường và cung cấp các gói phần mềm
tốt nhất cho từng khu vực.
- Nghiên cứu phát triển các giải pháp phần mềm và dịch vụ tiên tiến người dùng
Samsung và cho doanh nghiệp hướng tới đối tượng khách hàng tồn cầu, tầm
nhìn trở thành nhà cung cấp dịch vụ phần mềm hàng đầu thế giới.
- Đánh giá và đảm bảo chất lượng của các gói phần mềm mạng, máy chủ cho hệ

thống mạng 4G/5G của Samsung đang triển khai tới các khách hàng trên tồn
cầu, thơng qua các cơng cụ tự động hóa thơng minh.
- Nghiên cứu và thiết kế phần cứng, cơ khí cho các thiết bị thơng minh trong các
dịng sản phẩm của hàng đầu của Samsung, đồng thời hỗ trợ cho quy trình sản
xuất phần cứng chuyên sâu tại các nhà máy SEV/T ở Việt Nam.

2


CHƯƠNG II: Q TRÌNH THỰC TẬP
2.1. Lịch trình thực tập
Chương trình thực tập sinh Summer Intership 2023 của Samsung SRV có 3 đợt
vào tháng 06, 07, 08 năm 2023. Em đã đăng ký tham gia vào đợt tháng 06 năm 2023.
Thời gian thực tập kéo dài 04 tuần bắt đầu từ 05/06 đến hết ngày 30/06. Thời gian thực
tập trong tuần từ thứ 2 đến thứ 6, buổi sáng bắt đầu từ 8h30, nghỉ trưa lúc 12h, buổi
chiều bắt đầu từ 13h và kết thúc ngày làm việc lúc 17h30.
Thời gian
Nội dung
Tuần 1 (05/06 - 09/06)
- 05/06: Giới thiệu về cơng ty và các quy định,
nhận máy tính.
- Từ 06 đến 09/06:
+ Ôn tập kiến thức cơ bản về các kiểu dữ liệu cơ
bản trong Java.
+ Thực hiện luyện tập trên server.
Tuần 2 (12/06 – 16/06)
- Từ 12/06 đến 15/06:
+ Học lý thuyết về Stack, Queue và cách triển
khai trong Java.
+ Thực hiện luyện tập trên server.

- 16/06: Tham gia bài thi IM.
Tuần 3 (19/06 – 23/06)
- 19/06:
+ Phân nhóm và chọn đề tài mini project.
+ Cài đặt phần mềm Android Studio.
- Từ 20/06 đến 23/06:
+ Giới thiệu về Lập trình Android.
+ Một số thành phần cơ bản: Fragment, Intent,
View, Layout.
+ Áp dụng và xây dựng cho mini project.
Tuần 4 (26/06 – 30/06)
- Từ 26/06 đến 28/06:
+ Học về cách lưu trữ dữ liệu, notification,
service, async task, thread trong android.
+ Áp dụng và hoàn thành mini project.
+ Làm slide báo cáo miniproject.
- 29/06: Báo cáo mini project.
- 30/06: Tham quan một số cơ sở vật chất của
trung tâm và dự lễ trao chứng nhận.

3


2.2. Giải pháp thực hiện
Trong quá trình thực tập tại trung tâm:
- Việc đào tạo được thực hiện ở phòng đào tạo Venus tại tầng 2 của trung tâm.
- Các phần mềm phục vụ việc đào tạo: Eclipse, Microsoft Visual Studio,
Android Studio.
- Việc luyện tập được thực hiện trên server của trung tâm.
- Việc ăn trưa được thực hiện tại nhà ăn tầng 3 của trung tâm.


2.3. Nội dung thực tập
2.3.1. Các kiểu dữ liệu cơ bản
Trong Java có 2 loại kiểu dữ liệu: Primitive Data Types và Non-Primitive Data
Types
-

-

-

-

Với Primitive Data Types, ta có 8 kiểu dữ liệu:
Kiểu Boolean: chỉ sử dụng lưu trữ cho 2 giá trị: true và false. Múc đích của kiểu
Boolean thường được dùng cho những câu điều kiện rẽ nhánh.
Kiểu Byte: dùng để lưu trữ số ngun có kích cỡ bằng 1 byte (8 bit). Giá trị có
thể lưu được nằm trong khoảng từ -128 (-2^7) đến 127 (2^7-1).
Kiểu Short: dùng để lưu trữ kiểu số ngun có kích cỡ bằng 2 byte (16 bit). Giá
trị có thể lưu được nằm trong khoảng từ -32,768 (-2^15) đến 32,767 (2^15 – 1).
Kiểu Int: dùng để lưu trữ kiểu số ngun có kích cỡ bằng 4 byte (32 bit). Giá trị
có thể lưu được nằm trong khoảng từ -2,147,483,648 (-2^31) đến 2,147,483,647
(2^31 – 1).
Kiểu Long: dùng để lưu trữ kiểu số ngun có kích cỡ bằng 8 byte. Giá trị có
thể lưu được nằm trong khoảng từ -9,223,372,036,854,775,808 (-2^63) đến
9,223,372,036,854,775,807 (2^63-1). Giá trị gán cần có kí tự “l” phía sau.
Kiểu Float: dùng để lưu trữ số thực có kích cỡ bằng 4 byte (32 bit). Giá trị có
thể lưu được nằm trong khoảng từ -3.4028235 x 10^38 đến -3.4028235 x
10^38. Giá trị gán cần có kí tự ‘f’ phía sau.
Kiểu Double: dùng để lưu trữ số thực có kích cỡ bằng 8 byte (64 bit). Giá trị có

thể lưu nằm trong khoảng từ -1.7976931348623157 x 10^308 đến 1.7976931348623157 x 10^308. Giá trị gán có thể có hoặc khơng kí tự ‘d’ phía
sau.

2.3.2. Mảng trong Java:
Mảng (array) là một tập hợp các phần tử có cùng kiểu được lưu trữ gần nhau
trong bộ nhớ.
Mảng trong java là một đối tượng chứa các phần tử có kiểu dữ liệu giống nhau.
Mảng là một cấu trúc dữ liệu nơi lưu trữ các phần tử giống nhau. Với mảng trong
4


java chúng ta chỉ có thể lưu trữ một tập các phần tử có số lượng phần tử cố định.
Mảng trong java lưu các phần tử theo chỉ số, chỉ số của phần tử đầu tiên là 0.
Mảng có thể là mảng 1 chiều hoặc mảng đa chiều.
* Khởi tạo 1 mảng trong Java:
Để khai báo một mảng trong Java, khai báo loại biến với dấu ngoặc
vuông:
dataType[] arr;
dataType arr[];
dataType []arr;
Để chèn giá trị vào nó, chúng ta có thể sử dụng một mảng bằng chữ - đặt
các giá trị trong danh sách được phân tách bằng dấu phẩy, bên trong dấu
ngoặc nhọn:
VD: String[] cars = {“BMW”, “Honda”, “Ford”};
* Truy cập một phần tử: Để truy cập 1 phần tử trong mảng, ta sử dụng chỉ mục
(index).
VD: cars[0] // BMW
* Thay đổi một phần tử trong mảng: Ta cũng sử dụng chỉ mục (index).
VD: cars[0] = “Morning”;
* Độ dài của mảng: Ta sử dụng thuộc tính length

VD: cars.length //3
* Duyệt các phần tử trong mảng:
Sử dụng vịng lặp for: Bạn có thể lặp qua các phần tử mảng bằng vòng
lặp for và sử dụng thuộc tính length để chỉ định số lần vòng lặp sẽ chạy
VD: for (int i = 0; i < cars.length; i++){
System.out.println(cars[i]);
}
Sử dụng forEach:
VD: for (String car: cars){
System.out.println(car);
}

2.3.3. Stack và cách triển khai
Stack là mọt cấu trúc dữ liệu đơn giản được sử dụng để lưu trữ dữ liệu.
Stack là một danh sách có thứ tự trong đó việc chèn và xóa được thực hiện ở
một đầu, được gọi là top – đỉnh. Phần tử cuối cùng được chèn là phần tử đầu tiên bị
xóa. Do đó, nó được gọi là Last in First out (LIFO).
Một số phương thức của stack:
push(int data): Thêm data vào stack
int pop(): Xóa và return phần tử được chèn cuối cùng từ stack
5


int top(): Trả về phần tử được chèn cuối cùng từ stack
int size(): Trả về kích cỡ của stack
int isEmpty(): Kiểm tra stack có rỗng khơng
int isFull(): Kiểm tra stack đã đầy chưa

2.3.4. Queue và cách triển khai
Queue là một cấu trúc dữ liệu được sử dụng để lưu trữ dữ liệu.

Hàng đợi (Queue) là một danh sách có thứ tự trong đó việc thêm được thực hiện
ở một đầu (phía sau) và việc xóa được thực hiện ở đầu kia (phía trước). Phần từ đầu
tiên được thêm là phần tử đầu tiên bị xóa. Do đó, nó được gọi là First in First Out
(FIFO).
Một số phương thức của Queue:
void enQueue(int value): Chèn một phần tử vào hàng đợi
int deQueue(): Xóa phần tử ra khỏi hàng đợi
int Qpeek(): Trả về phần tử đầu tiên nhưng khơng xóa
int size(): Trả về số phần tử được lưu trữ trong hàng đợi
int isEmpty(): Kiểm tra xem hàng đợi có đang lưu phần tử nào không

2.3.5. Tổng quan về Android Programing
Android programming là quá trình phát triển ứng dụng di động sử dụng nền
tảng Android. Nền tảng Android được phát triển bởi Google và được sử dụng rộng rãi
trên các thiết bị di động như điện thoại thơng minh và máy tính bảng.
Android programming sử dụng ngơn ngữ lập trình Java hoặc Kotlin để xây
dựng ứng dụng. Java là ngơn ngữ lập trình chính thức của Android trong nhiều năm,
trong khi Kotlin là một ngơn ngữ mới được hỗ trợ chính thức bởi Google từ năm 2017.
Các ứng dụng Android được xây dựng bằng cách sử dụng Android Studio, một
mơi trường phát triển tích hợp (IDE) được thiết kế đặc biệt cho việc phát triển ứng
dụng Android. Android Studio cung cấp các công cụ và tài nguyên cần thiết để xây
dựng, kiểm tra và triển khai ứng dụng trên các thiết bị Android.
Android programming cung cấp các khả năng phong phú để tạo ra các ứng
dụng đa dạng, bao gồm giao diện người dùng tương tác, quản lý dữ liệu, kết nối mạng,
tích hợp với các dịch vụ bên ngồi và nhiều tính năng khác. Các ứng dụng Android có
thể được phát triển cho nhiều mục đích, từ giải trí và trị chơi cho đến ứng dụng doanh
nghiệp và giáo dục.

2.3.6. Fragment, Layout, Intent, View trong Android Programing
* Fragment:

Fragment là một thành phần quan trọng trong Android programming, cho phép
chia nhỏ giao diện người dùng thành các phần nhỏ hơn để quản lý và tái sử dụng dễ
dàng hơn. Mỗi Fragment có thể chứa một phần giao diện người dùng và có thể được
thêm hoặc xóa khỏi một Activity mà khơng ảnh hưởng đến các Fragment khác.
6


Các điểm chính về Fragment trong Android programming bao gồm:
- Quản lý giao diện người dùng: Fragment giúp quản lý giao diện người dùng
một cách dễ dàng hơn. Chúng có thể được thêm, xóa hoặc thay đổi một cách
linh hoạt trong một Activity.
- Tái sử dụng: Fragment cho phép tái sử dụng các phần giao diện người dùng.
Chúng có thể được sử dụng trong nhiều Activity khác nhau, giúp giảm thiểu
việc viết mã lặp lại.
- Quản lý trạng thái: Fragment có thể lưu trữ và khơi phục trạng thái của nó khi
Activity bị hủy hoặc quay lại.
- Giao tiếp giữa các Fragment: Fragment có thể giao tiếp với nhau thơng qua
Activity chứa chúng. Điều này cho phép truyền dữ liệu hoặc thực hiện các hành
động giữa các Fragment.
- Hỗ trợ đa cửa sổ: Fragment hỗ trợ việc phát triển ứng dụng đa cửa sổ trên các
thiết bị có màn hình lớn. Chúng có thể được sắp xếp và hiển thị cùng lúc trên
màn hình.
* Layout:
Layout trong Android Programming là cách để xác định và sắp xếp các phần tử
giao diện người dùng trên màn hình. Nó được sử dụng để định nghĩa vị trí, kích thước
và các thuộc tính khác của các phần tử giao diện như TextView, Button, ImageView,
và nhiều hơn nữa.
Các điểm chính về layout trong Android Programming bao gồm:
- XML: Layout được định nghĩa bằng cách sử dụng XML (Extensible Markup
Language), một ngôn ngữ đánh dấu cấu trúc dữ liệu. XML cho phép phân tách

giao diện người dùng và mã logic.
- ViewGroup: Layout là một loại ViewGroup, là một lớp base cho các lớp chứa
các phần tử giao diện khác. Một ViewGroup có thể chứa một hoặc nhiều View
và các ViewGroup con khác.
- Các loại layout: Android cung cấp nhiều loại layout khác nhau để sắp xếp các
phần tử giao diện. Một số loại layout phổ biến bao gồm LinearLayout,
RelativeLayout, ConstraintLayout, và FrameLayout. Mỗi loại layout có cách
sắp xếp và thuộc tính riêng.
- Thuộc tính layout: Layout có thể được tùy chỉnh bằng cách sử dụng các thuộc
tính. Các thuộc tính layout cho phép bạn xác định vị trí, kích thước, margin,
padding, và các thuộc tính khác của các phần tử giao diện.
- Tính linh hoạt: Layout cho phép tạo giao diện người dùng linh hoạt cho các
thiết bị có màn hình khác nhau. Các layout có thể tự động điều chỉnh kích thước
và vị trí của các phần tử để phù hợp với màn hình hiện tại.
* Intent:
Intent là một thành phần quan trọng trong Android Programming, được sử dụng
7


để giao tiếp giữa các thành phần khác nhau trong ứng dụng Android. Nó cho phép
chuyển đổi từ một Activity sang một Activity khác, gửi và nhận dữ liệu, và thực hiện
các hành động khác nhau.
Các điểm chính về Intent trong Android Programming bao gồm:
- Chuyển đổi giữa các Activity: Intent được sử dụng để chuyển đổi giữa các
Activity trong ứng dụng Android. Nó cho phép khởi chạy hoặc kết thúc một
Activity và truyền dữ liệu giữa chúng.
- Gửi và nhận dữ liệu: Intent cho phép gửi và nhận dữ liệu giữa các thành phần
khác nhau trong ứng dụng. Bạn có thể truyền dữ liệu dưới dạng thơng tin đơn
giản (như chuỗi, số nguyên) hoặc dữ liệu phức tạp (như đối tượng Parcelable
hoặc Serializable).

- Khởi chạy dịch vụ: Intent cũng được sử dụng để khởi chạy và tương tác với các
dịch vụ trong ứng dụng Android. Bạn có thể sử dụng Intent để gọi các phương
thức của dịch vụ và gửi dữ liệu đến nó.
- Thực hiện hành động: Intent có thể được sử dụng để thực hiện các hành động
như gửi email, gọi điện thoại, mở trình duyệt, và nhiều hơn nữa. Bạn có thể sử
dụng Intent để kích hoạt các ứng dụng và hành động khác trên thiết bị Android.
- Implicit và explicit Intent: Intent có thể được sử dụng dưới dạng implicit hoặc
explicit. Implicit Intent không chỉ định rõ thành phần mục tiêu mà thay vào đó
chỉ định hành động hoặc loại dữ liệu mà ứng dụng mong muốn thực hiện.
Explicit Intent chỉ định rõ thành phần mục tiêu mà ứng dụng muốn chuyển đến.
* View
View trong Android Programming là một thành phần cơ bản của giao diện
người dùng. Nó đại diện cho các phần tử như TextView, Button, EditText, ImageView
và nhiều phần tử khác. View là đối tượng có khả năng hiển thị thơng tin và tương tác
với người dùng.
Các điểm chính về View trong Android Programming bao gồm:
- Hiển thị thông tin: View được sử dụng để hiển thị thơng tin cho người dùng. Ví
dụ: TextView được sử dụng để hiển thị văn bản, ImageView được sử dụng để
hiển thị hình ảnh.
- Tương tác người dùng: View cho phép người dùng tương tác với ứng dụng. Ví
dụ: Button được sử dụng để xử lý sự kiện khi người dùng nhấn vào nút.
- Cấu trúc phân cấp: View được phân cấp theo cấu trúc cây. Mỗi View có thể
chứa nhiều View con và có thể là View cha của các View khác.
- Thuộc tính và phương thức: Mỗi View có các thuộc tính và phương thức riêng
để tùy chỉnh và điều khiển hiển thị và hành vi của nó. Ví dụ: thuộc tính
textColor để đặt màu chữ của TextView.
- Sự kiện và lắng nghe: View có thể lắng nghe và xử lý các sự kiện như nhấn nút,
vuốt, chạm vào màn hình và nhiều hơn nữa.
8



-

Tính tương thích: View được thiết kế để hoạt động trên nhiều thiết bị Android
khác nhau, từ điện thoại thông minh đến máy tính bảng và TV.

2.3.7. Lưu trữ dữ liệu trong Android Programing
Trong Android Programming, có hai phương pháp phổ biến để lưu trữ dữ liệu:
Shared Preferences và SQLite.
* Shared Preferences:
Shared Preferences là một cơ chế đơn giản để lưu trữ và truy xuất dữ liệu nhỏ
trong Android. Đây là một cách tiện lợi để lưu trữ các cài đặt người dùng như tùy
chọn, trạng thái ứng dụng, v.v. Dữ liệu được lưu trữ dưới dạng cặp key-value, với key
là một chuỗi và value có thể là một số nguyên, số thực, boolean hoặc chuỗi. Shared
Preferences không phù hợp cho việc lưu trữ dữ liệu lớn hoặc phức tạp.
* SQLite:
SQLite là một cơ sở dữ liệu quan hệ nhẹ nhưng mạnh mẽ được tích hợp sẵn
trong Android. Nó cung cấp một cách để lưu trữ và truy xuất dữ liệu có cấu trúc trong
ứng dụng Android. SQLite sử dụng ngôn ngữ truy vấn SQL để thực hiện các thao tác
như tạo, đọc, cập nhật và xóa dữ liệu. Với SQLite, bạn có thể lưu trữ dữ liệu phức tạp
và thực hiện các truy vấn phức tạp hơn.
Khi sử dụng Shared Preferences, dữ liệu được lưu trữ trong bộ nhớ của ứng
dụng và có thể được truy xuất bất cứ khi nào cần thiết. Tuy nhiên, Shared Preferences
không phù hợp cho việc lưu trữ dữ liệu lớn hoặc phức tạp.
Khi sử dụng SQLite, dữ liệu được lưu trữ trong cơ sở dữ liệu riêng biệt và có
thể được truy xuất, sắp xếp và lọc bằng cách sử dụng câu lệnh SQL. SQLite cho phép
bạn thực hiện các truy vấn phức tạp và lưu trữ dữ liệu lớn hơn.
Tùy thuộc vào yêu cầu của ứng dụng, bạn có thể chọn sử dụng Shared
Preferences hoặc SQLite để lưu trữ dữ liệu trong Android Programming.


2.3.8. Notification và Broadcast Service trong Android Programing
* Notification
Trong Android Programming, Notification là một thành phần quan trọng để
hiển thị thông báo đến người dùng từ ứng dụng.
Notification cho phép ứng dụng gửi thông báo cho người dùng mà khơng cần
mở ứng dụng đó. Thơng báo có thể chứa các thông tin cập nhật, tin nhắn, cuộc gọi đến,
v.v. và người dùng có thể tương tác với thơng báo để thực hiện các hành động như mở
ứng dụng, xem tin nhắn, trả lời cuộc gọi, v.v.
Để tạo thông báo trong Android, bạn cần sử dụng lớp NotificationManager và
lớp NotificationCompat.Builder. Dưới đây là các bước chính để tạo một thơng báo:
- Xây dựng NotificationCompat.Builder: Bạn cần tạo một đối tượng
NotificationCompat.Builder để xây dựng thơng báo. Bạn có thể cung cấp các
thông tin như tiêu đề, nội dung, biểu tượng, âm thanh, v.v. cho thông báo.
9


-

Thiết lập hành động: Bạn có thể thêm các hành động cho thông báo, cho phép
người dùng tương tác với thơng báo. Ví dụ: mở ứng dụng, trả lời tin nhắn, v.v.
- Xây dựng thông báo: Sử dụng phương thức build() của
NotificationCompat.Builder để xây dựng thông báo.
- Hiển thị thông báo: Sử dụng NotificationManager để hiển thị thông báo. Bạn
cần cung cấp một ID duy nhất cho thông báo để có thể cập nhật hoặc hủy bỏ nó
sau này.
Thơng báo có thể được hiển thị trên thanh thơng báo hoặc dưới dạng pop-up,
tùy thuộc vào loại thông báo và thiết lập của người dùng.
Notification là một cách tiện lợi để cung cấp thông tin cho người dùng mà
không cần mở ứng dụng. Bạn có thể tùy chỉnh thơng báo để tương thích với giao diện
người dùng và cung cấp các hành động cho người dùng tương tác.

* Broadcast Service
Trong Android Programming, Broadcast Service là một thành phần quan trọng
để gửi và nhận các thông điệp (broadcast) giữa các thành phần khác nhau của hệ thống
hoặc ứng dụng.
Broadcast Service cho phép các thành phần trong ứng dụng hoặc giữa các ứng
dụng khác nhau giao tiếp với nhau một cách không đồng bộ. Khi một Broadcast
Service được gửi đi, nó có thể được nhận bởi nhiều thành phần đăng ký (registered
receivers) mà quan tâm đến loại thơng điệp được gửi.
Có hai loại Broadcast Service trong Android:
- Tường thuật (Ordered) Broadcast Service: Khi một tường thuật Broadcast
Service được gửi đi, các thành phần đăng ký được nhận thông điệp theo thứ tự.
Mỗi thành phần có thể xử lý thơng điệp, thay đổi nội dung hoặc hủy bỏ thông
điệp. Thứ tự xử lý được xác định bởi mức độ ưu tiên (priority) của thành phần
đăng ký. Điều này cho phép ứng dụng can thiệp và kiểm sốt q trình xử lý
thơng điệp.
- Khơng tường thuật (Normal) Broadcast Service: Khi một không tường thuật
Broadcast Service được gửi đi, thông điệp được gửi đến tất cả các thành phần
đăng ký mà không quan tâm đến thứ tự. Các thành phần không thể thay đổi
thông điệp hoặc hủy bỏ nó. Điều này hữu ích khi bạn muốn thông báo cho tất cả
các thành phần cùng một thông điệp mà không cần quan tâm đến việc xử lý chi
tiết.
Để sử dụng Broadcast Service trong Android, bạn cần tạo một lớp
BroadcastReceiver để xử lý thông điệp nhận được. Lớp này cần đăng ký trong file
AndroidManifest.xml hoặc trong mã nguồn của thành phần khác. Bạn có thể gửi thơng
điệp bằng cách sử dụng lớp Intent và phương thức sendBroadcast() hoặc
sendOrderedBroadcast().
Broadcast Service cho phép các thành phần trong Android giao tiếp với nhau
10



một cách linh hoạt và khơng đồng bộ. Nó được sử dụng để thực hiện các tác vụ như
gửi thông báo, cập nhật giao diện người dùng, xử lý sự kiện hệ thống, v.v.

2.3.9. Async Task và Thread trong Android Programing
* Async Task
AsyncTask cho phép bạn thực hiện các tác vụ phức tạp mà khơng làm đóng
băng giao diện người dùng. Điều này rất hữu ích khi bạn cần thực hiện các tác vụ mà
có thể mất thời gian, chẳng hạn như tải dữ liệu từ mạng, xử lý dữ liệu lớn, v.v.
AsyncTask là một lớp trừu tượng, bạn cần tạo một lớp con để thực thi các tác
vụ không đồng bộ. Lớp con này phải ghi đè các phương thức quan trọng sau:
- doInBackground(): Phương thức này được gọi bởi hệ thống để thực hiện các tác
vụ không đồng bộ. Tất cả các công việc chậm chạp, chẳng hạn như tải dữ liệu,
xử lý dữ liệu, v.v. nên được thực hiện trong phương thức này.
- onPreExecute(): Phương thức này được gọi trước khi doInBackground() bắt đầu
thực hiện. Bạn có thể sử dụng phương thức này để thực hiện các chuẩn bị trước
khi bắt đầu tác vụ.
- onPostExecute(): Phương thức này được gọi sau khi doInBackground() hồn
thành. Bạn có thể sử dụng phương thức này để xử lý kết quả của tác vụ, cập
nhật giao diện người dùng, v.v.
- onProgressUpdate(): Phương thức này được gọi khi bạn gọi phương thức
publishProgress() từ doInBackground(). Bạn có thể sử dụng phương thức này
để cập nhật tiến trình của tác vụ.
AsyncTask cung cấp các phương thức tiện ích khác nhau để quản lý trạng thái
và giao tiếp giữa các phương thức. Bạn có thể truyền tham số vào AsyncTask thông
qua phương thức execute() và nhận kết quả trả về từ doInBackground() thông qua
phương thức onPostExecute().
* Thread
Trong Android Programming, Thread là một thành phần quan trọng để thực
hiện các tác vụ đồng thời trong ứng dụng.
Thread là một đơn vị thực thi độc lập trong một quy trình (process). Nó cho

phép ứng dụng chạy các tác vụ đồng thời, giúp tránh đóng băng giao diện người dùng
khi thực hiện các tác vụ tốn thời gian.
Trong Android, có hai cách chính để sử dụng Thread:
- Sử dụng lớp Thread: Bạn có thể tạo một lớp con của lớp Thread và ghi đè
phương thức run() để thực hiện các tác vụ trong thread. Sau đó, bạn có thể
tạo một đối tượng của lớp con này và gọi phương thức start() để bắt đầu
thực thi thread.
- Sử dụng giao diện Runnable: Runnable là một giao diện đơn giản chỉ có một
phương thức run(). Bạn có thể tạo một lớp thực hiện giao diện Runnable và
11


ghi đè phương thức run() để thực hiện các tác vụ trong thread. Sau đó, bạn
có thể tạo một đối tượng của lớp này và truyền nó vào một đối tượng Thread
để bắt đầu thực thi thread.
Khi sử dụng Thread trong Android, cần lưu ý các điểm sau:
- Không được cập nhật giao diện người dùng từ một thread khác thread chính
(UI thread). Bạn có thể sử dụng phương pháp runOnUiThread() hoặc
Handler để cập nhật giao diện người dùng từ thread khác.
- Cần quản lý vòng đời của thread một cách cẩn thận để tránh rò rỉ bộ nhớ và
tiêu tốn tài nguyên.
- Cần kiểm soát việc tạo và hủy thread một cách cân nhắc để tránh việc tạo
quá nhiều thread và làm giảm hiệu suất ứng dụng.
Thread là một công cụ mạnh mẽ trong Android Programming để thực hiện các
tác vụ đồng thời và tăng cường hiệu suất của ứng dụng. Tuy nhiên, cần xử lý thread
một cách cẩn thận để đảm bảo tính ổn định và hiệu quả của ứng dụng.

2.3.10. Mini project
Trong quá trình thực tập, em có tham gia thực hiện mini project cùng 3 bạn
khác. Chủ đề nhóm em lựa chọn là Ứng dụng Alarm.

Ứng dụng bao gồm các chức năng cơ bản:
+ Thêm, sửa, xóa báo thức
+ Đặt nhạc chng cho báo thức
+ Báo thức lặp lại
+ Snooze báo thức
+ Đồng hồ bấm giờ (Stopwatch)
Em thực hiện việc viết lớp SQLiteHelper và phần chức năng Stopwatch. Để lưu
trữ dữ liệu của báo thức và lịch sử bấm giờ, em có dùng 2 bảng để lưu trữ dữ liệu:
+ Bảng alarm: id INT, hour INT, minute INT, day VARCHAR(50),
sound INT, status BOOLEAN
+ Bảng stopWatch: id INT, pos INT, hour INT, minute INT, second
INT, milisecond INT, recentStop LONG
Trong phần Stopwatch, để biểu diễn thời gian chạy liên tục, em sử dụng một
handler điều khiển một Runable (chứa hàm run() biểu diễn khoảng thời gian đã trôi
qua).

2.4. Kết quả thực hiện
- Hoàn thành các bài luyện tập trên server
- Vượt qua bài thi IM
- Tham gia và hoàn thành mini project: Ứng dụng Alarm

12


Hình 2. Buổi lễ trao tặng giấy chứng nhận hoàn thành khóa thực tập

KẾT LUẬN CHUNG
Sau thời gian 4 tuần thực tập tại trung tâm, với sự nỗ lực, cố gắng của bản thân
cùng với sự hướng dẫn tận tình của thầy cùng với sự giúp đỡ của các anh mentor, anh
chị phịng nhân sự của trung tâm thì em đã hồn thành khóa thực tập tốt nghiệp.

Kết quả báo cáo đã đạt được những nội dung cụ thể sau:
- Hiểu rõ hơn về cấu trúc dữ liệu Stack, Queue và cách triển khai.
- Nâng cao khả năng giải quyết các bài tốn thơng qua các bài luyện tập.
- Hiểu thêm về lập trình android và cải thiện khả năng làm việc nhóm với mini
project
Trong q trình thực tập và hồn thành báo cáo thực tập, bản thân em vẫn
khơng tránh khỏi những sai sót, vì vậy em rất mong nhân được sự chỉ bảo và đóng góp
ý kiến của thầy để báo cáo của em hoàn thiện hơn.
Em xin chân thành cảm ơn!

13


TÀI LIỆU THAM KHẢO

14



×