Ý tưởng của tôi nảy ra là: Tích hợp nhiều môn học theo chuẩn kiến thức, kĩ năng vào một ứng dụng để người dùng có thể học tập được nhiều nội dung mà không phải tải nhiều ứng dụng.. Mục
Trang 1SỞ GIÁO DỤC VÀ ĐÀO TẠO VĨNH PHÚC
TRƯỜNG THPT ĐỘI CẤN
BÁO CÁO KẾT QUẢ
NGHIÊN CỨU, ỨNG DỤNG SÁNG KIẾN KINH NGHIỆM
HƯỚNG DẪN HỌC SINH LẬP TRÌNH ỨNG DỤNG HỌC TẬP CHO THIẾT BỊ DI ĐỘNG
Tác giả: Lê Văn Hưng
Mã SKKN : 23.75.01
Trang 2MỤC LỤC Trang
4.1 Giới thiệu về Android Studio và ngôn ngữ lập trình Java 4
8 Danh sách cá nhân/ tổ chức tham gia áp dụng sáng kiến 21
Trang 3BÁO CÁO KẾT QUẢ
NGHIÊN CỨU, ỨNG DỤNG SÁNG KIẾN KINH NGHIỆM
1 Giới thiệu
Chúng ta đang sống trong xã hội công nghệ 4.0 phát triển như vũ bão, điện thoại thông minh hay smart phone không còn xa lạ gì đối với mọi người, nó đã trở thành phương tiện không thể thiếu trong xã hội hiện đại và việc sử dụng smart phone cũng là điều tất yếu cho nhu cầu của công việc và cho cuộc sống Các ứng dụng (App) theo đó mà phát triển không ngừng vì người dùng luôn mong muốn có được những ứng dụng hay, thú vị để phục vụ nhu cầu học tập, làm việc, giải trí… ở bất cứ đâu, bất cứ khi nào
Hiện nay, có rất nhiều ứng dụng học tập, nội dung phong phú giúp người dùng sử dụng như tài liệu để học tập, tham khảo nâng cao sự hiểu biết Thực tế nghiên cứu và tìm hiểu cho thấy các ứng dụng học tập vẫn còn nhiều hạn chế và bất cập:
Ứng dụng chủ yếu cho một môn học riêng lẻ, khi muốn học nhiều môn phải tải nhiều ứng dụng chiếm nhiều bộ nhớ
Ứng dụng chưa được kiểm duyệt về mặt nội dung, chưa tuân theo chuẩn phân phối kiến thức, kỹ năng theo lứa tuổi và cấp học
Không có phần lý thuyết chỉ có phần bài tập hoặc lý thuyết không đầy đủ
Chưa có ứng dụng về kĩ năng sống và tìm hiểu thế giới quan
Không có các video bài giảng dạy học, hoặc nếu có thì rời rạc không được sắp xếp theo nội dung, chuyên đề
Ứng dụng có dung lượng lớn, gây tốn kém bộ nhớ, làm chậm hoạt động của thiết bị di động
Ứng dụng kèm theo nhiều quảng cáo gây ức chế cho người dùng
Nhiều ứng dụng học tập đòi hỏi phải kết nối internet, phải trả phí để mở một
số chức năng hoặc tiếp tục bài học
Trang 4Ngoài ra việc sử dụng tài liệu phôtô, in ấn cho các kì thi quá nhiều gây lãng phí, sau đó lại là các vấn đề về rác thải
Ý tưởng của tôi nảy ra là:
Tích hợp nhiều môn học (theo chuẩn kiến thức, kĩ năng) vào một ứng dụng
để người dùng có thể học tập được nhiều nội dung mà không phải tải nhiều ứng dụng
Tiếp cận các đơn vị kiến thức đến từ nhiều phía
Lý thuyết giống với bài học trên lớp để các em có thể xem lại hoặc học tiếp
Kết hợp giữa học lý thuyết với thực hành bằng phần bài tập đa dạng
Bài tập được lập trình dưới dạng các game (trò chơi học tập) tạo hứng thú, ham mê làm các em không thấy chán nản khi học
Nội dung ngôn ngữ lồng ghép hình ảnh, âm thanh, video giúp các em phát triển các kĩ năng nghe, nói, đọc, viết
Sử dụng học tập, tra cứu, có thể học offline, thay thế một phần học tập trên tài liệu giấy
Quan trọng nhất là các em có thể tự tập bài thông qua ứng dụng
Sau thời gian dài tìm hiểu và nghiên cứu thì tôi quyết định dùng: MIT App Inventor của Google, sau đó do yêu cầu cao hơn về nội dung nên tôi chọn Android Studio kết hợp ngôn ngữ lập trình Java + ngôn ngữ lập trình Kotlin của Google để xây dựng ứng dụng bởi nó có thể đáp ứng tất cả các ý tưởng mà tôi đặt ra
Trang 52 Tên sáng kiến kinh nghiệm và tác giả
HƯỚNG DẪN HỌC SINH LẬP TRÌNH ỨNG DỤNG HỌC TẬP
CHO THIẾT BỊ DI ĐỘNG
Tác giả :
- Họ và tên: Lê Văn Hưng
- Địa chỉ tác giả sáng kiến: Giáo Viên Vật Lí - THPT Đội Cấn
- Số điện thoại: 0976173346 E_mail: levanhunggvdoican@vinhphuc.edu.vn
3 Mục đích của sáng kiến
Sáng kiến của tôi là hướng dẫn các em lập trình ứng dụng học tập chạy trên thiết bị di động với nhiều môn học, bài học với nội dung phong phú, tính năng đa dạng, giúp các em (lứa tuổi từ Mầm Non đến học sinh Tiểu Học) học tập, giải trí chỉ trong một ứng dụng
Ứng dụng trên thiết bị di động có thể sử dụng online hoặc offline
Giao diện ứng dụng đơn giản, dễ sử dụng, hình ảnh rõ nét, sinh động, dung lượng nhỏ
Tiết kiệm tiền bạc cho việc sử dụng tài liệu giấy và thời gian cho hoạt động học tập
Để các em học sinh THPT làm quen với khoa học lập trình, đó là tiền đề của nguồn nhân lực chất lượng cao đáp ứng sự phát triển khoa học và công nghệ
4 Mô tả sáng kiến kinh nghiệm
4.1 Giới thiệu về Android Studio và ngôn ngữ lập trình Java
Android Studio là IDE (Môi trường phát triển tích hợp) được phát triển bởi Google, lần đầu tiên được công bố tại hội nghị Google I/O vào năm 2013 và được phát hành cho công chúng vào năm 2014 sau nhiều phiên bản beta khác nhau
Android Studio được đóng gói với một bộ code Editor, Debugger, các công cụ Performance tool và một hệ thống Build/Deploy (trong đó có trình giả lập simulator để giả lập môi trường của thiết bị điện thoại hoặc tablet trên máy tính)
Trang 6cho phép các lập trình viên có thể nhanh chóng phát triển các ứng dụng từ đơn giản tới phức tạp
Java là một ngôn ngữ lập trình rất phổ biến được phát triển bởi Sun Microsystems (hiện thuộc sở hữu của Oracle) vào năm 1995 Java kết hợp nhiều tính năng mạnh mẽ của nhiều ngôn ngữ
Java có thể xem là ngôn ngữ lập trình phổ biến nhất hiện nay, được sử dụng rộng rãi trên nhiều thiết bị và hệ điều hành Nó giúp cho các lập trình viên phát triển các ứng dụng mà có thể chạy trên nhiều thiết bị phần cứng và hệ điều hành khác nhau
Chứa mã nguồn, và cài đặt mức độ của ứng dụng, như modules-level xây dựng
tập tin, nguồn tài nguyên và tập tin Android Manifest
Assets: Sử dụng để lưu trữ các tệp tin như Font, Xml, mp3, và sử dụng
AssetManager để đọc các tệp tin này
Trang 7 Res: Chứa nguồn tài nguyên của ứng dụng như các tệp tin Drawable, các tệp
tin layout, và giá trị String, hình ảnh, âm thanh…
anim: Chứa các tệp tin XML biên dịch các đối tượng animation
color: Chứa tệp tin XML mô tả color
drawable: Chứa các tệp tin hình ảnh (PNG, JPEG, GIF), và các tệp tin XML
là các đối tượng Drawable chứa các trạng thái khác nhau
mipmap: Chứa icon launcher của ứng dụng
layout: Chứa các tệp tin về giao diện màn hình
menu: Chứa tệp tin XML định nghĩa menu của ứng dụng
raw: Chứa các tệp tin tương tự như trong thư mục assets
values: Chứa các tệp tin XML định nghĩa nguồn tài nguyên các kiểu XML
Tài nguyên trong thư mục values không tham chiếu bởi các tệp mặc định
4.3.2 Thiết kế giao diện
Web hỗ trợ thiết kế giao diện ứng dụng trong Android Studio:
https://material.io/design/
Các file Xml trong folder layout là file giao diện của Android
Android Studio hỗ trợ hai chế độ làm việc cho việc tạo giao diện
là design và text Chế độ Design là kéo thả các view còn chế độ Text thì
bạn sẽ viết code XML cho giao diện
Trang 84.4 Lập trình ứng dụng
Lập trình ứng dụng học toàn phần cho trẻ bao gồm các môn học : Toán, Tiếng Việt, Tiếng Anh, Đạo đức, Tự nhiên xã hội, Âm nhạc, Kể chuyện Trong mỗi môn học sẽ gồm 3 phần: Lý thuyết + phần bài giảng dạy học, luyện tập và nhận biết về thế giới xung quanh
4.4.1 Xây dựng App hiển thị
Fragment đóng vai trò quản lý một giao diện của màn hình giống như Activity
Thay vì sử dụng nhiều mà hình (Activity) thì nên dùng Fragment để hiển thị bởi
nó hỗ trợ rất nhiều trong việc tối ưu cho các loại màn hình, đồng thời dễ dàng được quản lý bởi activity cha, có thể sử dụng lại, kết hợp và bố trí theo ý muốn.Chạy từng activity riêng cho mỗi màn hình ứng dụng sẽ có hiệu quả rất tệ khi hệ thống phải cố lưu trữ chúng trong bộ nhớ lâu hết mức có thể
Vì vậy, ứng dụng chỉ gồm 8 màn hình (Activity) là : Màn hình khởi động, màn hình chính, màn hình lựa chọn, màn hình lý thuyết, luyện tập, môn âm nhạc, hiển thị danh sách video và màn hình phát video bài học
Màn hình lựa chọn lý thuyết
Môn Toán : Gồm 5 Fragment tương ứng với 5 dạng lý thuyết Mỗi Fragment gồm một ScrollView, một Button và các ImageView, TextView để hiển thị văn bản và hình ảnh Sử dụng một ScrollView để có thể cuộn lên, cuộn xuống màn hình, ảnh sẽ được lưu trong tệp Drawable và dùng ImageView để hiển thị, TextView hiển thị văn bản, các văn bản có thể để trong tệp String và một nút (Button) luyện tập ở cuối để chuyển tới màn hình luyện tập
Môn Tiếng Việt : Bao gồm 3 Fragment ứng với 3 phần lựa chọn đầu Hai phần Bảng chữ cái và Các âm vần sử dụng GridView được custom lại để hiển thị văn bản (TextView) và ảnh (ImageView) Bắt sự kiện khi nhấn vào từ (hoặc chữ) nào thì sẽ phát ra âm thanh đánh vần hoặc đọc từ đó và nhấn giữ để nghe đọc ví
dụ phát âm Phần Bài đọc và cách đánh vần dùng thư viện PdfViewer để hiển thị tệp Pdf chứa các bài tập đọc đánh vần
Trang 9Màn hình lựa chọn lý thuyết: hiển thị dữ liệu với môn học tương ứng bằng Listview và được
custom lại để hiển thị TextView và ImageView
Fragment để hiển thị phần lý thuyết tương ứng của từng môn
Môn Tiếng Anh : Gồm 8 Fragment ứng với Bảng chữ cái và 7 phần chủ đề từ vựng tiếng anh Phần bảng chữ cái tiếng anh gồm hai GridView để hiển thị bảng chữ cái và chữ số, nhấn vào chữ cái hoặc chữ số để nghe cách phát âm Còn 7 phần chủ đề từ vựng, mỗi phần bao gồm một GrideView và được custom lại để hiển thị một ảnh(ImageView) và hai văn bản(TextView)
Trang 10Mỗi Fragment gồm một ScrollView, một Button và các ImageView, TextView
để hiển thị văn bản và hình ảnh
Môn âm nhạc: thành phần TasbHost và hiển thị danh sách có thể mở rộng – thu nhỏ bằng ExpandableListView Màn hình có hai tab con là tab tiếng anh
và tab tiếng việt
Chạm vào bài hát, nhạc sẽ phát và sổ ra lời bài hát, chạm lần nữa lời thu lại còn âm thanh dừng
Trang 11Trong môn Tiếng Việt còn có phần tập viết chữ cái và phần luyện nói tiếng
việt Trong phần tập viết, người dùng có thể viết chữ hoặc tập vẽ với nhiều màu
sắc lựa chọn Phần luyện nói, người dùng bấm vào chữ trên màn hình để nghe
cách đọc, nhấn mic và phát âm từ đó để ứng dụng nhận dạng giọng nói và kiểm
tra, nếu sai thì người dùng bấm mic và phát âm lại từ đó hoặc có thể nhấn nút
mũi tên để chuyển qua từ khác, nếu gặp lỗi thì ứng dụng sẽ thông báo ra màn
Trang 12Bao gồm 8 Fragment, hiển thị đề bài bằng TextView phía trên màn hình, tiếp đến là câu hỏi dùng ImageView hoặc TextView để hiển thị văn bản hoặc hình ảnh, 4 nút Button hoặc ImageView ứng với 4 đáp án để lựa chọn ở dưới câu hỏi
và một nút Button để kiểm tra đáp án và chuyển câu hỏi
Nếu chọn đúng điểm sẽ được cộng và sau khi làm xong hết số câu, một thông báo dạng Dialog sẽ xuất hiện hiển thị số điểm và có hai nút Button quay về hoặc tiếp tục làm
Đặc biệt trong môn toán có mục Trò chơi, bên dưới là các nút Button ứng với mỗi số tự nhiên từ 0 đến 9 và câu hỏi sẽ chạy từ trên xuống, không được cho câu hỏi chạm vào vạch ngang, sau mỗi trả lời đúng câu hỏi mới sẽ chạy lại từ trên xuống, điểm sẽ được cộng và hiển thị góc trên bên trái màn hình
Màn hình hiển thị danh sách video:
Môn toán: Gồm video bài giảng các bài học theo chương trình sách giáo khoa lớp 1
Môn tiếng việt : Video hướng dẫn viết chữ cái tiếng việt Học tiếng việt qua video và thơ ca dân gian, đồng dao Việt Nam
Môn Tiếng Anh : Video các bài học giao tiếp, đọc đối thoại, phát âm từ vựng theo từng Unit có kèm hình ảnh
Môn tự nhiên xã hội : Có hai phần là ‘khám phá khoa học’ và ‘thế giới trái cây’, bao gồm các video về khoa học, về thế giới xung quanh
Môn đạo đức : Phần ‘kỹ năng sống’ dạy trẻ cách cư xử, đối đáp với mọi người
Kể chuyện : Gồm những câu chuyện cổ tích và chuyện dân gian Việt Nam
Trang 13RecycleView để hiển thị danh sách các video bài học bao gồm tên và hình ảnh thu nhỏ của video
Màn hình phát video:
Trang 14YoutubePlayerView để phát video
4.4.2 Lập trình thuật toán cho ứng dụng
Tham khảo Fragment:
Khi tạo Activity mới sẽ được khai báo ở trong file AndroidManifest.Xml Android:name : tên file Java của Activity Phần trong hàm intent-filter để đặt
màn hình này khởi động đầu tiên khi mở App
Trang 15findViewById() : khởi tạo View bằng Id được đặt bên phần code Xml thiết kế
giao diện trước khi sử dụng
toolbar.setTitle(); : gán tiêu đề cho thanh toolbar
setSupportActionBar(): đặt thanh toolbar bên trên màn hình ứng dụng
getSharePreference(): lấy file dữ liệu được lưu trên máy thông qua tên.SharePreferance.edit : chỉnh sửa dữ liệu trong file được lưu trong máy
Có thể thêm rất nhiều kiểu dữ liệu khác nhau chỉ cần gọi biến editor được gán bằng sharePreferences.edit
Hàm editor.putBoolen để lưu dữ liệu dạng Boolean, editor.putInt để lưu số nguyên, editor.putString để lưu dữ liệu dạng kí tự, …
Mỗi khi gọi dòng code lưu giá trị xong ta phải gọi hàm editor.apply(); để xác
nhận lưu, nếu thiếu dòng này thì dữ liệu sẽ không được lưu trữ
Transaction.replace(id, Fragment) : thay thế Fragment hiện tại được gán ở
thành phần FrameLayout bằng một Fragment mới
Transaction.addToBackStack() : lưu trữ Fragment hiện tại trong BackStack
để có thể gọi lại
Trang 16
Sau khi gán Fragment xong ta phải gọi lệnh commit(); để xác nhận
Đoạn code trong hàm ExitDialog() này dùng để hiển thị thông báo dạng Dialog hỏi người dùng có muốn thoát hay không?
.setTitle() : gán tiêu đề cho dialog thông báo
.setMessage() : đặt lời nhắn hoặc lời nhắc
.setPositiveButton và setNegativeButton() : là hai nút cho người dùng lựa chọn Hàm finish(); dùng để đóng ứng dụng
Các lệnh trong hàm Check(); dùng để lấy dữ liệu trên FireBase
getSharedPreferences() : lấy dữ liệu lưu trên máy
FirebaseDatabase.getInstance : đọc dữ liệu trên FireBase
Database.getReference : lấy dữ liệu trên đám mây
myRef.orderBykey().limitToLast() : sắp xếp và lấy liệu của phần tử cuối và lưu và biến lastChild
Trang 17lastChild.addChildEventListener() : nhận biết sự thay đổi thêm hoặc xóa dữ liệu của phần tử cuối và trả về dữ liệu mới
Tiếp theo là hàm getJsonYoutube(); : lấy dữ liệu dạng Json trên Internet với
đường dẫn được truyền vào
RequestQueue: Là hàm đợi giữ các Request
JSONObjectRequest: HTTP request có kết quả trả về là JSONObject
VideoYtbAdapter() : là class Adapter của RecyclerView
recyclerView.setAdapter(); : gán Adapter cho RecyclerView
Lệnh Toast.makeText(); : dùng để kiểu hiển thị thông báo lên trên màn hình
trong một khoảng thời thời gian rất ngắn nào đó
requestQueue.add(); : add các request đó vào RequestQueue
ytbPlayer.initialize(); : Lệnh khởi tạo Youtube Player
Nếu khởi tạo thành công thì hàm onInitializationSuccess được thực hiện, nếu không thành công thì sẽ thực hiện hàm onInitializationFailure()
Trang 18YoutubePlayer.loadVideo(); : dùng để load video theo id
YoutubePlayer.setFullscreen(true); : đặt video hiển thị toàn màn hình
Dưới đây là phần code thu nhỏ của chức năng nhận dạng giọng nói (AI) và ý nghĩa của từng đoạn code được chú thích bằng một dòng ở trên nó
Mã code của chức năng nhận diện giọng nói (AI)
Trang 195 Kết quả
Android Studio hỗ trợ đóng gói thành file có định dạng apk để cài đặt lên các
SmartPhone, Tablet chạy hệ điều hành Android
Ứng dụng tài liêu học tập được cài đặt trên Samsung Galaxy Tab 4