xperia solucion puede porque otras funciona esta error disponible detuvo conectar con como cerrar celular camara asegurese arreglar aplicaciones alcatel acceder android android-studio android-emulator android-camera

android - solucion - Desafortunadamente, la cámara se ha detenido



no se puede conectar con la camara asegurese de cerrar otras aplicaciones alcatel (6)

Citando a developers.android.com:

A partir de Android 6.0 (nivel API 23), los usuarios otorgan permisos a las aplicaciones mientras la aplicación se está ejecutando, no cuando la instalan. Este enfoque agiliza el proceso de instalación de la aplicación, ya que el usuario no necesita otorgar permisos cuando instala o actualiza la aplicación. También le da al usuario más control sobre la funcionalidad de la aplicación; por ejemplo, un usuario puede optar por dar acceso a la aplicación de la cámara a la cámara pero no a la ubicación del dispositivo. El usuario puede revocar los permisos en cualquier momento, yendo a la pantalla de configuración de la aplicación.

Los permisos del sistema se dividen en dos categorías, normales y peligrosas:

  • Los permisos normales no arriesgan directamente la privacidad del usuario. Si su aplicación incluye un permiso normal en su manifiesto, el sistema otorga
    permiso de forma automática.
  • Los permisos peligrosos pueden dar acceso a la aplicación a los datos confidenciales del usuario. Si su aplicación enumera un permiso normal en su
    manifiesto, el sistema otorga el permiso automáticamente. Si enumera un permiso peligroso, el usuario tiene que dar su aprobación explícitamente a
    tu aplicación

Entonces, cumplí mi tarea de la siguiente manera:

Para verificar el permiso, creé una clase separada como se muestra a continuación:

public class MarshMallowPermission { public static final int RECORD_PERMISSION_REQUEST_CODE = 1; public static final int EXTERNAL_STORAGE_PERMISSION_REQUEST_CODE = 2; public static final int CAMERA_PERMISSION_REQUEST_CODE = 3; Activity activity; public MarshMallowPermission(Activity activity) { this.activity = activity; } public boolean checkPermissionForRecord(){ int result = ContextCompat.checkSelfPermission(activity, Manifest.permission.RECORD_AUDIO); if (result == PackageManager.PERMISSION_GRANTED){ return true; } else { return false; } } public boolean checkPermissionForExternalStorage(){ int result = ContextCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE); if (result == PackageManager.PERMISSION_GRANTED){ return true; } else { return false; } } public boolean checkPermissionForCamera(){ int result = ContextCompat.checkSelfPermission(activity, Manifest.permission.CAMERA); if (result == PackageManager.PERMISSION_GRANTED){ return true; } else { return false; } } public void requestPermissionForRecord(){ if (ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.RECORD_AUDIO)){ Toast.makeText(activity, "Microphone permission needed for recording. Please allow in App Settings for additional functionality.", Toast.LENGTH_LONG).show(); } else { ActivityCompat.requestPermissions(activity,new String[]{Manifest.permission.RECORD_AUDIO},RECORD_PERMISSION_REQUEST_CODE); } } public void requestPermissionForExternalStorage(){ if (ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE)){ Toast.makeText(activity, "External Storage permission needed. Please allow in App Settings for additional functionality.", Toast.LENGTH_LONG).show(); } else { ActivityCompat.requestPermissions(activity,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},EXTERNAL_STORAGE_PERMISSION_REQUEST_CODE); } } public void requestPermissionForCamera(){ if (ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.CAMERA)){ Toast.makeText(activity, "Camera permission needed. Please allow in App Settings for additional functionality.", Toast.LENGTH_LONG).show(); } else { ActivityCompat.requestPermissions(activity,new String[]{Manifest.permission.CAMERA},CAMERA_PERMISSION_REQUEST_CODE); } } }

Entonces, para conseguir

