我已经研究了stackoverflow中与相机手电筒相关的其他问题,但找不到解决我的问题的答案。手电筒闪烁6-8次,然后应用程序崩溃。在这里,我有一个在循环中调用cameraon()和cameraoff()的blink()方法。你能告诉我哪里出错了吗?我的代码可以在这里找到:http://pastebin.com/3LRMwd1J日志输出可以在这里看到:http://pastebin.com/2GTpn8Ux
我尝试过使用表面纹理,尝试将Thread.sleep()包含在cameraon()和cameraoff()之间,但到目前为止还没有成功。
我使用的是带有最新sdk和jdk版本的Android 4.4。我使用nexus5进行测试。
提前感谢!
发布于 2014-07-30 22:11:50
只需将Thread放在Blink()方法中,并将代码放入if else
布尔tourchon=false;
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
if(tourchon){
cameraoff();
tourchon=false;
}else{
cameraon();
tourchon=true;
}
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
thread.start();试试这段代码。
发布于 2014-07-30 23:35:07
将获取相机对象的方法与cameraOn()方法分开,因为我知道这个方法应该打开闪光灯,在这么短的时间内多次调用open()可能会像this文档所建议的那样导致您的问题。
警告:在某些设备上,此方法可能需要很长时间才能完成。最好从辅助线程(可能使用AsyncTask)调用此方法,以避免阻塞主应用程序UI线程。
因此,让您的打开和关闭方法只需更改闪光灯模式,因为您已经有了相机实例。
https://stackoverflow.com/questions/25037897
复制相似问题