2013-08-06 6 views
6

私はQRコードを読むためにZbarを使用しています。私はこのアクティビティをこのhttps://github.com/DushyanthMaguluru/ZBarScannerの例として使用します。 私のFrameLayoutでcameraViewを表示するにはどうすればいいですか?アンドロイド用のCameraViewをカスタマイズする方法ZBar QrCodeリーダー

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

あなたはこれまでに何をしようとしたのですか?内部に 'SurfaceView'を置くことができます。私は、ウェブ上に「いくつかの」チュートリアルがあると信じています。 – gunar

+0

@gunar - あなたに私にリンクを教えてもらえますか? – userAsk

+0

これをもう一度読んで、なぜ自分でカメラを見せなければならないのですか?あなたはzbar固有の活動を呼び、カメラ権限を提供することになっています。何かのように:http://stackoverflow.com/questions/14494034/zbar-integration-into-android-app – gunar

答えて

4

まず、カメラへのアクセスを取得するために私には思えるの行を削除します。あなたはCameraPreviewがあなたのためにそれをするので、それをしたくありません。

私はFrameLayoutを使用しません。これは、アイテムが順番に入れられ、最後にcameraPreviewを入れたいからです。だから、別の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を配置する必要があります。このため、(ブラインドコーディング)にコードを変更しよう:

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

どのLayoutParamsを使用しますか?私は3つのクラスを試みましたが、プログラムが停止したのはいつものことです。 – userAsk

+0

どのようなエラーの詳細が表示されますか? LinearLayout.LayoutParamsは、ビューをLinearLayoutに追加する場合に行う必要があります。 ZbarScannerActivity – gunar

+0

生憎、zbarが停止しましたか? – userAsk

関連する問題