2013年8月28日 星期三

[TQC+ Android]程式背景音樂_310

Android 2.1 API 7 版本原始題目載點:http://db.tt/87GSYroH

僑光科技大學 蔡存孝老師 解說參考:http://rs2.ocu.edu.tw/~tsay/files/TQC310.pdf

GDD03.java - Activity主體
package COM.TQC.GDD03;

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;

public class GDD03 extends Activity
{
 //宣告MediaPlayer類別來使用,記得Import
   private MediaPlayer m;
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
  //建立物件實體於this,音樂檔的路徑為res\raw\light
    m = MediaPlayer.create(this, R.raw.light);
    //播放音樂
    m.start();
    //設定播放迴圈為true,即為循環播放
    m.setLooping(true);
  }
@Override
protected void onPause() {
 // TODO Auto-generated method stub
 super.onPause();
 //當重新開起app程式至onResume時,重設音樂播放
 m.reset();
}
}

[TQC+ Android]接收簡訊_304

Android 2.1 API 7 版本原始題目載點:http://db.tt/FV8IPpEf

僑光科技大學 蔡存孝老師 解說參考:http://rs2.ocu.edu.tw/~tsay/files/304.png

AndroidManifest.xml設定
Permissions裡 "add" (User Permissions) Name = android.permission.RECEIVE_SMS
Application裡 "add" (Receiver) Name = GDA03_SM_Receiver 再 "add" Intent Filter 再 "add" (Action) Name =  android.provider.Telephony.SMS_RECEIVED

GDD03_SM_Receiver - BroadcastReceiver

package COM.TQC.GDD03 ;

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;



public class GDD03_SM_Receiver extends BroadcastReceiver 
{ 
   
 
  
  @Override 
  public void onReceive(Context context, Intent intent) 
  { 
    // TODO Auto-generated method stub 
    
     String str="";
     Bundle bundle = intent.getExtras();
     Object[] pdus=(Object[])bundle.get("pdus");
     SmsMessage[] m = new SmsMessage[pdus.length];
     for(int i=0; i < pdus.length; ++i) {
      m[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
      str+="接收來電>\n";
      str+=m[i].getDisplayOriginatingAddress();
      str+="\n---簡訊內容---\n";
      str+=m[i].getMessageBody();
     }
     Toast.makeText(context, str, Toast.LENGTH_LONG).show();
     
     Intent intent2 = new Intent(context, GDD03.class);
     intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
     context.startActivity(intent2);
   
   
   
   
   
   
  } 
}

[TQC+ Android]簡單記事_210

Android 2.1 API 7 版本原始題目載點:http://db.tt/ypxzY27m

僑光科技大學 蔡存孝老師 解說參考:http://rs2.ocu.edu.tw/~tsay/files/TQC210.pdf

GDD02.java - Activity主體(玩具版本)
package COM.TQC.GDD02;
import android.app.Activity;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;

public class GDD02 extends Activity {
 private static final String DBNAME = "MY_DB";
 private static final String TABLENAME = "MY_TABLE";
 private static final String FIELD01_NAME = "_id";
 private static final String FIELD02_NAME = "_text1";
 private SQLiteDatabase dataBase;
 private android.database.Cursor cursor;
 private int _id = -1;
 private EditText EditText01;
 private Button Button01;
 private Button Button02;
 private Button Button03;
 private ListView ListView01;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        EditText01 = (EditText) findViewById(R.id.EditText01);
        Button01 = (Button) findViewById(R.id.BtnAdd);
        Button02 = (Button) findViewById(R.id.BtnUpdate);
        Button03 = (Button) findViewById(R.id.BtnDelete);     
        ListView01 = (ListView) findViewById(R.id.ListView01); 
        
        Button02.setEnabled(false);
        Button03.setEnabled(false);
        
        String CREATE_SQL = "create table if not exists "+TABLENAME+" ("+FIELD01_NAME+" integer primary key autoincrement, "+FIELD02_NAME+" varchar not null);";
        // answer part 1
        dataBase = openOrCreateDatabase(DBNAME, MODE_WORLD_WRITEABLE, null);
        dataBase.execSQL(CREATE_SQL);
        cursor = dataBase.query(TABLENAME, null, null, null, null, null, null);
     
        android.widget.SimpleCursorAdapter adapter = new android.widget.SimpleCursorAdapter(this, R.layout.list,
          cursor, new String[]
                { FIELD02_NAME }, new int[]
                { R.id.CheckedTextView01 });
        // answer part 2
        ListView01.setAdapter(adapter);
        
