У меня все так же, как в этом примере в https://github.com/googlesamples/android-vision/tree/master/visionSamples/multi-tracker, кроме моей макете деятельности заключается в следующем:View не заполняет весь экран
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/topLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:keepScreenOn="true"
android:weightSum="100"
android:orientation="horizontal">
<be.citylife.communitypurchaseapp.view.camera.CameraSourcePreview
android:id="@+id/preview"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="60">
<be.citylife.communitypurchaseapp.view.camera.GraphicOverlay
android:id="@+id/overlay"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</be.citylife.communitypurchaseapp.view.camera.CameraSourcePreview>
<FrameLayout
android:id="@+id/sideContainer"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="40"/>
</LinearLayout>
Мой планшет в альбомной, и я хочу, чтобы cameraPreviewSource является всегда слева и заполняет весь экран по высоте, а затем сразу же у меня есть фрагмент, который заполняет остальные.
Этот макет работает, за исключением того, что мой предварительный источник не заполняет всю высоту. На нем есть черный баннер. Даже моя ширина на самом деле меньше, чем я хочу, чтобы вы можете увидеть это на скриншоте:
http://i61.tinypic.com/vctmw0.png
Я играл с CameraSourcePreview с шириной и высотой в функции OnLayout, но это не помогает. На предварительном просмотре я знаю, что он заполняет экран в нижней части экрана, но на планшете это не так.
Кто-нибудь знает, как это решить?
EDIT:
Я думаю, что это что-то делать с этим:
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
int width = 320;
int height = 240;
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;
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);
// If height is too tall using fit width, does fit height instead.
if (childHeight > layoutHeight) {
childHeight = layoutHeight;
childWidth = (int)(((float) layoutHeight/(float) height) * width);
}
for (int i = 0; i < getChildCount(); ++i) {
getChildAt(i).layout(0, 0, childWidth, childHeight);
}
try {
startIfReady();
} catch (IOException e) {
Log.e(TAG, "Could not start camera source.", e);
}
}
Это OnLayout метод от CameraSourcePreview.
У меня есть такая же проблема, часть изображения черная, когда камера включена. Вы нашли какое-либо решение для этого? – LucasJJ