Как интегрировать Zxing без установки приложения сканера штрих-кода?
Я добавил приложение Zying android в свое приложение в качестве библиотеки. Затем отредактировал Manifest.xml и попытался использовать интегратор Intent. Не повезло.
Загрузка приложения сканера абсолютно необоснованно.
Кстати:
Intent scanIntent = new Intent("com.google.zxing.client.android.SCAN");
scanIntent.setPackage("com.google.zxing.client.android");
11-11 15:15:27.793: WARN/System.err(15384): android.content.ActivityNotFoundException: No
Activity found to handle Intent { act=com.google.zxing.client.android.SCAN
cat=[android.intent.category.DEFAULT] pkg=com.google.zxing.client.android (has extras) }
Ответы
Ответ 1
+1 для вашего вопроса. Я пробовал это, но не повезло, тогда я добавил файлы кода в свое приложение. Если вы хотите, вы также можете это сделать. Здесь ia ссылка:
http://code.google.com/p/zxing/source/browse/trunk#trunk%2Fandroid
Если вы получите лучший способ, дайте мне знать.
Ответ 2
Вы пытаетесь получить доступ к сканеру ZXing двумя противоречивыми способами. Цель IntentIntegrator
, которую предоставляет ZXing, - сделать доступ к внешнему приложению сканера проще, построив Intent для вас со всеми соответствующими константами и флагами. Если вы не хотите устанавливать и запускать приложение внешнего сканера из Android Market на устройстве, IntentIntegrator
не для вас. Это также верно с Java-кодом, который вы опубликовали, поскольку это по существу тот же Intent, который интегратор создаст для запуска внешнего приложения.
Если вы интегрируете ZXing в свой проект в качестве библиотеки, то компоненты станут частью вашего приложения, и на них должны быть указаны как таковые. Например, необходимо добавить декларацию в AndroidManifest.xml, например:
<activity android:name="com.google.zxing.client.android.CaptureActivity"
android:screenOrientation="landscape"
android:configChanges="orientation|keyboardHidden"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:windowSoftInputMode="stateAlwaysHidden">
<intent-filter>
<action android:name="com.google.zxing.client.android.SCAN"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
Убедитесь, что вы использовали правильное имя для активности и действия, так как они должны ссылаться на библиотеку. Затем вы можете запустить Activity Scanner из своего Java-кода, используя следующее:
int REQUEST_SCAN; //Request code for Intent result
String packageString = "com.yourapplication.packagename";
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.setPackage(packageString);
//Add any optional extras to pass
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
//Launch
startActivityForResult(intent, REQUEST_SCAN);
Обратите внимание, что действие Intent соответствует объявлению в манифесте, но PACKAGE - это приложение, а не приложение Android Market ZXing.
НТН
Ответ 3
Вам нужно следовать шагу, указанному по ссылке
http://www.androidaz.com/development/zxing-qr-reader-direct-integration
вы можете загрузить core.jar из
http://repo1.maven.org/maven2/com/google/zxing/core/2.2/
Выше работает для меня, если вы получите ошибку, просто поместите ядро-2.2.jar в libs и очистите свой проект