        Button01.setOnClickListener(new View.OnClickListener(){

   @Override
   public void onClick(View arg0) {
    // TODO Auto-generated method stub
    // answer part 3
    if(EditText01.getText().toString().trim().length()>0){
     insert(""+EditText01.getText());
    }
   }});
        Button02.setOnClickListener(new View.OnClickListener(){

   @Override
   public void onClick(View arg0) {
    // TODO Auto-generated method stub
    // answer part 4
    if(_id!=-1 && EditText01.getText().toString().trim().length()>0){
     update(_id,""+EditText01.getText());
     Button02.setEnabled(false);
     Button03.setEnabled(false);
    }
    EditText01.setText("");  // answer part 5    
   }});
        Button03.setOnClickListener(new View.OnClickListener(){

   @Override
   public void onClick(View arg0) {
    // TODO Auto-generated method stub
    if(_id!=-1){
     delete(_id);
     Button02.setEnabled(false);
     Button03.setEnabled(false);
     EditText01.setText(""); // answer part 6
    }
    
   }});
        
        ListView01.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener(){

   @Override
   public void onItemClick(android.widget.AdapterView<?> arg0,
     View arg1, int arg2, long arg3) {
    // TODO Auto-generated method stub
    // answer part 7
    cursor.moveToPosition(arg2);
    _id = cursor.getInt(0);
    EditText01.setText(cursor.getString(1));
    
    Button02.setEnabled(true);
          Button03.setEnabled(true);
   }});
        
        
        
    }
    private void insert(String text){
     // answer part 8
     ContentValues cv = new ContentValues();
     cv.put(FIELD02_NAME, text);
     dataBase.insert(TABLENAME, null, cv);
     cursor.requery();  
    }
    private void update(int id,String text){
     // answer part 9
     String whereClause = FIELD01_NAME+"=?";
     String whereArgs[] = { Integer.toString(id) };
     ContentValues cv = new ContentValues();
     cv.put(FIELD02_NAME, text);
     dataBase.update(TABLENAME, cv, whereClause, whereArgs);
     cursor.requery();  
    }
    private void delete(int id){
     // answer part 10
     String whereClause = FIELD01_NAME+"=?";
     String whereArgs[] = { Integer.toString(id) };
     dataBase.delete(TABLENAME, whereClause, whereArgs);
     cursor.requery();  
    }
}

GDD02.java - Activity主體(立人版本)
package COM.TQC.GDD02;
import android.app.Activity;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;

public class GDD02 extends Activity {
 private static final String DBNAME = "MY_DB";
 private static final String TABLENAME = "MY_TABLE";
 private static final String FIELD01_NAME = "_id";
 private static final String FIELD02_NAME = "_text1";
 private SQLiteDatabase dataBase;
 private android.database.Cursor cursor;
 private int _id = -1;
 private EditText EditText01;
 private Button Button01;
 private Button Button02;
 private Button Button03;
 private ListView ListView01;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        EditText01 = (EditText) findViewById(R.id.EditText01);
        Button01 = (Button) findViewById(R.id.BtnAdd);
        Button02 = (Button) findViewById(R.id.BtnUpdate);
        Button03 = (Button) findViewById(R.id.BtnDelete);     
        ListView01 = (ListView) findViewById(R.id.ListView01); 
        
        Button02.setEnabled(false);
        Button03.setEnabled(false);
        
        String CREATE_SQL = "create table if not exists "+TABLENAME+" ("+FIELD01_NAME+" integer primary key autoincrement, "+FIELD02_NAME+" varchar not null);";
       
     // part 1
        dataBase = openOrCreateDatabase(DBNAME, MODE_WORLD_WRITEABLE, null);
        dataBase.execSQL(CREATE_SQL);
        cursor = dataBase.query(TABLENAME, null, null, null, null, null, null);
        //
        
        android.widget.SimpleCursorAdapter adapter = new android.widget.SimpleCursorAdapter(this, R.layout.list,
          cursor, new String[]
                { FIELD02_NAME }, new int[]
                { R.id.CheckedTextView01 });
       
        // part 2
        ListView01.setAdapter(adapter);
        //
        
        Button01.setOnClickListener(new View.OnClickListener(){

   @Override
   public void onClick(View arg0) {
    // TODO Auto-generated method stub
    // part  add toString()
    if(!EditText01.getText().toString().equals("")){
     insert(""+EditText01.getText());
    }
   }});
        Button02.setOnClickListener(new View.OnClickListener(){

   @Override
   public void onClick(View arg0) {
    // TODO Auto-generated method stub
    //part  add toString()
    if(_id!=-1 && !EditText01.getText().toString().equals("")){
     update(_id,""+EditText01.getText());
     Button02.setEnabled(false);
     Button03.setEnabled(false);
    }
    
   }});
        Button03.setOnClickListener(new View.OnClickListener(){

   @Override
   public void onClick(View arg0) {
    // TODO Auto-generated method stub
    if(_id!=-1){
     delete(_id);
     Button02.setEnabled(false);
     Button03.setEnabled(false);
    }
    
   }});
        
