Error de registro de vídeo de Android

¿Puede alguien señalar el error que estoy haciendo? Estoy tratando de grabar un video corto, pero de alguna manera encuentra una forma de bloqueo.

Código fuente:

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(); } } } 

Error:

 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) 

He añadido los permisos correctamente en el archivo de manifiesto y también establecer el setPreviewDisplay (). Pero me sale como superficie de vista previa no válida. Por favor, corrija me.

Uno tiene que utilizar SurfaceHolder.Callback para iniciar la grabación sólo después de que la superficie realmente se crea.

  • Las cadenas contienen los mismos caracteres pero siguen siendo diferentes
  • Material-calendarview set color de fondo de las fechas
  • La función de sustitución de cadena no funciona en android
  • Android: UnsatisfiedLinkError debido a la estructura de carpetas en "lib"?
  • ¿Cómo puedo utilizar un color como imagen de marcador de posición con Picasso?
  • ¿Cómo puedo comprobar si una aplicación se ejecuta en Android?
  • Android construir dibujo bug cashe
  • Problemas con zona horaria incorrecta en Android
  • Cómo cambiar el tamaño del título del texto en la barra de acción?
  • El clic no está funcionando en el Listtext de Listitem android
  • ¿Cómo desplazarse por la pantalla en la prueba de espresso android? Necesito validar el texto presente en la pantalla
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.