Google 提供了一个非常有用的视图来管理您的 CameraSource 以进行预览和检测。您不必担心管理纹理本身或确定视图中纹理/表面的布局。
它称为CameraSourcePreview,用于管理您的CameraSource 和SurfaceView 的操作。
您可以像布局中的任何其他视图一样使用CameraSourcePreview,例如在这个全屏LinearLayout:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/topLayout"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:keepScreenOn="true">
<com.google.android.gms.samples.vision.barcodereader.ui.camera.CameraSourcePreview
android:id="@+id/preview"
android:layout_width="match_parent"
android:layout_height="match_parent">
</com.google.android.gms.samples.vision.barcodereader.ui.camera.CameraSourcePreview>
</LinearLayout>
在您的活动中,您像平常一样设置BarcodeDetector 和CameraSource(可能在您的onCreate() 方法中)然后(可能是onResume() ) 开始您的CameraSourcePreview。它看起来像这样:
if (mCameraSource != null) {
try {
mPreview.start(mCameraSource, mGraphicOverlay);
} catch (IOException e) {
Log.e(TAG, "Unable to start camera source.", e);
mCameraSource.release();
mCameraSource = null;
}
}
实际上,您只需通过CameraSourcePreview 管理您的CameraSource,但它可以处理大量的布局/预览/等繁重工作。所以你不必。查看BarcodeCaptureActivity 以了解有关活动如何管理这些组件的更多信息。
查看android vision sample projects 中的barcode-reader 示例以获取完整的项目示例。
希望有帮助,干杯。