Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 64 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
64
Dung lượng
6,02 MB
Nội dung
VIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG NGHỆ ĐIỆN TỬ - THÔNG TIN ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Đề tài: “XÂY DỰNG PHẦN MỀM LƯU TRỮ FILE HÌNH ẢNH, ÂM THANH” Giảng viên hướng dẫn : TS LÊ MINH TUẤN Sinh viên thực hiện: NGUYỄN DUY PHƯƠNG Lớp : K16 Khố : Hệ : 2013-2017 ĐẠI HỌC CHÍNH QUY Hà Nội, tháng /2017 ĐỒ ÁN TỐT NGHIỆP VIỆN ĐẠI HỌC MỞ HÀ NỘI CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA CN ĐIỆN TỬ - THÔNG TIN Độc lập - Tự – Hạnh phúc ĐỀ TÀI ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Họ tên sinh viên: NGUYỄN DUY PHƯƠNG Lớp: K16 Khoá: 16 (2013-2017) Ngành đào tạo: Công nghệ điện tử, Truyền thông Hệ đào tạo: ĐHCQ 1/ Tên đề tài: XÂY DỰNG PHẦN MỀM LƯU TRỮ FILE HÌNH ẢNH, ÂM THANH 2/ Nội dung chính: 1/ Phân tích yêu cầu đề tài đề xuất phương án triển khai 2/ Đặc tả chức xây dựng nguyên mẫu ban đầu 3/ Tìm hiểu kỹ thuật xây dựng sản phầm 4/ Kiểm tra, rà soát lỗi sản phẩm 3/ Ngày giao :20/02/2017 4/ Ngày nộp : 13/05/2017 TRƯỞNG KHOA GIÁO VIÊN HƯỚNG DẪN (Ký, ghi rõ họ tên) (Ký, ghi rõ họ tên) ĐỒ ÁN TỐT NGHIỆP MỤC LỤC MỤC LỤC DANH MỤC CÁC BẢNG, SƠ ĐỒ, HÌNH MỞ ĐẦU CHƯƠNG 1: GIỚI THIỆU 1.1 Tổng quan đề tài 1.2 Mô tả ứng dụng 1.2.1 Đối tượng sử dụng 1.2.2 Chức xem tải Hình 1.2.3 Chức nghe thử tải nhạc chuông 1.3 Yêu cầu ứng dụng 1.3.1 Yêu cầu chức 1.3.2 Yêu cầu phi chức 1.4 Phạm vi phương pháp triển khai CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ ỨNG DỤNG 10 2.1 Tổng quan hệ thống 10 2.2 Biểu đồ Usecase 11 2.2.1 Usecase tổng quan 11 2.2.2 Usecase cho chức xem tải Hình 11 2.2.3 Usecase cho chức nghe thử tải nhạc chuông 12 2.3 Thiết kế sở liệu 12 CHƯƠNG 3: XÂY DỰNG VÀ TRIỂN KHAI SẢN PHÂM 14 3.1 Tổng quan Android 14 3.2 Tổng quan môi trường phát triển Android Studio 19 3.3 Các công cụ hỗ trợ phát triển: 20 Các tính Eclipse ? 20 Ưu nhược điểm Eclipse ? 21 3.3.2 Tổng quan JAVA 22 3.3.3 Giới thiệu Android studio 24 3.3.4 Sử dụng Android Emulator 40 3.4 Tìm hiểu API 49 REST For Web Developers 50 Cấu trúc REST gì? 51 ĐỒ ÁN TỐT NGHIỆP Cần ý với RESTful APIs 51 Truy cập API Resources 53 Tự build API 54 Tài liệu nghiên cứu 55 3.5 Thực chương trình 55 3.4.1 Thực chức xem tải Hình 55 3.4.2 Thực chức nghe thử tải nhạc chuông 57 3.4.3 Những khó khăn gặp phải thực chương trình 59 3.4 Hình ảnh thực tế sản phẩm 60 KẾT LUẬN 62 LỜI CẢM ƠN 63 ĐỒ ÁN TỐT NGHIỆP DANH MỤC CÁC BẢNG, SƠ ĐỒ, HÌNH Danh mục Hình ảnh Hình 1: Biểu đồ toàn cảnh 10 Hình 2: Usecase tổng quan 11 Hình 3: Usecase chức xem tải Hình 11 Hình 4: Usecase chức nghe thử tải nhạc chuông 12 Hình 5: Logo Android 14 Hình 6: Lịch sử phát triển Android 16 Hình 7: Kiến trúc Android 18 Hình 8: Các phiên Android 19 Hình 9: Giao diện Eclipse 21 Hình 10: Trang chào Hình Eclipse 22 Hình 11: Đặc tính Java 23 Hình 12: Trang chào mừng Android Studio 25 Hình 13: Tạo Project Android Studio 26 Hình 14: Lựa chọn Target Devices 27 Hình 15: Lựa chọn Layout 28 Hình 16: Lựa chọn loại Project 29 Hình 17: Creating Project 30 Hình 18: Android Studio hướng dẫn 31 Hình 19: Project tạo 32 Hình 20: Cấu trúc Project Android Studio 33 Hình 21: Vùng 34 Hình 22: Vùng 35 Hình 23: Vùng 36 Hình 24: Boundaries touching other widgets 37 Hình 25:Run Debug 38 Hình 26:Quản lý máy ảo AVD 38 Hình 27:Quản lý Android SDK Manager 39 Hình 28:Quản lý Android SDK Manager 39 Hình 29:Cài đặt Android Emulator 40 Hình 30:Cài đặt Android Emulator 41 Hình 31:Cài đặt Android Emulator 41 Hình 32:Tạo thiết bị mơ Nexus 5-1 42 Hình 33:Tạo thiết bị mơ Nexus 5-2 43 Hình 34:Tạo thiết bị mơ Nexus 5-3 44 Hình 35:Tạo thiết bị mơ Nexus 5-4 44 Hình 36: Tạo thiết bị mô Nexus 5-5 45 Hình 37:Thay đổi kích thước cửa sổ mơ phỏng-1 45 Hình 38:Thay đổi kích thước cửa sổ mơ phỏng-2 46 Hình 39:Thay đổi kích thước cửa sổ mơ phỏng-3 47 Hình 40:Chọn thiết bị mô mặc định-1 48 Hình 41:Chọn thiết bị mơ mặc định-2 48 Hình 42:Chọn thiết bị mơ mặc định-3 49 Hình 43: API 50 Hình 44:Cấu trúc REST gì? 51 Hình 45:Cần ý tới RESTful APIs 52 Hình 46:Truy cập API Resources 53 Hình 47: Trang chủ ứng dụng 60 Hình 48: Danh mục nhạc chuông 60 ĐỒ ÁN TỐT NGHIỆP Hình 49: Danh mục Hình 61 Hình 50: Tính Hình mà ứng dụng cung cấp 61 Danh mục bảng biểu Bảng 1: Danh sách tác nhân mô tả 10 Bảng 2: Danh sách Usecase mô tả 10 Bảng 3: Thơng tin Hình ảnh 12 Bảng 4: Thông tin danh mục Hình ảnh 12 Bảng 5: Thông tin nhạc chuông 13 Bảng 6: Thông tin danh mục nhạc chuông 13 ĐỒ ÁN TỐT NGHIỆP MỞ ĐẦU Trong sống đại, mà công nghệ thông tin ngày phát triển, nhiều thành tựu nối tiếp đời để phục vụ, đơn giản hoá sống người Trong bối cảnh đó, với vị trí người trưởng thành lớn lên, thân em cảm thấy cần phải liên tục học hỏi để đem kiến thức học trường phục vụ vào sống thường ngày Khi mà mạng internet trở nên thiếu sống đại, máy tính smartphone trở nên phổ biến với người, thao tác hay cơng việc thực người có thiết bị cá nhân kết nối internet Nhận thấy nhu cầu sử dụng smartphone người ngày tăng mong muốn sở hữu cho wallpaper chất lượng kèm với nhạc chng đình đám hành bây giờ, em hướng tới việc xây dựng app cho điện thoại có khả lưu trữ file âm Hình ảnh để người sử dụng tải Chương trình e xin đặt tên Zizi Ringtone and wallpaper Vì khả thân hạn chế, Zizi hồn thiện phần wallpaper, phần ringtone nhiều vấn đề em chưa giải kịp, mong thầy cô thông cảm ĐỒ ÁN TỐT NGHIỆP CHƯƠNG 1: GIỚI THIỆU 1.1 Tổng quan đề tài Trong sống đại, mà công nghệ thông tin ngày phát triển, nhiều thành tựu nối tiếp đời để phục vụ, đơn giản hố sống người Trong bối cảnh đó, với vị trí người trưởng thành lớn lên, thân em cảm thấy cần phải liên tục học hỏi để đem kiến thức học trường phục vụ vào sống thường ngày Khi mà mạng internet trở nên thiếu sống đại, máy tính smartphone trở nên phổ biến với người, thao tác hay cơng việc thực người có thiết bị cá nhân kết nối internet Nhận thấy nhu cầu sử dụng smartphone người ngày tăng mong muốn sở hữu cho wallpaper chất lượng kèm với nhạc chng đình đám hành bây giờ, em hướng tới việc xây dựng app cho điện thoại có khả lưu trữ file âm Hình ảnh để người sử dụng tải Chương trình e xin đặt tên Zizi Ringtone and wallpaper 1.2 Mô tả ứng dụng Ứng dụng Zizi thiệu ứng dụng phía client, trực tiếp lấy liệu từ phía server hiển thị lại giao diện Ứng dụng có chức chia làm phần riêng biệt giao diện sử dụng: xem tải Hình nghe thử tải nhạc chuông 1.2.1 Đối tượng sử dụng Ứng dụng hướng đến người sử dụng smartphone động, liên tục muốn làm thể tính thân thơng qua Hình hay nhạc chng độc đáo, làm bật thân sống đại 1.2.2 Chức xem tải Hình • • • • Xem Hình theo phân loại khác Tải Hình Thêm Hình vào danh mục yêu thích Đặt Hình ảnh thành ảnh điện thoại 1.2.3 Chức nghe thử tải nhạc chng • • • • • Xem danh mục nhạc chuông theo phân loại Nghe thử nhạc chuông trực tuyến Tải nhạc chuông Thêm nhạc chng vào danh sách u thích Đặt hát danh mục thành nhạc chuông điện thoại ĐỒ ÁN TỐT NGHIỆP 1.3 Yêu cầu ứng dụng 1.3.1 Yêu cầu chức Do ứng dụng phía client nên có tác nhân tham gia thụ hướng trực tiếp chức mà ứng dụng cung cấp người sử dụng ứng dụng Người sử dụng cần sử dụng đầy đủ chức mà ứng dung cung cấp: • Chức xem tải Hình o Xem Hình theo phân loại khác o Tải Hình o Thêm Hình vào danh mục u thích o Đặt Hình ảnh thành ảnh điện thoại • Chức nghe thử tải nhạc chuông o Xem danh mục nhạc chuông theo phân loại o Nghe thử nhạc chuông trực tuyến o Tải nhạc chuông o Thêm nhạc chuông vào danh sách yêu thích o Đặt hát danh mục thành nhạc chuông điện thoại 1.3.2 Yêu cầu phi chức • • • • Tốc độ truy cập ứng dụng phải ổn định, nhanh chóng Giao diện đơn giản, dễ sử dụng Đảm bảo toàn vẹn liệu người dùng lưu trữ lại tài nguyên Đảm bảo tính riêng tư nội dung mà người dùng tìm kiếm 1.4 Phạm vi phương pháp triển khai Ứng dụng triển khai ứng dụng Android điện thoại di động Được xây dựng lập trình ngơn ngữ Java sử dụng mơi trường phát triển Android Studio Ứng dụng sau phát triển phân phối miễn phí chợ ứng dụng Play Store Google ĐỒ ÁN TỐT NGHIỆP CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ ỨNG DỤNG 2.1 Tổng quan hệ thống Hình 1: Biểu đồ tồn cảnh Danh sách tác nhân mô tả Tác nhân Người sử dụng Mơ tả tác nhân Ghi • Chức xem tải Hình o Xem Hình theo phân loại khác o Tải Hình o Thêm Hình vào danh mục u thích o Đặt Hình ảnh thành ảnh điện thoại • Chức nghe thử tải nhạc chuông o Xem danh mục nhạc chuông theo phân loại o Nghe thử nhạc chuông trực tuyến o Tải nhạc chuông o Thêm nhạc chuông vào danh sách yêu thích o Đặt hát danh mục thành nhạc chuông điện thoại Bảng 1: Danh sách tác nhân mô tả Người sử dụng Danh sách Usecase mô tả ID Tên Use case Actor sử dụng Xem tải Hình Người sử dụng Nghe thử tải nhạc chuông Người sử dụng Bảng 2: Danh sách Usecase mô tả 10 ĐỒ ÁN TỐT NGHIỆP Hình 43:API Hiện nguyên lý REST cấu trúc liệu RESTful biết đến rộng rãi giới lập trình, có nhiều người hay nhầm lẫn Bản thân REST loại công nghệ, mà phương thức tạo API với nguyên lý tổ chức định Những nguyên lý nhằm hướng dẫn lập trình viên tạo mơi trường xử lý API request toàn diện Trong viết này, tơi giải thích số phương thức phát triển RESTful góc nhìn tồn cảnh nhất, đồng thời làm rõ khái niệm REST APIs Tôi tập trung vào câu hỏi “lập trình gì” “lập trình nào” REST For Web Developers REST viết tắt Representational State Transfer Giải thích đơn giản, REST loạt hướng dẫn dạng cấu trúc dùng cho việc chuyển đổi liệu Thông thường, REST hay dùng cho ứng dụng web, làm việc với liệu phần mềm API viết tắt Application Programming Interface, phương thức kết nối với thư viện ứng dụng khác Windows có nhiều API, Twitter có web API, chúng thực chức khác nhau, với mục tiêu khác 50 ĐỒ ÁN TỐT NGHIỆP Nhìn chung, RESTful API API theo cấu trúc REST Cấu trúc REST gì? Thật khó giải thích cho cụ thể Tuy nhiên, có số quy luật bất biến, như: • • • • • Sự quán API Tồn không trang thái (ví dụ, khơng có server-side session) Sử dụng HTTP status code cần thiết Sử dụng URL endpoint với logical hierarchy Versioning URL HTTP header Sẽ khơng có hướng dẫn W3C HTML5 spec, cụ thể đến mức dẫn đến nhầm lẫn, đặc biệt nhầm lẫn tai hại quanh thuật ngữ REST Hơn nữa, bạn không thiết phải tuân theo quy luật không sai chữ (dù thật quy luật quan trọng RESTful API đại) Hình 44:Cấu trúc REST gì? REST phương thức nhỏ gọn Nên ưa chuộng cho liệu HTTP Cũng nên REST dần phổ biến web, xem lựa chọn “số một” cho phát triển API Theo Vinay Sahni nói, “API UI lập trình viên.” Mọi thứ phải dể dùng, với trải nghiệm tốt Và mục tiêu RESTful APIs hướng đến Cần ý với RESTful APIs Những tip dành riêng cho API môi trường ứng dụng web Đồng nghĩa HTTP bắt buộc, liệu API thường host external server Hãy xem thử RESTful API làm việc bên phía người dùng API 51 ĐỒ ÁN TỐT NGHIỆP Người dùng API lập trình viên web build script kết nối đến external API server, liệu cần thiết chuyển sang HTTP Lập trình viên hiển thị liệu lên website mà không cần đến truy cập cá nhân vào external server Nhìn chung, có bốn lệnh dùng để truy cập RESTful API: GET để truy vấn object POST để tạo object PUT để sửa đổi thay object DELETE để loại bỏ object Mỗi phương thức phải API call thông qua để gửi thị cho server phải làm Đại đa số web API cho phép GET request lấy liệu khỏi externer server Authencation khơng bắt buộc, nên có ta cho phép lệnh “nguy hiểm” PUT hay DELETE Tuy nhiên, thấy RESTful API cho phép lệnh Ví dụ http://pokeapi.co/, Pokemon API database miễn phí, với lượng rate limit cơng khai (rate limit: người dùng bị giới hạn số kiểu API request thực được), cho phép phương thức GET để truy cập tài nguyên Trong “dân gian” ta hay gọi kiểu giới hạn consumption-only API Hình 45:Cần ý tới RESTful APIs Return type quan trọng, nên dồng với tất tài nguyên JSON return type tiếng, với online specs giải thích cấu trúc liệu 52 ĐỒ ÁN TỐT NGHIỆP RESTfull API dùng danh từ cho API object, động từ để thực hành vi lên object Truy cập API Resources Public API thường truy cập từ địa website trực tiếp Nói cách khác, cấu trúc URL quan trọng, nên dùng cho API request Một số URL bao gồm đường dẫn tiền tố /v2/ cho phiên cập nhật từ API trước đó; hay thấy lập trình viên muốn giữ 1.x API, muốn cung cấp cấu trúc Nên nhớ, return data endpoint thay đổi mạnh mẽ dựa vào phương thức HTTP Ví dụ, GET trả nội dung, POST tạo nội dung Request đến endpoint, kết khác Hình 46:Truy cập API Resources Để hiểu rõ khái niệm này, bạn lên tìm nhiều ví dụ online khác Ngồi Pokeapi, ta có: • Reddit API 53 ĐỒ ÁN TỐT NGHIỆP • • • GitHub API Flickr API Pinterest API Tự build API Quá trình xây dựng API riêng không dễ dàng, không phức tạp nhiều người nghĩ Mỗi API phải kết nối đến server để trả liệu Bạn phải viết code để làm điều đó, mà phải format return data Một số yêu cầu khác gồm authentication rate limiting Hãy điểm qua số nguyên lý cấu trúc API Build Endpoints building endpoint phần quan trọng trình phát triển API Khi tạo tài nguyên bạn muốn dùng danh từ đấy, dừng dùng động từ Nói cách khác liệu API phải trả kết người, nơi chốn, “thứ” Thơng thường, bạn nhận “thứ” với thuộc tính cụ thể (ví dụ tweet metadata) Tên danh từ phần quan trọng phát triển API, dù khó học Nên cố gắng đơn giản tốt Vấn đề đáng tranh cãi danh từ số hay số nhiều Nếu bạn tạo API Twitter, bạn nên có object group trước (như: tweet), object item sau (như: tweet ID) $ /tweet/15032934882934 $ /tweets/15032934882934 Trong trường hợp này, cho thể số dễ nhìn hơn, đặc biệt trả tài nguyên Đặt Return Type Một vấn đè quan trọng return type data Đa số người dùng web trông chờ nội dung JSON, có lẽ lựa chọn tốt bên cạnh XML JSON API return type tàng cho lập trình web Vẫn nhiều mặt phát triển API kể hết, bạn chưa quen thuộc với API, dành thời gian “vọc” trước chút Từ xem thử lập trình viên khác làm việc với API nào, hy vọng bạn dần quan thuộc với yêu cầu API 54 ĐỒ ÁN TỐT NGHIỆP Nếu biết API, bạn xem qua tài liệu sau: • • • REST API Tutorial Site Writing a Simple REST API Building a RESTful Web Service Tài liệu nghiên cứu Luyện tập cách lập trình nhanh Những lý thuyết qua kiểm chứng đáng để bạn học hỏi, qua bạn tranh luận với lập trình viên khác hiểu nguyên lý đằng sau lý thuyết Kết nối với API khác trước cách học hỏi hay Hãy tìm hiểu điểm kết nối client-side, từ bạn chuyển sang phát triển API, tạo API riêng từ số khơng Bạn tham khảo số tài liệu muốn theo đường API 3.5 Thực chương trình 3.4.1 Thực chức xem tảiHình Sử dụng nguồn liệu từ API Flick, có liệu cần lấy từ API liệu danh sách Hình ảnh cần để hiển thị danh sách Hình nền, liệu chi tiết Hình ảnh cụ thể (ảnh gốc, tên tác giả, năm phát hành, v.v…) Mã nguồn việc lấy phần liệu viết phương thức getImages getImagesURL viết file CategoryActivity.java 55 ĐỒ ÁN TỐT NGHIỆP public void getImages(String ID, final String[] group_array_ID, boolean check) throws Exception { final Request request = new Request.Builder() url(getString(R.string.group_url) + ID) build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Request request, IOException e) { Log.e("Retrieve images", "request failed " + e.getMessage()); Looper.prepare(); EventBus.getDefault().post(new ErrorResult()); Looper.loop(); } @Override public void onResponse(Response response) throws IOException { if (response.isSuccessful()) { infoList = new ArrayList(); try { JSONObject p_jArray = new JSONObject(response.body().string()).getJSONObject("photos"); JSONArray jArray = p_jArray.getJSONArray("photo"); for (int i = 0; i < jArray.length(); i++) { infoList.add(new FlickrPic( jArray.getJSONObject(i).getString("ownername"), jArray.getJSONObject(i).getString("id"), jArray.getJSONObject(i).getString("farm"), jArray.getJSONObject(i).getString("server"), jArray.getJSONObject(i).getString("secret"), jArray.getJSONObject(i).getString("title"))); if (i == jArray.length() - 1) EventBus.getDefault().post(new ShowResult()); } } catch (Exception e) { Log.e("Error", e.toString()); } } else { Log.e("Response Error", response.toString()); } } }); } } public void getImagesURL(String secret, final String photo_ID, final String farm_num, final String serverID, final String title) throws Exception { final Request request = new Request.Builder() url(getString(R.string.single_url) + secret + "&photo_id=" + photo_ID) build(); client.newCall(request).enqueue(new Callback() { @Override 56 ĐỒ ÁN TỐT NGHIỆP public void onFailure(Request request, IOException e) { Log.e("Retrieve images", "request failed " + e.getMessage()); EventBus.getDefault().post(new ErrorResult()); } @Override public void onResponse(Response response) throws IOException { if (response.isSuccessful()) { try { JSONObject jArray = new JSONObject(response.body().string()).getJSONObject("photo"); originalsecret = jArray.getString("originalsecret"); format = jArray.getString("originalformat"); JSONObject jArray2 = jArray.getJSONObject("owner"); String realname = jArray2.getString("username"); jArray2 = jArray.getJSONObject("description"); String description = jArray2.getString("_content"); String info[] = {realname,description, title}; Intent mIntent = new Intent(CategoryActivity.this, ImageActivity.class); mIntent.putExtra("img_url", "https://farm" + farm_num + ".staticflickr.com/" + serverID + "/" + photo_ID + "_" + originalsecret + "_o." + format); mIntent.putExtra("info",info); mIntent.putExtra("photo_ID", photo_ID); startActivity(mIntent); } catch (Exception e) { Log.e("Error", e.toString()); //Toast.makeText(MainActivity.this, "Error",Toast.LENGTH_LONG).show(); } } else { Log.e("Response Error", response.toString()); } } }); } 3.4.2 Thực chức nghe thử tải nhạc chuông Sử dụng nguồn liệu lấy từ API SoundClound, liệu trả dạng JSON có khn dạng mẫu sau: [ { "title":"Shape Of You", "user":{"username":"Ed Sheeran"}, "stream_url":"/shape-of-you.mp3", "id":"1", "tag_list":"android", "downloadable":1 } ] 57 ĐỒ ÁN TỐT NGHIỆP Và đề lấy liệu điện thoại xử lý, ta sử dụng phương thức getSong sau để lấy liệu bắt lỗi xảy lấy liệu hiển thị, phương thức getSong viết file RingtoneCategoryActivity.java public void getSong() throws Exception { test_list = new ArrayList(); final Request request = new Request.Builder() url(getResources().getString(R.string.soundcloud_group)+"") build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Request request, IOException e) { Looper.prepare(); EventBus.getDefault().post(new ErrorResult()); Looper.loop(); } @Override public void onResponse(Response response) throws IOException { if (response.isSuccessful()) { try { JSONArray jArray = new JSONArray(response.body().string()); if (jArray.length() >0) { for (int i = 0; i < jArray.length(); i++) { if (!filter.equals("other")) { if (jArray.getJSONObject(i).has("stream_url") && jArray.getJSONObject(i).getString("tag_list").equals(filter)) { test_list.add(new SoundcloudSong( jArray.getJSONObject(i).getString("title"), getResources().getString(R.string.uploaded_by)+" " + jArray.getJSONObject(i).getJSONObject("user").getString("username"), jArray.getJSONObject(i).getString("stream_url") + "", false, jArray.getJSONObject(i).getString("id"))); } else { } } else { if (jArray.getJSONObject(i).has("stream_url") && (jArray.getJSONObject(i).getBoolean("downloadable")) && (!filters.contains(jArray.getJSONObject(i).getString("tag_list")))) { test_list.add(new SoundcloudSong( jArray.getJSONObject(i).getString("title"), getResources().getString(R.string.uploaded_by)+" " + jArray.getJSONObject(i).getJSONObject("user").getString("username"), jArray.getJSONObject(i).getString("stream_url") + "?client_id=a785587be081daf8c0158146d18cc7bc", false, jArray.getJSONObject(i).getString("id"))); } else { 58 ĐỒ ÁN TỐT NGHIỆP } } if (i == jArray.length() - 1) { Collections.sort(test_list, new Comparator() { @Override public int compare(SoundcloudSong fruit2, SoundcloudSong fruit1) { return fruit1.getId().compareTo(fruit2.getId()); } }); if (test_list.size() >0) EventBus.getDefault().post(new ShowResult()); } } } } catch (Exception e) { Log.e("Error", e.toString()); } } else { Log.e("Response Error", response.toString()); } } }); } 3.4.3 Những khó khăn gặp phải thực chương trình Trong thực chương trình việc lựa chọn giải pháp đầy đủ chi tiết Tuy nhiên, API SoundCloud ko thể sử dụng nữa, nên dẫn đến giải pháp thay sử dụng file JSON cấu Hình cứng lưu Dropbox (https://dl.dropboxusercontent.com/s/spyntw9n9ts1n3p/test.json) làm nguồn để lấy liệu nhạc chng Các khó khăn gặp phải Android mắt phiên phải hỗ trợ đầy đủ tính cũ chạy ổn định phiên hệ điều hành Android 59 ĐỒ ÁN TỐT NGHIỆP 3.4 Hình ảnh thực tế vềề sản sả phẩm Hình 47: Trang chủ ứng dụng Hình 48: Danh mục nhạc chng 60 ĐỒ ÁN TỐT NGHIỆP Hình 49: Danh mục Hình Hình 50: Tính n Hình mà ứng dụng cung cấp ấp 61 ĐỒ ÁN TỐT NGHIỆP KẾT LUẬN Ưu điểm, nhược điểm • Ưu điểm: o Ứng dụng sau xây dựng đáp ứng yêu cầu mà thiết kế đặt o Ứng dụng có xử lý lỗi cố mạng đảm bảo ứng dụng vận hành trơn tru không gây khó chịu • Nhược điểm: o Giao diện ứng dụng đơn giản o Mới thực xây dựng hồn chỉnh cho chức xem tải Hình Khắc phục phương án phát triển tương lai Cải tiến giao diện, bổ sung trang trí để ứng dụng thêm bắt mắt, thu hút khách hàng Thay đổi bố trí số điều khiển trang nhằm giúp khách hàng dễ dàng sử dụng Bổ sung hoàn thiện chức nghe tải nhạc chuông Áp dụng phương pháp bảo mật để đảm bảo an tồn thơng tin cho người sử dụng Một lần em xin chân thành cảm ơn thầy cô khoa đặc biệt, em xin gởi đến thầy Lê Minh Tuấn., người tận tình hướng dẫn, giúp đỡ em hồn thành chun đề báo cáo thực tập lời cảm ơn sâu sắc 62 ĐỒ ÁN TỐT NGHIỆP LỜI CẢM ƠN Em xin gửi lời cảm ơn chân thành tri ân sâu sắc thầy cô Viện Đại học Mở Hà Nội, đặc biệt thầy cô khoa Công nghệ điện tử truyền thông tạo điều kiện cho em học tập khoa để có nhiều thời gian hồn thành đồ án tơt nghiệp Đặc biệt em xin chân thành cám ơn thầy Lê Mình Tuấn nhiệt tình hướng dẫn em hồn thành tốt khóa thực tập Trong q trình thực tập, trình làm báo cáo thực tập, khó tránh khỏi sai sót, mong thầy, bỏ qua Đồng thời trình độ lý luận kinh nghiệm thực tiễn hạn chế nên báo cáo khơng thể tránh khỏi thiếu sót, em mong nhận ý kiến đóng góp thầy, cô để em học thêm nhiều kinh nghiệm hoàn thành tốt báo cáo tốt nghiệp tới Em xin chân thành cảm ơn! Hà Nội, ngày 30 tháng năm 2017 Sinh viên Nguyễn Duy Phương 63 ĐỒ ÁN TỐT NGHIỆP DANH MỤC TÀI LIỆU THAM KHẢO • • • • • • • • • • • • • Phân tích thiết kế hệ thống thông tin - Nguyễn Văn Ba - 2003 Bài giảng Lập trình ứng dụng Android tuần - Trần Duy Thanh Lập trình Android Kiếm tiền từ tạo App – Lưu Quốc Tuấn Code Complete - Steve McConnell Rapid Development: Taming Wild Software Development Schedules- Steve McConnell https://vi.wikipedia.org/wiki/JDK http://www.codehub.vn/IDE-La-Gi https://diendanjava.com/threads/gioi-thieu-co-ban-ve-android-studio.1706/ http://o7planning.org/vi/10413/cau-hinh-android-emulator-tren-android-studio https://techtalk.vn/tat-tan-tat-ve-api.html https://forum.xdavn.com/tim-hieu-lich-su-phat-trien-he-dieu-hanh-android.t2/ https://vi.wikipedia.org/wiki/Android_(h%E1%BB%87_%C4%91i%E1%BB% 81u_h%C3%A0nh) https://gramy.vn/lap-trinh-android-bai-5-tong-quan-va-moi-truong-phat-trienung-dung-android/ 64 ... XÂY DỰNG PHẦN MỀM LƯU TRỮ FILE HÌNH ẢNH, ÂM THANH 2/ Nội dung chính: 1/ Phân tích yêu cầu đề tài đề xuất phương án triển khai 2/ Đặc tả chức xây dựng nguyên mẫu ban đầu 3/ Tìm hiểu kỹ thuật xây. .. việc xây dựng app cho điện thoại có khả lưu trữ file âm Hình ảnh để người sử dụng tải Chương trình e xin đặt tên Zizi Ringtone and wallpaper Vì khả thân hạn chế, Zizi hồn thiện phần wallpaper, phần. .. MỤC CÁC BẢNG, SƠ ĐỒ, HÌNH Danh mục Hình ảnh Hình 1: Biểu đồ tồn cảnh 10 Hình 2: Usecase tổng quan 11 Hình 3: Usecase chức xem tải Hình 11 Hình 4: Usecase chức