2013-08-06 12 views
6

QRCode okumak için Zbar kullanıyorum. Etkinliğim için bu https://github.com/DushyanthMaguluru/ZBarScanner örneğini kullanıyorum. Soru, cameraLayout öğesinde cameraView'u nasıl gösterebilirim?Android için CameraView nasıl özelleştirilir ZBar QrCode Okuyucu

DÜZENLEME: mCamera = getCameraInstance();: Herşeyden

 
     @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

Ne kadar denedin mi:

@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); } 

Ayrıca emin belirledik yeterince prermissions yapmak? İçeride bir "SurfaceView" yerleştirebilirsiniz. Web'de "bazı" öğreticilerin olduğuna inanıyorum. – gunar

+0

@gunar - bana bir link verebilir misin – userAsk

+0

Bunu tekrar okuma, neden kamerayı kendiniz göstermelisiniz? Belirli bir zbar etkinliğini çağırmanız ve kamera izinleri vermeniz gerekiyor. Şunlar gibi: http://stackoverflow.com/questions/14494034/zbar-integration-into-android-app – gunar

cevap

4

İlk kamera erişimini elde etmek gibi geliyor bana satırını kaldırın. Bunu yapmak istemezsiniz, CameraPreview sizin için yapar.

Öğeler birbiri ardına yerleştirildikçe ve cameraPreview'ınızı en sonda bırakmak istediğinizde FrameLayout kullanmazdım. Yani bir numaralı telefondan LinearLayout'a sahip olmalısınız (Biliyorum, bu verimli değil, ama şimdilik bu iyi). Böyle bir şey (senin main.xml düzeni):

<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> 

Şimdi, zbar_layout_area yılında CameraPreview koymak gerekir. Bu nedenle, (kör kodlama) kodu değiştirmeyi deneyin:

<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

Hangi LayoutParams kullanmalıyım? 3 dersi denedim ama program durdu. – userAsk

+0

Hangi hata ayrıntılarını alıyorsunuz? LinearLayout.LayoutParams, görünümü LinearLayout'a ekliyorsanız yapılmalıdır. ZbarScannerActivity – gunar

+0

Maalesef, ZBar durdu? – userAsk