You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

410 lines
18 KiB

  1. <!---
  2. # license: Licensed to the Apache Software Foundation (ASF) under one
  3. # or more contributor license agreements. See the NOTICE file
  4. # distributed with this work for additional information
  5. # regarding copyright ownership. The ASF licenses this file
  6. # to you under the Apache License, Version 2.0 (the
  7. # "License"); you may not use this file except in compliance
  8. # with the License. You may obtain a copy of the License at
  9. #
  10. # http://www.apache.org/licenses/LICENSE-2.0
  11. #
  12. # Unless required by applicable law or agreed to in writing,
  13. # software distributed under the License is distributed on an
  14. # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  15. # KIND, either express or implied. See the License for the
  16. # specific language governing permissions and limitations
  17. # under the License.
  18. -->
  19. # cordova-plugin-camera
  20. [![Build Status](https://travis-ci.org/apache/cordova-plugin-camera.svg)](https://travis-ci.org/apache/cordova-plugin-camera)
  21. Este plugin define un global `navigator.camera` objeto que proporciona una API para tomar fotografías y por elegir imágenes de biblioteca de imágenes del sistema.
  22. Aunque el objeto está unido al ámbito global `navigator` , no estará disponible hasta después de la `deviceready` evento.
  23. document.addEventListener ("deviceready", onDeviceReady, false);
  24. function onDeviceReady() {console.log(navigator.camera)};
  25. ## Instalación
  26. cordova plugin add cordova-plugin-camera
  27. ## API
  28. * Cámara
  29. * navigator.camera.getPicture(success, fail, options)
  30. * CameraOptions
  31. * CameraPopoverHandle
  32. * CameraPopoverOptions
  33. * Navigator.Camera.Cleanup
  34. ## navigator.camera.getPicture
  35. Toma una foto con la cámara, o recupera una foto de Galería de imágenes del dispositivo. La imagen se pasa a la devolución de llamada de éxito como un codificado en base64 `String` , o como el URI para el archivo de imagen. El método se devuelve un `CameraPopoverHandle` objeto que puede utilizarse para volver a colocar el popover de selección de archivo.
  36. navigator.camera.getPicture(cameraSuccess, cameraError, cameraOptions);
  37. #### Descripción
  38. El `camera.getPicture` función abre la aplicación de cámara predeterminada del dispositivo que permite a los usuarios ajustar imágenes. Este comportamiento se produce de forma predeterminada, cuando `Camera.sourceType` es igual a `Camera.PictureSourceType.CAMERA` . Una vez que el usuario ajusta la foto, una aplicación de cámara se cierra y se restablecerá la aplicación.
  39. Si `Camera.sourceType` es `Camera.PictureSourceType.PHOTOLIBRARY` o `Camera.PictureSourceType.SAVEDPHOTOALBUM` , entonces una muestra de diálogo que permite a los usuarios seleccionar una imagen existente. El `camera.getPicture` función devuelve un `CameraPopoverHandle` objeto, que puede utilizarse para volver a colocar el diálogo de selección de imagen, por ejemplo, cuando cambia la orientación del dispositivo.
  40. El valor devuelto es enviado a la `cameraSuccess` función de callback, en uno de los formatos siguientes, dependiendo del objeto `cameraOptions` :
  41. * Una `String` que contiene la imagen codificada en base64.
  42. * Una `String` que representa la ubicación del archivo de imagen en almacenamiento local (por defecto).
  43. Puedes hacer lo que quieras con la imagen codificada o URI, por ejemplo:
  44. * Representar la imagen en una etiqueta de `<img>`, como en el ejemplo siguiente
  45. * Guardar los datos localmente (`LocalStorage`, [Lawnchair](http://brianleroux.github.com/lawnchair/), etc.)
  46. * Enviar los datos a un servidor remoto
  47. **Nota**: resolución de la foto en los nuevos dispositivos es bastante bueno. Fotos seleccionadas de la Galería del dispositivo no son degradadas a una calidad más baja, incluso si un `quality` se especifica el parámetro. Para evitar problemas con la memoria común, establezca `Camera.destinationType` a `FILE_URI` en lugar de`DATA_URL`.
  48. #### Plataformas soportadas
  49. ![](doc/img/android-success.png) ![](doc/img/blackberry-success.png) ![](doc/img/browser-success.png) ![](doc/img/firefox-success.png) ![](doc/img/fireos-success.png) ![](doc/img/ios-success.png) ![](doc/img/windows-success.png) ![](doc/img/wp8-success.png) ![](doc/img/ubuntu-success.png)
  50. #### Ejemplo
  51. Tomar una foto y recuperarlo como una imagen codificada en base64:
  52. navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
  53. destinationType: Camera.DestinationType.DATA_URL
  54. });
  55. function onSuccess(imageData) {
  56. var image = document.getElementById('myImage');
  57. image.src = "data:image/jpeg;base64," + imageData;
  58. }
  59. function onFail(message) {
  60. alert('Failed because: ' + message);
  61. }
  62. Tomar una foto y recuperar la ubicación del archivo de la imagen:
  63. navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
  64. destinationType: Camera.DestinationType.FILE_URI });
  65. function onSuccess(imageURI) {
  66. var image = document.getElementById('myImage');
  67. image.src = imageURI;
  68. }
  69. function onFail(message) {
  70. alert('Failed because: ' + message);
  71. }
  72. #### Preferencias (iOS)
  73. * **CameraUsesGeolocation** (booleano, el valor predeterminado de false). Para la captura de imágenes JPEG, establecido en true para obtener datos de geolocalización en la cabecera EXIF. Esto activará la solicitud de permisos de geolocalización si establecido en true.
  74. <preference name="CameraUsesGeolocation" value="false" />
  75. #### Amazon fuego OS rarezas
  76. Amazon fuego OS utiliza los intentos para poner en marcha la actividad de la cámara del dispositivo para capturar imágenes y en teléfonos con poca memoria, puede matar la actividad Cordova. En este escenario, la imagen no aparezca cuando se restaura la actividad cordova.
  77. #### Rarezas Android
  78. Android utiliza los intentos para iniciar la actividad de la cámara del dispositivo para capturar imágenes, y en los teléfonos con poca memoria, puede matar la actividad Cordova. En este escenario, la imagen no aparezca cuando se restaura la actividad Cordova.
  79. #### Navegador rarezas
  80. Sólo puede devolver fotos como imagen codificada en base64.
  81. #### Firefox OS rarezas
  82. Cámara plugin actualmente se implementa mediante [Actividades Web](https://hacks.mozilla.org/2013/01/introducing-web-activities/).
  83. #### iOS rarezas
  84. Incluyendo un JavaScript `alert()` en cualquiera de la devolución de llamada funciones pueden causar problemas. Envuelva la alerta dentro de un `setTimeout()` para permitir que el selector de imagen iOS o popover cerrar completamente antes de la alerta se muestra:
  85. setTimeout(function() {
  86. // do your thing here!
  87. }, 0);
  88. #### Windows Phone 7 rarezas
  89. Invocando la aplicación de cámara nativa mientras el dispositivo está conectado vía Zune no funciona y desencadena un callback de error.
  90. #### Rarezas Tizen
  91. Tizen sólo es compatible con un `destinationType` de `Camera.DestinationType.FILE_URI` y un `sourceType` de`Camera.PictureSourceType.PHOTOLIBRARY`.
  92. ## CameraOptions
  93. Parámetros opcionales para personalizar la configuración de la cámara.
  94. {calidad: destinationType 75,: Camera.DestinationType.DATA_URL, sourceType: Camera.PictureSourceType.CAMERA, allowEdit: true, encodingType: Camera.EncodingType.JPEG, targetWidth: 100, targetHeight: 100, popoverOptions: CameraPopoverOptions, saveToPhotoAlbum: falsa};
  95. * **calidad**: calidad de la imagen guardada, expresada en un rango de 0-100, donde 100 es típicamente resolución sin pérdida de compresión del archivo. El valor predeterminado es 50. *(Número)* (Tenga en cuenta que no está disponible información sobre resolución de la cámara).
  96. * **destinationType**: elegir el formato del valor devuelto. El valor predeterminado es FILE_URI. Definido en `navigator.camera.DestinationType` *(número)*
  97. Camera.DestinationType = {
  98. DATA_URL : 0, // Return image as base64-encoded string
  99. FILE_URI : 1, // Return image file URI
  100. NATIVE_URI : 2 // Return image native URI (e.g., assets-library:// on iOS or content:// on Android)
  101. };
  102. * **sourceType**: establecer el origen de la imagen. El valor predeterminado es cámara. Definido en `navigator.camera.PictureSourceType` *(número)*
  103. Camera.PictureSourceType = {
  104. PHOTOLIBRARY : 0,
  105. CAMERA : 1,
  106. SAVEDPHOTOALBUM : 2
  107. };
  108. * **allowEdit**: permite edición sencilla de imagen antes de la selección. *(Booleano)*
  109. * **encodingType**: elegir la codificación del archivo de imagen devuelta. Por defecto es JPEG. Definido en `navigator.camera.EncodingType` *(número)*
  110. Camera.EncodingType = {
  111. JPEG : 0, // Return JPEG encoded image
  112. PNG : 1 // Return PNG encoded image
  113. };
  114. * **targetWidth**: ancho en píxeles a escala de la imagen. Debe usarse con **targetHeight**. Proporción se mantiene constante. *(Número)*
  115. * **targetHeight**: altura en píxeles a escala de la imagen. Debe usarse con **targetWidth**. Proporción se mantiene constante. *(Número)*
  116. * **mediaType**: definir el tipo de medios para seleccionar. Sólo funciona cuando `PictureSourceType` es `PHOTOLIBRARY` o `SAVEDPHOTOALBUM` . Definido en `nagivator.camera.MediaType` *(número)*
  117. Camera.MediaType = {
  118. PICTURE: 0, // allow selection of still pictures only. DE FORMA PREDETERMINADA. Will return format specified via DestinationType
  119. VIDEO: 1, // allow selection of video only, WILL ALWAYS RETURN FILE_URI
  120. ALLMEDIA : 2 // allow selection from all media types
  121. };
  122. * **correctOrientation**: rotar la imagen para corregir la orientación del dispositivo durante la captura. *(Booleano)*
  123. * **saveToPhotoAlbum**: guardar la imagen en el álbum de fotos en el dispositivo después de su captura. *(Booleano)*
  124. * **popoverOptions**: opciones sólo iOS que especifican popover ubicación en iPad. Definido en`CameraPopoverOptions`.
  125. * **cameraDirection**: elegir la cámara para usar (o parte posterior-frontal). El valor predeterminado es atrás. Definido en `navigator.camera.Direction` *(número)*
  126. Camera.Direction = {
  127. BACK : 0, // Use the back-facing camera
  128. FRONT : 1 // Use the front-facing camera
  129. };
  130. #### Amazon fuego OS rarezas
  131. * Cualquier valor de `cameraDirection` da como resultado una foto orientada hacia atrás.
  132. * Ignora el `allowEdit` parámetro.
  133. * `Camera.PictureSourceType.PHOTOLIBRARY` y `Camera.PictureSourceType.SAVEDPHOTOALBUM` Mostrar el mismo álbum de fotos.
  134. #### Rarezas Android
  135. * Cualquier valor de `cameraDirection` da como resultado una foto orientada hacia atrás.
  136. * Android también utiliza la actividad de cultivo de allowEdit, aunque cultivo debe trabajar y realmente pasar la imagen recortada a Córdoba, el único que funciona constantemente es el integrado con la aplicación de Google Plus fotos. Otros cultivos pueden no funcionar.
  137. * `Camera.PictureSourceType.PHOTOLIBRARY` y `Camera.PictureSourceType.SAVEDPHOTOALBUM` Mostrar el mismo álbum de fotos.
  138. #### BlackBerry 10 rarezas
  139. * Ignora el `quality` parámetro.
  140. * Ignora el `allowEdit` parámetro.
  141. * `Camera.MediaType`No se admite.
  142. * Ignora el `correctOrientation` parámetro.
  143. * Ignora el `cameraDirection` parámetro.
  144. #### Firefox OS rarezas
  145. * Ignora el `quality` parámetro.
  146. * `Camera.DestinationType`se ignora y es igual a `1` (URI del archivo de imagen)
  147. * Ignora el `allowEdit` parámetro.
  148. * Ignora el `PictureSourceType` parámetro (el usuario lo elige en una ventana de diálogo)
  149. * Ignora el`encodingType`
  150. * Ignora el `targetWidth` y`targetHeight`
  151. * `Camera.MediaType`No se admite.
  152. * Ignora el `correctOrientation` parámetro.
  153. * Ignora el `cameraDirection` parámetro.
  154. #### iOS rarezas
  155. * Establecer `quality` por debajo de 50 para evitar errores de memoria en algunos dispositivos.
  156. * Cuando se utiliza `destinationType.FILE_URI` , fotos se guardan en el directorio temporal de la aplicación. El contenido del directorio temporal de la aplicación se eliminará cuando finalice la aplicación.
  157. #### Rarezas Tizen
  158. * opciones no compatibles
  159. * siempre devuelve un identificador URI de archivo
  160. #### Windows Phone 7 y 8 rarezas
  161. * Ignora el `allowEdit` parámetro.
  162. * Ignora el `correctOrientation` parámetro.
  163. * Ignora el `cameraDirection` parámetro.
  164. * Ignora el `saveToPhotoAlbum` parámetro. IMPORTANTE: Todas las imágenes tomadas con la cámara wp7/8 cordova API siempre se copian en rollo de cámara del teléfono. Dependiendo de la configuración del usuario, esto podría significar también que la imagen es auto-subido a su OneDrive. Esto potencialmente podría significar que la imagen está disponible a una audiencia más amplia que su aplicación previsto. Si un bloqueador para su aplicación, usted necesitará aplicar el CameraCaptureTask como se documenta en msdn: <http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh394006.aspx> también puede comentar o votar hasta el tema relacionado en el [issue tracker de](https://issues.apache.org/jira/browse/CB-2083)
  165. * Ignora el `mediaType` propiedad de `cameraOptions` como el SDK de Windows Phone no proporciona una manera para elegir vídeos fototeca.
  166. ## CameraError
  167. onError función callback que proporciona un mensaje de error.
  168. function(message) {
  169. // Show a helpful message
  170. }
  171. #### Descripción
  172. * **mensaje**: el mensaje es proporcionado por código nativo del dispositivo. *(String)*
  173. ## cameraSuccess
  174. onSuccess función callback que proporciona los datos de imagen.
  175. function(imageData) {
  176. // Do something with the image
  177. }
  178. #### Descripción
  179. * **imageData**: codificación en Base64 de los datos de imagen, *o* el archivo de imagen URI, dependiendo de `cameraOptions` en vigor. *(String)*
  180. #### Ejemplo
  181. // Show image
  182. //
  183. function cameraCallback(imageData) {
  184. var image = document.getElementById('myImage');
  185. image.src = "data:image/jpeg;base64," + imageData;
  186. }
  187. ## CameraPopoverHandle
  188. Un identificador para el cuadro de diálogo popover creado por`navigator.camera.getPicture`.
  189. #### Descripción
  190. * **setPosition**: Set the position of the popover. Takes the `CameraPopoverOptions` that specify the new position.
  191. #### Plataformas soportadas
  192. ![](doc/img/android-fail.png) ![](doc/img/blackberry-fail.png) ![](doc/img/browser-fail.png) ![](doc/img/firefox-fail.png) ![](doc/img/fireos-fail.png) ![](doc/img/ios-success.png) ![](doc/img/windows-fail.png) ![](doc/img/wp8-fail.png) ![](doc/img/ubuntu-fail.png)
  193. #### Ejemplo
  194. var cameraPopoverHandle = navigator.camera.getPicture(onSuccess, onFail,
  195. { destinationType: Camera.DestinationType.FILE_URI,
  196. sourceType: Camera.PictureSourceType.PHOTOLIBRARY,
  197. popoverOptions: new CameraPopoverOptions(300, 300, 100, 100, Camera.PopoverArrowDirection.ARROW_ANY)
  198. });
  199. // Reposition the popover if the orientation changes.
  200. window.onorientationchange = function() {
  201. var cameraPopoverOptions = new CameraPopoverOptions(0, 0, 100, 100, Camera.PopoverArrowDirection.ARROW_ANY);
  202. cameraPopoverHandle.setPosition(cameraPopoverOptions);
  203. }
  204. ## CameraPopoverOptions
  205. Sólo iOS parámetros que especifican la dirección ancla elemento ubicación y la flecha de la popover al seleccionar imágenes de biblioteca o álbum de un iPad.
  206. { x : 0,
  207. y : 32,
  208. width : 320,
  209. height : 480,
  210. arrowDir : Camera.PopoverArrowDirection.ARROW_ANY
  211. };
  212. #### Descripción
  213. * **x**: coordenadas de píxeles del elemento de la pantalla en la que anclar el popover x. *(Número)*
  214. * **y**: coordenada píxeles del elemento de la pantalla en la que anclar el popover. *(Número)*
  215. * **anchura**: anchura, en píxeles, del elemento sobre el que anclar el popover pantalla. *(Número)*
  216. * **altura**: alto, en píxeles, del elemento sobre el que anclar el popover pantalla. *(Número)*
  217. * **arrowDir**: dirección de la flecha en el popover debe apuntar. Definido en `Camera.PopoverArrowDirection` *(número)*
  218. Camera.PopoverArrowDirection = {
  219. ARROW_UP : 1, // matches iOS UIPopoverArrowDirection constants
  220. ARROW_DOWN : 2,
  221. ARROW_LEFT : 4,
  222. ARROW_RIGHT : 8,
  223. ARROW_ANY : 15
  224. };
  225. Tenga en cuenta que puede cambiar el tamaño de la popover para ajustar la dirección de la flecha y orientación de la pantalla. Asegúrese de que para tener en cuenta los cambios de orientación cuando se especifica la ubicación del elemento de anclaje.
  226. ## Navigator.Camera.Cleanup
  227. Elimina intermedio fotos tomadas por la cámara de almacenamiento temporal.
  228. Navigator.Camera.cleanup (cameraSuccess, cameraError);
  229. #### Descripción
  230. Elimina intermedio archivos de imagen que se mantienen en depósito temporal después de llamar `camera.getPicture` . Se aplica sólo cuando el valor de `Camera.sourceType` es igual a `Camera.PictureSourceType.CAMERA` y el `Camera.destinationType` es igual a`Camera.DestinationType.FILE_URI`.
  231. #### Plataformas soportadas
  232. ![](doc/img/android-fail.png) ![](doc/img/blackberry-fail.png) ![](doc/img/browser-fail.png) ![](doc/img/firefox-fail.png) ![](doc/img/fireos-fail.png) ![](doc/img/ios-success.png) ![](doc/img/windows-fail.png) ![](doc/img/wp8-fail.png) ![](doc/img/ubuntu-fail.png)
  233. #### Ejemplo
  234. navigator.camera.cleanup(onSuccess, onFail);
  235. function onSuccess() {
  236. console.log("Camera cleanup success.")
  237. }
  238. function onFail(message) {
  239. alert('Failed because: ' + message);
  240. }