Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 33 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
33
Dung lượng
2,2 MB
Nội dung
BỘ Ộ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ỜNG ĐẠI HỌC NGUYỄN TẤT THÀNH KHOA: CÔNG NGHỆ NGH THÔNG TIN ĐỒ Ồ ÁN MƠN HỌC LẬP P TRÌNH TRÊN THIẾT BỊ DI ĐỘNG Đ Giáo viên hướng ớng dẫn d : Thái Thị Thanh Thảo Sinh viên thực Họ Tên : Huỳnh Thịị Thu Hiền Hi Nguyễnn Quang Hùng MSSV : 1411533451 1411535464 Lớp : 14DTH02 14DTH02 Ngành : Công nghệệ thông tin Công nghệ thông tin Tp HCM, 27 tháng 12 năm 2016 Báo Cáo Đồ Án Môn Lập Trình Trên Thiết Bị Di Động LỚP: 14DTH02 Lời Cảm Ơn Trên thực tế khơng có thành cơng mà không gắn liền với hỗ trợ, giúp đỡ dù hay nhiều, dù trực tiếp hay gián tiếp người khác Trong suốt thời gian từ bắt đầu học tập giảng đường đại học đến nay, em nhận nhiều quan tâm, giúp đỡ q Cơ, gia đình bạn bè suốt thời gian học tập trường Và đặc biệt, học kỳ này, Khoa tổ chức cho chúng em tiếp cận với môn học mà theo em hữu ích sinh viên ngành Cơng Nghệ Thơng Tin Đó mơn học “LẬP TRÌNH TRÊN THIẾT BỊ DI ĐỘNG ” Chúng em xin chân thành cảm ơn Cô Thái Thị Thanh Thảo tận tâm hướng dẫn chúng em qua buổi học lớp buổi thực hành Nếu lời hướng dẫn, dạy bảo em nghĩ thu hoạch em khó hồn thiện Một lần nữa, chúng em xin chân thành cảm ơn cô Bài thu hoạch thực khoảng thời gian gần tuần Bước đầu vào ứng dụng thực tế, kiến thức chúng em hạn chế nhiều bỡ ngỡ Do vậy, khơng tránh khỏi thiếu sót điều chắn, em mong nhận ý kiến đóng góp quý báu Thầy bạn để sản phẩm chúng em hoàn chỉnh Sinh Viên Thực Hiện Huỳnh Thị Thu Hiền - Nguyễn Quang Hùng NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN SVTH: Huỳnh Thị Thu Hiền - Nguyễn Quang Hùng Báo Cáo Đồ Án Môn Lập Trình Trên Thiết Bị Di Động LỚP: 14DTH02 Tp.HCM, ngày tháng … năm 2016 GVHD Thái Thị Thanh Thảo SVTH: Huỳnh Thị Thu Hiền - Nguyễn Quang Hùng Báo Cáo Đồ Án Môn Lập Trình Trên Thiết Bị Di Động LỚP: 14DTH02 Mục Lục Chương 1: Giới Thiệu Chung I Android I.1 Giới thiệu ANDROID I.2 Khái Niệm Android II MƠI TRƯỜNG LẬP TRÌNH 2.1 GIỚI THIỆU: 2.2 ANDROID SDK: 2.3 Thành Phần Quan Trọng Trong Một Android Project: 10 2.4 Thành phần giao diện Android 10 2.5 Giới Thiệu Intents: 11 2.6 Giới Thiệu Adapters: 12 2.7 Kỹ Thuật Lưu Trữ Dữ Liệu Trong Android 13 Chương 2: Giới Thiệu Đề Tài 13 Lý chọn đề tài 13 Database Diagrams 14 Giới thiệu FoodBook 14 Chương 3: Nội Dung Đề Tài 14 Nội Dung 14 a Màn hình 14 b Màn hình menu: 16 c Màn hình Quốc Gia: 17 d Màn hình ăn quốc gia 21 e Màn hình chi tiết ăn 23 f Màn hình ưa thích 26 g Thanh tìm kiếm 26 h Màn hình thơng tin 28 i.Màn hình thêm 28 k Gửi phản hồi 31 Ưu Điểm 32 Khuyết Điểm 32 SVTH: Huỳnh Thị Thu Hiền - Nguyễn Quang Hùng Báo Cáo Đồ Án Mơn Lập Trình Trên Thiết Bị Di Động LỚP: 14DTH02 Hướng Dẫn Sử Dụng 32 Hướng Phát Triển 32 Tài liệu tham khảo 32 SVTH: Huỳnh Thị Thu Hiền - Nguyễn Quang Hùng Báo Cáo Đồ Án Mơn Lập Trình Trên Thiết Bị Di Động SVTH: Huỳnh Thị Thu Hiền - Nguyễn Quang Hùng LỚP: 14DTH02 Báo Cáo Đồ Án Mơn Lập Trình Trên Thiết Bị Di Động LỚP: 14DTH02 Chương 1: Giới Thiệu Chung I Android I.1 Giới thiệu ANDROID Như biết, có nửa nhân loại sử dụng máy di động để tho ại giao tiếp qua mạng không dây Con số tỉ người tăng lên máy di động ngày "thông minh" v ới nhiều chức dịch v ụ hấp dẫn, thị trường máy di động thông minh vượt xa máy vi tính tương lai gần Vì việc lập trình thiết b ị di động ngày phổ biến phát triển mạnh mẽ Từ tảng mã nguồn mở, Google cho mắt Android chạy thiết bị di động Android có nhiều cơng cụ dụng cụ miễn phí để nghiên cứu phát triển phần mềm tảng Tài liệu giúp tìm hiểu Android cách viết ứng dụng tảng I.2 Khái Niệm Android Trước hết Android tảng phần mềm dựa mã nguồn mở Linux OS (Kernel 2.6) cho máy di đ ộng phần mềm trung gian (middleware) để hổ trợ ứng dụng mà người sử dụng cần đến Một cách định nghĩa không chuyên mơn coi Android tên tảng mở cho thiết bị di động Google (gồm hệ điều hành, middleware số ứng dụng bản) Android đương đầu v ới số hệ điều hành (viết tắt HDH) dành cho thiết bị di dộng khác hâm nóng thị trường Windows Mobile, Symbian dĩ nhiên OS X (iPhone) Có thể nói cách nơm na Android HDH chạy thiết bị di động, giống Windows, Linux hay Mac chạy máy vi tính v ậy Android khác với hệ điều hành chạy thiết bị di động khác 1.1.1 Android thu hút ý giới công nghệ khắp toàn cầu đứa Google sử dụng giấy phép mã nguồn mở Đó sản phẩm kết tinh từ ý tưởng Khối Liên minh thiết bị cầm tay mở Google dẫn đầu, gồm 34 thành viên với công ty hàng đầu công nghệ di động toàn cầu Qualcomm, Intel, Motorola, Texas Instruments LG Electronics, nhà mạng T -Mobile, Sprint Nextel, NTT DoCoMo China Mobile Các nhà phát triển sử dụng miễn phí Kit Android Software Development để xâydựng ứng dụng I.3 Đặc tính mở Android: Android xâydựng phép nhà phát triển để tạo ứng SVTH: Huỳnh Thị Thu Hiền - Nguyễn Quang Hùng Báo Cáo Đồ Án Mơn Lập Trình Trên Thiết Bị Di Động LỚP: 14DTH02 dụng di động hấp dẫn, tận dụng tất c ả tính điện thoại cung cấp Nó xâydựng để thực mở Ví dụ, ứng dụng gọi chức lõi điện thoại thực gọi, gửi tin nhắn văn bản, cách sử dụng máy ảnh, cho phép nhà phát triển để tạo nhiều ứng dụng phong phú cho người dùng (điều chưa có Windows Phone7 Microsoft) Android xâydựng mã nguồn mở Linux Kernel Hơn nữa, sử dụng máy ảo tuỳ chỉnh thiết kế để tối ưu hóa ộ nhớ tài nguyên phần cứng môi trường di động Android không phân biệt ứng dụng lõi điện thoại ứng dụng bên thứ ba Tất xâydựng để truy cập khả thiết bị di động cung cấp cho người sử dụng với dải rộng ứng dụng dịch vụ Với thiết bị xâydựng Android, người dùng hồn tồn thích ứng với điện thoại đến lợi ích họ V ới Android, nhà phát triển xâydựng ứng dụng cho phép người dùng xem vị trí bạn bè họ cảnh báo họ có vùng phụ cận cho họmột hội đ ể kết nối Android cung cấp truy cập đến loạt thư viện cơng cụ hữu ích sử dụng để xâydựng ứng dụng phong phú Ví dụ, Android cho phép thiết bị giao tiếp với tạo điều kiện cho đồng đẳng rich-to -peer ứng dụng xã hội Ngoài ra, Android bao gồm tập hợp đầy đủ công cụ xâydựng công phu, với việc cung cấp tảng phát triển, với suất cao nhìn sâu vào ứng dụng II MƠI TRƯỜNG LẬP TRÌNH 2.1 GIỚI THIỆU: Trong chương giới thiệu cơng cụ lập trình cho Android (Android Development Tools) Chúng ta dần làm quen v ới Eclipse Android Development Tool plug-in, thông qua Android SDK công cụ nó, chạy ứng dụng Android Emulator(tạm dịch trình giả lập giao diện Android PC) Với kĩ tay, tìm hiểu gói Java packages cung cấp SDK giúp nâng cao khả lập trình Android SVTH: Huỳnh Thị Thu Hiền - Nguyễn Quang Hùng Báo Cáo Đồ Án Mơn Lập Trình Trên Thiết Bị Di Động LỚP: 14DTH02 2.2 ANDROID SDK: Android SDK, viết tắt c Android Software Development Kit, gọi “công cụ phát triển phần mềm” mà cụ thể phát triển ứng dụng cho Android OS Đến hiểu đơn giản Google Adroid SDK công cụ Google xâydựng phát hành miễn phí đến giới Developer để họ dễ dàng xâydựng phát triển ứng dụng chạy Android OS Android SDK có đặc tính sau: - Được phát triển cung cấp miễn phí - Truy cập đến phần cứng WIFI - GSM, EDGE tính mạng 3G cho phép việc chuyển liệu, gọi điện hay gửi tin SMS mạng di động - Gói API tồn diện cho dịch v ụ tảng ví dụ GPS - Truy cập toàn phần cứng điều khiển đa phương tiện chơi nhạc, ghi âm hay sử dụng microphone camera - Chia sẻ liệu kho liệu - Tích hợp trình duyệt dựa WebKit (mã nguồn mở) - P2P hổ trợ sử dung Google Talk - Hỗ trợ tốt đ họa 3D nhờ sử dụng OpenGL ES Android SDK cần phải cài đặt đ ể xâydựng ứng dụng Android Android SDK bao gồm tài liệu tích hợp HTML_base lõi c Javadoc đ ể thể gói lớp Java SVTH: Huỳnh Thị Thu Hiền - Nguyễn Quang Hùng Báo Cáo Đồ Án Mơn Lập Trình Trên Thiết Bị Di Động LỚP: 14DTH02 2.3 Thành Phần Quan Trọng Trong Một Android Project: - Activity (Android.app.Ac tivity): l ớp khởi tạo giao diện ứng dụng nội Android tương tư MIDlet J2ME - Service (Android.app.Service): cung c ấp dịch v ụ liên quan đến client/service Một Service s ẽ chạy ngầm bên dưới, sau client (Activity) kết nối truy xuất hàm dịch thông qua Interface class - Broadcast receiver (Android.content.BroadcastReceiver): ứng dụng chạy ngầm dùng để đọc cập nhật thơng tin UI, ví dụ cập nhật thay đ ỗi giờ, pin - Content Provider: cung cấp chức truy v ấn liệu ứng dụng Android - Intent: tảng để truyền tải thông báo Intent sử dụng để ửi thông báo nhằm khởi tạo Activity hay Service đ ể thực công việc mà mong muốn 2.4 Thành phần giao diện Android 2.4.1 View Trong Android giao diện người dùngxâydựng từ đối tượng View Trong Android Platform, screen ln bố trí theo kiểu cấu trúc phân cấp hình Một screen tập hợp Layout widget bố trí có thứ tự Để thể screen hàm onCreate c Activity c ần phải gọi hàm setContentView (R.layout.main); hàm s ẽ load giao diện từ fileMAIN.XML lên để phân tích thành mã bytecode 2.4.2 ViewGroup SVTH: Huỳnh Thị Thu Hiền - Nguyễn Quang Hùng 10 Báo Cáo Đồ Án Mơn Lập Trình Trên Thiết Bị Di Động + + + + cascade," + + + COT_3 COT_4 COT_5 COT_6 + + + + " " " " LỚP: 14DTH02 text, " text, " text, " text not null constraint _idQuocGia references QuocGia(_id) on delete COT_7 + " text, " COT_8 + " text " ")"; @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { sqLiteDatabase.execSQL(TAO_BANG_QuocGia); sqLiteDatabase.execSQL(sqlMonAn); } Dữ liệu nhập vào vào ExampleActivity(trang chủ) khơng làm id nước auto quốc gia ko thêm xóa để dể cho việc thêm ăn public void insertSomeCountries() { // // // // // // createCountry(1, "Afghanistan", R.drawable.kabul); createCountry(2, "Akrotiri Dhekelia", R.drawable.episkopi); createCountry(3, "Ả Rập Saudi", R.drawable.riyadh); createCountry(4, "Các tiểu vương quốc Ả Rập", R.drawable.abudhabi); createCountry(5, "Armenia", R.drawable.yerevan); createCountry(6, "Azerbaijan", R.drawable.baku); createCountry(7, "Ấn Độ", R.drawable.newdelhi); createCountry(8, "Bahrain", R.drawable.manama); createCountry(9, "Bangladesh", R.drawable.dhaka); createCountry(10, "Bhutan", R.drawable.thimphu); createCountry(11, "Brunei", R.drawable.bandar); createCountry(12, "Campuchia", R.drawable.phnompenh); createCountry(13, "Đài Loan", R.drawable.daibac); createCountry(14, "Georgia/Gruzia", R.drawable.tbilisi); createCountry(15, "Hồng Kông", R.drawable.hongkong); createCountry(16, "Indonesia", R.drawable.jakarta); createCountry(17, "Dubai", R.drawable.dubai); createCountry(20, "Malaysia", R.drawable.kualalumpur); createCountry(21, "Nhật Bản", R.drawable.tokyo); createCountry(22, "Philippines", R.drawable.manila); createCountry(23, "Singapore", R.drawable.singaporecity); createCountry(24, "Thái Lan", R.drawable.bangcoc); createCountry(25, "Hàn Quốc", R.drawable.seoul); createCountry(26, "Trung Quốc", R.drawable.backinh); createCountry(27, "Việt Nam", R.drawable.hanoi); // // // // // // // } public void createCountry(int id, String code, int name) { quocGia qGia = new quocGia(); qGia.set_id(id); qGia.set_ten(code); qGia.set_lop(name); database.them(qGia); } Thêm bên MyDatabase public long them(quocGia Qgia) { /* * ContentValues đối tượng lưu trữ liệu, SQLiteDatabase nhận liệu thông qua đối tượng để thực câu lệnh truy vấn */ ContentValues values = new ContentValues(); values.put(DBHelper.COT_ID, Qgia.get_id()); values.put(DBHelper.COT_TEN, Qgia.get_ten()); values.put(DBHelper.COT_LOP, Qgia.get_lop()); * * /* Thêm vào sở liệu cần đối số SVTH: Huỳnh Thị Thu Hiền - Nguyễn Quang Hùng 19 Báo Cáo Đồ Án Mơn Lập Trình Trên Thiết Bị Di Động LỚP: 14DTH02 * Tên Bảng liệu cần thêm */ return database.insert(DBHelper.TEN_BANG_QuocGia, null, values); } Hàm gọi thêm ăn Hàm thêm ăn public void themMonAn(String ten, String gThieu, String dChi, String gia, int id, int hinh, String lKet) { monan M_AN = new monan(); M_AN.set_tenMonAn(ten); M_AN.set_gioiThieu(gThieu); M_AN.set_diaChi(dChi); M_AN.set_giaCa(gia); M_AN.set_idQuocGia(id); M_AN.set_hinh(hinh); M_AN.set_lienket(lKet); database.themMonAn(M_AN); } thêm ăn bên MyDatabase public long themMonAn(monan MonAn) { ContentValues values = new ContentValues(); values.put("_tenMonAn", MonAn.get_tenMonAn()); values.put("_gioiThieu", MonAn.get_gioiThieu()); values.put("_diaChi", MonAn.get_diaChi()); values.put("_giaCa", MonAn.get_giaCa()); values.put("_idQuocGia", MonAn.get_idQuocGia()); values.put("_hinh", MonAn.get_hinh()); values.put("_lienket", MonAn.get_lienket()); return database.insert("tbmonAn", null, values); } lấy bảng vào SQLiteDatabase public Cursor layTatCaDuLieu() { String[] cot = {DBHelper.COT_ID, DBHelper.COT_TEN, DBHelper.COT_LOP}; Cursor cursor = null; cursor = database.query(DBHelper.TEN_BANG_QuocGia, cot, null, null, null, null, DBHelper.COT_ID + " DESC"); return cursor; } Hiện thị lên lv_cha SVTH: Huỳnh Thị Thu Hiền - Nguyễn Quang Hùng 20 Báo Cáo Đồ Án Mơn Lập ập Trình Trên Thi Thiết Bị Di Động LỚ ỚP: 14DTH02 @Override public View getView(final final int position, View convertView, ViewGroup parent) { // Lấy layout từ thư mục res View view = inflater.inflate(R.layout inflater design_item_list_view design_item_list_view, null); // Thiết lập thông tin hiển n thị th textView = (TextView) view.findViewById(R.id.tv_ten); view.findViewById(R.id textView.setText(f_quocgia .setText(f_quocgia.qGia1 get(position).get_ten()) get(position).get_ten()); ImageView img = (ImageView) view.findViewById(R.id.imageView view.findViewById(R.id.imageView); img.setImageResource(f_quocgia img.setImageResource(f_quocgia.qGia1.get(position).get_lop()) get(position).get_lop()); return view; } bắt kiệnn click vào listview ta truyền truy id tên để chuyển ển sang ăn lấy id tìm ăn òn tên setText cho quốc qu gia listView.setOnItemClickListener( setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView (AdapterView parent, parent View view, int position, long id) { f_quocgia.id = id; Intent intent = new Intent(f_quocgia.this, Intent(f_quocgia layout_monan.class); intent.putExtra("Truyen_bien" "Truyen_bien",qGia1.get(position).get_id()); ; intent.putExtra("Truyen_bien1" "Truyen_bien1",qGia1.get(position).get_ten()) get(position).get_ten()); startActivityForResult(intent Result(intent, 1); d Màn hình ăn t quốc gia - Sau bấm ấm vơ quốc gia cần c hình lên - gồm có hỉnh ăn tên ăn - Hình minh họa: code: ây ta dùng Gridview thay vvì listview thêm android:numColumns="2" "2" để lấy cột gridview ớc vào layout setText tên nước SVTH: Huỳnh Thị Thu Hiền ền - Nguyễn Quang Hùng 21 Báo Cáo Đồ Án Môn Lập Trình Trên Thiết Bị Di Động LỚP: 14DTH02 Intent in = getIntent(); //Lấy điều kiện từ f_quocgia long dieuKien = 0; if (in.getLongExtra("Truyen_bien", 0) != 0) { dieuKien = in.getLongExtra("Truyen_bien", 0); tv.setText(in.getStringExtra("Truyen_bien1")); } biến dieuKien de select voi idquocgia public void capNhatDuLieu(String dieukien) { if (list_M_An == null) { list_M_An = new ArrayList(); } else { list_M_An.removeAll(list_M_An); } // Lấy liệu, dùng Cursor nhận lại Cursor cursor = database.layDuLieuMonAn(dieukien); // Cursor cursor = null; if (cursor != null) { /* * Di chuyển đến dòng liệu * thông qua phương thức moveToNext */ while (cursor.moveToNext()) { monan m_An = new monan(); /* * Mỗi dòng liệu chúng lấy * theo cột gán vào đối tượng * monan */ m_An.set_id(Integer.parseInt(cursor.getString(cursor.getColumnIndex(DBHelper.COT_1 )))); m_An.set_tenMonAn(cursor.getString(cursor.getColumnIndex(DBHelper.COT_2))); m_An.set_gioiThieu(cursor.getString(cursor.getColumnIndex(DBHelper.COT_3))); m_An.set_diaChi(cursor.getString(cursor.getColumnIndex(DBHelper.COT_4))); m_An.set_giaCa(cursor.getString(cursor.getColumnIndex(DBHelper.COT_5))); m_An.set_hinh(cursor.getInt(cursor.getColumnIndex(DBHelper.COT_7))); m_An.set_lienket(cursor.getString(cursor.getColumnIndex(DBHelper.COT_8))); // thêm vào danh sách MonAN list_M_An.add(m_An); } } if (list_M_An != null) { listView.setAdapter(new MyAdapter(getApplicationContext())); } // Bắt kiện click lên GridView listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { layout_monan.id = id; Intent intent = new Intent(layout_monan.this, f_monan.class); intent.putExtra("Truyen_bien", list_M_An.get(position).get_tenMonAn()); startActivityForResult(intent, 1); } } ); } Lấy bảng điều kiện id truyền từ f_quocgia SVTH: Huỳnh Thị Thu Hiền - Nguyễn Quang Hùng 22 m_An.s Báo Cáo Đồ Án Mơn Lập Trình Trên Thiết Bị Di Động LỚP: 14DTH02 public Cursor layDuLieuMonAn(String dieukien) { Cursor cursor = null; cursor= database.rawQuery("select * from tbmonAn where _idQuocGia like '"+dieukien+"'",null); return cursor; } Hiển thị lên GridView @Override public View getView(final int position, View convertView, ViewGroup parent) { // Lấy layout từ thư mục res View view = inflater.inflate(R.layout design_list_mon_an, null); // Thiết lập thông tin hiển thị ImageView img = (ImageView) view.findViewById(R.id.im_monan); img.setImageResource(list_M_An get(position).get_hinh()); textView = (TextView) view.findViewById(R.id.tv_tenmonan); textView.setText(list_M_An get(position).get_tenMonAn()); return view; } e Màn hình chi tiết ăn - Khi bấm vơ ăn hình lên chi tiết ăn - bao gồm thơng tin: + hình ảnh chi tiết ăn + tên ăn + giới thiệu ăn + địa giá gợi ý - bên phía có hình trái tim màu xanh ưa thích, người dùng bấm vơ hình ăn chuyển vơ mụa ưa thích người dùng - Hình minh họa: SVTH: Huỳnh Thị Thu Hiền - Nguyễn Quang Hùng 23 Báo Cáo Đồ Án Mơn Lập ập Trình Trên Thi Thiết Bị Di Động LỚ ỚP: 14DTH02 Code: ây ta dùng dialog nên ph phải bắt buốcc khai báo AndroidManifest.xml dùng Listview đểể hiển ển thị ữ liệu để sau viết tìm kiếm có thểể gọi ọi tớ tới f_monan(chi tiết ăn) f_monan extends Activity ta tạoo TextView Id tv_ghichuthich để thay đổii thành (thích,bỏ thích xóa) tạo img thích, bỏỏ thích, xóa, thích xóa ẩn ngược ng lại Intent in = getIntent(); database = new MyDatabase(this this); listView = (ListView) findViewById(R.id.lv_ctmonan); findViewById(R.id //Lấy tên ăn truyền từ layout_monan if (in.getStringExtra("Truyen_bien" "Truyen_bien") != "") { dieuKien = in.getStringExtra( xtra("Truyen_bien"); this.setTitle(in.getStringExtra( setTitle(in.getStringExtra("Truyen_bien")); //thay đổi hình ưa a thích ăn if (database.kTUaThich(dieuKien dieuKien)) { imUT.setImageResource(R.drawable imUT.setImageResource(R.drawable.heartno); ghichu.setText("Thích" "Thích"); } else { imUT.setImageResource(R.drawable imUT.setImageResource(R.drawable.heartyes); ghichu.setText("Bỏ Thích"); Thích" } SVTH: Huỳnh Thị Thu Hiền ền - Nguyễn Quang Hùng 24 Báo Cáo Đồ Án Mơn Lập Trình Trên Thiết Bị Di Động LỚP: 14DTH02 //khơng có true có false //true giữ nghun false ẩn thích xóa if (database.kTXoa(dieuKien)) { imUT.setVisibility(View.VISIBLE); imXoa.setVisibility(View.GONE); } else { ghichu.setText("Xóa"); imUT.setVisibility(View.GONE); imXoa.setVisibility(View.VISIBLE); } Với kiểm tra ưa thích, true hình xanh text thích, false hình đỏ bỏ thích //kiểm tra liên kết có = khơng có return true, ko có return false public boolean kTUaThich(String dieukien){ Cursor c = database.rawQuery("select * from tbmonAn where _lienket='2' and _tenMonAn = '"+dieukien+"'", null); if(c.getCount()==0){ c.close(); return true; }else{ c.close(); return false; } } kiện click vào img (thich,bỏ thích) xóa @Override public void onClick(View v) { int id = v.getId(); switch (id) { case R.id.im_uathich: database.uaThich(dieuKien); Toast.makeText(this, "Thành Công", Toast.LENGTH_LONG).show(); Intent intenttv = new Intent(this, f_uathich.class); startActivity(intenttv); break; case R.id.im_xoa: database.xoa_mon(dieuKien); Toast.makeText(this, "Đã Xóa", Toast.LENGTH_LONG).show(); intenttv = new Intent(this, f_themmon.class); startActivity(intenttv); break; } } Với xóa truyền điều kiện vào xoa_mon public long xoa_mon(String dieukien) { return database.delete("tbmonAn", DBHelper.COT_2 + " = " + "'" + dieukien + "'", null); } Với im_uathich truyền điều kiện vào uathich kiểm tra lienket lại gọi hàm KTUaThich() để kiểm tra ăn co liên kết không để xử lý //truyền tên ăn vào kiểm tra liên kết đanglà hay 2, set = 2, set lại =1 public int uaThich(String dieukien) { ContentValues values = new ContentValues(); if (kTUaThich(dieukien)) { values.put("_lienket", "2"); }else { SVTH: Huỳnh Thị Thu Hiền - Nguyễn Quang Hùng 25 Báo Cáo Đồ Án Môn Lập ập Trình Trên Thi Thiết Bị Di Động LỚ ỚP: 14DTH02 values.put("_lienket" "_lienket", "1"); } return database.update("tbmonAn" "tbmonAn", values, "_tenMonAn = '" + dieukien + "'", null); // database.rawQuery("update tbmonAn set _lienket= '2' where _tenMonAn like '"+dieukien+"' ", null); } f Màn hình ưa thích - người dùng bấm ấm vơ hình trái tim ăn ăn s tự động chuyển vơ mục ưa thích - bấm vơ nút ưa thích hình h hiệnn lên hình - bấm m vào xem chi tiết ti ăn mục ăn sẽẽ lên chi tiết ăn bình thường ,đồng ồng thời th trái tim chuyển sang màu đỏ - hình người ng dùng xem ững mà hhọ thích dùng ứng dụng, có thểể xóa bbấm lại vơ nút có trái tim màu đỏỏ ăn xóa bỏ khỏi mục ưa thích - Hình minh họa: Code: giống trang ăn ừng quốc qu gia khác câu lệnh truy vấn ấn ph truyền id tên để SetText tên quốc ốc gia với liên kết ằng '2' s dc load vào bảng public Cursor layDuLieuUaThich() layDuLieuUaThich { Cursor cursor = null; cursor= database.rawQuery( rawQuery("select "select * from tbmonAn where _lienket like '2'",null); '2'" return cursor; } g Thanh tìm kiếm - cài đặt ứng dụng điệện thoại người dùng bấm m vào tìm kiếm ki tự động hiệnn lên bàn phím ảo ả cho người dùng thực tìm kiếm - cho phép ngườii dùng tìm kiếm kiế ăn mà họ biết có ứng dụng d lên tất sau người ời dùng chọn chọ tới mà họ muốn - Hình minh họa: SVTH: Huỳnh Thị Thu Hiền ền - Nguyễn Quang Hùng 26 Báo Cáo Đồ Án Môn Lập ập Trình Trên Thi Thiết Bị Di Động LỚ ỚP: 14DTH02 Code: bắt kiệnn enter EditText myEditText = (EditText) findViewById(R.id.ed_search_tab_bar); findViewById(R.id myEditText.setOnKeyListener(new new View.OnKeyListener() { public boolean onKey(View (View v, v int keyCode, KeyEvent event) { // bắt kiện n enter c edit seach ăn if ((event.getAction() == KeyEvent.ACTION_DOWN) KeyEvent && (keyCode == KeyEvent.KEYCODE_ENTER)) KeyEvent { // thực Intent intent = new Intent(ExampleActivity.this, f_monan.class); f_monan intent.putExtra("Truyen_bien" "Truyen_bien", myEditText.getText().toString()) getText().toString()); startActivityForResult(intent 1); startActivityForResult(intent, return true; } return false; } }); truyền text cho layout f_monan(chi tiết ti ăn) layout tìm ăn theo tên ăn public Cursor layMonAn(String (String dieukien) { Cursor cursor = null; cursor= database.rawQuery( rawQuery("select "select * from tbmonAn where _tenMonAn like '%"+dieukien+"%'",null); return cursor; } bảng ng sau dc load lên listview nhấp nh vào lấy tên đầy đủủ tên ăn lại gọi tới f_monan(chi tiết ăn) listView.setOnItemClickListener( setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView (AdapterView parent, parent View view, int position, long id) { f_monan.id = id; finish(); Intent intent = new Intent(f_monan.this, Intent(f_monan f_monan.class); intent.putExtra("Truyen_bien" "Truyen_bien", list_M_An.get(position).get_tenMonAn()) get(position).get_tenMonAn()); startActivityForResult(intent 1); startActivityForResult(intent, } } ); SVTH: Huỳnh Thị Thu Hiền ền - Nguyễn Quang Hùng 27 Báo Cáo Đồ Án Môn Lập ập Trình Trên Thi Thiết Bị Di Động LỚ ỚP: 14DTH02 h Màn hình thơng tin - Giới thiệu ứng dụng - Hình minh họa: i.Màn hình thêm - Cho người dùng chọn ọ quốc ốc gia - Nhập tên ăn - Giời thiệu ăn - Nhập địa - Nhập giá bán - Nút thêm: cho phép người ời dùng thêm vào ứng dụng - Nút sửa: cho phép người ời dùng sửa s lại thơng tin - Khi ngườii dùng thêm vào ứng dụng lên hình riêng iêng dùng chung cho tất t thêm -Khi chọn thêm sẽẽ hiệ hình xóa xóa thêm - Hình minh họa: SVTH: Huỳnh Thị Thu Hiền ền - Nguyễn Quang Hùng 28 Báo Cáo Đồ Án Môn Lập ập Trình Trên Thi Thiết Bị Di Động LỚ ỚP: 14DTH02 Code: Layout gồm RollView Gridview nên phải ph xử lý có thểể roll gridview // Có thể roll gridview bên rollview GridView lv = (GridView) findViewById(R.id.gv_monan); findViewById(R.id lv.setOnTouchListener(new View.OnTouchListener() { // Setting on Touch Listener for handling the touch inside ScrollView @Override public boolean onTouch(View (View v, v MotionEvent event) { // Disallow the touch request for parent scroll on touch of child view v.getParent().requestDisallowInterceptTouchEvent( v.getParent().requestDisallowInterceptTouchEvent(true); return false; } }); Spinner chứa id : tên quốc ốc gia //lấy tên quốc c gia id cho spinner DBHelper db = new DBHelper(this this); Spinner spinner = (Spinner) findViewById(R.id.spinner); findViewById(R.id ArrayList list = db.getAllProvinces(); db.getAllProvinces() ArrayAdapter adapter = new ArrayAdapter(this, R.layout.design_spinner, R.layout R.id.text, list); spinner.setAdapter(adapter); hàm lấy bảng id tên ợc viết viế DBHelper public ArrayList getAllProvinces() getAllProvinces { ArrayList list = new ArrayList(); // Open the database for reading SQLiteDatabase db = this.getReadableDatabase() getReadableDatabase(); // Start the transaction db.beginTransaction(); try { String selectQuery = "select * from " + DBHelper.TEN_BANG_QuocGia TEN_BANG_QuocGia +" ORDER BY _id DESC"; Cursor cursor = db.rawQuery(selectQuery, db.rawQuery(selectQuery null); if (cursor.getCount() > 0) { while (cursor.moveToNext()) { // Add province name to arraylist String pname = cursor.getString(cursor.getColumnIndex("_ten")); cursor.getString(cursor.getColumnIndex( String id = cursor.getString(cursor.getColumnIndex("_id" cursor.getString(cursor.getColumnIndex("_id")); list.add(id+" " : "+pname); " } } db.setTransactionSuccessful(); db.setTransactionSuccessful() SVTH: Huỳnh Thị Thu Hiền ền - Nguyễn Quang Hùng 29 Báo Cáo Đồ Án Mơn Lập Trình Trên Thiết Bị Di Động LỚP: 14DTH02 } catch (SQLiteException e) { e.printStackTrace(); } finally { db.endTransaction(); // End the transaction db.close(); // Close database } return list; } bắt kiện nút thêm //bắt onclick thêm sửa case R.id.bt_them: Spinner spinner = (Spinner) findViewById(R.id.spinner); String idqg = (String) spinner.getSelectedItem(); //lấy id, dùng split để cắt chuổi, chuổi trước ":" , chuổi sau ":" idqg = idqg.split(":")[0].trim(); String ten = tenmonan.getText().toString().trim(); String g_thieu = gioithieu.getText().toString().trim(); String dchi = diachi.getText().toString().trim(); String gban = giaban.getText().toString().trim(); themMonAn(ten, g_thieu, dchi, gban, Integer.parseInt(idqg), R.drawable.newfood, "3"); Toast.makeText(this, "Đã thêm", Toast.LENGTH_LONG).show(); capNhatDuLieu(); tenmonan.setText(""); gioithieu.setText(""); diachi.setText(""); giaban.setText(""); break; bắt kiện hàm sửa case R.id.bt_sua: spinner = (Spinner) findViewById(R.id.spinner); idqg = (String) spinner.getSelectedItem(); idqg = idqg.split(":")[0].trim(); ten = tenmonan.getText().toString().trim(); g_thieu = gioithieu.getText().toString().trim(); dchi = diachi.getText().toString().trim(); gban = giaban.getText().toString().trim(); database.suaMon(idmonan, ten, g_thieu, dchi, gban, Integer.parseInt(idqg)); Toast.makeText(this, "Đã sửa", Toast.LENGTH_LONG).show(); capNhatDuLieu(); break; liệu nhập sẳn có LK=1, u thích LK=2, tự nhập LK=3 bảng Gridview, với liên kết load lên tự thêm public Cursor layDuLieuMonMoi() { Cursor cursor = null; cursor= database.rawQuery("select * from tbmonAn where _lienket like '3'",null); return cursor; } kiểm tra ăn có liên kết ẩn img thích, img xóa if (database.kTXoa(dieuKien)) { imUT.setVisibility(View.VISIBLE); imXoa.setVisibility(View.GONE); } else { ghichu.setText("Xóa"); imUT.setVisibility(View.GONE); imXoa.setVisibility(View.VISIBLE); } SVTH: Huỳnh Thị Thu Hiền - Nguyễn Quang Hùng 30 Báo Cáo Đồ Án Mơn Lập ập Trình Trên Thi Thiết Bị Di Động LỚ ỚP: 14DTH02 Hàm kTXoa MyDatabase public boolean kTXoa(String (String dieukien){ Cursor c = database.rawQuery( rawQuery("select "select * from tbmonAn where _lienket='3' and _tenMonAn = '"+dieukien+"'", null); if(c.getCount()==0){ c.close(); return true; }else{ c.close(); return false; } } k Gửi phản hồi -khi nhấn send chương trình ình s tự chuyển hộpp mail clien Edixtext To ttự mail quản trị viên - cho phép người dùng gữi ữi đóng góp ý kiến quản trị viên nhằm ằm phát triển tri củng cố ứng dụng hồn thiện - Hình minh họa: Code gọ tới action_send vào mail có sẳn máy nhấpp vào send gọi To gán mail qu quản trị viên SVTH: Huỳnh Thị Thu Hiền ền - Nguyễn Quang Hùng 31 Báo Cáo Đồ Án Mơn Lập Trình Trên Thiết Bị Di Động LỚP: 14DTH02 @Override public void onClick(View v) { textTo.setText("hienhuynh@gmail.com"); String to = textTo.getText().toString(); String subject = textSubject.getText().toString(); String message = textMessage.getText().toString(); Intent email = new Intent(Intent.ACTION_SEND); email.putExtra(Intent.EXTRA_EMAIL, new String[]{to}); email.putExtra(Intent.EXTRA_SUBJECT, subject); email.putExtra(Intent.EXTRA_TEXT, message); email.setType("message/rfc822"); startActivity(Intent.createChooser(email, "Choose an Email client :")); } }); m Chia sẻ - Chưa hoàn thiện - Hướng phát triển: người dùng thấy ứng dụng hữu ích người dùng chia sẻ ứng dụng lên mạng xã hội Ưu Điểm - Ứng dụng với giao diện đẹp,thân thiện với người dùng - Đáp ứng nhu cầu sử dụng người dùng - Ứng dụng sổ tay giúp người dùng lưu trữ thơng tin ăn xem lại khắp nơi mà không cần kết nối mạng Khuyết Điểm - Còn phần chia sẻ chưa hồn thành - Mỗi quốc gia chưa có nhiều ăn đặc trưng Hướng Dẫn Sử Dụng - Sau ứng dụng đưa lên CH Play người dùng cần gõ tên FOOD BOOK tìm đươc ứng dụng cài đặt bình thường - Ứng dụng yêu cầu phiên Android Follio 4.0.1 trở lên Hướng Phát Triển - Sẽ cập nhật thêm nhiều ăn quốc gia giới - Thêm nhiều chức hay thuận tiện cho người dùng - Sẽ phát triển ứng dụng hoàn thiện - Sẽ phát triển chức thêm ăn hình ảnh mà khách hàng chụp vào - Chức tìm kiếm giọng nói hình ảnh người dùng cần Tài liệu tham khảo - Tài liệu giảng viên Thái Thị Thanh Thảo SVTH: Huỳnh Thị Thu Hiền - Nguyễn Quang Hùng 32 Báo Cáo Đồ Án Mơn Lập Trình Trên Thiết Bị Di Động SVTH: Huỳnh Thị Thu Hiền - Nguyễn Quang Hùng LỚP: 14DTH02 33 ... giới mà không cần phải thời gian tìm kiếm Vì chúng tơi làm xây dựng làm nên AppStore có tên FoodBook Nhằm cung cấp thông tin chi tiết (Tên, địa chỉ, giá cả…) ăn tiếng giới SVTH: Huỳnh Thị Thu... triển xây dựng ứng dụng cho phép người dùng xem vị trí bạn bè họ cảnh báo họ có vùng phụ cận cho h một hội đ ể kết nối Android cung cấp truy cập đến loạt thư viện công cụ hữu ích sử dụng để xây dựng. .. giản Google Adroid SDK cơng cụ Google xây dựng phát hành miễn phí đến giới Developer để họ dễ dàng xây dựng phát triển ứng dụng chạy Android OS Android SDK có đặc tính sau: - Được phát triển cung