Trao đổi với tôi

http://www.buidao.com

10/20/10

[Android] 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, đế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 :D . 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.

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=verticalandroid: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/>

<Button id=@+id/calculate android:layout_width=250pt android:layout_height=80ptandroid: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 <>

{

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 (mã nguồn này được xây dựng dựa trên bản SDK đầu tiên)

Cập nhật: Mã nguồn tại đây được xây dựng dựa trên bản SDK 1.5r2.

Giao diện


reflink; http://namdh.wordpress.com/2008/07/27/android-ptb2/