Quản lý tập tin và thư mục trên android
| ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CỘNG NGHỆ PHẦN MỀM - - BÁO CÁO CUỒI KỲ QUẢN LÝ TẬP TIN & THƯ MỤC TRÊN ANROID Giảng viên hướng dẫn: ThS PHAN NGUYỆT MINH Nhóm TP Hồ Chí Minh, tháng 12 năm 2013 LỜI CẢM ƠN - Lời đầu tiên, nhóm em xin chân thành cảm ơn ThS Phan Nguyệt Minh! Cô tận tình bảo, truyền đạt kiến thức vô bổ ích, quý báu ví dụ cụ thể, sinh động, hấp dẫn để nhóm em thực tốt đề tài Nhóm em xin cảm ơn Trường Đại Học Công Nghệ Thông Tin! Trường tạo thư viện học tập lý tưởng cho chúng em họp nhóm hiệu Nhóm em xin gửi lời cảm ơn sâu sắc đến gia đình, bạn bè người thân động viên, cổ vũ vật chất tinh thần giúp em vượt qua khó khăn, trở ngại để tiếp tục hoàn thành đề tài Xin chân thành cảm ơn! TP HCM, tháng 12 – 2013 Nhóm thực MỤC LỤC Lập trình nhúng – Ths Phan Nguyệt Minh LỜI NÓI ĐẦU - - Trong thời đại công nghệ thông tin phát triển vũ bão, nhịp sống người ngày nhanh, mà thiết bị di động cầm tay máy tính bảng, điện thoại thông minh ngày phổ biến, kèm với chúng tảng hệ điều hành phát triển cách mạnh mẽ, hệ điều hành Android, iOS, Window phone, Symbian OS Lập trình thiết bị di động ngày phát triển Nhiều công nghệ đời giúp hiên thực hóa ý tưởng thiết bị nhỏ gọn Việc đời điện thoại thông minh tạo nên bước ngoặt lớn cho nhân loại, nói thay đổi hoàn toàn sống người Bây giờ, làm thứ điện thoại di động mình(làm việc, giải trí, mua sắm, học tập, …) Công việc bạn đòi hỏi việc lại di chuyển nhiều, bạn điều kiện sử dụng máy vi tính nhiều, bạn cần có nhiều tài liệu cần quản lý, hay bạn người thích “tự sướng” với điện thoại thông minh bạn muốn xem ảnh này, hay chia sẻ chúng cho bạn bè đơn giản muốn thêm nhạc vào điện thoại bạn nhầm thư mục, bạn lại lười mở máy vi tính lên, hay cáp USB dế yêu bạn bị hỏng, … bạn muốn thao tác với tập tin, thư mục điện thoại bạn… Và quản lý tập tin/thư mục điện thoại điều cần thiết Nhận thức điều đó, nhóm chúng em phát triển ứng dụng nho nhỏ để quản lý tập tin/thư mục tảng hệ điều hành Android, ứng dụng mang tên “File Manager Adroid” Bài báo cáo nhóm gồm có phần chính: • • • • • • Chương 1: Giới thiệu Chương 2: Phân tích Chương 3: Thiết kế Chương 4: Cài đặt thử nghiệm Chương 5: Kết luận Chương 6: Tài liệu tham khảo Trang Lập trình nhúng – Ths Phan Nguyệt Minh NHẬN XÉT CỦA GIẢNG VIÊN Trang Lập trình nhúng – Ths Phan Nguyệt Minh Chương – GIỚI THIỆU Đề tài: Ứng dụng quản lý tập tin & thư mục android 1.1 Hệ thống tập tin hệ diều hành Android 1.1.1 Tổng quan hệ thống tập tin Android Trong Android file tổ chức lưu trữ thành thư mục theo mô hình phân cấp Tham chiếu đến file tên đường dẫn Các câu lệnh thao tác file cho phép thực chức dịch chuyển, chép toàn thư mục với thư mục chứa nó… Có thể sử dụng ký tự, dấu gạch dưới, chữ số, dấu chấm dấu phảy để đặt tên file Không bắt đầu tên file dấu chấm hay chữ số Những ký tự khác “/”, “?”, “*”, ký tự đặc biệt dành riêng cho hệ thống Chiều dài tên file tới 256 ký tự Trong hệ điều hành Android có phân biệt tên file chữ hoa chữ thường, điều có nghĩa thư mục tồn file có tên là: File, FILE, file…và chúng file khác Tất file Android có chung cấu trúc vật lý chuỗi byte Cấu trúc thống cho phép Android áp dụng khái niệm file cho thành phần liệu hệ thống Thư mục thiết bị xem file Chính việc xem thứ file cho phép Android quản lý chuyển đổi liệu cách dễ dàng Một thư mục chứa thông tin thư mục, tổ chức theo định dạng đặc biệt Các thành phần xem file, chúng phân biệt dựa kiểu file: ordinary file, directory file, character device file block device file 1.1.2 Các kiểu tập tin Android Trong hệ điều hành Windows, người ta phân biệt rõ file (tập tin) folder (hay directory: thư mục) thành phần khác hẳn Tuy nhiên hệ điều hành Android (cũng Linux) coi directory file loại file đặc biệt Thực tế số loại file khác liệt kê theo bảng sau: Trang Lập trình nhúng – Ths Phan Nguyệt Minh Bảng 1.1 Liệt kê số kiểu tập tin Android Chữ biểu diễn Kiểu tập tin D Thư mục (Directory) B File kiểu khối (block-type-special file) C File kiểu ký tự (character –type special file) L Liên kết tượng trưng (symbolic link) P File đường ống (pipe) S Socket - File bình thường (regular file) 1.1.3 Tổ chức quyền sở hữu quyền hạn tập tin Tương tự Linux, với hệ điều hành Android file liên kết với người sử dụng nhóm người sử dụng Sự liên kết tập hợp quyền hạn truy cập bao gồm quyền phép đọc (read), phép ghi (write) phép thực thi (execute) Cụ thể sau: file có quyền hạn tương ứng với ký tự theo mẫu sau: Với ký tự r w x nghĩa có quyền tương ứng với ký hiệu viết tắt đó, - nghĩa quyền hạn Bảng 1.2 Tổ chức quyền sở hữu quyền hạn tập tin Owner r/- w/- Owner group x/- r/- w/- Other x/- r/- w/- x/- ký tự quyền hạn chủ nhân tệp tin ký tự quyền hạn nhóm tài khoản sở hữu tệp tin ký tự cuối quyền hạn nhóm người quyền sở hữu tệp tin Ví dụ: Một file có dãy ký tự biểu diễn quyền hạn rwx r-x r– điều có nghĩa: ký tự đầu rwx: chủ nhân tệp tin có quyền đọc, ghi thực thi file ký tự r-x nhóm tài khoản sở hữu tệp tin có quyền đọc thực thi file quyền ghi file ký tự cuối r– nghĩa người không sở hữu file phép đọc mà không chỉnh sửa chạy file Trang Lập trình nhúng – Ths Phan Nguyệt Minh 1.2 Giới thiệu đề tài Hiện nay, lập trình ứng dụng cho di động công việc hấp dẫn mảnh đất màu mỡ cho lập trình viên, bên cạnh có khó khăn định Các phiên hệ điều hành cập nhật liên tục, có nhiều control đặc biệt giới hạn phần cứng(bộ nhớ ít, vi xử lý chậm, ) Vì việc tối ưu mã nguồn chương trình thiết kế giao diện vấn đề quan tâm hàng đầu lập trình viên Ứng dụng File Manager Android nhóm chúng em phát triển nhằm hỗ trợ người dùng dễ dàng quản lý tập tin, thư mục, chia sẻ tập tin cách dễ dàng, với giao diện thân thiện, tiện dụng, đẹp mắt, dễ sử dụng nhằm đem lại cảm giác thoải mái cho người dùng Ứng dụng xây dựng tảng hệ điều hành Android, sử dụng ngôn ngữ Java thư viện Android SDK Google tích hợp Eclipse IDE Ngôn ngữ hỗ trợ: Tiếng Anh Phiên hệ điều hành Android 3.2 – Android 4.3 Android divice: KT Tech KM – E200 Trang Lập trình nhúng – Ths Phan Nguyệt Minh 1.3 Mục tiêu Mục tiêu nhóm chúng em phát triển xây dụng ứng dụng đơn giản chạy thiết bị di động Hiểu cách hoạt động ứng dụng thiết bị di động, sau vận dụng kiến thức thu thập, học tập vào môn học sau này, luyện tập tư logic cho công việc lập trình sau Củng cố kỹ làm việc nhóm, code nhóm, đọc tài liệu tiếng anh, … Với thư viện Android SDK, với kiến thức lập trình hướng đối tượng, lập trình cấu trúc, thiết kế giao diện từ mông học trước, nhóm chúng em hoàn thành ứng dụng đầu tay Tuy nhiên, ứng dụng số thiếu sót chưa có nhiều kinh nghiệm lập trình di động thời gian tìm hiểu ngắn, mong cô thông cảm Hy vọng phiên nhóm chúng em có nhiều tiến bộ, nhiều cải tiến hơn, nhiều tính hấp dẫn 1.4 Các chức File Manager có chức chính: • Tạo tập tin, thư mục • Thực thao tác như: xóa, di chuyển, đổi tên, chia sẻ nhiều tập tin, thư mục • Hỗ trợ người dùng chọn nhiều tập tin thư mục • Hỗ trợ tạo file zip, unzip(giải nén) nhiều tập tin, thư mục • Tìm kiếm tập tin, thư mục • Hỗ trợ mở tập tin, xem thông tin tập tin, thư mục • Sắp xếp tập tin/thư mục theo tên, ngày, kiểu, kích thước, theo mặc định • Hỗ trợ người dùng cuộn ngang chức phím tắt nhằm hỗ trợ người dùng đến thư mục thường dùng cần thiết, đồng thời thoát nhanh ứng dụng • Hỗ trợ người dùng thiết lập cho ứng dụng mục setting • Hỗ trợ chương trình chơi nhạc(.mp3) Trang Lập trình nhúng – Ths Phan Nguyệt Minh Chương – PHÂN TÍCH • Về mặt khái niệm, việc phân tích yêu cầu ứng dụng bao gồm ba nhóm hoạt động sau: Làm rõ yêu cầu (Eliciting requirements): trao đổi, giao tiếp với khách hàng người dùng để xác định yêu cầu họ Xem xét yêu cầu (Analyzing requirements): xác định xem yêu cầu đặt có tình trạng không rõ ràng, không hoàn chỉnh, đa nghĩa, mâu thuẫn hay không, giải vấn đề Làm tài liệu yêu cầu (Recording requirements): yêu cầu ghi lại theo nhiều hình thức, chẳng hạn tài liệu ngôn ngữ tự nhiên, tình sử dụng (use case), câu chuyện người dùng (user story), đặc tả tiến trình • Các yêu cầu ứng dụng nhóm chúng em sau: Ứng dụng thuộc loại ứng dụng dành cho điện thoại, máy tính bảng chạy hệ điều hành Android Có thể chạy phiên Android 3.2 đến 4.3 Hỗ trợ đầy đủ tính quản lý tập tin & thư mục Android Giao diện phải thiết kế đơn giản, đẹp mắt, dễ sử dụng Hỗ trợ người dùng cần giúp đỡ … Trang 10 Lập trình nhúng – Ths Phan Nguyệt Minh Các biến lưu trữ giá trị người dùng cài đặt hình Settings: Các biến thể control thiết kế tập tin activity_main.xml: Một số biến thành phần khác: adapter(FileArrayAdapter), worker(FileActionWorker), m_CanPaste(có thể dán chưa), mShowMenuSort( hiển thị Context menu xếp hay không), currentDir(thư mục tại), root(thư mục gốc), i(biến đếm) ,strCurPath(đường dẫn taiij), comparator(kiểu xếp); Các phương thức, hàm: onCreate(): khởi tạo thể ứng dụng, gọi giao diện, hiển thị control lên giao diện, khởi tạo đối tượng cần thiết onActivityResult(): thực thay đổi với result Activity khác onItemClick(): thực kiện click vào item ListView onCreateOptionsMenu(),/onCreateContextMenu(): thực việc load hiển thị option/context menu từ res/menu onPrepareOptionsMenu(), onContextItemSelected(): kiểm tra thay đổi, chuẩn bị, cập nhật lại option menu có thay đổi OnMenuItemSelected(): thực kiện chọn item menu readUserSettings(): lấy thông số cài đặt ứng dụng người dùng thiết đặt initListView(), initCurrentDir(), initHorizontalScroll(): khởi tạo cho ListView, thư mục tại, HorizontalScrollView onFileClick(): mở tập tin nhấn vào item setupSearchView(), onQueryTextChange(),onQueryTextSubmit(): khởi tạo tìm kiếm tập tin, thư mục fillFile(): lấy danh sách tất tập tin & thư mục refresh(): cập lại danh sách tập tin & thư mục hành Trang 17 Lập trình nhúng – Ths Phan Nguyệt Minh ** Lớp “Settings” Lớp nhằm hỗ trợ người dùng thiết lập cài đặt cho ứng dụng, lớp Settings extends từ lớp SherlockPreferenceActivity thư viện ActionBarSherlock Phương thức onCreate(): khởi tạo Preference việc load từ resource file settings.xml xml/settings.xml ** Lớp “AutoPlayer” Chứa thuộc tính, phương thức để thực việc mở tập tin audio, tạm dừng, stop, xử lý với audio ** Lớp “FileManagerAction” Lớp chứa phương thức tĩnh thực thao tác tạo mới, đổi tên, xóa , mở tập tin, lấy thông tin thư mục, tập tin, thiết lập item menu cần thiết context menu Activity ứng dụng Các phương thức: copyFile(), cutFile(): gán đường dẫn tập tin/ thư mục cần copy/cut(di chuyển) Hỗ trợ cập nhật option menu Activity getContextMenuOptions(): thiết lập danh sách item menu có Option menu openFile(): thực mở tập tin click vào item tập tin ListView delete(), rename(), newFolder(), newFile(): (trả kiểu boolean) thực công việc xóa, đổi tên, tạo thư mục, tạo tập tin ** Lớp “FileArrayAdapter” Lớp dùng để cung cấp liệu, thông tin cần thiết để thị lên ListView, FileArrayAdapter extends từ lớp sở BasicAdapter Các thuộc tính: context, activity(activity FileManagerActivity), fileList(List, danh sách FileItem ) Các biến: animation1, animation2(các animation image thể hiển chọn không chọn), ivFlip(ảnh dùng để chuyển đổi), checkedCount(số item chọn), mMode(bên selections),… FileArrayAdapter(): constructor khởi tạo getCount(): lấy số lượng FileItem fileList getItemId(); lấy id FileItem Trang 18 Lập trình nhúng – Ths Phan Nguyệt Minh getView(): thiết lập hiển thị cần thiết cho FileItem setAnimationListners(), … ** Lớp “FileItem” Lớp trình bày phần ** Lớp “FileManagerCallback” Lớp FileManagerCallback dùng để thực việc chọn nhiều item ListView tiến hành thao tác với FileItem chọn, implements với ActionMode.Callback Các thuộc tính: context, activity(activity FileManagerActivity), fileList(List, danh sách FileItem ), selectedListItems(danh sách FileItem chọn) FileManagerCalback(): constructor khởi tạo onCreateActionMode(),onPrepareActionMode(), onActionItemClicked(), onDestroyActionMode(): phương thức khởi tạo , chuẩn bị, kiện nhấn vào menu item, hủy ActionMode createContextMenu(): hàm hiển thị lên context menu, gọi oncreateActionMode() createMenuItemShare(): hàm khởi tạo item share context menu, menu xuất chọn hay số tập tin/thư mục confirmPaste(): thực việc khởi tạo FileMoverBackgroundWork() để thực việc copy hay di chuyển tập tin & thư mục ** Lớp “LocationInvalidException” Kế thừa từ lớp Exception java, dùng để kiểm tra ngoại lệ ** Lớp “FileSort” Là lớp bình thường, tạo nhằm mục đích chữa hàm tĩnh(phương thức static) để xác định tiêu chí xếp tập tin & thư mục: xếp theo ngày, kích thước, đinh dạng, tên, … Các phương thức có class trả Comparator[...]... implements từ lớp cơ sở là Comparable Các thuộc tính của FileItem: • : chỉ đường dẫn tuyệt đối của tập tin/ thư mục • : tên của tập tin/ thư mục • : thể hiện số tập tin và thư mục có trong thư mục hoặc kích thư c của tập tin • : thể hiện thời gian chỉnh sửa tập tin/ thư mục lần cuối cùng • • : icon đại diện cho tập tin/ thư mục : thể hiện FileItem này có được chọn hay không, giá trị mặc định là “false”(không được... ẩn đi ) : di chuyển nhanh đến thư mục Download : di chuyển nhanh đến thư mục DCIM : di chuyển nhanh đến thư mục Picture : mở màn hình thiết lập “Settings” : thoát nhanh khỏi ứng dụng 3.3.5 Các thông báo • Toast: Ứng dụng có các thông báo sau: Thư mục /tập tin đã copy Xóa tập tin/ thư mục thành công Trang 27 Lập trình nhúng căn bản – Ths Phan Nguyệt Minh Tập tin/ thư mục đã được tạo Thông báo trước... cho ListView, thư mục hiện tại, HorizontalScrollView onFileClick(): mở một tập tin khi nhấn vào item đó setupSearchView(), onQueryTextChange(),onQueryTextSubmit(): khởi tạo tìm kiếm tập tin, thư mục fillFile(): lấy danh sách tất cả các tập tin & thư mục refresh(): cập lại danh sách tập tin & thư mục hiện hành Trang 17 Lập trình nhúng căn bản – Ths Phan Nguyệt Minh ** Lớp “Settings” Lớp này... khi thoát ứng dụng • AlertDialog: Gồm các thông báo sau: Tập tin/ thư mục ở chế độ protected, không thể truy cập Có muốn dán tập tin/ thư mục vào thư mục hiện hành hay không? Có muốn xóa tập tin/ thư mục được chọn hay không? Trang 28 Lập trình nhúng căn bản – Ths Phan Nguyệt Minh Chương 4: CÀI ĐẶT VÀ THỬ NGHIỆM • Môi trường phát triển: Android • Ngôn ngữ cài đặt: Java • Thử nghiệm giả lập: điện... android: name= "android. permission.WRITE_INTERNAL_STORAGE" /> Trang 15 Lập trình nhúng căn bản – Ths Phan Nguyệt Minh 3.2 Các lớp và đối tượng 3.2.1 Đối tượng Với đặc thù của ứng dụng là quản lý tập tin và thư mục nên đối tượng chính là tập tin và thư mục Các đối tượng của ứng dụng nằm trong package ray.filemanager.obj Đối tượng... ListView gồm: 3 TextBox( 1 hiển thị tên tâp tin/ thư mục, 1 hiển thị thông tin thư mục /tập tin, 1 hiển thị ngày chỉnh sửa), 2 ImageView( 1 hiển thị icon về thư mục /tập tin, 1 hiển thị tình trạng được chọn hay không) Một option menu: gồm các item chính: Search, Reresh, New, Sort (hiển thị đầy đủ), các item Paste, Cancel sẽ được hiển thị sau khi chọn tập tin/ thư mục để copy/cut Trang 21 Lập trình nhúng căn... kiếm tập tin /thư mục 3.3 Giao diện 3.3.1 Màn hình chính(FileManagerActivity) Gồm có: Một button home: hiển thị đường dẫn thư mục Một thanh HorizontalScrollView để chứa các button: ROOT, UP, SDCARD, EXTERNAL SD CARD, … để thực hiện các truy cập nhanh đến các thư mục người dùng thư ng xuyên sử dụng ListView: hiển thị các thư mục, tập tin Mỗi item của ListView gồm: 3 TextBox( 1 hiển thị tên tâp tin/ thư. .. move(): copy, di chuyển tập tin/ thư mục được dùng ở các class FileActionWorker,… isMusic, isVideo, isPicture, ….các phương thức kiểm tra định dạng tập tin getIcon(): thiết lập icon cho các loại tâp tin/ thư mục getSizeStr(): lấy ra kích thư c của từng tập tin theo đơn vị Bytes, KB, MB, GB, … getFileProperties(): lấy ra thông tin về tập tin: đường dẫn, kích thư c, ngày chỉnh sửa hay tạo **Lớp... newFile(), newFolder() : thực hiện việc xóa, đổi tên, tạo mới tập tin/ thư mục và hiển thị thông báo(thành công/thất bại) zip(): tạo file có định dạng zip searchInDirectory(), search_file(): tìm kiếm thư mục, tập tin createAlertRenameF(),createAlertDialogNewF(): tạo ra AlertDialog để nhập tên cần thay đổi, tên cần tạo mới cho tập tin/ thư mục Trang 20 Lập trình nhúng căn bản – Ths Phan Nguyệt Minh... , mở tập tin, lấy thông tin về thư mục, tập tin, thiết lập những item menu cần thiết trong context menu ở Activity chính của ứng dụng Các phương thức: copyFile(), cutFile(): gán đường dẫn của tập tin/ thư mục cần copy/cut(di chuyển) Hỗ trợ cập nhật option menu ở Activity chính getContextMenuOptions(): thiết lập danh sách các item menu có trong Option menu openFile(): thực hiện mở một tập tin khi ... đối tập tin/ thư mục • : tên tập tin/ thư mục • : thể số tập tin thư mục có thư mục kích thư c tập tin • : thể thời gian chỉnh sửa tập tin/ thư mục lần cuối • • : icon đại diện cho tập tin/ thư mục. .. unzip(giải nén) nhiều tập tin, thư mục • Tìm kiếm tập tin, thư mục • Hỗ trợ mở tập tin, xem thông tin tập tin, thư mục • Sắp xếp tập tin/ thư mục theo tên, ngày, kiểu, kích thư c, theo mặc định • Hỗ... tài: Ứng dụng quản lý tập tin & thư mục android 1.1 Hệ thống tập tin hệ diều hành Android 1.1.1 Tổng quan hệ thống tập tin Android Trong Android file tổ chức lưu trữ thành thư mục theo mô hình