... MarshMallowPermission marshMallowPermission = new MarshMallowPermission(this); ... public void getPhotoFromCamera() { if (!marshMallowPermission.checkPermissionForCamera()) { marshMallowPermission.requestPermissionForCamera(); } else { if (!marshMallowPermission.checkPermissionForExternalStorage()) { marshMallowPermission.requestPermissionForExternalStorage(); } else { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); File mediaStorageDir = new File( Environment.getExternalStorageDirectory() + File.separator + getString(R.string.directory_name_corp_chat) + File.separator + getString(R.string.directory_name_images) ); if (!mediaStorageDir.exists()) { mediaStorageDir.mkdirs(); } String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(new Date()); try { mediaFile = File.createTempFile( "IMG_" + timeStamp, /* prefix */ ".jpg", /* suffix */ mediaStorageDir /* directory */ ); takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mediaFile)); startActivityForResult(takePictureIntent, PICK_FROM_CAMERA); } catch (IOException e) { e.printStackTrace(); } } } }

Cuando ejecuto la aplicación Cámara, aparece este error y este es mi logcat.

12-08 12:50:10.393 2275-2369/com.android.launcher3 E/Surface: getSlotFromBufferLocked: unknown buffer: 0xa21675b0 12-08 12:50:10.509 965-3048/? E/CameraService: CameraService::connect X (PID 3209) rejected (invalid camera ID 0) 12-08 12:50:10.510 3209-3224/com.android.camera E/CameraHolder: fail to connect Camera 12-08 12:50:10.510 3209-3224/com.android.camera E/CameraHolder: java.lang.RuntimeException: Fail to connect to camera service 12-08 12:50:10.510 3209-3224/com.android.camera E/CameraHolder: at android.hardware.Camera.<init>(Camera.java:495) 12-08 12:50:10.510 3209-3224/com.android.camera E/CameraHolder: at android.hardware.Camera.open(Camera.java:341) 12-08 12:50:10.510 3209-3224/com.android.camera E/CameraHolder: at com.android.camera.CameraHolder.open(CameraHolder.java:131) 12-08 12:50:10.510 3209-3224/com.android.camera E/CameraHolder: at com.android.camera.Util.openCamera(Util.java:267) 12-08 12:50:10.510 3209-3224/com.android.camera E/CameraHolder: at com.android.camera.Camera$3.run(Camera.java:1100) 12-08 12:50:10.510 3209-3224/com.android.camera E/CameraHolder: at java.lang.Thread.run(Thread.java:818) 12-08 12:50:10.511 3209-3224/com.android.camera E/AndroidRuntime: FATAL EXCEPTION: Thread-179 12-08 12:50:10.511 3209-3224/com.android.camera E/AndroidRuntime: Process: com.android.camera, PID: 3209 12-08 12:50:10.511 3209-3224/com.android.camera E/AndroidRuntime: java.lang.RuntimeException: openCamera failed 12-08 12:50:10.511 3209-3224/com.android.camera E/AndroidRuntime: at com.android.camera.Util.openCamera(Util.java:272) 12-08 12:50:10.511 3209-3224/com.android.camera E/AndroidRuntime: at com.android.camera.Camera$3.run(Camera.java:1100) 12-08 12:50:10.511 3209-3224/com.android.camera E/AndroidRuntime: at java.lang.Thread.run(Thread.java:818) 12-08 12:50:10.511 3209-3224/com.android.camera E/AndroidRuntime: Caused by: com.android.camera.CameraHardwareException: java.lang.RuntimeException: Fail to connect to camera service 12-08 12:50:10.511 3209-3224/com.android.camera E/AndroidRuntime: at com.android.camera.CameraHolder.open(CameraHolder.java:135) 12-08 12:50:10.511 3209-3224/com.android.camera E/AndroidRuntime: at com.android.camera.Util.openCamera(Util.java:267) 12-08 12:50:10.511 3209-3224/com.android.camera E/AndroidRuntime: at com.android.camera.Camera$3.run(Camera.java:1100)  12-08 12:50:10.511 3209-3224/com.android.camera E/AndroidRuntime: at java.lang.Thread.run(Thread.java:818)  12-08 12:50:10.511 3209-3224/com.android.camera E/AndroidRuntime: Caused by: java.lang.RuntimeException: Fail to connect to camera service 12-08 12:50:10.511 3209-3224/com.android.camera E/AndroidRuntime: at android.hardware.Camera.<init>(Camera.java:495) 12-08 12:50:10.511 3209-3224/com.android.camera E/AndroidRuntime: at android.hardware.Camera.open(Camera.java:341) 12-08 12:50:10.511 3209-3224/com.android.camera E/AndroidRuntime: at com.android.camera.CameraHolder.open(CameraHolder.java:131) 12-08 12:50:10.511 3209-3224/com.android.camera E/AndroidRuntime: at com.android.camera.Util.openCamera(Util.java:267)  12-08 12:50:10.511 3209-3224/com.android.camera E/AndroidRuntime: at com.android.camera.Camera$3.run(Camera.java:1100)  12-08 12:50:10.511 3209-3224/com.android.camera E/AndroidRuntime: at java.lang.Thread.run(Thread.java:818)  12-08 12:50:10.671 954-954/? E/EGL_emulation: tid 954: eglCreateSyncKHR(1243): error 0x3004 (EGL_BAD_ATTRIBUTE)

