我正在构建一个使用 ZXing 库扫描条形码的项目。目前,我的代码适用于 iOS 设备,打开后置摄像头,但在使用 Android 设备进行测试时,它会打开前置摄像头。有没有办法让我始终强制在任何设备上使用后置摄像头?请参阅下面的工作代码:
<script type="text/javascript">
window.addEventListener('load', function () {
let selectedDeviceId;
const codeReader = new ZXing.BrowserMultiFormatReader();
console.log('ZXing code reader initialized');
codeReader.getVideoInputDevices()
.then((videoInputDevices) => {
if (videoInputDevices.length < 1) {
console.log('No video devices found');
return;
}
selectedDeviceId = videoInputDevices[0].deviceId;
codeReader.decodeFromVideoDevice(selectedDeviceId, 'video', (result, err) => {
if (result) {
console.log(result);
var barcode = result;
//this.window.alert(barcode);
if (String(barcode).charAt(0) == 'L') {
document.getElementById('result').textContent = result.text;
document.getElementById('result').style.color = "green";
var previousurl = document.referrer;
window.location.href = previousurl + "&BarCode=" + result.text;
} …Run Code Online (Sandbox Code Playgroud) 您好,我正在使用 android mlkit 条码扫描仪,无需 firebase 和 androidx ,我遵循此代码https://medium.com/@surya.n1447/google-vision-ml-kit-with-camerax-64bbbfd4c6fd 当我扫描 qrcode 时,它是太慢了,我不知道如何提高扫描速度,是否有一些技巧或类似的东西?还是改用 zxing 还是 Google Vision 更好?我用的是小米10T Pro
类 ScanPersonFragment : Fragment() {
private var processingBarcode = AtomicBoolean(false)
private var mediaPlayer: MediaPlayer? = null
private lateinit var cameraExecutor: ExecutorService
private lateinit var scanBarcodeViewModel: ScanPersonViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
cameraExecutor = Executors.newSingleThreadExecutor()
scanBarcodeViewModel = ViewModelProvider(this).get(ScanPersonViewModel::class.java)
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val v = inflater.inflate(R.layout.fragment_scan_person_destination, container, false)
mediaPlayer = MediaPlayer.create(context, R.raw.beep)
scanBarcodeViewModel.progressState.observe(viewLifecycleOwner, …Run Code Online (Sandbox Code Playgroud) android computer-vision android-camera firebase-mlkit google-mlkit
对于版主:我知道已经存在这样的问题,但所有这些方法最终都会给出位图,data.getExtra("data")实际上只是thumbnail. 我想要获取 URI 而不是位图,并且我需要使用2021. 在将问题标记为重复之前,请考虑这一点!
我从相机获取图像,它在较低设备上工作正常,但onActivityResult仅在 Android 10 和 11 中调用时它在数据中给出空值。
这就是我正在做的
val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
startActivityForResult(intent, ACTION_REQUEST_CAMERA)
Run Code Online (Sandbox Code Playgroud)
这是我的 onActivityResult
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode == RESULT_OK && requestCode == ACTION_REQUEST_CAMERA) {
data?.data?.let { uri ->
Toast.makeText(context, "Got URI", Toast.LENGTH_LONG).show()
}
}
}
Run Code Online (Sandbox Code Playgroud) 在我使用 Jetpack Compose 的应用程序中,如何使用现有的库存照片应用程序拍摄照片并存储它?Google 的文档Camera通过使用 提到了已弃用的 API Intent,但他们使用的是旧的视图系统。看起来更新的APICamera2和CameraXAPI 都是为了直接在应用程序中创建自定义相机界面。
我知道用Camera.open()和getParameter来检查焦点模式是否有效.
但似乎打开相机会有一点点声音,我不想......
我可以通过任何其他方式获得相机是否支持自动对焦?
我正在制作一款使用相机手电筒的应用程序.
我打开相机:
Camera cam = Camera.open();
Run Code Online (Sandbox Code Playgroud)
当我启动我的应用程序时,如果另一个应用程序已经在使用相机,我收到一个错误:
java.lang.RuntimeException: Fail to connect to camera service
Run Code Online (Sandbox Code Playgroud)
首先,如果已经被另一个应用程序打开,有没有办法仍然使用相机?
如果不可能,我希望我的应用程序显示消息"相机已在使用中"而不是崩溃.
在这种情况下,如何检测相机是否已被其他应用程序打开?
我的应用程序使用手机相机拍照并将图片存储在手机图库中.我想获得该图片路径并将其存储在我的数据存储区中.有人可以帮帮我吗?继承我的代码:
public void onClick(View v){
switch(v.getId())
{
case R.id.btnLoadPic:
//Options for the dialogue menu
final CharSequence[] items = {"Camera", "Gallery"};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Choose an Option");
builder.setItems(items, new DialogInterface.OnClickListener() {
/**
* Make onclick functionality for the options in the dialogue menu
*/
public void onClick(DialogInterface dialog, int item) {
// Camera option
if (item == 0){
PackageManager pm = getPackageManager();
if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)){
//Toast.makeText(this, "camera", Toast.LENGTH_SHORT).show();
dispatchTakePictureIntent(11);
} else {
Toast.makeText(null, "No camera avalible", Toast.LENGTH_SHORT).show();
}
}
// …Run Code Online (Sandbox Code Playgroud) 我正在尝试改变Android中相机LED /手电筒的颜色.他们有什么办法实现这个目标?
我知道我们可以在Nexus One Track Ball上改变颜色.我试图在Android中更改相机LED /手电筒颜色.
在Android中捕获图像并使用opencv处理它们的最佳方法是什么?我应该使用表面视图在这里或我应该使用opencv相机中的opencv相机吗?以及如何加载捕获的图像并将其转换为Mat?提前致谢
private PictureCallback mPicture = new PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
File pictureFile = getOutputMediaFile(MEDIA_TYPE_IMAGE);
if (pictureFile == null) {
Log.d("E",
"Error creating media file, check storage permissions ");
return;
}
try {
FileOutputStream fos = new FileOutputStream(pictureFile);
fos.write(data);
fos.close();
//processImage();
} catch (FileNotFoundException e) {
Log.d("E", "File not found: " + e.getMessage());
} catch (IOException e) {
Log.d("E", "Error accessing file: " + e.getMessage());
}
}
Run Code Online (Sandbox Code Playgroud) 我的活动使用用户定义的对象来跟踪进度.当用户按下按钮并将其存储在其中一个对象中时,我需要从相机中获取图像.
问题是,有时它工作正常,但很多时候它重新初始化我的活动,因此所有对象和我的进度都丢失了.据我所知,这可能是因为相机是一个内存密集型应用程序,而在后台,操作系统会破坏我的应用程序以释放内存.
我宁愿不让我的对象Parcable,然后将它们保存到Bundle.
我修改了我的android清单,以便活动标签包含
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait"
Run Code Online (Sandbox Code Playgroud)
这是我的相机意图
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
startActivityForResult(takePictureIntent,REQUEST_IMAGE_CAPTURE);
Run Code Online (Sandbox Code Playgroud)
这是onActivityResult方法
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == Activity.RESULT_OK )
modifyResponseView_image();
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了更多的建议,并认为将我的活动保持在前台可能会有所帮助,但我不确定它是否会发生,也不确定如何去做.
我们将非常感谢您提供的任何帮助.应用此功能的替代方案也会有所帮助.
android ×10
android-camera ×10
autofocus ×1
camera ×1
camera-flash ×1
google-mlkit ×1
javascript ×1
opencv ×1
zxing ×1
zxing-js ×1