gpt4 book ai didi

android - 如何在 Zxing 扫描仪 View 中永久关闭闪光灯?

转载 作者:搜寻专家 更新时间:2023-11-01 08:28:03 26 4
gpt4 key购买 nike

我正在使用 ZxingScannerView 开发条形码扫描器。我需要在扫描时关闭闪光灯,但是 Camera 组件已被弃用,因此是否有其他替代方法可以实现此目的。特此附上我的代码请给我一些可能的答案以关闭 zxingscanner 中的闪光灯。提前致谢

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

最佳答案

抱歉回复晚了...也许它仍然会帮助某人。ZXingScannerView 本身有一组非常简单的设置/获取方法来打开/关闭相应的相机手电筒。您无需尝试使用(已弃用的)Camera 或 Camera2。

首先,要永久关闭 Flash,只需在分配 mScannerView 后添加以下行:

mScannerView.setFlash(false);

其次,要通过按钮打开/关闭闪光灯,只需在按钮的 onClick 方法中添加以下行:

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

就是这样 :) 它对我来说太棒了。

关于android - 如何在 Zxing 扫描仪 View 中永久关闭闪光灯?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42972849/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com