Hello,

I have this error : MediaRecorder start failed: -38.

*Source code activity :*

package com.example.testcamera3;

import java.io.IOException;

import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.media.CamcorderProfile;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class VideoStackActivity extends Activity implements 
SurfaceHolder.Callback {
    
    private SurfaceHolder surfaceHolder;
    private SurfaceView surfaceView;
    public MediaRecorder mrec = new MediaRecorder();
    private Button startRecording = null;
    private Camera mCamera;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video_stack);
        
        startRecording = (Button)findViewById(R.id.buttonstart);
        startRecording.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

                    startRecording();

                
            }
            
        });
        
        mCamera = Camera.open();
        surfaceView = (SurfaceView)findViewById(R.id.surface_camera);
        surfaceHolder = surfaceView.getHolder();
        surfaceHolder.addCallback(this);
        surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        menu.add(0, 0, 0, "StartRecording");
        menu.add(0, 1, 0, "StopRecording");
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()) {
        case 0:
            try {
                startRecording();
            } catch (Exception e) {
                mrec.release();
            }
            break;
        case 1:
            mrec.stop();
            mrec.release();
            mrec = null;
            break;
        default:
                break;
        }
        return super.onOptionsItemSelected(item);
    }
    
    protected void startRecording()  {
        mrec = new MediaRecorder();

        
        mCamera.unlock();

        
        
        mrec.setCamera(mCamera);
        
        mrec.setPreviewDisplay(surfaceHolder.getSurface());
        mrec.setVideoSource(MediaRecorder.VideoSource.CAMERA);
        mrec.setAudioSource(MediaRecorder.AudioSource.MIC);
        
        mrec.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_LOW));
        mrec.setVideoFrameRate(1);
        // A tester
        //mrec.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        mrec.setPreviewDisplay(surfaceHolder.getSurface());
        //ok
        
mrec.setOutputFile(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES)+"/test.mp4");
        
        
        
//        Ok !
        try {
            mrec.prepare();
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        mrec.start();
    }
    
    protected void stopRecording() {
        mrec.stop();
        mrec.reset();
        mCamera.release();
    }
    
    private void releaseMediaRecorder() {
        if(mrec != null) {
            mrec.reset();
            mrec.release();
            mrec = null;
            mCamera.lock();
        }
    }
    
    private void releaseCamera() {
        if(mCamera != null) {
            mCamera.release();
            mCamera = null;
        }
    }
    
    @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width, 
int height) {
        
    }

    @Override
    public void surfaceCreated(SurfaceHolder holder) {
        if(mCamera!=null) {
            Parameters params = mCamera.getParameters();
            mCamera.setParameters(params);
        }
    }

    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {
        if(mCamera != null) {
            mCamera.stopPreview();
            mCamera.release();
        }
    }
}



*Source code layout :

*<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android";
    xmlns:tools="http://schemas.android.com/tools";
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".VideoStackActivity" 
    android:orientation="vertical">

    <SurfaceView 
        android:id="@+id/surface_camera"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"/>
    
    <Button
        android:id="@+id/buttonstart"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
       />

</RelativeLayout>*
*
*Source code Manifest :*

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android";
    package="com.example.testcamera3"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission 
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.INTERNET"/>

    
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.testcamera3.VideoStackActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to android-developers+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to