GoogleのAndroid Vision APIのバーコードリーダーの例を使用しています。プレビューサイズが利用可能なスペース全体を埋めていないようです(Nexus 4を使用していて、プレビューの右側にある白い未使用スペース、幅の約1/3)。
この例をさまざまなデバイスで実行し、常に使用可能なスペース全体を埋めるようにしたいと思います。
だから私が遊んでいるビットは:
CameraSource.Builder builder = new CameraSource.Builder(getApplicationContext(), barcodeDetector).setFacing(CameraSource.CAMERA_FACING_BACK).setRequestedPreviewSize(?, ?).setRequestedFps(15.0f);
何か案は?
ありがとう!
このスレッドをご覧ください: https://github.com/googlesamples/Android-vision/issues/2
cameraSourcePreviewクラスから以下のコードを削除またはコメントするだけです
if (childHeight > layoutHeight) {
childHeight = layoutHeight;
childWidth = (int)(((float) layoutHeight / (float) height) * width);
}
このループでは、「CameraSourcePreview」クラスのchildHeightの代わりにlayoutHeightを使用します-for(int i = 0; i <getChildCount(); ++ i){...}
if (mCameraSource != null)
{
Size size = mCameraSource.getPreviewSize();
if (size != null)
{
width = size.getWidth();
height = size.getHeight();
}
}
// Swap width and height sizes when in portrait, since it will be rotated 90 degrees
if (isPortraitMode())
{
int tmp = width;
//noinspection SuspiciousNameCombination
width = height;
height = tmp;
}
final int layoutWidth = right - left;
final int layoutHeight = bottom - top;
// Computes height and width for potentially doing fit width.
int childWidth = layoutWidth;
int childHeight = (int) (((float) layoutWidth / (float) width) * height);
for (int i = 0; i < getChildCount(); ++i)
{
getChildAt(i).layout(0, 0, childWidth, layoutHeight);
}
try
{
startIfReady();
}
catch (SecurityException se)
{
Log.e(TAG, "Do not have permission to start the camera", se);
}
catch (IOException e)
{
Log.e(TAG, "Could not start camera source.", e);
}
}
カメラの画像を画面全体に表示するには、2つの方法があります。
画像をトリミングするには、1つ変更するだけです>
に <
。以下のifステートメントを見つけて、次のように条件を変更します。
if (childHeight < layoutHeight) {
childHeight = layoutHeight;
childWidth = (int)(((float) layoutHeight / (float) height) * width);
}