2013-08-06 6 views
6

QRcode를 읽기 위해 Zbar를 사용하고 있습니다. 내 활동에 대해이 https://github.com/DushyanthMaguluru/ZBarScanner 예제를 사용합니다. Question은 내 FrameLayout에 cameraView를 표시하려면 어떻게해야합니까?안드로이드 용 CameraView를 사용자 정의하는 방법 ZBar QrCode Reader

편집 : mCamera = getCameraInstance(); : 모든

 
     @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState);

setContentView(R.layout.main); 
    //setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
    mCamera = getCameraInstance(); 

    if(!isCameraAvailable()) 
    { 
     cancelRequest(); 
     return; 
    } 

    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 

    mAutoFocusHandler = new Handler(); 

    setupScanner(); 

    mPreview = new CameraPreview(this, this, autoFocusCB); 
    //setContentView(mPreview); 
    FrameLayout preview = (FrameLayout)findViewById(R.id.cameraPreview); 
    preview.addView(mPreview); 
} 

+0

은 당신이 지금까지 시도 않았다

@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을? 내부에'SurfaceView'를 배치 할 수 있습니다. 웹에 '튜토리얼'이 있다고 생각합니다. – gunar

+0

@gunar - 너에게 나에게 링크를 줄 수 있니? – userAsk

+0

이걸 다시 읽고 왜 카메라를 직접 보여줘야하니? zbar 특정 활동을 호출하고 카메라 권한을 제공해야합니다. 뭔가가 좋아요 : http://stackoverflow.com/questions/14494034/zbar-integration-into-android-app – gunar

답변

4

먼저 카메라 액세스 권한을 획득하는 날 것으로 보인다 라인을 제거합니다. 너는 CameraPreview이 너를 대신해서 그 일을하기를 원하지 않는다.

FrameLayout을 사용하지 않는 이유는 항목을 하나씩 차례대로 넣고 카메라 미리보기를 넣기를 원하기 때문입니다. 따라서 다른 RelativeLayoutLinearLayout을 가져야합니다 (효율적이지는 않지만 지금은 괜찮습니다). 같은 뭔가 (당신의 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> 

지금, 당신은 zbar_layout_area에 CameraPreview을 넣어해야합니다. 이러한 이유로, (맹인 코딩)에 코드를 변경하려고 :

이 가 가
<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" /> 
+0

어떤 LayoutParams를 사용해야합니까? 나는 3 개의 클래스를 시험해 보았다. 그러나 프로그램이 멈췄다. – userAsk

+0

어떤 오류 정보가 있습니까? LinearLayout.LayoutParams는 뷰를 LinearLayout에 추가하는 경우 수행해야합니다. ZbarScannerActivity – gunar

+0

Unfortunatelly, zbar가 중지되었습니다? – userAsk