代码如下:
//开始录像
public void recorder(){
try {
myRecAudioFile = File.createTempFile(strTempFile,".3gp",myRecAudioDir);
recorder = new MediaRecorder(); 
recorder.setPreviewDisplay(surfaceHolder.getSurface());
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); 
//设置录音源为麦克风
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
//设置输出格式为3gp
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);  
//设置视频大小
recorder.setVideoSize(176,144);   
recorder.setVideoFrameRate(15);   
//设置视频编码
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263); 
//设置音频编码
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);          
recorder.setMaxDuration(10000);
recorder.setOutputFile(myRecAudioFile.getAbsolutePath());
// recorder.setOutputFile("/sdcard/v.3gp");
recorder.prepare();
recorder.start();
recording = true;
isStopRecord = false;
} catch (IOException e) {
e.printStackTrace();
}
}当我点击录制时,一开始录制就自动关闭了,不知道是什么原因,请大家多多指教!!!

解决方案 »

  1.   

    你可以把你的log信息贴上来,这样更便于帮你解决问题
      

  2.   

    在公司没环境,找了两个关于视频录制的介绍,楼主看看有没有帮助
    楼主的录制方法和下面介绍的也基本一样啊,没看出来什么原因android视频录制实现方法
    http://www.rosoo.net/a/mobile_andriod/200912/8158.html关于Android音频、视频录制类MediaRecorder 
    http://blog.csdn.net/iamlazybone/archive/2010/07/25/5764118.aspx
      

  3.   

    1. 确认下有没有添加permission
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />2. 将e.printStackTrace();打印出来的log发出来,方便分析。
      

  4.   

    权限我加了,
    <uses-permission android:name="android.permission.CAMERA"></uses-permission>
    <uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>刚开始是录制了9秒钟后自动关闭,录制的视频也可以看,后来改了一下代码,现在一开始录制就自动关闭了,文件全是0字节.
      

  5.   

    java.lang.RuntimeException: start failed.                                                         
        at android.media.MediaRecorder.start(Native Method)                                           
        at xy.phone.service.PhoneListenerService$1.onCallStateChanged(PhoneListenerService.java:112)  
        at android.telephony.PhoneStateListener$2.handleMessage(PhoneStateListener.java:303)          
        at android.os.Handler.dispatchMessage(Handler.java:99)                                        
        at android.os.Looper.loop(Looper.java:123)                                                    
        at android.app.ActivityThread.main(ActivityThread.java:4363)                                  
        at java.lang.reflect.Method.invokeNative(Native Method)                                       
        at java.lang.reflect.Method.invoke(Method.java:521)                                           
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)            
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)                               
        at dalvik.system.NativeStart.main(Native Method)                                              
    请高手帮我看看这个问题了,非常感谢!
    源码是:
    recorder = new MediaRecorder();                                                               
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC); //来自于麦克风                        
    recorder                                                                                      
    .setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); //输出格式mp4                    
    recorder                                                                                      
    .setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); //编码                           
    SimpleDateFormat format = new SimpleDateFormat(                                               
    "yyMMddHHmmss");                                                                      
    String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/phoneRecordes/";
    Log.i(TAG, "PATH:"+path);                                                                     
    if(this.incomingNumber.equals("")){                                                           
    this.incomingNumber = "outCall";                                                          
    }                                                                                             
    filename = path + this.incomingNumber + "_"                                                   
    + format.format(new Date()) + ".mp4";                                                 
    recorder.setOutputFile(filename);                                                             
    recorder.prepare();                                                                           
    recorder.start();                                                                             
    isRecord = true;   
      

  6.   


    很多人用运行这个都出了问题,我后来也发现了问题,在1.6版本上可以运行,但1.6以上的版本就会出问题,原因是1.6版本以上的SDK封装了一部分功能.你可以加我QQ:412097740  或发邮件讨论:[email protected]