2012-03-19 94 views
3

我已經測試了我的應用程序在各種手機上。我的應用程序主要功能是通過手機攝像頭拍攝照片和錄製視頻。我在大多數手機上都沒有遇到問題,但我確實在Motorola DROID RAZR上遇到過這個問題。當我拍照時,我的應用程序工作正常。但是當我錄製視頻時,我遇到了一個問題。當我錄製視頻時,我收到了一個空白屏幕。手機屏幕上沒有預覽顯示。我不明白爲什麼它會發生,但在大多數手機上工作正常。並拍照工作正常在這個手機(機器人剃鬚刀)。摩托羅拉DROID RAZR相機問題當我錄製視頻

摩托羅拉DROID RAZR配置,

  1. 操作系統:Android V2.3.5。
  2. CAMERA:高清攝像頭,800萬像素。
  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); 

更新:

我已經測試了摩托羅拉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 2012-03-27 00:02:18

回答

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 2012-06-27 00:01:56

+0

@Cruceo ,歡迎...謝謝... :) – bharath 2012-06-27 06:39:11

+1

@bharath:你能給我完整的代碼嗎? – 2012-10-11 06:53:48

0

看起來這個設備不支持MediaRecorder.setOrientationHint()。嘗試評論該行。 mMediaRecorder.setOrientationHint(90)

相關問題