2012-03-19 2 views
3

Я протестировал свое приложение на разных мобильных телефонах. Моя основная функция приложений - делать снимки и записывать видео через камеру телефона. Я не сталкивался с проблемой на большинстве мобильных телефонов, но я столкнулся с этой проблемой на Motorola DROID RAZR. Мое приложение отлично работает, когда я делаю снимок. Но я столкнулся с проблемой, когда записываю видео. Когда я записываю видео, я получаю пустой экран. На мобильном экране нет предварительного просмотра. Я не понимаю, почему это происходит, но на большинстве мобильных телефонов работает нормально. И фотосъемка отлично работает на этом телефоне (дроид-разр).Проблема с камерой Motorola DROID RAZR Когда я записываю видео

Motorola DROID RAZR конфигурации,

  1. Операционная система: Android v2.3.5.
  2. CAMERA: HD-камера, 8MP.
  3. ПРОЦЕССОР: TI OMAP4430

Вот мой код,

Camera camera = Camera.open(); 
Parameters params = camera.getParameters(); 
camera.setDisplayOrientation(90); 
camera.setParameters(params);    
camera.setDisplayOrientation(90); 

MediaRecorder recorder = new MediaRecorder(); 
recorder.setCamera(camera); 
recorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER); 
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); 
recorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH)); 
recorder.setVideoSize(640, 480); 
recorder.setMaxDuration(25000); 
recorder.setOrientationHint(90); 

Update:

Я испытал это приложение на Motorola Droid Razr эмулятор. Я получил следующее исключение:

MediaRecorder(430): prepare failed: -17 
System.err(430): java.io.IOException: prepare failed. 
System.err(430): at android.media.MediaRecorder._prepare(Native Method) 
System.err(430): at android.media.MediaRecorder.prepare(MediaRecorder.java:590) 

Но я не получил это исключение на другом эмуляторе. Как решить эту проблему?

+0

Вы пробовали этот ответ? http://stackoverflow.com/a/6135219/805031 это другое, но оно может решить вашу проблему. Вы используете класс 'Preview'? – TryTryAgain

ответ

3

Наконец-то я нашел решение. Ниже код хорошо работает на всех устройствах. ;)

 Holder holder = getHolder(); 
     holder.addCallback(this); 
     holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
     Camera camera = Camera.open(); 
     try { 
      camera.setPreviewDisplay(holder); 
      camera.startPreview(); 
     } catch (IOException e) { 
      Log.e(TAG, e.getMessage()); 
      e.printStackTrace(); 
     } 

     camera.unlock(); 
     MediaRecorder recorder = new MediaRecorder(); 
     recorder.setCamera(camera); 
     recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
     recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); 
     recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
     recorder.setVideoSize(640, 480); 
     recorder.setVideoFrameRate(20); 
     recorder.setVideoEncodingBitRate(3000000); 
     recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); 
     recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); 

     try { 

      String videopath = File.createTempFile("video", ".mp4") 
        .getAbsolutePath(); 

      recorder.setOutputFile(videopath); 

     } catch (IllegalStateException e) { 
      e.printStackTrace(); 
     } catch (IOException e) {   
      e.printStackTrace(); 
     } 

     recorder.setPreviewDisplay(holder.getSurface()); 
+0

Абсолютная спасательная жизнь ... Я боялся, что я буду лысым в 21 году, вытаскивая волосы ... Просто жаль, что я не знал, какая линия была конкретной, которая на самом деле зафиксировала его, но так счастлива, что – Guardanis

+0

@Cruceo , Добро пожаловать ... Спасибо ... :) – bharath

+1

@bharath: Не могли бы вы дать мне полный код? –

0

Оказывается, это устройство не поддерживает MediaRecorder.setOrientationHint(). Попробуйте прокомментировать эту строку. mMediaRecorder.setOrientationHint (90)

 Смежные вопросы

  • Нет связанных вопросов^_^