这是一个简单的应用程序,使用AlarmManager和BroadcastReceiver重复拍摄照片。部署于几年前,在Nougat及以下版本上一直运行良好。如果屏幕打开,它也可以在8.x上正常工作。
当屏幕关闭(仅8.x)或设备自行进入睡眠状态时,AlarmManager和BroadcastReceiver之间的基本聊天正常继续(哔哔声,计数器增加),但相机无法拍摄照片(到SD卡)。实际上,该应用程序在调用相机时会崩溃。
该问题最初是在用户将LG从7.0升级到8.0时报告的。我刚刚购买了Nexus 5(8.1),就可以解决这个问题。
Android 8.0 Behaviour Changes没有提供任何线索。怎么了?
其他内容:compileSdkVersion 26,minSdkVersion 14,targetSdkVersion 26;尝试为该应用程序和“相机”应用程序禁用“电池优化”功能-没有帮助;没有其他相机应用程序运行;问题被重复复制
以下是Google Play开发者控制台上报告的内容:
java.lang.RuntimeException:
at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$-android_app_LoadedApk$ReceiverDispatcher$Args_54018 (LoadedApk.java:1384)
at android.app.-$Lambda$FilBqgnXJrN9Mgyks1XHeAxzSTk.$m$0 (Unknown Source:4)
at android.app.-$Lambda$FilBqgnXJrN9Mgyks1XHeAxzSTk.run (Unknown Source)
at android.os.Handler.handleCallback (Handler.java:789)
at android.os.Handler.dispatchMessage (Handler.java:98)
at android.os.Looper.loop (Looper.java:164)
at android.app.ActivityThread.main (ActivityThread.java:6710)
at java.lang.reflect.Method.invoke (Method.java)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:240)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:770)
Caused by: java.lang.RuntimeException:
at android.hardware.Camera.native_autoFocus (Camera.java)
at android.hardware.Camera.autoFocus (Camera.java:1431)
at my.package.myActivity.d (myActivity.java:155)
at my.package.myActivity$8.onReceive (myActivity.java:8)
at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$-android_app_LoadedApk$ReceiverDispatcher$Args_54018 (LoadedApk.java:1366)
at android.app.-$Lambda$FilBqgnXJrN9Mgyks1XHeAxzSTk.$m$0 (Unknown Source:4)
at android.app.-$Lambda$FilBqgnXJrN9Mgyks1XHeAxzSTk.run (Unknown Source)
at android.os.Handler.handleCallback (Handler.java:789)
at android.os.Handler.dispatchMessage (Handler.java:98)
at android.os.Looper.loop (Looper.java:164)
at android.app.ActivityThread.main (ActivityThread.java:6710)
at java.lang.reflect.Method.invoke (Method.java)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:240)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:770)
更新(8月4日):我刚刚意识到,如果应用程序不再位于前台(例如,按下“主页”按钮),也会出现此问题。
此外,PowerManager代码从PARTIAL_WAKE_LOCK更改为(不建议使用)SCREEN_DIM_WAKE_LOCK可以防止设备掉线进入睡眠状态;该应用程序运行正常。 [这是我目前针对8.x手机的解决方法!]