Прежде всего удалить строку, которая кажется мне получить доступ к камере: mCamera = getCameraInstance();
. Вы не хотите этого делать, поскольку CameraPreview
сделает это за вас.
Я бы не использовал FrameLayout, поскольку предметы ставятся один за другим, и вы хотите, наконец, поставить свою камеру. Таким образом, вы должны иметь LinearLayout
в другом RelativeLayout
(я знаю, это не эффективно, но на данный момент все в порядке). Нечто подобное (макет main.xml):
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:id="@+id/zbar_layout_area"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
</LinearLayout>
<ImageView
android:id="@+id/my_own_image_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" />
<TextView
android:id="@+id/my_own_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true" />
</RelativeLayout>
Теперь вам нужно будет поставить CameraPreview в zbar_layout_area
. По этой причине, попытайтесь изменить код (слепое кодирование):
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (!isCameraAvailable()) {
// Cancel request if there is no rear-facing camera.
cancelRequest();
return;
}
// Hide the window title.
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
mAutoFocusHandler = new Handler();
// Create and configure the ImageScanner;
setupScanner();
// Create a RelativeLayout container that will hold a SurfaceView,
// and set it as the content of our activity.
mPreview = new CameraPreview(this, this, autoFocusCB);
LinearLayout zbarLayout = (LinearLayout) findViewById(R.id.zbar_layout_area);
mPreview.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
zbarLayout.addView(mPreview);
}
Также убедитесь, что вы установили достаточно prermissions:
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<uses-feature
android:name="android.hardware.camera.autofocus"
android:required="false" />
Что вы пытаетесь до сих пор? Вы можете помещать 'SurfaceView' внутрь. Я считаю, что в Интернете есть «некоторые» учебники. – gunar
@gunar - можете ли вы дать мне ссылку – userAsk
Снова прочитав это, зачем вам самому показывать камеру? Предполагается, что вы вызываете специфическую активность zbar и предоставляете разрешения камеры. Что-то вроде: http://stackoverflow.com/questions/14494034/zbar-integration-into-android-app – gunar