y este es mi config.ini

avd.ini.encoding=UTF-8 AvdId=Nexus_S_API_23 abi.type=x86 avd.ini.displayname=Nexus S API 23 disk.dataPartition.size=200M hw.accelerometer=yes hw.audioInput=yes hw.battery=yes hw.camera.back=webcam0 hw.camera.front=none hw.cpu.arch=x86 hw.dPad=no hw.device.hash2=MD5:37a2ff6e511626ba3ceddec8264474be hw.device.manufacturer=Google hw.device.name=Nexus S hw.gps=yes hw.gpu.enabled=yes hw.keyboard=yes hw.lcd.density=240 hw.mainKeys=yes hw.ramSize=343 hw.sdCard=yes hw.sensors.orientation=yes hw.sensors.proximity=yes hw.trackBall=no image.sysdir.1=system-images/android-23/google_apis/x86/ runtime.network.latency=none runtime.network.speed=full runtime.scalefactor=auto sdcard.size=100M skin.dynamic=yes skin.name=nexus_s skin.path=C:/Program Files/Android/Android Studio/plugins/android/lib/device-art-resources/nexus_s snapshot.present=no tag.display=Google APIs tag.id=google_apis vm.heapSize=32

También me enfrenté a este error.

emulator -webcam-list -avd Nexus_S_API_23 emulator: WARNING: Increasing RAM size to 1GB emulator: ERROR: camera_device_start_capturing: Device ''AndroidEmulatorVC0'' is unable to save frame to the clipboard: 0

Nota: Recibo un error al intentar descargar una imagen desde el navegador de Android.


A partir de la API 23, debe solicitar permisos en tiempo de ejecución. Este no fue el caso en API <23. Para API <23 permisos en el manifiesto es suficiente.

Este es un ejemplo de los desarrolladores de Android:

Verifique el permiso

// Assume thisActivity is the current activity int permissionCheck = ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.WRITE_CALENDAR);

Pedir permiso :

// Here, thisActivity is the current activity if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) { // Should we show an explanation? if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity, Manifest.permission.READ_CONTACTS)) { // Show an expanation to the user *asynchronously* -- don''t block // this thread waiting for the user''s response! After the user // sees the explanation, try again to request the permission. } else { // No explanation needed, we can request the permission. ActivityCompat.requestPermissions(thisActivity, new String[]{Manifest.permission.READ_CONTACTS}, MY_PERMISSIONS_REQUEST_READ_CONTACTS); // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an // app-defined int constant. The callback method gets the // result of the request. } }

Solicitar respuesta :

