क्या यह पता लगाने का कोई तरीका है कि एंड्रॉइड कैमरा कोड में उपयोग में है?कैमरा कैसे उपयोग में है या नहीं, यह कैसे पता लगाएं?
उत्तर
क्या एंड्रॉइड कैमरा उपयोग में है या नहीं, यह जानने का कोई तरीका है?
हाँ, Camera.open()
आप एक अपवाद दे देंगे अगर कैमरे का उपयोग में है।
,
/** A safe way to get an instance of the Camera object. */
public static Camera getCameraInstance(){
Camera c = null;
try {
c = Camera.open(); // attempt to get a Camera instance
}
catch (Exception e){
// Camera is not available (in use or does not exist)
}
return c; // returns null if camera is unavailable
}
मैं नहीं जानता कि क्यों यह सवाल कई बार कहा जा रहा है, एक बार आप अपने खुद के गतिविधि या एप्लिकेशन को कैमरे में ही शुरू हो जाएगा कैमरा के लिए चल रहे गतिविधि के रूप में जारी किया जाएगा विराम स्थिति में जाओ।
मुझे पता है कि यह वास्तव में एक पुराना सवाल है, लेकिन मैंने एक ही चीज़ के बारे में सोचने वाली Google खोज के साथ उस पर ठोकर खाई। एंड्रॉइड के नए संस्करणों के साथ, आप यह निर्धारित करने के लिए कि क्या कैमरा उपयोग में है या नहीं, CameraManager.AvailabilityCallback
पंजीकृत कर सकते हैं।
import android.hardware.camera2.CameraManager;
// within constructor
// Figure out if Camera is Available or Not
CameraManager cam_manager = (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE);
cam_manager.registerAvailabilityCallback(camAvailCallback, mHandler);
CameraManager.AvailabilityCallback camAvailCallback = new CameraManager.AvailabilityCallback() {
public void onCameraAvailable(String cameraId) {
cameraInUse=false;
Log.d(TAG, "notified that camera is not in use.");
}
public void onCameraUnavailable(String cameraId) {
cameraInUse=true;
Log.d(TAG, "notified that camera is in use.");
}
};
नोट, एंड्रॉइड 5.1 में एक बग है कि यह टूटा जा सकता है - https://code.google.com/p/android/issues/detail?id=164769। उन संस्करणों के लिए, आपको पंजीकरण करने से पहले सेवा को ठीक तरह से प्रारंभ करने के लिए ''' cam_manager.getCameraIdList() '' '' '' '' '' '' '' '' '_ _~ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ – PressingOnAlways
आप इस method.if यह रिटर्न सच तो कैमरा कुछ एप्लिकेशन द्वारा भी उपयोग में है की कोशिश कर सकते हैं: यहाँ कुछ उदाहरण कोड है।
public boolean isCameraUsebyApp() {
Camera camera = null;
try {
camera = Camera.open();
} catch (RuntimeException e) {
return true;
} finally {
if (camera != null) camera.release();
}
return false;
}
फिर कैमरा जरूरतों को पुनः आरंभ के रूप में उपकरण पुन: प्रारंभ करने के लिए उपयोगकर्ता के लिए टोस्ट दिखा।
धन्यवाद। अगर यह पाया जाता है कि कैमरा पहले से उपयोग में है तो मैं कैमरे का उपयोग कैसे कर सकता हूं? क्या कैमरे को कैच ब्लॉक में रिलीज़ करना सही है और फिर इसे खोलने का प्रयास करें? – user1414146
@ user1414146 आपको तब तक इंतजार करना होगा जब तक कि अन्य एप्लिकेशन कैमरे के साथ नहीं किया जाता है :) और फिर पुनः प्रयास करें। – COD3BOY