「爆発しろ!」ボタン for Android ver0.9できました

重いEclipse様と格闘しながらボタン+Wave効果音だけのお手軽Androidアプリをひとつ作り上げました。C言語ではCUIしかやってないので人生初のGUIプログラミング、かも知れません。

下記二つのファイルをadtの入ったEclipseに放り込んでやればAndroidエミュレータ上で動くはずです。

機能

画面に「爆発しろ!」と書かれたボタンが表示されて、ボタンを押すとsoundファイルが再生されます。再生中にボタンを連打すると再度最初から。ただそれだけ。
soundファイルはEclipseでRunする前にres/rawに適当なsound.waveファイルを置いてください。できれば爆発音だと大変よろしい。

BombButton.java

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class BombButton extends Activity {
	/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
		
        //ボタンを作って文字とクリック時の処理を設定
    	Button bButton = (Button)findViewById(R.id.bButton);
        
        /*XMLで定義せずプログラムの中でする場合
        Button bButton = new Button(this);
    	bButton.setText("爆発しろ!");
    	*/

        //MediaPlayerオブジェクトmpを作っておく
        //final修飾しないとonClickから参照できないってEclipse様が仰いました。
        //R.raw.soundは「res/raw」に入れたWaveファイル。
        //raw内にsoundという名前のwaveファイルを置けば動くはず
       	final MediaPlayer mp = MediaPlayer.create(this, R.raw.sound);
        
    	//クリック時の処理を定義 cf.http://www.javadrive.jp/android/button/index3.html
       	//バージョン1.0のSDKではstart();の中にprepare();が含まれる、らしい ドキュメント参照
       	bButton.setOnClickListener(new OnClickListener() {
        	public void onClick(View v) {
        		mp.seekTo(0);				//連打対策として爆発音の0秒に戻す
        		mp.start();					//爆発音スタート
            }
        });
       	
        }
}

main.xml

res/layoutに置く。ボタンを画面中央にするのに結構苦労したのは秘密です。
参照:[android-developers] Problem Centering and Padding Buttons in Layout

<?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"
    android:gravity="center"
    >
	<LinearLayout
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:gravity="center"
		>
			<Button
				android:id="@+id/bButton"
				android:layout_width = "wrap_content"
				android:layout_height = "wrap_content"
				android:text = "爆発しろ!"
			/>
	</LinearLayout>
</LinearLayout>