android錄影程式

各位好~小弟最近在寫android的錄影程式~由於是新手~很多邏輯沒有很懂~我是拿"現在"官方的錄音程式來做改成錄影.依照我收集到的資訊好像們甚麼差.但改完後進入一片黑的程式用menu觸發按鍵就會不預期關閉..不之哪了那些程式碼.

package com.android.audiorecordtest;

import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.widget.Button;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Surface;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.content.Context;
import android.util.Log;
import android.media.MediaRecorder;
import android.media.MediaPlayer;
import java.io.IOException;


public class video33 extends Activity {
    /** Called when the activity is first created. */
   
         private static final String LOG_TAG = "AudioRecordTest";
         private static String mFileName = null;
         private MediaRecorder mRecorder = null;         
         private MediaPlayer   mPlayer = null;
         
         
private void onRecord(boolean start){
             if (start) {
                 startRecording();
                 } else { 
                     stopRecording();  
                     }  
             }
   
    private void onPlay(boolean start) {
        if (start) {
            startPlaying();
            } else {
                stopPlaying();    
                }  
        }
    private void startPlaying() {
        mPlayer = new MediaPlayer();
        try {
            mPlayer.setDataSource(mFileName);
            mPlayer.prepare();
            mPlayer.start();
            } catch (IOException e) {
                Log.e(LOG_TAG, "prepare() failed");
                }
            }
    private void stopPlaying() {
        mPlayer.release();
        mPlayer = null;
        }
   
   
private void startRecording() {
    mRecorder = new MediaRecorder();
    SurfaceView surface = (SurfaceView)findViewById(R.id.SurfaceView01);
    SurfaceHolder holder = surface.getHolder();
    mRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
    mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    mRecorder.setVideoSize(176, 144); // QCIF
    mRecorder.setVideoFrameRate(15);
    mRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);
    mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    mRecorder.setOutputFile(mFileName);
    mRecorder.setPreviewDisplay(holder.getSurface());

     try {
         mRecorder.prepare();
         } catch (IOException e) {
             Log.e(LOG_TAG, "prepare() failed");
             }
    mRecorder.start();
       
}
private void stopRecording() {
    mRecorder.stop();
    mRecorder.release();
    mRecorder = null;
    }



public void AudioRecordTest() {
    mFileName = Environment.getExternalStorageDirectory().getAbsolutePath();
   
    mFileName += "/audiorecordtest.3gp";
    }    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
         
       
        setContentView(R.layout.main); 
    }
        protected static final int Menu_play = Menu.FIRST;
        protected static final int Menu_record = Menu.FIRST+1;
   
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // TODO Auto-generated method stub
           
            menu.add(0,Menu_play,0,"播放");
            menu.add(0,Menu_record,0,"錄影");
       
            return super.onCreateOptionsMenu(menu);
           
        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // TODO Auto-generated method stub
            switch(item.getItemId()){
            case Menu_play:
                big();
             break;
            case Menu_record:
                litter();
                break;
           
            }
            return super.onOptionsItemSelected(item);
        }
        public void big(){
            Button button = (Button)findViewById(R.id.playone);
             boolean mStartPlaying = true;
             onPlay(mStartPlaying);
                  if (mStartPlaying) {
                     button.setText("Stop playing");
                      } else {
                     button.setText("Start playing");
                          } 
                  mStartPlaying = !mStartPlaying; 
        }
        public void litter(){
            Button buttonI = (Button)findViewById(R.id.playtwo);
             boolean mStartrecording = true;
             onRecord(mStartrecording);
                  if (mStartrecording) {
                    buttonI.setText("Stop recording");
                  } else {
                 buttonI.setText("Start recording");
                      } 
               mStartrecording = !mStartrecording; 
        }
   
    @Override 
    public void onPause() {  
        super.onPause();
        if (mRecorder != null) {
            mRecorder.release(); 
            mRecorder = null;   
            }     
        if (mPlayer != null) {
            mPlayer.release(); 
            mPlayer = null;
            } 
        }
    }

以加權限



 

麻煩各位幫我瞧一下........