Изменение ориентации экрана автоматически во время сканирования (с использованием библиотеки ZXING)
Я MainActivity.kt
где я показываю разные фрагменты для разных нужд. В какой-то момент я нажимаю кнопку "Х", которая вызывает startScanner()
функция:
private fun startScanner() {
IntentIntegrator(this)
.setOrientationLocked(false)
.setPrompt("SCANNING?")
.initiateScan()
}
Manifest.xml:
<activity
android:name=".MainActiity"
android:theme="@style/AppTheme"
tools:replace="android:screenOrientation"
android:stateNotNeeded="true"
android:screenOrientation="fullSensor"
android:windowSoftInputMode="stateHidden" />
Gradle.file:
compile 'com.journeyapps:zxing-android-embedded:3.6.0'
Это делает сканер открытым и все, но в ландшафтном режиме.
Почему это не работает?
3 ответа
Для этого есть ярлык. Просто добавьте это в манифест:
<activity
android:name="com.journeyapps.barcodescanner.CaptureActivity"
android:screenOrientation="portrait"
tools:replace="android:screenOrientation"
android:stateNotNeeded="true"/>
В дополнение к этому ответу /questions/26589913/izmenit-orientatsiyu-qr-skanera-s-pomoschyu-zxing-v-android-studio/26589948#26589948
Я нашел способ изменить ориентацию zxing
активность сканера автоматически при изменении ориентации устройства
Попробуй так
CaptureActivityPortrait
public class CaptureActivityPortrait extends CaptureActivity {
//Nothing in side.
}
CaptureActivityPortrait
в файле манифеста
<activity
android:name=".CaptureActivityPortrait"
android:stateNotNeeded="false"
android:theme="@style/zxing_CaptureTheme"
android:windowSoftInputMode="stateAlwaysHidden"/>
используйте этот способ в своей деятельности
public class MyActivity extends AppCompatActivity {
IntentIntegrator qrScan;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
qrScan = new IntentIntegrator(this).setCaptureActivity(CaptureActivityPortrait.class);
qrScan.setOrientationLocked(false);
qrScan.initiateScan();
}
}
Вы можете установить ориентацию программно (в своей деятельности):
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);