比如我在应用A中通过Camera.open打开了摄像机,应用B中也想使用摄像机,这时B中打开必然会失败。那么有什么方法或机制可以让A知道有应用要使用摄像头了,好让自己把资源释放掉供B使用?
------解决思路----------------------
试一下:
在一个非UI线程使用
public boolean isCameraCanUse() {
boolean canUse = true;
Camera mCamera = null;
try {
mCamera = Camera.open();
} catch (Exception e) {
canUse = false;//异常,占用了。可以往UI线程发消息
}
if (canUse) {
mCamera.release(); //未占用
mCamera = null;
}
return canUse; //返回boolean值或发消息都可以,函数你自己定
}
------解决思路----------------------
楼主这样的思路太过自我了,相当于偷看,
假如能够这样做,应用能够礼让自己的资源,那什么时候能够再次使用占用资源呢,等别人不用了吗?如果有两个应用都曾经礼让过后,资源空闲了,那由谁先来占用呢,问题会越来越多了.
通常情况下不同应用是不会同时打开的, 所以只要应用退到后台就要立即关闭Camera资源.