扫描时自动更改屏幕方向(使用ZXING库)

Pet*_*der 8 android orientation barcode-scanner zxing

我在MainActivity.kt那里展示了不同需求的不同片段.在某些时候,我按下调用startScanner()功能的按钮'X' :

private fun startScanner() {
    IntentIntegrator(this)
            .setOrientationLocked(false)
            .setPrompt("SCANNING?")
            .initiateScan()
}
Run Code Online (Sandbox Code Playgroud)

Manifest.xml:

<activity
    android:name=".MainActiity"
    android:theme="@style/AppTheme"
    tools:replace="android:screenOrientation"
    android:stateNotNeeded="true"
    android:screenOrientation="fullSensor"
    android:windowSoftInputMode="stateHidden" />
Run Code Online (Sandbox Code Playgroud)

Gradle.file:

compile 'com.journeyapps:zxing-android-embedded:3.6.0'
Run Code Online (Sandbox Code Playgroud)

它确实打开扫描仪和一切,但在横向模式.

为什么这不起作用?

Ani*_*bla 6

有一个捷径可以做到这一点。只需将其添加到清单中:

<activity
       android:name="com.journeyapps.barcodescanner.CaptureActivity"
       android:screenOrientation="portrait"
       tools:replace="android:screenOrientation"
       android:stateNotNeeded="true"/>
Run Code Online (Sandbox Code Playgroud)


Nil*_*hod 1

除了这个答案/sf/answers/2482617791/

我找到了改变方向的方法zxing我找到了当设备方向改变时自动

试试这个方法

捕捉活动肖像

public class CaptureActivityPortrait extends CaptureActivity {
//Nothing in side.
}
Run Code Online (Sandbox Code Playgroud)

CaptureActivityPortrait在清单文件中

    <activity
        android:name=".CaptureActivityPortrait"
        android:stateNotNeeded="false"
        android:theme="@style/zxing_CaptureTheme"
        android:windowSoftInputMode="stateAlwaysHidden"/>
Run Code Online (Sandbox Code Playgroud)

在您的活动中使用这种方式

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();
    }


}
Run Code Online (Sandbox Code Playgroud)