        ListView01.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener(){

   @Override
   public void onItemClick(android.widget.AdapterView<?> arg0,
     View arg1, int arg2, long arg3) {
    // TODO Auto-generated method stub
    
    //part 3
    cursor.moveToPosition(arg2);
    EditText01.setText(cursor.getString(1));
    _id = cursor.getInt(0);
    //
    
    Button02.setEnabled(true);
          Button03.setEnabled(true);
   }});
        
        
        
    }
    private void insert(String text){
     
     //part 4 
        ContentValues cv = new ContentValues();
        cv.put(FIELD02_NAME, text);
     dataBase.insert(TABLENAME, null, cv);
     cursor.requery();
        //
        
    }
    private void update(int id,String text){
     
     // part 5 
     ContentValues cv = new ContentValues();
        cv.put(FIELD02_NAME, text);
        String wA[] = {Integer.toString(id)};
      dataBase.update(TABLENAME, cv, FIELD01_NAME + "=?", wA);
      cursor.requery();
        
        //
        
        
        
    }
    private void delete(int id){
     
        // part 6
     
        String wA[] = {Integer.toString(id)};
      dataBase.delete(TABLENAME, FIELD01_NAME + "=?", wA);
      cursor.requery();
     
     //
        
        
    }
}

[TQC+ Android]我是誰?_208

Android 2.1 API 7 版本原始題目載點:http://db.tt/siAtVfAT

僑光科技大學 蔡存孝老師 解說參考:http://rs2.ocu.edu.tw/~tsay/files/TQC208.pdf

GDD02.java - Activity主體
package COM.TQC.GDD02;

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class GDD02 extends Activity {
 public static final String PREF_NAME = "GDD02_PREF";
 public static final String key01 = "key01";
 public static final String key02 = "key02";
 public static final String key03 = "key03";
 
 private EditText EditText01;
 private EditText EditText02;
 private EditText EditText03;
 
 private Button btn;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        EditText01 = (EditText)findViewById(R.id.editText01);
        EditText02 = (EditText)findViewById(R.id.editText02);
        EditText03 = (EditText)findViewById(R.id.editText03);
        
        SharedPreferences sp = getSharedPreferences(PREF_NAME, 0);
        EditText01.setText(sp.getString(key01, ""));
        EditText02.setText(sp.getString(key02, ""));
        EditText03.setText(sp.getString(key03, ""));
        
        btn = (Button)findViewById(R.id.button1);
        btn.setOnClickListener(new Button.OnClickListener() {
   
   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    finish();
   }
  });
    }
    @Override
 protected void onStop() {
     super.onStop();
  SharedPreferences sp = getSharedPreferences(PREF_NAME, 2);
  SharedPreferences.Editor editor = sp.edit();
  editor.putString(key01, ""+EditText01.getText().toString());
  editor.putString(key02, ""+EditText02.getText().toString());
  editor.putString(key03, ""+EditText03.getText().toString());
  editor.commit(); 

 } 
}


[TQC+ Android]計算BMI值_104

Android 2.1 API 7 版本原始題目載點:http://db.tt/nVrompty

僑光科技大學 蔡存孝老師 解說參考:http://rs2.ocu.edu.tw/~tsay/files/TQC104.pdf

首先進入AndroidMinifest.xml目錄add兩個Activity GDD01和GDD01_child (user permission)

定義兩個僅可單選的 RadioButton (必須選擇 Radio Group 右鍵Orientation > Horizontal 砍掉多的RadioButton )
兩個 EditText、一個 Button 、其餘TextView
如畫面所示



