Hệ điều hành android và xây dựng ứng dụng contact trên android

25 362 0
Hệ điều hành android và xây dựng ứng dụng  contact trên android

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Báo cáo thực tập tốt nghiệp MỤC LỤC SV: Trần Quốc Khánh - Lớp: ĐT6 - K53 Báo cáo thực tập tốt nghiệp LỜI NÓI ĐẦU Hệ điều hành Android hệ điều hành ưa chuộng giới thiết bị cấm tay Với mắt Android phát triển không ngừng tảng di động đánh dấu đối trọng với iOS Apple thị trường di động Trong tương lai Android phát triển mạnh mẽ Vì thực tập em tìm hiểu : “Hệ điều hành Android xây dựng ứng dụng Contact Android” Qua em xin chân thành cảm ơn công ty Samsung electronic Vietnam tạo điều kiện cho em trình thực tập thầy giáo Phạm Thành Công giúp đỡ ,hướng dẫn cho em hoàn thành tốt đợt thực tập SV: Trần Quốc Khánh - Lớp: ĐT6 - K53 -1- Báo cáo thực tập tốt nghiệp Chương Tổng quan hệ điều hành Android 1.1 Lịch sử Android • Năm 2003, công ty hoạt động lĩnh vực phát triển phần mềm cho thiết bị di động mang tên Android thành lập thành viên là: – Andy Rubin (nhà đồng sáng lập công ty Danger - công ty chuyên tảng, phần mềm, thiết kế, dịch vụ cho thiết bị điện toán di động) – Rich Miner (nhà đồng sáng lập công ty truyền thông Wildfire Communications) – Nick Sears (một vị phó chủ tịch nhà cung cấp mạng viễn thông di động T-Mobile Mỹ) – Chris White (trưởng phận thiết kế phát triển giao diện WebTV) • Năm 2005, sau năm hoạt động Android Google mua lại với khoản tiền không tiết lộ thức trở thành công ty gã khổng lồ ngành tìm kiếm Đồng thời Andy Rubin, Rich Miner Chris White định tiếp tục làm việc công ty sau mua lại Ở thời điểm đó, nhiều người không thực ý vào thương vụ này, lại đánh dấu bước Google thị trường thiết bị di động giới • Tại Google, nhóm nghiên cứu đứng đầu Rubin bắt đầu phát triển tảng dành cho thiết bị di động dựa nhân hệ điều hành Linux sau đó, hệ điều hành giới thiệu đến nhà phát triển phần cứng lẫn phần mềm, báo hiệu có mặt "ngôi sao" khác "thiên hà" thị trường công nghệ di động • Đến tháng 12 năm 2006, suy đoán ý định gia nhập thị trường truyền thông di động Google tiếp tục củng cố sau BBC The Wall Street Journal cho biết hãng muốn đưa ứng dụng chức tìm kiếm lên thiết bị di động Lập tức sau đó, nhiều tin đồn điện thoại mang thương hiệu Google xuất khắp phương tiện truyền thông • Tháng năm 2007, liên minh nhà sản xuất thiết bị cầm tay - Open Handset Alliance (OHA) thành lập bao gồm Google số thành viên khác cộng đồng Linux mở như: Broadcom Corporation, Google, HTC, Intel, LG, Marvell SV: Trần Quốc Khánh - Lớp: ĐT6 - K53 -2- Báo cáo thực tập tốt nghiệp Technology Group, Motorola, Nvidia,Qualcomm, Samsung Electronics, Sprint Nextel, T-Mobile Texas Instruments Mục tiêu OHA phát triển tiêu chuẩn mở cho thiết bị di động sản phẩm liên minh Android, tảng di động xây dựng nhân Linux phiên Hình 1.1 Liên minh di dộng 1.2 Kiến trúc Android SV: Trần Quốc Khánh - Lớp: ĐT6 - K53 -3- Báo cáo thực tập tốt nghiệp Hính 1.2 Kiến trúc Android 1.2.1 Lớp Application Android phát hành với ứng dụng gốc bao gồm: email, trình tin nhắn SMS, lịch, đồ, trình duyệt web, danh bạ, số ứng dụng khác Tất ứng dụng viết ngôn ngữ lập trình Java Android đưa chế linh động cho phép người sử dụng thay ứng dụng mặc định ứng dụng bên thứ Trong Android chia làm hai loại ứng dụng :apps widgets.Apps ứng dụng bao phủ toàn hình widgets ứng dụng mà hoạt động chiếm phần nhỏ hình thiết bị 1.2.2 Lớp Application FrameWork Tầng cung cấp tảng phát triển ứng dụng mở qua cho phép nhà phát triển ứng dụng có khả tạo ứng dụng vô sáng tạo phong phú Hình 1.3 Lớp Application Framework Activity Manager – Quản lý vòng đời ứng dụng Window Manager – Quản lý thị Content Providers –Sử dụng việc chia sẻ liệu ứng dụng View System –Chịu trách nhiệm tạo quản lý View Package Manager –Sử dụng việc đặt,cập nhật , gỡ bỏ ứng dụng Telephony Manager –Sử dụng để cung cấp dịch vụ thoại gọi điện Resource Manager –Quản lý nguồn tài nguyên ứng dụng :ảnh,nhạc Location Manager –Sử dụng để theo dõi vị trí vật lý điện thoại Notification Manager –Thông báo có kiện xẩy :tin nhắn,lịch 1.2.3 Lớp Library & Runtime Layer SV: Trần Quốc Khánh - Lớp: ĐT6 - K53 -4- Báo cáo thực tập tốt nghiệp Lớp gọi lớp Thư viện Nó chia thành hai phần Phần chứa thiết lập C / C + + thư viện sử dụng thành phần khác Android phần thứ hai gọi Android Runtime có bao gồm tập hợp thư viện lõi Java máy ảo Hình cho thấy lớp Library Runtime Hình 1.4 Lớp Library & Runtime Layer Một số C / C + + thư viện liệt kê LibC- Đây hệ thống tiêu chuẩn thư viện C Media Framework- sử dụng để hỗ trợ phát ghi âm âm định dạng video khác Cùng thư viện sử dụng cho tập tin hình ảnh Surface Manager - Điều sử dụng để quản lý quyền truy cập vào hệ thống hiển thị LibWebCore - sử dụng công cụ trình duyệt web trình duyệt web Android xem nhúng SGL - Điều sử dụng để làm đồ họa 2D 3Dlib -được sử dụng để vẽ đồ họa 3D Freetype- sử dụng để làm cho phông chữ Cả bitmap vector vẽ phông chữ hỗ trợ SQLite - sử dụng để làm việc với RDBMS Nó RDBMS nhẹ thư viện mà lớn đối tác để bàn họ vô hữu ích phạm vi thiết bị cầm tay di động Android sử dụng Dalvik Virtual Machine (DVM) :điểm bật DVM thiết bị chạy nhiều trường hợp Xin lưu ý Android sử dụng Java ngôn ngữ lập trình nó, mã thực thi tập tin class Thay vào đó, Android có định dạng riêng biết đến định dạng thực thi Dalvik (dex) tối ưu hóa cho nhớ tối thiểu SV: Trần Quốc Khánh - Lớp: ĐT6 - K53 -5- Báo cáo thực tập tốt nghiệp 1.2.4 Lớp Linux Kernel Hình 1.5 Lớp Linux Kernel Hệ điều hành Android xây dựng nhân Linux 2.6 cho dịch vụ hệ thống cốt lõi bảo mật,quản lý nhớ, quản lý tiến trình….Bộ nhân làm nhiệm vụ lớp trung gian kết nối phần cứng thiết bị phần ứng dụng Hình 1.6 Java Native Interface JNI:Java Native Interface Java Native Interface :là framework cho phép mã lệnh viết Java chạy máy cảo Java gọi gọi ứng dụng viết native code(Ứng dụng thư viện viết C,C++,hoặc Assembly) Bằng cách sư dụng JNI ,android cho phép ứng dụng chạy máy ảo Dalvik sử dụng phương thức viết ngôn ngữ cấp thấp :C,C+ +,Assembly.Qua nhà phát triển ứng dụng xây dựng ứng dụng dựa thư viện C, C++, Assembly nhằm tăng tốc độ thực thi ứng dụng sử SV: Trần Quốc Khánh - Lớp: ĐT6 - K53 -6- Báo cáo thực tập tốt nghiệp dụng tính mức thấp mà ngôn ngữ Java không hỗ trợ Tuy nhiên người phát triển ứng dụng cần phải cân nhắc gia tăng độ phức tạp ứng dụng định sử dụng thư viện 1.3 Công cụ phát triển Eclipse Hình 1.7 Thành phần project Android Eclipse AndroidManifest.xml: file XML mô tả ứng dụng thành phần đuợc cung cấp ứng dụng (activities, services, ) build.xml: Một file chứa mã script Ant (ant.apache.com) nhằm compile cài đặt ứng dụng lên máy bin/ : nơi chứa ứng dụng sau compile libs/ : nơi chứa file Java JAR ứng dụng yêu cầu src/ : nơi chứa mã nguồn Java ứng dụng res/ : chứa tài nguyên ứng dụng, icons, GUI layouts, res/drawable/ : chứa file hình ảnh (PNG, JPEG, ) res/layout/ : chứa UI layout, dạng XML res/menu/ : chi tiết menu, dạng XML res/raw/ : chứa file khác (CSV chứa thông tin account, ) res/values/ : chứa strings, dimensions, res/zml/ : chứa file XML khác cần cho ứng dụng assets/ : nơi chứa files tĩnh (static) yêu cầu kèm với ứng dụng SV: Trần Quốc Khánh - Lớp: ĐT6 - K53 -7- Báo cáo thực tập tốt nghiệp Ở phải ý tới file manifest để tránh lỗi viết ứng dụng android Cụ thể công việc mà AndroidManifest.xml thực hiện: - Đặt tên cho Java package ứng dụng - Mô tả thành phần (component) ứng dụng: activity, service, broadcast receiver content provider - Thông báo permission mà ứng dụng cần có để truy nhập protected API tương tác với ứng dụng khác - Thông báo permission mà ứng dụng khác cần có để tương tác với ứng dụng thời - Thông báo level thấp Android API mà ứng dụng cần để chạy (Android 1.0 level 1, 1.1 level 2, 1.5 level 3, 1.6 level 2.0 level 5) Hình 1.8 Manifest 1.4 Các thành phần ứng dụng Android 1.4.1 Activity Actitvity thành phần quan trọng đóng vai trò xây dựng ứng dụng Android.Activity đảm nhiệm vai trò tương tác với người dùng Hệ điều hành Android quản lý Activity theo dạng stack: Activity khởi tạo, SV: Trần Quốc Khánh - Lớp: ĐT6 - K53 -8- Báo cáo thực tập tốt nghiệp xếp lên đầu stack trở thành running activity, Activity trước bị tạm dừng hoạt động trở lại Activity giải phóng Một Activity có trạng thái: Active hay Running: Khi activity chạy hình Paused: Khi activity chạy hình bị activity suốt (transparent) hay không chiếm toàn hình hiển thị phía Tuy lưu trữ liệu, paused activity bị hệ thống bắt chấm dứt thiếu nhớ trầm trọng Stopped: Khi activity bị che khuất hoàn toàn activity khác Tuy lưu trữ liệu, stopped activity thường xuyên bị hệ thống bắt chấm dứt để dành chỗ cho tiến trình khác Killed hay Shut down: Khi activity paused hay stopped, hệ thống xóa activity khỏi nhớ SV: Trần Quốc Khánh - Lớp: ĐT6 - K53 -9- Báo cáo thực tập tốt nghiệp Hình 1.9 Vòng đời activity Có phương thức mà gần lớp Activity phải thực: onCreate(Bundle) - Nơi khởi tạo activity Quan trọng hơn, người lập trình gọi setContentView(int) kèm theo layout để thể UI riêng Đồng thời có findViewById(int) giúp gọi widget (buttons, text boxes, labels, ) để dùng UI SV: Trần Quốc Khánh - Lớp: ĐT6 - K53 -10- Báo cáo thực tập tốt nghiệp onPause() - Nơi giải kiện người dùng rời khỏi activity Mọi liệu người dùng tạo tới thời điểm cần phải lưu vào ContentProvider Khởi động activity từ activity khác • Khai báo tường minh: cung cấp xác thông tin activity cần gọi (nếu ứng dụng cần cung cấp tên class, ứng dụng khác cung cấp tên package, tên class) Intent intent = new Intent(getApplicationContext(),TargetActivity.class); startActivity(intent); • Khai báo không tường minh: cung cấp thao tác cần làm gì, với loại liệu nào, thao tác thuộc nhóm nào… hệ thống tìm activity tương ứng để khởi động Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivity(intent); Liên lạc activity • Bên phía activity khởi động, lấy liệu gửi sau: getIntent().getExtras().getString("value1"); getIntent().getExtras().getLong("value2"); • Khi khởi động activity, ta gửi kèm liệu intent ví dụ sau: intent.putExtra("value1", new String("Hello")); intent.putExtra(“value2", new Long(100)); • Bên phía activity khởi động, lấy liệu gửi sau: getIntent().getExtras().getString("value1"); getIntent().getExtras().getLong("value2"); 1.4.2 Service Một service thành phần ứng dụng, thể mong muốn ứng dụng thực hành động không tương tác với người dùng cung cấp chức cho ứng dụng khác sử dụng Nói cách đơn giản, service tác vụ SV: Trần Quốc Khánh - Lớp: ĐT6 - K53 -11- Báo cáo thực tập tốt nghiệp (task) chạy ngầm hệ thống nhằm thực nhiệm vụ Mỗi class Service phải chứa thẻ khai báo file AndroidManifext.xml Services bắt đầu Context.startService() Context.bindservice() Cũng đối tượng ứng dụng khác, services chạy luồng (Thread) tiến trình Có nghĩa service bạn dự định chạy hành vi có cường độ lớn hành vi gây nghẽn mạch, tự sinh luồng (Thread) để làm thực tác vụ đặc tả Service Service tiến trình độc lập Đối tượng Service không chạy tiến trình (process) riêng (trừ có yêu cầu đặt biệt), Service chạy tiến trình chương trình Service luồng (thread) Service có chứa đặc trưng sau: • Là chức để ứng dụng thông báo với hệ thống việc mà muốn thực phía (ngay người dùng không tương tác trực tiếp tới ứng dụng) Điều tương ứng với việc gọi phương thức Context.startservice(), yêu cầu hệ thống lên lịch cho service để chạy bị service hay người dừng lại • Là chức cho phép ứng dụng để cung cấp chức cho ứng dụng khác Điều tương ứng với việc gọi Context.bindService(), cho phép long-standing connection tạo để service tương tác với Khi Service tạo ra, việc hệ thống cần làm tạo thành phần gọi hàm onCreate() lệnh callback thích hợp luồng chình Nó phụ thuộc vào Service thi hành hành vi thích hợp nào, chẳng hạn tạo luồng thứ hai để thực tiến trình Vòng đời Service Có lý để service chạy hệ thống Bằng cách gọi phương thức Context.startService() Context.bindService() Nếu người dùng gọi phương thức Context.startService() hệ thống nhận đối tượng service (tạo gọi hàm onCreate() cần thiết) sau lại gọi phương thức onStartCommand(Intent, int ,int) với biến cung cấp client Service tạo chạy có lệnh gọi phương thức Context.stopService() SV: Trần Quốc Khánh - Lớp: ĐT6 - K53 -12- Báo cáo thực tập tốt nghiệp stopSelf() Dù cho service có start lần bị tắt phương thức Context.stopService() phương thức stopSelf() gọi.Service dùng phương thức stopSelf(int) để đảm bảo service không tắt Intent khởi tạo xử lý Hình 1.10 Vòng đời Service Dựa theo hình trên, service bắt đầu phương thức startService() service dùng để thực tác vụ ngầm nền, service bắt đầu phương thức bindService() service dùng để cung cấp chức cho chương trình khác • BroadcastReceiver (có thể gọi Receiver bốn loại thành phần ứng dụng Android Chức dùng để nhận kiện mà ứng dụng hệ thống phát • Có cách phát-nhận là: Không có thứ tự: receiver đủ điều kiện nhận hết, không phân biệt tách rời Có thứ tự: receiver đăng ký ưu tiên nhận trước, truyền thêm thông tin xử lý cho receiver sau • Thực lifecycle BroadcastReceiver có phương thức onReceive().Khi có kiện mà BroadcastReceiver đăng ký nhận phát SV: Trần Quốc Khánh - Lớp: ĐT6 - K53 -13- Báo cáo thực tập tốt nghiệp đi, phương thức onReceive() BroadcastReceiver gọi.Sau thực thi xong phương thức này, lifercycle Receiver kết thúc • Ngay onReceive() kết thúc, hệ thống coi receiver không hoạt động kill process chứa receiver lúc nào.Tránh xử lý code lâu onReceive().Không có xử lý bất đồng bộ, chờ callback… Receiver (cụ thể hiển thị Dialog, kết nối service…) 1.4.3 ContentProvider Là nơi lưu trữ cung cấp cách truy cập liệu ứng dụng tạo nên Đây cách mà ứng dụng chia sẻ liệu nhau.Android cung cấp sẵn content providers cho số kiểu liệu thông dụng âm thanh, video, thông tin sổ điện thoại, (Xem thêm gói android.provider) Người lập trình tự tạo class (subclass) Content Provider để lưu trữ kiểu liệu riêng Cách thức hoạt động Content Provider: Mọi content provider, khác cách thức lưu trữ liệu, sử dụng chung interface để tìm trả liệu, bao gồm việc thêm, bớt sửa liệu Việc thực thông qua đối tượng ContentResolver gọi getContentResolver() ContentResolver cr = getContentResolver(); Content providers sử dụng liệu dạng table đơn giản, hàng record cột liệu kiểu định Mỗi record có trường “_ID” độc để liên kết với bảng khác URI (Uniform Resource Identifier) dãy ký tự string dùng để: Mở trang web trình duyệt, bắt đầu với “http://” Chỉ tới file tài nguyên có sẵn máy (VD: file video, danh sách contacts, ), bắt đầu với "content://" SV: Trần Quốc Khánh - Lớp: ĐT6 - K53 -14- Báo cáo thực tập tốt nghiệp Dựa vào hình 13 sau: Hình 14 – Các thành phần URI A – Tiền tố mặc định URI, không thay đổi B – Xác định content provider Đối với ứng dụng hãng thứ 3, tên đầy đủ lớp C – Xác định loại liệu cần lấy Nếu nguồn cung cấp cho lấy loại để trống, có nhiều loại phân phần (land/bus, land/train, sea/ship,…) D – ID record, cần lấy record Khi tạo content provider, Android tự động tạo constant cho URI provider để đảm bảo code hiệu dễ cập nhật sau Constant - CONTENT_URI - xác định cho ContentProvider phải liên kết với bảng nguồn cung cấp Ví dụ:  URI cho bảng liên kết số điện thoại với tên người là: android.provider.Contacts.Phones.CONTENT_URI  URI cho bảng liên kết hình đại diện với tên người là: android.provider.Contacts.Photos.CONTENT_URI Tìm kiếm ContentProvider Để băt đầu tìm kiếm (query) content provider, trước người lập trình cần có tay yếu tố sau:  URI xác định provider  Tên trường (field) liệu lấy  Các kiểu liệu trường  ID, cần tìm record xác định Để bắt đầu tìm kiếm, người lập trình dùng phương thức: ContentResolver.query() Activity.managedQuery() Cả phương thức có chung arguments trả đối tượng trỏ (Cursor) SV: Trần Quốc Khánh - Lớp: ĐT6 - K53 -15- Báo cáo thực tập tốt nghiệp public final Cursor query (Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) public final Cursor managedQuery (Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) Đầu tiên, dù với query() hay managedQuery() ta cần cung cấp URI bên cung cấp, tức CONTENT_URI Chú ý muốn giới hạn tìm kiếm URI nhất, ta thêm ID vào cuối URI sau: “content:// /23”, với 23 ID ta cần tìm kiếm Các biến truyền vào khác query() managedQuery() là:  projection - Tên cột liệu cần trả Nếu NULL trả tất cột  selection - Tên hàng liệu trả Sử dụng với WHERE giống truy vấn SQL Nếu NULL trả tất hàng  selectionArgs - quy định giá trị trả về,VD: selectionArgs = {value_as_string} ép kiểu liệu trả dạng string  sortOrder - Xác định thứ tự xếp hàng Sử dụng với ORDER BY giống truy vấn SQL Nếu NULL không theo thứ tự Tạo Content provider Để tạo content provider, cần phải thoả mãn điều kiện:  Thiết lập hệ thống lưu trữ liệu nào: file hay sử dụng sở liệu SQLite  Extend lớp ContentProvider  Khai báo content provider file AndroidManifest.xml Để định nghĩa lớp ContentProvider, ta cần thực phương thức trừu tượng (abstract) khai báo lớp ContentProvider: query() insert() update() delete() getType() onCreate() SV: Trần Quốc Khánh - Lớp: ĐT6 - K53 -16- Báo cáo thực tập tốt nghiệp Phương thức query() phải trả đối tượng Cursor Mặc dù Cursor interface, Android cung cấp sẵn số đối tượng Cursor tạo sẵn Ví dụ; SQLiteCursor dành cho sở liệu SQLite, MatrixCursor cho liệu không lưu SQLite Android khuyên nên gọi ContentResover.notifyChange() để báo cho listeners biếtdữ liệu hiệu chỉnh Ngoài người lập trình nên thêm vài thao tác sau để giúp việc truy xuất lớp hiệu hơn: Định nghĩa Uri dạng public static final, với tên CONTENT_URI (như trình bày trên) Định nghĩa tên cột mà content provider trả Thôg thường tên cột sở liệu SQLite mà chúng đại diện Tiếp theo, người lập trình nên định nghĩa public static String constants để cac1 ứng dụng khác ghi rõ tên cột hướng dẫn khác cột interger tên "_id" (với constant _ID) cần định nghia để sử dụng cần lấy record độc Trong SQLite, trường _ID nên có kiểu sau:INTEGER PRIMARY KEY AUTOINCREMENT, thành phần AUTOINCREMENT không thiết phải có, nên đưa vào để đảm bảo ID độc nhất, tránh trường hợp xóa row ID row cấp ID giống hệ row vừa bị xóa Các ghi giúp người khác ghi đọc biết đọc liệu Nếu content provider xử lý kiểu liệu hoàn toàn mới, người lập trình cần định nghĩ kiểu MIME để trả thể ContentProvider.getType() Để khai báo Content Provider mới, trước cần phải khai báo tag file AndroidManifest.xml Trong đó, thuộc tính name tên đầy đủ lớp ContentProvider, authorities phần xác định provider URI "content:" SV: Trần Quốc Khánh - Lớp: ĐT6 - K53 -17- Báo cáo thực tập tốt nghiệp Chương Xây dựng ứng dụng Contact Android 2.1 Thiết kế hệ thống 2.1.1 Thiết kế tổng quan Xây dựng ứng dụng Contact có chức thể sơ đồ sau: Hình 2.1 Hệ thống chức Contact SV: Trần Quốc Khánh - Lớp: ĐT6 - K53 -18- Báo cáo thực tập tốt nghiệp -Chức Edit Save Hình 2.2 Chức Edit Save - Chức Delete Hình 2.3 Chức Delete SV: Trần Quốc Khánh - Lớp: ĐT6 - K53 -19- Báo cáo thực tập tốt nghiệp Hình 2.4 Delete theo lựa chọn 2.1.2 Thiết kế cụ thể thành phần Ứng dụng gồm : • Activity :  MainListActivity :Hiện thị giao diện Contact  FriendsDeleteActivity:Hiện thị giao diện để xóa Contact  FriendViewActivity:Hiện thị nội dung liên lạc người  FriendsEditActivity:Thay đổi nội dung liên lạc người • Một FriendEditService có chức  getFriendList():Lấy danh sách  addFriend(ItemFriend item):thêm  updateFriend(ItemFriend item):cập nhật contact  deleteFriend(int id):xóa contact • Một ContentProvider có tên FriendListProvider để chia sẻ liệu cho ứng dụng khác • Một file Friend.db để chứa sở liệu SV: Trần Quốc Khánh - Lớp: ĐT6 - K53 -20- Báo cáo thực tập tốt nghiệp Hình 2.5 Mô hình xây dựng ứng dụng 2.2 Kết chạy chương trình SV: Trần Quốc Khánh - Lớp: ĐT6 - K53 -21- Báo cáo thực tập tốt nghiệp SV: Trần Quốc Khánh - Lớp: ĐT6 - K53 -22- Báo cáo thực tập tốt nghiệp SV: Trần Quốc Khánh - Lớp: ĐT6 - K53 -23- Báo cáo thực tập tốt nghiệp KẾT LUẬN Qua đợt thực tập em hiểu nắm vững hệ điều hành Android :cấu trúc,xây dựng ứng dụng Android ,sử dụng công cụ pháp triển sao.Em xin chân thành cảm ơn Công ty Samsung Electronic Vietnam tạo điều kiện cho em thầy Phạm Thành Công hướng dẫn ,giúp đỡ em trình thực tập SV: Trần Quốc Khánh - Lớp: ĐT6 - K53 -24- ... tập tốt nghiệp Chương Xây dựng ứng dụng Contact Android 2.1 Thiết kế hệ thống 2.1.1 Thiết kế tổng quan Xây dựng ứng dụng Contact có chức thể sơ đồ sau: Hình 2.1 Hệ thống chức Contact SV: Trần Quốc... tìm hiểu : Hệ điều hành Android xây dựng ứng dụng Contact Android Qua em xin chân thành cảm ơn công ty Samsung electronic Vietnam tạo điều kiện cho em trình thực tập thầy giáo Phạm Thành Công... vững hệ điều hành Android :cấu trúc ,xây dựng ứng dụng Android ,sử dụng công cụ pháp triển sao.Em xin chân thành cảm ơn Công ty Samsung Electronic Vietnam tạo điều kiện cho em thầy Phạm Thành

Ngày đăng: 05/04/2017, 11:07

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan