- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在开发一个可以打开/关闭系统巡视的手电筒应用。
我在 Android M (v6.0) 上出现崩溃
Crashlytics
这是问题的详细信息和堆栈跟踪:
Fatal Exception: java.lang.IllegalArgumentException: Receiver not registered: android.hardware.camera2.CameraManager$1@49e5f1b
at android.app.LoadedApk.forgetReceiverDispatcher(LoadedApk.java:789)
at android.app.ContextImpl.unregisterReceiver(ContextImpl.java:1222)
at android.hardware.camera2.CameraManager$3.run(CameraManager.java:1266)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5728)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
我有以下Manifest
权限和硬件特性:
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.flash" />
和
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
****编辑:****
这是我用来访问相机的代码:
// Here, I am checking if SDK >= M
if (VersionUtils.isMarshmallowOrGreater()) {
cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
if (cameraManager != null) {
try {
cameraId = cameraManager.getCameraIdList()[0];
} catch (CameraAccessException | ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
}
}
} else {
if (camera == null || camera.getParameters() == null) {
try {
camera = Camera.open();
params = camera.getParameters();
} catch (RuntimeException e) {
e.printStackTrace();
}
}
}
这是打开闪光灯/旅游的代码:
if (VersionUtils.isMarshmallowOrGreater()) {
try {
cameraManager.setTorchMode(cameraId, true);
} catch (Exception e) {
e.printStackTrace();
}
} else {
if (camera == null || params == null || camera.getParameters() == null) {
getCamera();
return;
}
params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(params);
startCameraPreview();
}
此外,这里是关闭相机闪光灯的代码:
if (VersionUtils.isMarshmallowOrGreater()) {
try {
cameraManager.setTorchMode(cameraId, false);
} catch (Exception e) {
e.printStackTrace();
}
} else {
if (camera == null || params == null || camera.getParameters() == null) {
return;
}
try {
params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(params);
stopCameraPreview();
camera.release();
camera = null;
} catch (Exception e) {
e.printStackTrace();
}
}
startCameraPreview()
方法代码:
private void startCameraPreview() {
try {
camera.startPreview();
} catch (Exception e) {
e.printStackTrace();
}
}
除了小部件提供程序类之外,我的应用程序中没有任何接收器,但我没有任何代码行来执行(注册/注销)接收器!!
我搜索并阅读了许多关于这个问题的链接资源,但我找不到任何线索来确切知道导致它的行。
任何人都遇到过这个问题,感谢您的帮助。
最佳答案
我有同样的问题(或类似的)。我的堆栈跟踪与您的完全一样。我已经解决了我的问题,方法是确保(在我的应用程序代码中)如果我的应用程序之前没有打开手电筒,我不会尝试关闭手电筒。
当我连续两次调用 cameraManager.setTorchMode(cameraId, false)
时发生崩溃。
所以我只是在我的应用程序中维护 bool 标志,它显示了此刻准确的手电筒状态。在 cameraManager.setTorchMode(cameraId, true)
调用后立即将其设置为 true,如果标志不是 true,则不要执行 cameraManager.setTorchMode(cameraId, false)
。成功后将标志设置为 false cameraManager.setTorchMode(cameraId, false)
。
希望这有助于...
关于android - 致命异常 : java. lang.IllegalArgumentException : Receiver not registered: android. hardware.camera2.CameraManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52518329/
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
我的 Linux 机器报告“uname -a”输出如下: [root@tom i386]# uname -a Linux tom 2.6.9-89.ELsmp #1 SMP Mon Apr 20 10
我一直在开发一个最初没有在其 list 文件中指定触摸屏要求的应用程序,因此根据文档,假定为 android.hardware.touchscreen。因为该应用不需要高级手势,具有假触摸屏的设备 (
Google 正在通过电子邮件通知 Android 位置权限的更改: We’re making a change on October 15th, 2016 that will affect apps
我有 然后我为新库添加了以下内容: 我是否需要删除旧的 android.hardware.camera 标签,或者我是否仍需要放置它们以避免 PlayStore 过滤掉我的应用程序? 应用的最小
我有一个支持返回到 Android API 19 (KitKat) 的应用程序,并且在内部使用大量相机。 目前,android.hardware.camera2 是使用camera API 的推荐方式
我想为我正在编写的一堆模块创建这个通用包装器。包装器应该能够将这些模块连接到不同类型的 NoC,而无需更改内部模块的行为。 我认为这样做的一种方法是以下。 考虑一个非常简单的模块来包装: module
人们如何以一种抽象的方式思考设计数字逻辑芯片? 我目前正在学习第一章“计算系统的要素”,我已经实现了以下门,从 Nand 开始。 不是 和 或者 异或 多路复用器 多路复用器 16位不 16位和 16
我有以下数据: A = [a0 a1 a2 a3 a4 a5 .... a24] B = [b0 b1 b2 b3 b4 b5 .... b24] 然后我想乘以如下: C = A * B' = [a0
我从事软件/软件编程多年。多年来,我也对硬件编程(电路 + 机器人 + 等)感兴趣。 请从我可以开始硬件编程的地方提供建议。我的目标是将 s/w 和 h/w 结合起来一起工作。 最佳答案 我推荐 Ar
假设 l1 和 l2 缓存请求导致未命中,处理器是否会在访问主内存之前停止? 我听说过切换到另一个线程的想法,如果是的话,用什么来唤醒停滞的线程? 最佳答案 现代 CPU 中同时发生了很多很多事情。当
我们公司的一台服务器有 32 个 CPU,我们有 1000 多个非常大的文件要处理。我不确定同时读取 32 个文件是否是个好主意,这样所有内核也可以同时执行独立计算。谁能简单解释一下硬盘的工作原理?如
我想进入多核编程(不是特定于语言)并且想知道可以推荐哪些硬件来探索这个领域。 我的目标是升级我现有的桌面。 最佳答案 如果可能的话,我建议买一台双路机器,最好是四核芯片。您当然可以获得单插槽机器,但双
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我今天正在分析一个程序,该程序执行大量缓冲网络事件,该程序大部分时间都在 memcpy 中,只是在库管理的网络缓冲区和它自己的内部缓冲区之间来回移动数据。 这让我想到,为什么英特尔没有“memcpy”
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
我想了解Logisim中类似我的6502工作处理器项目的确切中断是什么。 我知道中断会执行以下步骤: 停止处理当前程序 将所有未完成的数据保存到堆栈中 是否“SOMETHING” 加载未完成的数据,让
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 6年前关闭。 Improve this questi
我对 linux 设备驱动程序书中的以下陈述感到有些困惑。 http://www.linuxdriver.co.il/ldd3/ 13.2. USB and Sysfs To help underst
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
我是一名优秀的程序员,十分优秀!