MediaPlayerつづき


前にソースは今度と言っていたMediaPlayerの話。
一応動くは動くんだけど再生できるファイルとできないファイルがあったりする。


再生の仕方は前にも書いた通り。res/rawフォルダの中に再生したいファイルを入れ、リソースIDで指定する。


うーん。もう少し調べよう。

package net.swelt.android.soundtest;

import android.app.Activity;
import android.os.Bundle;
import android.media.MediaPlayer;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.LinearLayout;

public class SoundTest extends Activity {
	private final int WRAP_CONTENT = ViewGroup.LayoutParams.WRAP_CONTENT;
	private MediaPlayer mMediaPlayer;
	private boolean mState = true;
	private Button mStartButton;
	private Button mStopButton;
	private CheckBox mLoopCheckBox;
	
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
    	
        super.onCreate(icicle);
        
        LinearLayout linearLayout = new LinearLayout(this);
        linearLayout.setOrientation(LinearLayout.VERTICAL);
        setContentView(linearLayout);
        
        mMediaPlayer = MediaPlayer.create(this, R.raw.sound);
        mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        	public void onCompletion(MediaPlayer mp) {
        		if( mLoopCheckBox.isChecked() ) return;
        		mState = true;
        		mStartButton.setText("Start");
        		mp.reset();
        	}
        });
        
        mStartButton = new Button(this);
        mStartButton.setLayoutParams(new LinearLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT));
        linearLayout.addView(mStartButton);
        mStartButton.setText("Start");
        mStartButton.setOnClickListener(new View.OnClickListener() {
        	public void onClick(View v) {
        		Button bt = (Button) v;
        		if( mState ) {
        			bt.setText("Pause");
        			mMediaPlayer.prepare();        			
        			mMediaPlayer.start();
        		} else {
        			bt.setText("Start");
        			mMediaPlayer.pause();
        		}
        		mState = !mState;
        	}
        });
        
        mStopButton = new Button(this);
        mStopButton.setLayoutParams(new LinearLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT));
        linearLayout.addView(mStopButton);
        mStopButton.setText("Stop");
        mStopButton.setOnClickListener(new View.OnClickListener() {
        	public void onClick(View v) {        		
        		mState = true;
        		mStartButton.setText("Start");
        		mMediaPlayer.stop();
        		mMediaPlayer.reset();
        	}
        });
        
        mLoopCheckBox = new CheckBox(this);
        mLoopCheckBox.setLayoutParams(new LinearLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT));
        linearLayout.addView(mLoopCheckBox);
        mLoopCheckBox.setText("Loop");
        mLoopCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        	public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
        		mMediaPlayer.setLooping(isChecked ? 1 : 0);        		
        	}
        });
    }
    
    @Override
    protected void onDestroy() {    	
    	mMediaPlayer.stop();
    	mMediaPlayer.release();
    	super.onDestroy();
    }
}