@Override public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { switch (requestCode) { case MY_PERMISSIONS_REQUEST_READ_CONTACTS: { // If request is cancelled, the result arrays are empty. if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // permission was granted, yay! Do the // contacts-related task you need to do. } else { // permission denied, boo! Disable the // functionality that depends on this permission. } return; } // other ''case'' lines to check for other // permissions this app might request } }

Si desea más información al respecto, puede consultar este enlace en Desarrolladores de Android:

http://developer.android.com/training/permissions/requesting.html

Si no manejas así no puedes usar la cámara en API''s> = 23

No todos los permisos deben ser otorgados por el usuario, pero solo permisos peligrosos (Cámara, Ubicación,):

http://developer.android.com/guide/topics/security/permissions.html#normal-dangerous


Con la API de Android> = 23, debe solicitar permiso en un código como:

int REQUEST_PERMISSION= 100; int cameraPermission = this.checkSelfPermission(Manifest.permission.CAMERA); if (android.os.Build.VERSION.SDK_INT >= 23) { if (cameraPermission != PackageManager.PERMISSION_GRANTED ) { this.requestPermissions( new String[]{Manifest.permission.CAMERA }, REQUEST_PERMISSION ); } }

Ahora está bien para correr.


La solución es simple: no puede ejecutar una cámara cuando utiliza una máquina virtual a menos que vincule la acción de abrir la cámara VM para abrir su cámara web.


Puede ser que su PC o Mac deban tener una cámara que funcione o la simulación de la cámara debe estar instalada.


Editar

¿Has probado alguno de estos? Parece que su servicio de cámara no funcionó correctamente / la cámara puede usarse para otra aplicación.

Error al conectarse al servicio de cámara

Usa la cámara web en el emulador de android.

Yo uso MacOSX por cierto. Solo digo que funciona en mi máquina. Envié herramientas instaladas y registros. Tal vez ayude.

Configuración de VD

Nexus 5, API 23 (Both Cameras are selected)

Cuando inicio el emulador, da una advertencia en el registro pero al final funcionó.

Troncos

ADVERTENCIA: El nombre de la cámara ''webcam0'' no se encuentra en la lista de cámaras conectadas.

12-12 22:59:15.060 2060-2079/com.android.camera V/CameraHolder: open camera 0 12-12 22:59:15.060 1019-1730/? I/CameraService: CameraService::connect call (PID 2060 "com.android.camera", camera ID 0) for HAL version default and Camera API version 1 12-12 22:59:15.060 1019-1730/? V/EmulatedCamera_Camera: getCameraInfo 12-12 22:59:15.060 1019-1730/? V/EmulatedCamera_BaseCamera: getCameraInfo 12-12 22:59:15.060 1019-1730/? W/AudioFlinger: acquireAudioSessionId() unknown client 2060 for session 7 12-12 22:59:15.060 1019-2081/? D/NuPlayerDriver: notifyListener_l(0xf619af80), (1, 0, 0) 12-12 22:59:15.060 1019-1730/? W/AudioFlinger: acquireAudioSessionId() unknown client 2060 for session 8 12-12 22:59:15.070 1019-2083/? D/NuPlayerDriver: notifyListener_l(0xf619afe0), (1, 0, 0) 12-12 22:59:15.070 1019-1730/? I/CameraClient: Opening camera 0 12-12 22:59:15.070 1019-1730/? V/EmulatedCamera_Camera: getCameraInfo 12-12 22:59:15.070 1019-1730/? V/EmulatedCamera_BaseCamera: getCameraInfo 12-12 22:59:15.070 1019-1730/? V/EmulatedCamera_Camera: connectCamera 12-12 22:59:15.070 1019-1730/? V/EmulatedCamera_QemuDevice: connectDevice 12-12 22:59:15.100 2059-2059/? D/AndroidRuntime: Calling main entry com.android.commands.pm.Pm 12-12 22:59:15.110 1019-1730/? V/EmulatedCamera_QemuDevice: connectDevice: Connected to device ''webcam0'' 12-12 22:59:15.110 1019-1730/? V/EmulatedCamera_CallbackNotifier: setCallbacks: 0xf75d1505, 0xf75d1dba, 0xf75d1c92, 0xf75d2267 (0xf619b040) 12-12 22:59:15.110 1019-1730/? V/EmulatedCamera_CallbackNotifier: enableMessage: msg_type = 0xc0d 12-12 22:59:15.110 1019-1730/? V/EmulatedCamera_CallbackNotifier: CAMERA_MSG_ERROR 12-12 22:59:15.110 1019-1730/? V/EmulatedCamera_CallbackNotifier: CAMERA_MSG_FOCUS 12-12 22:59:15.110 1019-1730/? V/EmulatedCamera_CallbackNotifier: CAMERA_MSG_ZOOM 12-12 22:59:15.110 1019-1730/? V/EmulatedCamera_CallbackNotifier: CAMERA_MSG_PREVIEW_METADATA 12-12 22:59:15.110 1019-1730/? V/EmulatedCamera_CallbackNotifier: **** Currently enabled messages: 12-12 22:59:15.110 1019-1730/? V/EmulatedCamera_CallbackNotifier: CAMERA_MSG_ERROR 12-12 22:59:15.110 1019-1730/? V/EmulatedCamera_CallbackNotifier: CAMERA_MSG_FOCUS 12-12 22:59:15.110 1019-1730/? V/EmulatedCamera_CallbackNotifier: CAMERA_MSG_ZOOM 12-12 22:59:15.110 1019-1730/? V/EmulatedCamera_CallbackNotifier: CAMERA_MSG_PREVIEW_METADATA 12-12 22:59:15.120 1350-1374/system_process I/ActivityManager: Start proc 2086:com.android.defcontainer/u0a3 for service com.android.defcontainer/.DefaultContainerService 12-12 22:59:15.160 2086-2098/com.android.defcontainer D/DefContainer: Copying /data/local/tmp/com.example.volkangurol.myapplication to base.apk 12-12 22:59:15.210 1449-1449/com.android.systemui D/PhoneStatusBar: disable: < expand ICONS alerts SYSTEM_INFO back home* recent* clock search* quick_settings > 12-12 22:59:15.210 2060-2103/com.android.camera D/Camera: app passed NULL surface 12-12 22:59:15.210 1019-1619/? V/EmulatedCamera_Camera: getCameraInfo 12-12 22:59:15.210 1019-1619/? V/EmulatedCamera_BaseCamera: getCameraInfo 12-12 22:59:15.230 2060-2103/com.android.camera V/camera: Preview size is 640x480 12-12 22:59:15.230 1019-1019/? V/EmulatedCamera_Camera: setParameters 12-12 22:59:15.230 1019-1019/? D/EmulatedCamera_Camera: === Value changed: jpeg-quality: 90 -> 95 12-12 22:59:15.230 1019-1019/? D/EmulatedCamera_Camera: === Value changed: preview-frame-rate: 24 -> 30 12-12 22:59:15.230 1019-1019/? D/EmulatedCamera_Camera: +++ New parameter: recording-hint=false 12-12 22:59:15.230 2060-2103/com.android.camera V/camera: startPreview 12-12 22:59:15.230 1019-1380/? V/EmulatedCamera_Preview: setPreviewWindow: current: 0x0 -> new: 0x0 12-12 22:59:15.230 1019-1380/? V/EmulatedCamera_Camera: doStartPreview 12-12 22:59:15.230 1019-1380/? V/EmulatedCamera_Preview: startPreview 12-12 22:59:15.230 1019-1380/? D/EmulatedCamera_Camera: Starting camera: 640x480 -> NV21(yuv420sp) 12-12 22:59:15.230 1019-1380/? V/EmulatedCamera_QemuDevice: startDevice 12-12 22:59:15.230 1019-1380/? V/EmulatedCamera_Device: commonStartDevice: Allocated 0xf3f00000 460800 bytes for 307200 pixels in NV21[640x480] frame 12-12 22:59:15.230 1019-1380/? V/EmulatedCamera_QemuDevice: startDevice: Qemu camera device ''webcam0'' is started for NV21[640x480] frames 12-12 22:59:15.230 1019-1380/? V/EmulatedCamera_Device: startDeliveringFrames 12-12 22:59:15.230 1019-1380/? V/EmulatedCamera_Device: startWorkerThread 12-12 22:59:15.260 1019-2104/? V/EmulatedCamera_Device: Starting emulated camera device worker thread...