2016-05-18 16 views
0

私はzxing barcodefraglibv2を試しています。私はそれをモジュールとしてインポートし、失敗した後は新しいプロジェクトを開始し、提供されているサンプルアクティビティをまとめました。私は、サンプルの周りに構築されたものと同じ結果を得ることになった - アプリケーションが起動しますが、スキャンする準備ができたカメラ画面がなければ、黒い画面が表示されます。私のlogcatでは、私はこのエラーが発生します:通常のデータダンプと一緒に、カメラ:0に接続中にエラーが発生しました。誰かがそれを必要とするなら、私はダンプ全体を喜んで提供するでしょう。私はNexus 5とNexus 7でデバイスを実行しようとしました。これもパッケージに付属しているコードなので、何が起こっているのか分かりません。barcodefraglibv2がフラグメントを黒い画面として起動します

ありがとうございました。

MainActivity:

import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentTransaction; 
import android.support.v7.app.AppCompatActivity; 
import android.view.Window; 
import android.view.WindowManager; 
import android.widget.Toast; 

import com.abhi.barcode.frag.libv2.BarcodeFragment; 
import com.abhi.barcode.frag.libv2.IScanResultHandler; 
import com.abhi.barcode.frag.libv2.ScanResult; 

public class MainActivity extends AppCompatActivity implements IScanResultHandler { 
BarcodeFragment brf; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Window window = getWindow(); 
    window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
    setContentView(R.layout.activity_main); 
    FragmentTransaction trx = getSupportFragmentManager().beginTransaction(); 
    brf = new BarcodeFragment(); 
    trx.add(R.id.testFragmentHolder, brf, "HOLDER"); 
    trx.commit(); 
    //brf = (BarcodeFragment) getSupportFragmentManager().findFragmentById(R.id.barcodeFragment); 
    brf.setDecodeFor(MODE.ONE_D_MODE); 
    brf.setScanResultHandler(this); 
} 

@Override 
public void scanResult(ScanResult result) { 
    Toast.makeText(this, result.getRawResult().getText(), Toast.LENGTH_LONG).show(); 
    try{ 
     brf.restart(); 
    }catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
} 

XML:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:id="@+id/testFragmentHolder" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.valdes.fuckingbarcode.MainActivity" > 

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginBottom="198dp" 
    android:text="Scan" /> 

<fragment 
    android:id="@+id/barcodeFragment" 
    android:name="com.abhi.barcode.frag.libv2.BarcodeFragment" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/button1" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="24dp" /> 

</RelativeLayout> 

マニフェスト:

<manifest 
xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.valdes.barcode"> 


<uses-permission android:name="android.permission.CAMERA" /> 
<uses-permission android:name="android.permission.VIBRATE" /> 
<uses-permission android:name="android.permission.FLASHLIGHT" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

<!-- Don't require camera, as this requires a rear camera. This allows it to work on the Nexus 7 --> 
<uses-feature 
    android:name="android.hardware.camera" 
    android:required="false" /> 
<uses-feature 
    android:name="android.hardware.camera.front" 
    android:required="false" /> 
<!-- TODO replace above two with next line after Android 4.2 --> 
<!-- <uses-feature android:name="android.hardware.camera.any"/> --> 
<uses-feature 
    android:name="android.hardware.camera.autofocus" 
    android:required="false" /> 
<uses-feature 
    android:name="android.hardware.camera.flash" 
    android:required="false" /> 
<uses-feature android:name="android.hardware.screen.landscape" /> 
<uses-feature 
    android:name="android.hardware.wifi" 
    android:required="false" /> 

<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

答えて

0

はそれを考え出しました。 API 23は、実行時にアクセス許可を要求する必要があります。 2つの修正:

1)実行時に要求を許可します。いくつかの問題が残っていhttps://developer.android.com/training/permissions/requesting.html

2)は、API 22

でコンパイルしますが、それは、この特定の質問に対する修正です:あなたはこのここについて読むことができます。

関連する問題