M c tiêu chính
Phân tích và xây dựng thành công phần mềm ứng dụng khoa học cho thiết bị di động thông minh chạy trên nền tảng Android SDK là mục tiêu chính mà giảng viên đã đề ra cho chúng em.
- Làm quen v i cách th c làm vi c theo nhóm
- N m v ng và l p trình thành th o v i Java trên n n Android
- Dùng Java trên n n Android thi t k “Calculator” b Bên c nh đó m c tiêu c a nhóm chúng em đ t ra là:
- T đ tài này có th m r ng ra và ng d ng cho các đ tài khác có liên quan.
Yêu c u sinh viên
- H c môn l p trình h ng đ i t ng, c u trúc d li u, và gi i tích
- Ch u khó h c h i và tham kh o tài li u
- Kh n ng làm vi c nhóm.
THI U ÁN
TÌM HI U H I U HÀNH ANDROID
1 S phát tri n ng d ng trên di đ ng:
+ Thi t b h tr : Nokia, Sony Ericsson, Samsung
+ Nhà phát tri n: Sun MicroSystems
+ Ngôn ng l p trình: Java, MIDlet
+ Thi t b h tr : c h tr t nhi u nhà s n xu t đi n tho i
+ Thi t b h tr : HTC, Samsung, LG, Dell, Nokia
+ Nhà phát tri n: Palm, HP
+ Thi t b h tr : HTC, Samsung, LG, Sony Ericsson, Acer, Dell…
2 Gi i thi u chung v h đi u hành Android: a Khái ni m:
Android là hệ điều hành mã nguồn mở dành cho các thiết bị di động như smartphone, tablet và netbook Được phát triển bởi Google, Android dựa trên nhân Linux và các phần mềm mã nguồn mở khác Đây là hệ điều hành mã nguồn mở chính duy nhất hiện nay.
+ H đi u hành m cho các thi t b di đ ng
+ N n t ng phát tri n các ng d ng di đ ng
+ Các thi t b di đ ng ch y H H Android và các ng d ng c a nó b S phát tri n c a Android:
Android là hệ điều hành di động được phát triển bởi Android Inc., dựa trên nền tảng Linux phiên bản 2.6 Sau khi được công ty liên hợp Android ra mắt, Google đã mua lại và phát triển hệ điều hành này vào năm 2005 Android nhanh chóng trở thành một trong những hệ điều hành di động mã nguồn mở, miễn phí và phổ biến nhất trên toàn cầu.
- Android đ c phát tri n nh m c nh tranh v i các h đi u hành di đ ng khác nh iOS (Apple), BlackBerry OS, Windows Mobile (Microsoft), Symbian
(Nokia), Samsung (Bada), WebOS (Palm) Tính đ n th i đi m này, Android đã tr thành n n t ng di đ ng t ng tr ng nhanh nh t th gi i
Hệ điều hành Android nổi bật với tính năng mượt mà và khả năng hỗ trợ nhiều công nghệ tiên tiến như 3G, GPS, EDGE và Wifi Nó tương thích với nhiều phần cứng, hỗ trợ đa dạng các loại bàn phím, cảm ứng và trackball Là một hệ điều hành di động, Android có khả năng kết nối mạnh mẽ với các mạng không dây Hệ điều hành này cũng hỗ trợ công nghệ OpenGL, cho phép xử lý các phương tiện, hoạt hình và đồ họa một cách hiệu quả, đặc biệt trong việc phát triển các ứng dụng giao diện phức tạp, bao gồm cả trò chơi.
Vào năm 2008, hệ điều hành Android đã chính thức mã nguồn mở, cho phép các hãng điện thoại tùy chỉnh và thiết kế giao diện phù hợp với mô hình sản phẩm của họ Điều này không chỉ giúp tiết kiệm chi phí phát triển mà còn đảm bảo rằng hệ điều hành này hoàn toàn miễn phí, không phải trả tiền bản quyền Tuy nhiên, sự cạnh tranh không chỉ diễn ra giữa các hãng sản xuất điện thoại nhỏ mà còn giữa các ông lớn như Samsung và HTC.
Các nhà phát triển ứng dụng Android có thể dễ dàng phát triển ứng dụng cho nhiều dòng điện thoại khác nhau nhờ vào tính linh hoạt của nền tảng này Họ không cần lo lắng về dòng điện thoại hay phiên bản cụ thể nào, vì Android cung cấp sự đồng nhất cho nhiều thiết bị Các ứng dụng Android thường được viết bằng ngôn ngữ Java kết hợp với XML, tạo điều kiện cho việc chuyển đổi và tương thích cao giữa các thiết bị.
- Qu n lý thông tin ng i dùng PIM
- Ch ng trình ch i nh c, hi n th hình nh d c đi m c a b phát tri n ng d ng Android:
- H tr các thi t b có Wifi
- H tr phát tri n ng d ng v b n đ
- Th vi n âm thanh x lý nhi u đnh d ng
3 Ki n trúc h đi u hành Android:
H đi u hành android có 4 t ng t d i lên trên là t ng h t nhân Linux
(phiên b n 2.6), t ng T ng Libraries và Android runtime, T ng Application
Framework và trên cùng là t ngApplication
Ki n trúc h đi u hành Android a T ng h t nhân Linux (Linux Kernel layer):
Hệ điều hành Android được phát triển dựa trên hạt nhân Linux, cụ thể là phiên bản 2.6 Tất cả các hoạt động của hệ điều hành này đều được thực hiện thông qua hạt nhân, bao gồm quản lý bộ nhớ, giao tiếp với phần cứng, thực hiện bảo mật và quản lý tiến trình Ngoài ra, Android còn tích hợp các thư viện tổng hợp và môi trường thực thi Android Runtime để hỗ trợ phát triển ứng dụng.
- L i b r a r i e s: P h n nà y c ó n h i u t h vi n đ c vi t b n g C / C ++ đ c á c p h n m m c ó th s d ng, các th vi n đó đ c t p h p thành m t s nhóm nh :
+ Th vi n h th ng (System C library): th vi n d a trên chu n C, đ c s d ng ch b i h đi u hành
+ Th vi n Media (Media Libraries): Có nhi u code đ h tr vi c phát và ghi các lo i đ nh d ng âm thanh, hình nh, video thông d ng
+ Th vi n SQLite : H c s d li u đ các ng d ng có th s d ng
Android Runtime (ART) là thành phần cho phép các ứng dụng viết bằng ngôn ngữ Java hoạt động trên hệ điều hành Android Phần này bao gồm hai bộ phận chính, mô phỏng cách chạy Java trên thiết bị di động Đầu tiên là các thư viện lõi (Core Libraries) cung cấp các chức năng cơ bản cho ứng dụng.
Library), ch a các l p nh JAVA IO, Collections, File Access Th hai là m t máy o java (Dalvik Virtual Machine) c T ng Application Framework:
T ng này là một công cụ mạnh mẽ giúp các lập trình viên xây dựng ứng dụng một cách nhanh chóng và hiệu quả Được viết bằng ngôn ngữ Java, nó có khả năng sử dụng chung để tiết kiệm tài nguyên, mang lại lợi ích lớn cho quá trình phát triển phần mềm.
Gi i thi u m t s thành ph n c a ph n này:
- Activity Manager: Qu n lý các chu k s ng c a m t ng d ng c ng nh cung c p công c đi u khi n các Activity
- XMPP Service: Cung c p công c đ liên l c trong th i gian th c
Quản lý vị trí: Cho phép xác định vị trí của điểm dừng thông qua hệ thống định vị toàn cầu GPS và Google Maps Ứng dụng tổng hợp: Đây là nền tảng giao tiếp với người dùng, bao gồm các ứng dụng liên quan.
- Các ng d ng c b n, đ c cài đ t đi li n v i h đi u hành là g i đi n
(phone), qu n lý danh b (Contacts), duy t web (Browser), nh n tin (SMS), l ch làm vi c (Calendar), đ c e-mail (Email-Client), b n đ (Map), quay phim ch p nh (camera)
- Các ng d ng đ c cài thêm nh các ph n m m ch ng khoán (Stock), các trò ch i (Game), t đi n…
4 Cài đ t môi tr ng phát tri n Android: a Ph n m m h tr :
- l p trình Android thì m i b SDK c a Google là không đ , b n còn c n tích h p nó vào m t IDE nh Eclipse, bên c nh đó còn có Netbeans thì plugin cho Android v n ch a hoàn thi n
SDK Android Emulator là một tiện ích miễn phí cho Windows, Mac và Linux, cho phép lập trình viên phát triển ứng dụng Android ngay trên máy tính Được thiết kế bởi Google, công cụ này giúp các nhà phát triển kiểm tra ứng dụng của họ trên nhiều phiên bản Android khác nhau như 1.6, 2.0, 2.1, 2.2, 2.3, và nhiều hơn nữa, trước khi triển khai trên thiết bị di động.
- B n có th ch n phiên b n mà mình mu n, b n d a vào thông s SDK Platform Android your.version đ xác đ nh phiên b n Android tích h p trong gói cài đ t b H ng d n cài đ t:
+ Java Development Kit (JDK) 7: http://www.oracle.com/technetwork/java/javase/downloads/index.html
+ Eclipse 3.7.1 http://www.eclipse.org/downloads/
+ Android SDK http://developer.android.com/sdk/index.html
+ Android Development Toll (ADT) http://dl.google.com/android/ADT-0.9.7.zip
• u tiên b n cài Java Development Kit (JDK) b n hi n t i là b n JDK 7
• Linkdownload: http://www.oracle.com/technetwork/java/javase/downloads/index.html
• B m nút download có m i tên trong hình đ t i:
• Ti p t c b m nút Ch n “Accept License Agreement” đ ch p nh n đi u kho n s d ng và b m vào link đ t i v (phù h p v i h đi u hành) nh m i tên trong hình:
• Sau khi t i v b n cài đ t b n ch y file cài đ t JDK và làm theo hình đ m c đnh toàn b và b m Next đ n khi Finish:
• Sau b c này JDK s yêu c u cài JRE (Java Runtime Environment) vào máy
B n b m Next nh hình đ ti p t c cài JRE :
• Sau khi cài hoàn thành b m Finish đ hoàn t t vi c cài JDK vào máy
+ Cài đ t Eclipse: (h ng d n dành cho phiên b n portable)
• Ch n Eclipse cho h đi u hành c a b n là x86 ho c x64:
• Sau khi t i v b n b m chu t ph i vào file v a t i và bung nén nh hình:
• đây mình dùng C trong máy đ bung nén :
• Sau khi bung nén b n s có toàn b file c a Eclipse trong th m c C:\eclipse nh sau:
• File Eclipse có đánh d u sao trong hình là file đ ch y Eclipse, b n có th t o shortcut nó ra desktop đ d làm vi c
• u tiên ta t i b SDK t i http://developer.android.com/sdk/index.html, ch n platform phù h p v i OS mình đang dùng
• Gi i nén file zip b n v a t i v Ch y SDK Setup.exe B n có th g p thông báo l i “Fetching https://dl-sl Failed to fetch ”
• Close thông báo này l i Ti p theo c a s Choose Packages to Install xu t hi n
N u c a s này tr ng r ng thì ch n Cancel
• Quay v c a s Android SDK and AVD manager -> Ch n Setting, đánh d u vào ô Force https:// Ch n Available Packages
Các gói mà bạn muốn tải về bao gồm: Tài liệu (Documents) là phần Javadoc mô tả hoạt động của các phương thức và các lớp, phần này là không thể thiếu Mẫu (Sample) là các đoạn mã mẫu, nền tảng SDK (SDK Platform) tương ứng với các phiên bản hệ điều hành như 2.2 - API level 8, 2.1 - API level 7, và Google API để phát triển các phần mềm liên quan đến dịch vụ của Google.
Ch n Install Selected -> Install -> Ch ch ng trình cài đ t xong
+ Tích h p Android SDK vào Eclipse:
• Kh i ch y Eclipse, vào Help -> Install new softwares
To add a name and location in your application, input the desired name in the "Name" field and the location into the designated address field For HTML code integration, use the following links: https://dl-ssl.google.com/android/eclipse/ and http://dl-ssl.google.com/android/eclipse/.
• N u https không ho t đ ng, b n c ng có th t i th ng ADT v máy theo link http://dl.google.com/android/ADT-0.9.7.zip (b n m i nh t 0.9.7 ng v i
Android 2.2), ch n Archive và browse t i file này (l u ý không gi i nén)
• Ch n OK Check vào ph n d i ô Name (s hi n ra dòng Developer Tools)
• Ch y Eclipse ch n Tab Windows -> Preferences -> Android
Nh n nút Browse và ch nh đ ng d n t i th m c c a Android SDK b n t i lúc tr c Ch n Apply -> OK.
NGÔN NG L P TRÌNH JAVA
Java là một ngôn ngữ lập trình hướng đối tượng (OOP) nổi bật với khả năng biên dịch mã nguồn thành bytecode thay vì mã máy Điều này cho phép bytecode được thực thi trong môi trường thực thi (runtime environment), giúp Java hoạt động nhanh hơn so với nhiều ngôn ngữ lập trình thông thường như Python, Perl, hay PHP.
- Cú pháp Java đ c vay m n nhi u t C & C++ nh ng có cú pháp h ng đ i t ng đ n gi n h n và ít tính n ng x lý c p th p h n
2 L ch s hình thành ngôn ng Java:
Java được phát triển bởi James Gosling và nhóm tại Sun Microsystems vào năm 1991 Cần phân biệt rõ giữa Java và JavaScript, mặc dù hai ngôn ngữ này có tên gọi tương tự và cú pháp giống C Sun Microsystems đã nắm giữ quyền sở hữu và tiếp tục phát triển Java liên tục.
Java được phát triển với tiêu chí "Viết một lần, thực thi khắp nơi" (WORA), cho phép chương trình viết bằng Java có thể chạy trên nhiều nền tảng khác nhau thông qua một môi trường thực thi phù hợp Môi trường thực thi này, do Sun Microsystems phát triển, hỗ trợ các hệ điều hành như Sun Solaris, Linux, Mac OS, FreeBSD và Windows Ngoài ra, nhiều công ty và tổ chức khác cũng phát triển môi trường thực thi Java cho các hệ điều hành khác nhau, trong đó IBM Java Platform hỗ trợ Windows, Linux, AIX và z/OS.
Java, một ngôn ngữ lập trình và nền tảng phát triển phần mềm, được phát triển bởi Sun Microsystems, trong đó có James Gosling, vào năm 1991 trong khuôn khổ Dự án Xanh Java chính thức được phát hành vào năm 1994 và nhanh chóng trở nên phổ biến khi Netscape công bố hỗ trợ Java trong trình duyệt Navigator vào năm 1995 Kể từ đó, Java đã được tích hợp vào hầu hết các trình duyệt web như Internet Explorer (Microsoft), Firefox (Mozilla) và Safari (Apple), dưới sự quản lý của Oracle.
Java được sử dụng chủ yếu trong môi trường mạng và internet Sau khi Oracle mua lại công ty Sun Microsystems vào năm 2009-2010, họ đã tuyên bố là "người quản lý công nghệ Java" với cam kết không ngừng phát triển một cộng đồng tham gia và minh bạch.
3 M t s đ c đi m n i b t c a ngôn ng l p trình Java: a Máy o Java ( Java Virtual Machine):
Để thực thi một chương trình, nó cần được biên dịch ra mã máy, mà mã máy này phụ thuộc vào kiến trúc CPU của từng máy tính Mỗi loại CPU như Intel, Solaris, hay Macintosh có mã máy khác nhau, do đó một chương trình sau khi biên dịch chỉ có thể chạy trên kiến trúc CPU tương ứng Đối với CPU Intel, các hệ điều hành như Microsoft Windows, Unix, Linux và OS/2 đều có thể chạy được.
Chương trình thực thi trên Windows được biên dịch dưới dạng file có đuôi exe, trong khi trên Linux, chúng sử dụng file có đuôi elf Do đó, để một chương trình chạy trên Windows có thể hoạt động trên hệ điều hành khác như Linux, cần phải chỉnh sửa và biên dịch lại.
Ngôn ngữ lập trình Java đã được phát triển để giải quyết những khó khăn trong việc biên dịch và chạy chương trình Một chương trình viết bằng ngôn ngữ lập trình Java sẽ được biên dịch thành mã của máy ảo Java (mã Java bytecode) Sau đó, máy ảo Java sẽ chuyển đổi mã Java bytecode thành mã máy tương ứng Sun Microsystems là đơn vị chịu trách nhiệm phát triển các máy ảo Java hoạt động trên nhiều hệ điều hành và kiến trúc CPU khác nhau.
Java là một ngôn ngữ lập trình đa năng, được sử dụng để phát triển ứng dụng và biên dịch mã nguồn Các chương trình viết bằng ngôn ngữ Java có đuôi *.java, sau đó được biên dịch thành tệp tin có đuôi *.class và cuối cùng được thông dịch thành mã máy.
Chương trình viết bằng ngôn ngữ Java có thể chạy trên nhiều hệ điều hành khác nhau như Windows, Unix, Linux, miễn là có cài đặt Java Virtual Machine (JVM) Điều này cho phép lập trình viên áp dụng nguyên tắc "viết một lần, chạy mọi nơi".
Java là một ngôn ngữ lập trình hướng đối tượng hoàn toàn, khác biệt so với C++ Tất cả các thành phần trong Java đều liên quan đến các đối tượng cụ thể, bao gồm cả hàm chính của một chương trình viết bằng Java, tức là hàm main, cũng phải được đặt bên trong một lớp.
Trong Java, không hỗ trợ tính đa kế thừa như trong C++, mà thay vào đó, Java giới thiệu khái niệm interface để giải quyết vấn đề này Ngoài ra, Java cũng hỗ trợ đa nhiệm (Multi Tasking) và đa luồng (Multi Threading), cho phép thực hiện nhiều tác vụ cùng lúc một cách hiệu quả.
- Java h tr l p trình đa nhi m, đa lu ng cho phép nhi u ti n trình, ti u trình có th ch y song song cùng m t th i đi m và t ng tác v i nhau f Kh chuy n:
Chương trình ứng dụng với bảng ngôn ngữ Java có thể chạy trên bất kỳ máy tính nào có máy ảo Java, đảm bảo tính di động và linh hoạt Nguyên tắc "Viết một lần, chạy mọi nơi" (Write Once, Run Anywhere) giúp hỗ trợ mạnh mẽ cho việc phát triển ứng dụng đa nền tảng.
Công nghệ Java, phát triển bởi Sun Microsystems, cung cấp nhiều công cụ và thư viện lập trình phong phú, hỗ trợ phát triển nhiều loại hình ứng dụng khác nhau Các phiên bản chính của Java bao gồm J2SE (Java 2 Standard Edition), hỗ trợ phát triển ứng dụng trên nền tảng độc lập và môi trường client-server, và J2EE (Java 2 Enterprise Edition), được thiết kế cho các ứng dụng doanh nghiệp quy mô lớn.
Enterprise Edition) h tr phát tri n các ng d ng th ng m i, J2ME (Java 2
Micro Edition) h tr phát tri n các ng d ng trên các thi t b di đ ng, không dây, …
NG D NG CALCULATOR
1 Mô t ch c n ng ng d ng: a X lý bi u th c:
- Cho phép nh p bi u th c dùng d ng m u (inputting expression using standard format) nh c a m t máy tính khoa h c th c s Ví d có th nh p bi u th c:
Khi nhập hàm, bạn có thể thêm dấu ngoặc, ví dụ như "sin(" trong biểu thức sin Các phép tính cơ bản bao gồm cộng (+), trừ (-), nhân (*) và chia (÷) Bạn cũng có thể thực hiện các phép tính với các hàm như x², n!, sin, cos, tan và sqrt Đối với các hàm lượng giác, bạn có thể sử dụng độ (degree) hoặc radian Lưu và ghi lại nội dung của biểu thức tính toán (history) là rất quan trọng Biểu thức sẽ kết quả:
- D ng s th p phân (decimal number), ví d 100÷7 = 14.2857142857142857142
Có th xác đnh s ch s th p phân (decimal place) c a k t qu
2 Ý t ng gi i quy t bài toán:
- Bình th ng, đ vi t m t bi u th c t ng 2 s , ta vi t a + b Cách vi t này g i là trung t (infix) B i vì d u + (ta g i là toán t ) n m gi a a, b (toán h ng) M t bi u th c ph c t p h n có th d ng (a + b) * c
Ký pháp Nghệ chồng Ba Lan (Reversed Polish Notation - RPN) là một dạng biểu thức hủy trừ (postfix), nghĩa là toán tử được đặt sau toán hạng Ví dụ, biểu thức a + b sẽ được viết thành a b +; trong khi biểu thức (a + b) * c sẽ được biểu diễn là a b + c *.
- Ph ng pháp này giúp lo i b d u ngo c trong các bi u th c, c ng nh không ph i l u ý t i m c u tiên toán t (operator precedence)
RPN là một phương pháp tiên tiến giúp máy tính "đọc" và xử lý các biểu thức toán học để tính toán giá trị Khi người dùng nhập một biểu thức toán vào chương trình tính toán giá trị, nó sẽ chuyển đổi biểu thức đó sang dạng RPN, từ đó thực hiện các phép tính một cách hiệu quả.
3 Ý t ng thu t toán ký pháp ngh ch đ o Ba Lan a Ý t ng:
- M i toán t , toán h ng đc xem là m t token
Để thực hiện việc chuyển đổi biểu thức trung tố sang hậu tố với các token, ta thực hiện các bước sau: Nếu là toán hạng, đưa ra output Nếu là dấu mở ngoặc ‘(’, cho vào stack Nếu là dấu đóng ngoặc ‘)’, lấy các toán tử trong stack ra và đưa vào output cho đến khi gặp dấu mở ngoặc ‘(’ Nếu là toán tử, kiểm tra thứ tự ưu tiên; nếu toán tử trên stack có thứ tự ưu tiên cao hơn hoặc bằng toán tử hiện tại, lấy toán tử đó ra khỏi stack và đưa vào output Cuối cùng, đưa toán tử hiện tại vào stack.
- Bi u th c nh p là chu i nên tr c khi chuy n bi u th c d ng trung t sang h u t ta c n x lý đ đ n gi n cho vi c chuy n đ i
- Ta c n chuy n chu i bi u th c thành t ng token VD: “29+-6*(2-3)”
B1: Duy t t ng ký t chu i và ki m tra ký t thu c lo i nào if ("-".indexOf(sb.charAt(i)) != -1)
B2:- N u ký t là ‘-’ thì ki m tra có ph i là toán t ‘-’ hay s âm N u là toán t
‘-’ thì ta push vào stack, ng c l i ta ki m tra toán h ng và n i chu i case 1:// Là toán t if(i==0||sb.charAt(i-1)=='(')
StringBuffer tam=new StringBuffer(); tam.append(sb.substring(i,++i)); for(int j=i;j