My Opera is closing 3rd of March

NAM GIÀ

CHÚ Ý: BLOG NAM GIÀ ĐÃ CHUYỂN SANG ĐỊA CHỈ http://namdh.wordpress.com

Chương trình Android đầu tiên: Giải phương trình bậc 2

Cách đây ít ngày, Google đã đưa ra bộ công cụ phát triển phần mềm cho Android (Android SDK), một nền tảng mới cho các dòng máy di động. Android là một nền tảng hoàn chỉnh dựa trên hệ điều hành Linux (kernel 2.6), các ứng dụng chạy trên máy ảo Java - phiên bản được thiết kế cho các dòng máy di động có tên Dalvik.
Các tính năng mà Android hỗ trợ rất rộng, bao gồm đồ họa 2D, 3D (dựa trên OPENGLES), khả năng định vị (hiện chỉ dùng GPS), Bluetooth, EDGE, 3G, WiFi, hỗ trợ thoại GSM, dữ liệu có thể được lưu trữ trong cơ sở dữ liệu SQLLite... tất nhiên các thiết bị hỗ trợ Android sẽ không do Google sản xuất, và một số tính năng nâng cao như Wifi, GPS, 3D hardware accelerator... sẽ phụ thuộc vào từng dòng thiết bị cụ thể.
Một tin vui cho các lập trình viên là các bước phát triển ứng dụng trên Android rất đơn giản, với sự hỗ trợ của nhiều thư viện có sẵn, mô hình lập trình khá sáng sủa, cùng với IDE Eclipse, tuy nhiên đến thời điểm hiện tại thì bộ tài liệu của nó còn khá sơ sài, đặc biệt là về API. Tuy nhiên, đối với những người đã thành thạo Java, đặc biệt là đã từng xây dựng các ứng dụng cho di động thì việc tiếp cận rất dễ dàng.

Địa chỉ chính thức của Android hiện tại là: http://code.google.com/android/

Sau khi đọc qua tài liệu về Android, bạn có thể theo hướng dẫn của nó để tải về bộ SDK, Eclipse và cấu hình, cài đặt các thành phần liên quan. Tôi đã thử viết một chương trình cực kỳ phức tạp, đó là chương trình giải phương trình bậc 2 faint Thật đáng kinh ngạc, chỉ sau ít phút, tôi đã có ngay một chương trình để chạy trên thiết bị Android yes
Trước khi thử viết chương trình, bạn nên đọc qua tài liệu của nó, tối thiểu bạn phải có khả năng tạo một bộ khung chương trình trong Eclipse, sau đó hãy thay nội dung của hai file main.xml và GPTB2.java như sau (dự án có tên GPTB2, tên lớp activity chính cũng đặt là GPTB2.java)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Giải phương trình bậc 2"
    />
 <EditText
     id="@+id/a"
 	 android:layout_width="300pt" 
     android:layout_height="80pt" 
     android:numeric="true"
 />
 <EditText
     id="@+id/b"
 	 android:layout_width="300pt" 
     android:layout_height="80pt" 
     android:numeric="true"
 />
 <EditText
     id="@+id/c"
 	 android:layout_width="300pt" 
     android:layout_height="80pt" 
     android:numeric="true"
 />
[html:Button
     id="@+id/calculate"
 	 android:layout_width="250pt" 
     android:layout_height="80pt"
      android:text="Calculate"
 /]
<TextView
     id="@+id/result"
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
 />
</LinearLayout>


Tiếp theo là file GPTB2.java
package com.daohainam.ptb2;

import android.app.Activity;
import android.os.Bundle;
import android.widget.*;
import android.view.*;

public class PTB2 extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);

        final Button button = (Button) findViewById(R.id.calculate);
    	final TextView result = (TextView) findViewById(R.id.result);
        button.setOnClickListener(new Button.OnClickListener() {
            public void onClick(View v) {
            	String sa = ((EditText) findViewById(R.id.a)).getText().toString();
            	String sb = ((EditText) findViewById(R.id.b)).getText().toString();
            	String sc = ((EditText) findViewById(R.id.c)).getText().toString();
            	
            	try
            	{
            		double a = Double.parseDouble(sa);  
            		double b = Double.parseDouble(sb);  
            		double c = Double.parseDouble(sc);
            		
            		if (a == 0)
            		{
            			result.setText("Phương trình bậc I: ");
        				if (b == 0)
        				{
        					if (c == 0)
        						result.setText(result.getText() + "Phương trình có vô số nghiệm");
        					else
        						result.setText(result.getText() + "Phương trình vô nghiệm");
        				}
        				else
        				{
    						result.setText(result.getText() + "x = " + (-c/b));
        				}
            		}
            		else 
            		{
            			double delta = b*b - 4*a*c;
            			
            			if (delta < 0.0)
            			{
            				result.setText("Phương trình vô nghiệm\n");
            			}
            			else
            				if (delta == 0)
            				{
            					result.setText("Phương trình có nghiệm kép = " + (-b/(2*a)));
            				}
            				else
            				{
            					double delta_sqrt = Math.sqrt(delta);
            					result.setText("x1 = " + ((b*b + delta_sqrt)/(2 * a)) + "\n" + "x2 = " + ((b*b - delta_sqrt)/(2 * a)));
            				}
            		}
            			
            	} catch (Exception ex)
            	{
            		result.setText(ex.toString());
            	}
            }
        });
}
}


Vậy là xong, khi chạy bạn sẽ có thể thấy giao diện chương trình như sau:

Nhập các giá trị cần thiết và nhấn vào nút Calculate để xem kết quả.

Bạn cũng có thể download toàn bộ dự án tại đây

Dùng SmtpAppender trong Log4net với GmailSilverlight - Step by Step (phần 2)

Comments

leht Tuesday, November 20, 2007 3:02:22 AM

Hic, lại thêm 1 cuộc chiến nữa: Windows Mobile vs Android! smile Em thì ủng hộ Java MIDP! Nếu tất cả mobile trên thế giới này đều hỗ trợ MIDP 3.0 (hope in future) thì tốt... bigsmile

namdh Tuesday, November 20, 2007 3:54:56 AM

Android là một nền tảng đầy đủ, không như J2ME smile, một ứng dụng viết riêng cho Android sẽ có thể làm được nhiều thứ hơn một MIDlet đơn thuần. Anh nghĩ có thể các thiết bị Android cũng vẫn có thể có khả năng chạy MIDlet, cũng như Windows Mobile hiện nay vậy.
Tuy nhiên qua đây vẫn có thể thấy vai trò của J2ME mờ nhạt dần với việc càng ngày càng có nhiều đối thủ cạnh tranh, mặt khác với việc đưa ra bộ Android SDK, ta lại thấy một cú ăn điểm của Java khi nó được coi là phương thức phát triển ứng dụng chính cho nền tảng này.

Càng nhiều Android => càng nhiều Java bigsmile
February 2014
M T W T F S S
January 2014March 2014
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28