Изменить ориентацию QR-сканера с помощью ZXING в Android Studio
Я надеюсь, что вы можете помочь мне с этим. Я использую встроенную библиотеку Zxing, чтобы использовать QR-сканер, проблема в том, что он находится в альбомном режиме, и я хотел бы изменить его на книжный.
У меня есть это на зависимости моего Graddle
compile 'com.journeyapps:zxing-android-embedded:2.0.1@aar'
compile 'com.journeyapps:zxing-android-integration:2.0.1@aar'
compile 'com.google.zxing:core:3.0.1'
и у меня есть это в моем классе Java, чтобы активировать сканер с помощью кнопки...
public void scanQR(View view){
IntentIntegrator integrator = new IntentIntegrator(this);
integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES);
integrator.setResultDisplayDuration(0);//Text..
integrator.setPrompt(" Scan a QR Code");
integrator.setScanningRectangle(450, 450);//size
integrator.setCameraId(0); // Use a specific camera of the device
integrator.initiateScan();
}
Спасибо за помощь!
4 ответа
Я использую
скомпилируйте 'com.journeyapps:zxing-android-embedded:3.1.0@aar'
Это другая версия, поэтому я не знаю, будет ли это работать для вас, но это работает для меня.
Больше о моей настройке, я только компилирую
'Com.journeyapps: ZXing-андроида встраиваемый: 3.1.0@aar'
'Com.google.zxing: ядро:3.0.1'
а я не скомпилировал
'Com.journeyapps: ZXing-андроид-интеграция:2.0.1@aar'
Сначала я создал расширение активности из CaptureActivity.
или щелкните эту ссылку, чтобы просмотреть класс https://gist.github.com/TheGratefulDev/21a557c9a96333ec037c
public class CaptureActivityPortrait extends CaptureActivity {
//Nothing in side.
}
Во-вторых, добавьте это
integrator.setCaptureActivity(CaptureActivityPortait.class);
в код вашего интегратора.
Вот так выглядит моя:
CustomIntegrator integrator = new CustomIntegrator(activity);
integrator.setDesiredBarcodeFormats(CustomIntegrator.PDF_417);
integrator.setPrompt("Scan a barcode");
integrator.setCameraId(0); // Use a specific camera of the device
integrator.setOrientationLocked(true);
integrator.setBeepEnabled(true);
integrator.setCaptureActivity(CaptureActivityPortrait.class);
integrator.initiateScan();
Наконец, на AndroidMaifest добавить
<activity android:name=".custom.CaptureActivityPortrait" android:screenOrientation="portrait" <---this is the most important line android:stateNotNeeded="true" android:theme="@style/zxing_CaptureTheme" android:windowSoftInputMode="stateAlwaysHidden"> </activity>
Вместо расширения класса просто добавьте это в манифест:
<activity
android:name="com.journeyapps.barcodescanner.CaptureActivity"
android:screenOrientation="portrait"
tools:replace="android:screenOrientation"
android:stateNotNeeded="true"/>
Работает как шарм
Я просто нашел самый простой способ. Мы должны создать еще один класс CaptureActivity.java и написать этот код внутри onclick
слушатель:
IntentIntegrator integrator = new IntentIntegrator(activity);
integrator.setPrompt("Scan a barcode");
integrator.setDesiredBarcodeFormats(integrator.ALL_CODE_TYPES);
integrator.setCameraId(0);
integrator.setOrientationLocked(false);
integrator.setCaptureActivity(com.share.ants.hotelmenu.CaptureActivity.class); <--replace with your own java class location here
integrator.setBeepEnabled(true);
Меня устраивает:
IntentIntegrator integrator = new IntentIntegrator(YourActivity.this);
integrator.setDesiredBarcodeFormats(IntentIntegrator.ALL_CODE_TYPES);
integrator.setPrompt(getResources().getString(R.string.scan_a_barcode));
integrator.setCameraId(0);
// Use a specific camera of the device
integrator.setBeepEnabled(true);
integrator.setBarcodeImageEnabled(false);
integrator.initiateScan();