私はあなたがparameters.getSupportedPreviewSizes()とparameters.getSupportedPictureSizes()を取得する必要があることを読んだので、私はこれをしました
Camera.Parameters pic = mCamera.getParameters();
List<Size> pic2 = pic.getSupportedPictureSizes();
Camera.Parameters p = mCamera.getParameters();
List<Size> previews = p.getSupportedPreviewSizes();
Size preview = getOptimalPreviewSize(previews, pic2.get(0).width,pic2.get(0).height);
これで最適なプレビューを取得します
private Size getOptimalPreviewSize(List<Size> sizes, int w, int h) {
final double ASPECT_TOLERANCE = 0.05;
double targetRatio = (double) w / h;
if (sizes == null) return null;
Size optimalSize = null;
double minDiff = Double.MAX_VALUE;
int targetHeight = h;
// Try to find an size match aspect ratio and size
for (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);
}
}
// Cannot find the one match the aspect ratio, ignore the requirement
if (optimalSize == null) {
minDiff = Double.MAX_VALUE;
for (Size size : sizes) {
if (Math.abs(size.height - targetHeight) < minDiff) {
optimalSize = size;
minDiff = Math.abs(size.height - targetHeight);
}
}
}
return optimalSize;
}
それから
mFrameLayout.getLayoutParams().height = preview.height;
mFrameLayout.getLayoutParams().width = preview.width;
mCamera.setParameters(parameters);
mCamera.setDisplayOrientation(90);
mFrameLayout.addView(mPreview);
Instagramに似たカスタムビューを備えたCameraIntentと同様のプレビューを取得したいと思っていましたが、これはプレビューとして平坦化された長方形を示しています。デフォルトのカメラのプレビューと画像サイズを取得してカスタムカメラに設定する方法はありますか?
何らかの理由で写真を撮ると、左右の保存された写真に、プレビューレイアウトに表示されるものよりも多くのコンテンツがあります。ズームされているように見えましたが、ズームがチェックされており、0になっています。修正方法のヒントこれ?
もう1つの質問ですが、デフォルトのカメラを開く代わりに、レイアウトでカメラインテントを使用できますか?