Browse Source

设置反转屏幕

liuyuqi-dellpc 4 years ago
parent
commit
29b7a3fdae

+ 1 - 0
app/src/main/AndroidManifest.xml

@@ -10,6 +10,7 @@
         android:theme="@style/Theme.Barcode">
         android:theme="@style/Theme.Barcode">
         <activity
         <activity
             android:name=".MainActivity"
             android:name=".MainActivity"
+            android:configChanges="orientation|keyboardHidden"
             android:theme="@style/Theme.Barcode.FullScreen">
             android:theme="@style/Theme.Barcode.FullScreen">
             <intent-filter>
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.intent.action.MAIN" />

+ 3 - 1
app/src/main/java/me/yoqi/android/barcode/MainActivity.java

@@ -6,6 +6,7 @@ import android.content.Context;
 import android.content.Intent;
 import android.content.Intent;
 import android.content.pm.ActivityInfo;
 import android.content.pm.ActivityInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManager;
+import android.content.res.Configuration;
 import android.graphics.Bitmap;
 import android.graphics.Bitmap;
 import android.graphics.Point;
 import android.graphics.Point;
 import android.os.Bundle;
 import android.os.Bundle;
@@ -53,6 +54,7 @@ public class MainActivity extends AppCompatActivity implements ZxingScanView.OnS
     protected void onCreate(@Nullable Bundle savedInstanceState) {
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         super.onCreate(savedInstanceState);
         //判断屏幕方向
         //判断屏幕方向
+        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR);
         if (screenOrient(this) == 0) {
         if (screenOrient(this) == 0) {
             setContentView(R.layout.activity_main__landscape);
             setContentView(R.layout.activity_main__landscape);
         } else {
         } else {
@@ -145,7 +147,7 @@ public class MainActivity extends AppCompatActivity implements ZxingScanView.OnS
         //获取屏幕方向,但是如果关闭反转屏幕,则不会反转。但是手机确实翻转了,所以需要手动根据屏幕长宽比判断
         //获取屏幕方向,但是如果关闭反转屏幕,则不会反转。但是手机确实翻转了,所以需要手动根据屏幕长宽比判断
         if (orient != ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE && orient != ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {
         if (orient != ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE && orient != ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {
             Display display = activity.getWindowManager().getDefaultDisplay();
             Display display = activity.getWindowManager().getDefaultDisplay();
-            Point outSize = null;
+            Point outSize = new Point();
             display.getSize(outSize);
             display.getSize(outSize);
             int screenWidth = outSize.x; //宽
             int screenWidth = outSize.x; //宽
             int screenHeight = outSize.y; //高
             int screenHeight = outSize.y; //高

+ 10 - 4
zxingscanview/src/main/java/me/yoqi/android/zxingscanview/widget/ZxingScanView.java

@@ -33,7 +33,7 @@ import java.util.Map;
 import me.yoqi.android.zxingscanview.R;
 import me.yoqi.android.zxingscanview.R;
 
 
 
 
-/**
+/**扫码框
  * @author liuyuqi.gov@msn.cn
  * @author liuyuqi.gov@msn.cn
  * @date 11/15/2020
  * @date 11/15/2020
  */
  */
@@ -217,7 +217,7 @@ public class ZxingScanView extends SurfaceView {
                 (mScanHeight > getHeight() ? getHeight() : mScanHeight);
                 (mScanHeight > getHeight() ? getHeight() : mScanHeight);
         mCameraManager.setManualFramingRect(width, height);
         mCameraManager.setManualFramingRect(width, height);
         try {
         try {
-            mCameraManager.openDriver(surfaceHolder);
+            mCameraManager.openDriver(surfaceHolder); //打开摄像头
             mCameraManager.startPreview();
             mCameraManager.startPreview();
             mScanHandler = new ScanHandler(resultListener, mBarcodeType, mBaseHints,
             mScanHandler = new ScanHandler(resultListener, mBarcodeType, mBaseHints,
                     mCharacterSet, mCameraManager,
                     mCharacterSet, mCameraManager,
@@ -277,6 +277,12 @@ public class ZxingScanView extends SurfaceView {
         }
         }
     }
     }
 
 
+    /**
+     * 扫描结果通知Activity
+     * @param result
+     * @param barcode
+     * @param scaleFactor
+     */
     private void notifyListenerResult(Result result, Bitmap barcode, float scaleFactor) {
     private void notifyListenerResult(Result result, Bitmap barcode, float scaleFactor) {
         for (OnScanListener listener : mListeners) {
         for (OnScanListener listener : mListeners) {
             listener.onResult(this, result, barcode, scaleFactor);
             listener.onResult(this, result, barcode, scaleFactor);
@@ -535,9 +541,9 @@ public class ZxingScanView extends SurfaceView {
         public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
         public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
             if (mCameraManager != null) {
             if (mCameraManager != null) {
                 final int scanWidth = mScanWidth == ViewGroup.LayoutParams.MATCH_PARENT ? width :
                 final int scanWidth = mScanWidth == ViewGroup.LayoutParams.MATCH_PARENT ? width :
-                        (mScanWidth > width ? width : mScanWidth);
+                        (Math.min(mScanWidth, width));
                 final int scanHeight = mScanHeight == ViewGroup.LayoutParams.MATCH_PARENT ? height :
                 final int scanHeight = mScanHeight == ViewGroup.LayoutParams.MATCH_PARENT ? height :
-                        (mScanHeight > height ? height : mScanHeight);
+                        (Math.min(mScanHeight, height));
                 mCameraManager.setManualFramingRect(scanWidth, scanHeight);
                 mCameraManager.setManualFramingRect(scanWidth, scanHeight);
             }
             }
         }
         }