【问题标题】:Change screen orientation automatically while scanning (using ZXING library)扫描时自动更改屏幕方向(使用 ZXING 库)
【发布时间】:2018-07-12 13:45:28
【问题描述】:

我在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'

它确实会打开扫描仪和所有内容,但处于横向模式

为什么这不起作用?

【问题讨论】:

标签: android orientation zxing barcode-scanner


【解决方案1】:

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

<activity
       android:name="com.journeyapps.barcodescanner.CaptureActivity"
       android:screenOrientation="portrait"
       tools:replace="android:screenOrientation"
       android:stateNotNeeded="true"/>

【讨论】:

    【解决方案2】:

    除了这个答案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();
        }
    
    
    }
    

    【讨论】:

      【解决方案3】:

      您可以以编程方式设置方向(在您的活动中):

      ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE

      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
      

      ActivityInfo.SCREEN_ORIENTATION_PORTRAIT

      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多