我已经MainActivity.kt
展示了满足不同需求的不同片段。在某个时候,我按下按钮“ X”以调用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'
它确实会打开扫描仪以及所有内容,但是处于横向模式。
为什么这不起作用?
答案 0 :(得分:3)
有一个执行此操作的捷径。只需将其添加到清单中即可:
<activity
android:name="com.journeyapps.barcodescanner.CaptureActivity"
android:screenOrientation="portrait"
tools:replace="android:screenOrientation"
android:stateNotNeeded="true"/>
答案 1 :(得分:0)
除了此答案https://stackoverflow.com/a/35465968/7666442
我找到了一种在设备方向更改时自动更改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();
}
}
答案 2 :(得分:0)
您可以通过编程(在活动中)设置方向:
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);