2017-03-23 21 views
1

私はZxingScannerViewを使用してバーコードスキャナに取り組んでいます。スキャン中にフラッシュをオフにする必要がありますが、カメラコンポーネントは廃止されていますので、これを習得するための他の代替手段があります。事前Zxingスキャナービューでフラッシュを恒久的にオフにする方法は?

import android.Manifest; 
    import android.app.Activity; 
    import android.content.Context; 
    import android.content.Intent; 
    import android.content.pm.PackageManager; 
    import android.hardware.Camera; 
    import android.os.Bundle; 
    import android.support.v4.app.ActivityCompat; 
    import android.support.v4.content.ContextCompat; 
    import android.support.v7.app.AppCompatActivity; 
    import android.util.Log; 
    import android.view.Gravity; 
    import android.view.View; 
    import android.view.ViewGroup.LayoutParams; 
    import android.widget.FrameLayout; 
    import android.widget.ImageView; 
    import android.widget.Toast; 

    import com.google.zxing.Result; 

import me.dm7.barcodescanner.zxing.ZXingScannerView; 

public class WorkOut extends AppCompatActivity implements ZXingScannerView.ResultHandler { 

    Integer response = 0; 
    int currentIndex = 0; 

    private ZXingScannerView mScannerView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     mScannerView = new ZXingScannerView(this); 
     Camera camera =Camera.open(); 

     Camera.Parameters p; 
     p = camera.getParameters(); 
     p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); 
     camera.setParameters(p); 

     CameraConfigurationUtils.setTorch(p,false); 

     FrameLayout frameLayout = new FrameLayout(this); 

     FrameLayout.LayoutParams mainParam = new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 
     frameLayout.setLayoutParams(mainParam); 





     //end 3 
     scanButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent refresh = new Intent(WorkOut.this, MposHomeScreen.class); 
       startActivity(refresh); 
      } 
     }); 

     frameLayout.addView(mScannerView); 
     frameLayout.addView(scanButton); 

     setContentView(frameLayout); 



    } 

    private void checkPermissions() { 
     try { 
      for (int i = currentIndex; i < permissions.length; i++) { 
       currentIndex = currentIndex + 1; 
       int result = ContextCompat.checkSelfPermission(this, permissions[i]); 
       if (result == PackageManager.PERMISSION_GRANTED) { 
       } else { 
        requestPermission(permissions[i]); 
        return; 
       } 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    Activity activity = this; 
    Context context = this; 

    String[] permissions = new String[]{Manifest.permission.CAMERA}; 


    private void requestPermission(String permission) { 


     ActivityCompat.requestPermissions(activity, new String[]{permission}, 
      101); 

    } 

    @Override 
    public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { 
     switch (requestCode) { 
      case 101: 
       if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

        checkPermissions(); 
       } else { 
        try { 

        } catch (Exception e) { 
         e.printStackTrace(); 
        } 

       } 
       break; 
     } 
    } 


    @Override 
    public void onResume() { 
     super.onResume(); 

     if (response == 1) { 
      mScannerView = null; 
      mScannerView = new ZXingScannerView(this); 
      setContentView(mScannerView); 
      response = 0; 

     } 

     mScannerView.setResultHandler(this); 
     mScannerView.startCamera(); 

    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 


     mScannerView.stopCamera(); 

    } 

    @Override 
    protected void onRestart() { 
     super.onRestart(); 
     Log.d("ani", "onrestart"); 
    } 

    @Override 
    public void handleResult(Result rawResult) { 
     Toast.makeText(getApplicationContext(), "Scanned", Toast.LENGTH_SHORT).show(); 
     mScannerView.resumeCameraPreview(this); 
    } 
} 

答えて

1

返事が遅れて申し訳ありませんでzxingscanner.Thanksでフラッシュをオフにするには...多分まだその誰かを助けに行きます。 ZXingScannerViewには、対応するカメラの懐中電灯をオン/オフするための非常に簡単なセット/取得方法のセットがあります。 CameraまたはCamera2を使用することはお勧めできません。

まず、はちょうどmScannerViewを割り当てた後、次の行を追加し、永続的にオフフラッシュをオンにする:第二

mScannerView.setFlash(false); 

をオン/オフボタン経由でフラッシュを切り替えるために、単純に以下を追加します。ボタンのonClickメソッドの行:

mScannerView.setFlash(!mScannerView.getFlash()); 

それは私にとって素晴らしいことでした。

+0

スキャナがピントが合うたびに、ピントを合わせ直すと、フラッシュがオフ/オンします。なぜこうなった? – UrielUVD

+0

「スキャナに焦点が合わせられる」?はっきりしない...あなたはどのようにスキャナに焦点を当てるのですか? –

+0

フォーカスを取得したとき...フォーカスを取得したとき...画像がもはやぼやけていないとき。その後、スキャナは1秒間停止し、懐中電灯を消し、焦点を失い、灯をもう一度オンにします。なぜこうなった? – UrielUVD

関連する問題