xml
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:android1="http://schemas.android.com/apk/res/android"
    android:id="@+id/widget0"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="2dp"
        android:layout_y="51dp"
        android:text="@string/text3" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="-2dp"
        android:layout_y="96dp"
        android:text="@string/text1" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="3dp"
        android:layout_y="150dp"
        android:text="@string/text2" />

    <RadioGroup
        android1:id="@+id/radioGroup1"
        android1:layout_width="wrap_content"
        android1:layout_height="wrap_content"
        android1:layout_x="84dp"
        android1:layout_y="38dp"
        android1:orientation="horizontal" >

        <RadioButton
            android1:id="@+id/rb1"
            android1:layout_width="wrap_content"
            android1:layout_height="wrap_content"
            android1:checked="true"
            android1:text="男性" />

        <RadioButton
            android1:id="@+id/rb2"
            android1:layout_width="wrap_content"
            android1:layout_height="wrap_content"
            android1:text="女性" />
    </RadioGroup>

    <EditText
        android1:id="@+id/height"
        android1:layout_width="wrap_content"
        android1:layout_height="wrap_content"
        android1:layout_x="83dp"
        android1:layout_y="90dp"
        android1:ems="10"
        android1:inputType="numberDecimal" >

        <requestFocus />
    </EditText>

    <EditText
        android1:id="@+id/weight"
        android1:layout_width="wrap_content"
        android1:layout_height="wrap_content"
        android1:layout_x="80dp"
        android1:layout_y="144dp"
        android1:ems="10"
        android1:inputType="numberDecimal" />

    <Button
        android1:id="@+id/btn"
        android1:layout_width="wrap_content"
        android1:layout_height="wrap_content"
        android1:layout_x="125dp"
        android1:layout_y="200dp"
        android1:text="計算" />

    <TextView
        android1:id="@+id/textView1"
        android1:layout_width="wrap_content"
        android1:layout_height="wrap_content"
        android1:layout_x="8dp"
        android1:layout_y="3dp"
        android1:text="@string/title" />

</AbsoluteLayout>
GDD01.java - Activity主體
package COM.TQC.GDD01;


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;

public class GDD01 extends Activity 
{
  private EditText etheight;
  private EditText etweight;
  private RadioButton rb1;
  private RadioButton rb2;
    
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) 
  {
    super.onCreate(savedInstanceState);
    
    setContentView(R.layout.main);
    
    Button b1 = (Button) findViewById(R.id.button1);
    b1.setOnClickListener(new Button.OnClickListener()
    {
      public void onClick(View v)
      {
       
      
        //從輸入介面中取出了的身高、體重值,要將身高、體重值傳送給 child_Activity 後作計算
       etheight=(EditText)findViewById(R.id.height);
       etweight=(EditText)findViewById(R.id.weight);
       rb1=(RadioButton)findViewById(R.id.rb1);
       rb2=(RadioButton)findViewById(R.id.rb2);
       String sex;
       if(rb1.isChecked()) sex="M";
       else sex="W";       
       
        //這些附加在 Intent 上的訊息都儲存在 Bundle 物件中
        Intent intent = new Intent(GDD01.this, GDD01_child.class);
        Bundle bundle = new Bundle();
        bundle.putString("Sex", sex);
        bundle.putDouble("height", 
          Double.parseDouble(etheight.getText().toString()));
        bundle.putDouble("weight", 
          Double.parseDouble(etweight.getText().toString()));
     
     //透過「intent.putExtras(bundle)」敘述,將「bundle」 物件附加在 Intent 上,隨著 Intent 送出而送出
        intent.putExtras(bundle);
        startActivityForResult(intent, 0);
           
       
      }
    });
  }
  
  
  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data)
  {
    switch (resultCode)
    { 
      case RESULT_OK:
    
        Bundle bundle = data.getExtras();
        String Sex = bundle.getString("Sex");
        double height = bundle.getDouble("height");
        double weight = bundle.getDouble("weight");
        
        etheight.setText("" + height);
        etweight.setText("" + weight);
        if(Sex.equals("M"))
        {
          rb1.setChecked(true);
        }else
        {
          rb2.setChecked(true);
        }
        break;       
      default: 
        break; 
     } 
   } 
}

GDD01_child.java - Activity主體
package COM.TQC.GDD01 ;

