0

QRコードをスキャンするためにサードパーティのスキャナーアプリをインストールする必要があるAndroidアプリケーションにZXingを統合する方法を人々が尋ねた多くのトピックをすでに読みました。

それはまさに私もやりたいことです。これは私がこれまでに行ったことです:

ZXing プロジェクトをダウンロードしました。関連するすべてのソース コードを Android アプリケーションにコピーしました。これまでのところ、すべて正常にコンパイルされています。アプリのボタンを押すと、使用するバーコード スキャナーを尋ねる小さなダイアログが開きます。次のオプションがあります。

  1. QR-Droid (サードパーティ製アプリ)
  2. 自分のアプリ

最初のオプションを使用すると、カメラがアクティブになり、QR コードをスキャンできます。しかし、2番目のオプション(自分のアプリ)を使用すると、何も起こりません。ZXingにはスキャナーも付属していると思っていたので、サードパーティのQRスキャナーは必要ありません??

しかし、おそらく私が取らなければならない他のステップがありますか?これは私のマニフェストがどのように見えるかです:

これを追加しました:

<intent-filter>
    <action android:name="com.google.zxing.client.android.SCAN"/>
    <category android:name="android.intent.category.DEFAULT"/>
</intent-filter>

そして、ボタンアクションで私は持っています:

Intent intent = new Intent("com.google.zxing.client.android.SCAN");         
intent.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE", "QR_CODE_MODE");  
startActivityForResult(intent, 0);

サードパーティのスキャナーを必要とせずに QR スキャナーを起動する方法はありますか?? プロジェクトにすべてのソースをインポートしました。

4

2 に答える 2

3

これは混乱しており、あなたが受け入れたアプローチは有害です。

まず、ここで繰り返し強調してきたように、アプリを大量にコピーしないでください。UI を複製すると、推奨されないだけでなく、商標に違反します。やらないでください。

次に、コードをコピーしていますが、Intent によってスキャナーを使用しようとしています。なんで?Intents を使用する場合は、コードを使用する必要はありません。

3 番目に、アプリのインテントに応答するようにアプリを宣言しています。バーコード スキャナーを対象とした通話を傍受しています。まったく同じように返信できればOKですが、これを保証するものではないと思います。そうすることで、利益を得ているオープン ソース プロジェクトであるバーコード スキャナーのユーザーに損害を与えることになります。

于 2012-07-18T09:17:13.790 に答える
2

マニフェストを変更してこれを追加します

 <activity
            android:configChanges="orientation|keyboardHidden"
            android:name="com.google.zxing.client.android.CaptureActivity"
            android:screenOrientation="landscape"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
            android:windowSoftInputMode="stateAlwaysHidden" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <intent-filter >
                <action android:name="com.google.zxing.client.android.SCAN" />

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

カメラの許可も追加します

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

アクティビティに onActivityResult メソッドを実装します

 public void onActivityResult(int requestCode, int resultCode, Intent intent) 
    {
        if (requestCode == 0) 
        {
            if (resultCode == RESULT_OK)
            {
                String contents = intent.getStringExtra("SCAN_RESULT");
                String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
                Log.i("xZing", "contents: "+contents+" format: "+format);
                // Handle successful scan
            } 
            else if (resultCode == RESULT_CANCELED)
            {
                // Handle cancel
            }
        }
    }

詳細または問題については、このリンクを参照してください

于 2012-07-18T07:06:46.893 に答える