2016-08-22 5 views
0

私はこの本の中の「プロAndroid Media スマートフォンとタブレット用のグラフィック、音楽、ビデオ、リッチメディアアプリを開発しています」というカメラのプレビューに問題がありますカスタムカメラでプレビューを伸ばす

と、私はいくつかの問題に直面私のアプリで

をカメラのAPIを使用:

1)ディスプレイは、最低のリンクの場合には、延伸の場合に表示されるカメラオリジナルの携帯電話との違いを示しており、カスタムカメラ

here video for my problem i face

OR here video for my problem i face

答えて

0

私はどこかで私を助けた次のコード。あなたは、本質的に、あなたの画面サイズとし、この方法で十分べきであることのために合わせて

private Camera.Size getOptimalPreviewSize(List<Camera.Size> sizes, int w, int h) { 
    final double ASPECT_TOLERANCE = 0.1; 
    double targetRatio=(double)h/w; 

    if (sizes == null) return null; 

    Camera.Size optimalSize = null; 
    double minDiff = Double.MAX_VALUE; 

    int targetHeight = h; 

    for (Camera.Size size : sizes) { 
     double ratio = (double) size.width/size.height; 
     if (Math.abs(ratio - targetRatio) > ASPECT_TOLERANCE) continue; 
     if (Math.abs(size.height - targetHeight) < minDiff) { 
      optimalSize = size; 
      minDiff = Math.abs(size.height - targetHeight); 
     } 
    } 

    if (optimalSize == null) { 
     minDiff = Double.MAX_VALUE; 
     for (Camera.Size size : sizes) { 
      if (Math.abs(size.height - targetHeight) < minDiff) { 
       optimalSize = size; 
       minDiff = Math.abs(size.height - targetHeight); 
      } 
     } 
    } 
    return optimalSize; 
} 

をプレビューを拡張する必要があり

は今、あなたは私が推測あなたのプレビュー活動中onMeasureはSurfaceViewを拡張してオーバーライドしますこのように、

@Override 
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
    final int width = resolveSize(getSuggestedMinimumWidth(), widthMeasureSpec); 
    final int height = resolveSize(getSuggestedMinimumHeight(), heightMeasureSpec); 
    setMeasuredDimension(width, height); 

    if(mCamera != null) { 
     List<Camera.Size> mSupportedPreviewSizes = mCamera.getParameters().getSupportedPreviewSizes(); 

     if (mSupportedPreviewSizes != null) { 
      mPreviewSize = getOptimalPreviewSize(mSupportedPreviewSizes, width, height); 
     } 
    } 
} 

、最終的にはこのようなonMeasureで計算チューニングPreviewSizeとプレビューを開始

// start preview with new settings 
    try { 
     Camera.Parameters parameters = mCamera.getParameters(); 
     parameters.setPreviewSize(mPreviewSize.width, mPreviewSize.height); 

     mCamera.setParameters(parameters); 
     mCamera.setPreviewDisplay(mHolder); 
     mCamera.startPreview(); 
     isSafeToTakePicture = true; 

    } catch (Exception e){ 
     Log.d(TAG, "Error starting camera preview: " + e.getMessage()); 
    } 
+0

このコードでは全画面プレビューが表示されませんでした – FatiShubbar

関連する問題