2013-04-21 12 views
6

किसी त्रुटि मैं कर रहा हूँ कहना कर सकते हैं? मैं एक छोटा वीडियो रिकॉर्ड करने की कोशिश कर रहा हूं, लेकिन किसी भी तरह से इसे दुर्घटनाग्रस्त करने का रास्ता मिल गया है।एंड्रॉयड वीडियो रिकॉर्ड त्रुटि

स्रोत कोड:

public class Start_recording extends Activity implements SurfaceHolder.Callback 
{ 
    MediaRecorder recorder; 
    SurfaceHolder surfaceHolder; 
    SurfaceView myVideoView; 
    Camera camera; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     Intent intent = getIntent(); 
     String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); 
     camera = Camera.open(); 
     camera.unlock(); 
     recorder = new MediaRecorder(); 
     setContentView(R.layout.activity_main_rst); 
     myVideoView = (SurfaceView)findViewById(R.id.surface_camera); 
     surfaceHolder = myVideoView.getHolder(); 
     surfaceHolder.addCallback(this); 
     initMediaRecorder(); 
     boolean exists = (new File(android.os.Environment.getExternalStorageDirectory() + "/Record/")).exists(); 

     if (!exists) 
     { 
      new File(android.os.Environment.getExternalStorageDirectory() + "/Record/").mkdirs(); 
     } 

     try 
     { 
      recorder.prepare(); // This is the line of error. 
      recorder.start(); 
      Thread.sleep(36000); 
      recorder.stop(); 
      setupActionBar(); 
     } 
     catch(Exception e) 
     { 
      Log.v("Error is there : ",e.toString()); 
      e.printStackTrace(); 
     } 
    } 

    public void initMediaRecorder() 
    { 
     try 
     { 


      recorder.setPreviewDisplay(surfaceHolder.getSurface()); 
      recorder.setCamera(camera); 
      recorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER); 
      recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); 
      recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
      recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP); 
      recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
      recorder.setOutputFile(android.os.Environment.getExternalStorageDirectory()+"/Record/test.3gp"); 
      recorder.setMaxDuration(300000); 
     } 
     catch(Exception f) 
     { 
      Log.v("Exception here : ",f.toString()); 
      f.printStackTrace(); 
     } 
    } 
} 

त्रुटि:

E/MediaRecorderJNI(1575): Application lost the surface 
V/Error is there :(1575): java.io.IOException: invalid preview surface 
W/System.err(1575): java.io.IOException: invalid preview surface 
W/System.err(1575):  at android.media.MediaRecorder._prepare(Native Method) 
W/System.err(1575):  at android.media.MediaRecorder.prepare(MediaRecorder.java:666) 
W/System.err(1575):  at com.example.project.Start_recording.onCreate(Start_recording.java:51) 

मैं मैनिफ़ेस्ट फ़ाइल में सही ढंग से अनुमतियों को शामिल किया है और यह भी setPreviewDisplay सेट()। लेकिन मुझे अमान्य पूर्वावलोकन सतह के रूप में मिलता है। कृपया मुझे सही करें।

उत्तर

0

एक SurfaceHolder.Callback उपयोग करने के लिए रिकॉर्ड करने के बाद सिर्फ सतह वास्तव में बनाई गई है शुरू करने के लिए है।

संबंधित मुद्दे