import java.text.DecimalFormat;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class GDD01_child extends Activity 
{
  Bundle bundle;
  Intent intent;
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) 
  {
    super.onCreate(savedInstanceState);
    
    
    setContentView(R.layout.mylayout);
    
    
    intent=this.getIntent();
    bundle = intent.getExtras();
    
   
    String Sex = bundle.getString("Sex");
    double height = bundle.getDouble("height");
    double weight = bundle.getDouble("weight");
      
    
    String BMI_result = this.getBMI(height,weight);
    String BMI_advice = this.getAdvice(Sex,height,weight);
    
    TextView tvBMI=(TextView) findViewById(R.id.tvBMI);
    tvBMI.setText(BMI_result);
    TextView tvAdvice=(TextView) findViewById(R.id.tvAdvice);
    tvAdvice.setText(BMI_advice);
    
  
    Button b1 = (Button) findViewById(R.id.btn);
    b1.setOnClickListener(new Button.OnClickListener()
    {
      public void onClick(View v)
      {          
      
       GDD01_child.this.setResult(RESULT_OK, intent);
       
      
       GDD01_child.this.finish();
      }
    });
  }
  
 //BMI值格式化
  private String format(double num)
  {
      
   return String.format("%.2f", num);
   
  }
  //取得BMI值
  private String getBMI (double height, double weight)
  {
   
    return this.getString(R.string.report_result)+
        " "+format(weight/(height*height));
  }
  //依BMI值取得建議
  private String getAdvice (String Sex, double height, double weight)
  {
  
     double bmi = weight / (height * height);
     
     double max_bmi, min_bmi;
     if(Sex=="M"){
      max_bmi=25;
      min_bmi=22;
     }else{
      max_bmi=22;
      min_bmi=18;
     }
     if(bmi>max_bmi)
      return this.getString(R.string.advice_heavy);
     else if(bmi<min_bmi)
      return this.getString(R.string.advice_light);
     else
      return this.getString(R.string.advice_average);

  }

}

[TQC+ Android]電費計算機_102

Android 2.1 API 7 版本原始題目載點:http://db.tt/ruQKU9OO

僑光科技大學 蔡存孝老師 解說參考:http://rs2.ocu.edu.tw/~tsay/files/TQC102.pdf

本題預設 values/strings.xml (中文)及 values-en/strings.xml (英文)檔案在 Resouces 裡面
方便多國語言切換,系統會自動偵測語言,不需要做任何更動
main.xml右上可以切換語系,不需要等到執行AVD

1.首先在 res/layout/main.xml 裡拉好
TextView (右鍵Edit Text 選擇String,如要清空,右鍵Edit Text 選擇Clear)
EditText
Spinner(如太長,右鍵 Layout Height > other... 打50dp, 右鍵 Edit Entries 選 Array > option_vs)
Button
如畫面所示


main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_gravity="left" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="@string/title" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView1"
        android:text="@string/text1" />

    <Spinner
        android:id="@+id/input_v"
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:layout_below="@+id/textView1"
        android:layout_toRightOf="@+id/textView2"
        android:entries="@array/option_vs" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/input_v"
        android:text="@string/text2" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/input_a"
        android:text="@string/text3" />

    <EditText
        android:id="@+id/input_hr"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/input_a"
        android:layout_toRightOf="@+id/textView4"
        android:ems="10"
        android:inputType="number" />

    <EditText
        android:id="@+id/input_a"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/input_hr"
        android:layout_alignTop="@+id/textView3"
        android:ems="10"
        android:inputType="numberDecimal" >

        <requestFocus />
    </EditText>

    <TextView
        android:id="@+id/textView5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/input_hr"
        android:text="@string/text4" />

    <EditText
        android:id="@+id/input_m"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/input_hr"
        android:layout_alignTop="@+id/textView5"
        android:ems="10"
        android:inputType="number" />

    <Button
        android:id="@+id/submit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/input_m"
        android:text="@string/btn" />

    <TextView
        android:id="@+id/textView7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/submit"
        android:text="@string/text5" />

    <TextView
        android:id="@+id/respond"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView7" />

</RelativeLayout>


GDD01.java - Activity主體
package COM.TQC.GDD01;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;

public class GDD01 extends Activity {
 
 protected TextView MyOutcome;
 protected int volt;
    Spinner input_v;
    EditText input_a, input_hr, input_m;
    Button submit;
    TextView respond;
    
 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
     input_a = (EditText) findViewById(R.id.input_a);   
     input_hr = (EditText) findViewById(R.id.input_hr);
     input_m = (EditText) findViewById(R.id.input_m);
     submit = (Button) findViewById(R.id.submit);
     input_v = (Spinner) findViewById(R.id.input_v);
     respond = (TextView) findViewById(R.id.respond);

        input_v.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){

   @Override
   public void onItemSelected(AdapterView<?> arg0, View arg1,
     int arg2, long arg3) {
    // TODO Auto-generated method stub
    if(arg2 == 0) volt = 110;
    else volt = 220;
   }

   @Override
   public void onNothingSelected(AdapterView<?> arg0) {
    // TODO Auto-generated method stub
    
   }});
        
        submit.setOnClickListener(new Button.OnClickListener(){

   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    double a = Double.parseDouble(input_a.getText().toString());
    double hr = Double.parseDouble(input_hr.getText().toString());
    double m = Double.parseDouble(input_m.getText().toString());
    double w = (double)a*volt;
    int ans = (int) Math.round(w/1000 * hr * 30 * m);
    respond.setText("$ "+ans);

   }});
        
        
 
    }

}