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.

420 lines
17 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. Ten plugin definiuje obiekt globalny `navigator.camera`, który dostarcza API do robienia zdjęć i wybór zdjęć z biblioteki obrazów systemu.
  22. Mimo, że obiekt jest dołączony do globalnego zakresu `navigator`, to nie dostępne dopiero po zdarzeniu `deviceready`.
  23. document.addEventListener("deviceready", onDeviceReady, false);
  24. function onDeviceReady() {
  25. console.log(navigator.camera);
  26. }
  27. ## Instalacja
  28. cordova plugin add cordova-plugin-camera
  29. ## API
  30. * Aparat
  31. * navigator.camera.getPicture(success, fail, options)
  32. * CameraOptions
  33. * CameraPopoverHandle
  34. * CameraPopoverOptions
  35. * navigator.camera.cleanup
  36. ## navigator.camera.getPicture
  37. Ma zdjęcia za pomocą aparatu, lub pobiera zdjęcia z urządzenia Galeria zdjęć. Obraz jest przekazywany do wywołania zwrotnego sukces jako kodowane algorytmem base64 `ciąg`, lub identyfikator URI dla pliku obrazu. Sama metoda zwraca obiekt `CameraPopoverHandle`, który może służyć do zmiany położenia pliku wyboru popover.
  38. navigator.camera.getPicture(cameraSuccess, cameraError, cameraOptions);
  39. #### Opis
  40. Funkcja `camera.getPicture` otwiera urządzenia domyślnej aplikacji aparat fotograficzny ów pozwala użytkownik wobec chwycić zębami kino. To zachowanie występuje domyślnie, gdy `Camera.sourceType` jest równa `Camera.PictureSourceType.CAMERA`. Gdy użytkownik zaskoczy zdjęcie, ten aparat fotograficzny applicationâ zamyka i aplikacji jest przywracany.
  41. Jeśli `Camera.sourceType` jest równe `Camera.PictureSourceType.PHOTOLIBRARY` lub `Camera.PictureSourceType.SAVEDPHOTOALBUM`, wtedy zostanie wyświetlone okno dialogowe pozwalające użytkownikowi na wybór istniejącego obrazu. Funkcja `camera.getPicture` zwraca obiekt `CameraPopoverHandle`, który obsługuje zmianę położenia okna wyboru obrazu, np. po zmianie orientacji urządzenia.
  42. Zwracana wartość jest wysyłany do funkcji wywołania zwrotnego `cameraSuccess`, w jednym z następujących formatów, w zależności od określonego `cameraOptions`:
  43. * `String` zawierający obraz zakodowany przy pomocy base64.
  44. * `String` reprezentujący lokalizację pliku obrazu w lokalnym magazynie (domyślnie).
  45. Może rób, co chcesz z zakodowany obraz lub identyfikatora URI, na przykład:
  46. * Przedstawić obraz w tagu `<img>`, jak w przykładzie poniżej
  47. * Zapisać lokalnie dane (`LocalStorage`, [Lawnchair](http://brianleroux.github.com/lawnchair/), etc.)
  48. * Wysłać dane na zdalny serwer
  49. **Uwaga**: zdjęcie rozdzielczości na nowsze urządzenia jest bardzo dobry. Zdjęcia wybrane z galerii urządzenia są nie przeskalowanych w dół do niższej jakości, nawet jeśli określono parametr `quality`. Aby uniknąć typowych problemów z pamięci, zestaw `Camera.destinationType` `FILE_URI` zamiast `DATA_URL`.
  50. #### Obsługiwane platformy
  51. ![](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)
  52. #### Przykład
  53. Zrób zdjęcie i pobrać go jako kodowane algorytmem base64 obrazu:
  54. navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
  55. destinationType: Camera.DestinationType.DATA_URL
  56. });
  57. function onSuccess(imageData) {
  58. var image = document.getElementById('myImage');
  59. image.src = "data:image/jpeg;base64," + imageData;
  60. }
  61. function onFail(message) {
  62. alert('Failed because: ' + message);
  63. }
  64. Zrób zdjęcie i pobrać lokalizacji pliku obrazu:
  65. navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
  66. destinationType: Camera.DestinationType.FILE_URI });
  67. function onSuccess(imageURI) {
  68. var image = document.getElementById('myImage');
  69. image.src = imageURI;
  70. }
  71. function onFail(message) {
  72. alert('Failed because: ' + message);
  73. }
  74. #### Preferencje (iOS)
  75. * **CameraUsesGeolocation** (boolean, wartość domyślna to false). Do przechwytywania JPEG, zestaw do true, aby uzyskać danych geolokalizacyjnych w nagłówku EXIF. To spowoduje wniosek o geolokalizacji uprawnienia, jeśli zestaw na wartość true.
  76. <preference name="CameraUsesGeolocation" value="false" />
  77. #### Amazon ogień OS dziwactwa
  78. Amazon ogień OS używa intencje do rozpoczęcia działalności aparatu na urządzenie do przechwytywania obrazów, i na telefony z pamięci, Cordova aktywność może zostać zabity. W tym scenariuszu obraz mogą nie być wyświetlane po przywróceniu aktywności cordova.
  79. #### Dziwactwa Androida
  80. Android używa intencje do rozpoczęcia działalności aparatu na urządzenie do przechwytywania obrazów, i na telefony z pamięci, Cordova aktywność może zostać zabity. W tym scenariuszu obraz mogą nie być wyświetlane po przywróceniu aktywności Cordova.
  81. #### Quirks przeglądarki
  82. Może zwracać tylko zdjęcia jako obraz w formacie algorytmem base64.
  83. #### Firefox OS dziwactwa
  84. Aparat plugin jest obecnie implementowane za pomocą [Działania sieci Web](https://hacks.mozilla.org/2013/01/introducing-web-activities/).
  85. #### Dziwactwa iOS
  86. W jednej z funkcji wywołania zwrotnego w tym JavaScript `alert()` może powodować problemy. Owinąć w `setTimeout()` umożliwia wybór obrazu iOS lub popover całkowicie zamknąć zanim wyświetli alert alert:
  87. setTimeout(function() {
  88. // do your thing here!
  89. }, 0);
  90. #### Dziwactwa Windows Phone 7
  91. Wywoływanie aparat native aplikacji, podczas gdy urządzenie jest podłączone przez Zune nie działa i powoduje błąd wywołania zwrotnego.
  92. #### Dziwactwa Tizen
  93. Tizen obsługuje tylko `destinationType` z `Camera.DestinationType.FILE_URI` i `sourceType` z `Camera.PictureSourceType.PHOTOLIBRARY`.
  94. ## CameraOptions
  95. Opcjonalne parametry, aby dostosować ustawienia aparatu.
  96. { quality : 75,
  97. destinationType : Camera.DestinationType.DATA_URL,
  98. sourceType : Camera.PictureSourceType.CAMERA,
  99. allowEdit : true,
  100. encodingType: Camera.EncodingType.JPEG,
  101. targetWidth: 100,
  102. targetHeight: 100,
  103. popoverOptions: CameraPopoverOptions,
  104. saveToPhotoAlbum: false };
  105. * **quality**: Jakość zapisywanego obrazu, wyrażona w przedziale 0-100, gdzie 100 zazwyczaj jest maksymalną rozdzielczością bez strat w czasie kompresji pliku. Wartością domyślną jest 50. *(Liczba)* (Pamiętaj, że informacja o rozdzielczości aparatu jest niedostępna.)
  106. * **destinationType**: Wybierz format zwracanej wartości. Wartością domyślną jest FILE_URI. Zdefiniowane w `navigator.camera.DestinationType` *(numer)*
  107. Camera.DestinationType = {
  108. DATA_URL : 0, // Return image as base64-encoded string
  109. FILE_URI : 1, // Return image file URI
  110. NATIVE_URI : 2 // Return image native URI (e.g., assets-library:// on iOS or content:// on Android)
  111. };
  112. * **sourceType**: Ustaw źródło obrazu. Wartością domyślną jest aparat fotograficzny. Zdefiniowane w `navigator.camera.PictureSourceType` *(numer)*
  113. Camera.PictureSourceType = {
  114. PHOTOLIBRARY : 0,
  115. CAMERA : 1,
  116. SAVEDPHOTOALBUM : 2
  117. };
  118. * **allowEdit**: Pozwala na prostą edycję obrazu przed zaznaczeniem. *(Boolean)*
  119. * **encodingType**: Wybierz plik obrazu zwracany jest kodowanie. Domyślnie jest JPEG. Zdefiniowane w `navigator.camera.EncodingType` *(numer)*
  120. Camera.EncodingType = {
  121. JPEG : 0, // Return JPEG encoded image
  122. PNG : 1 // Return PNG encoded image
  123. };
  124. * **targetWidth**: Szerokość w pikselach skalowanego obrazu. Musi być użyte z **targetHeight**. Współczynnik proporcji pozostaje stały. *(Liczba)*
  125. * **targetHeight**: Wysokość w pikselach skalowanego obrazu. Musi być użyte z **targetWidth**. Współczynnik proporcji pozostaje stały. *(Liczba)*
  126. * **mediaType**: Ustawia typ nośnika, z którego będzie wybrany. Działa tylko wtedy, gdy `PictureSourceType` jest `PHOTOLIBRARY` lub `SAVEDPHOTOALBUM`. Zdefiniowane w `nagivator.camera.MediaType` *(Liczba)*
  127. Camera.MediaType = {
  128. PICTURE: 0, // allow selection of still pictures only. DEFAULT. Will return format specified via DestinationType
  129. VIDEO: 1, // allow selection of video only, WILL ALWAYS RETURN FILE_URI
  130. ALLMEDIA : 2 // allow selection from all media types
  131. };
  132. * **correctOrientation**: Obraca obraz aby skorygować orientację urządzenia podczas przechwytywania. *(Boolean)*
  133. * **saveToPhotoAlbum**: Po przechwyceniu zapisuje na urządzeniu obraz w albumie na zdjęcia. *(Boolean)*
  134. * **popoverOptions**: Opcja tylko dla platformy iOS, która określa położenie wyskakującego okna na iPadzie. Zdefiniowane w `CameraPopoverOptions`.
  135. * **cameraDirection**: Wybierz aparat do korzystania (lub z powrotem przodem). Wartością domyślną jest z powrotem. Zdefiniowane w `navigator.camera.Direction` *(numer)*
  136. Camera.Direction = {
  137. BACK : 0, // Use the back-facing camera
  138. FRONT : 1 // Use the front-facing camera
  139. };
  140. #### Amazon ogień OS dziwactwa
  141. * Jakakolwiek wartość w `cameraDirection` skutkuje użyciem tylnej kamery.
  142. * Parametr `allowEdit` jest ignorowany.
  143. * Oba parametry `Camera.PictureSourceType.PHOTOLIBRARY` oraz `Camera.PictureSourceType.SAVEDPHOTOALBUM` wyświetlają ten sam album ze zdjęciami.
  144. #### Dziwactwa Androida
  145. * Jakakolwiek wartość w `cameraDirection` skutkuje użyciem tylnej kamery.
  146. * Android również używa aktywność upraw dla allowEdit, choć upraw powinien pracować i faktycznie przejść przycięte zdjęcie Wróć do Cordova, ten tylko jeden który działa konsekwentnie jest ten, wiązany z aplikacji Google Plus zdjęcia. Inne rośliny mogą nie działać.
  147. * Oba parametry `Camera.PictureSourceType.PHOTOLIBRARY` oraz `Camera.PictureSourceType.SAVEDPHOTOALBUM` wyświetlają ten sam album ze zdjęciami.
  148. #### Jeżyna 10 dziwactwa
  149. * Parametr `quality` jest ignorowany.
  150. * Parametr `allowEdit` jest ignorowany.
  151. * Nie jest wspierane `Camera.MediaType`.
  152. * Parametr `correctOrientation` jest ignorowany.
  153. * Parametr `cameraDirection` jest ignorowany.
  154. #### Firefox OS dziwactwa
  155. * Parametr `quality` jest ignorowany.
  156. * `Camera.DestinationType`jest ignorowane i jest równa `1` (plik obrazu URI)
  157. * Parametr `allowEdit` jest ignorowany.
  158. * Ignoruje `PictureSourceType` parametr (użytkownik wybiera go w oknie dialogowym)
  159. * Ignoruje`encodingType`
  160. * Ignoruje `targetWidth` i`targetHeight`
  161. * Nie jest wspierane `Camera.MediaType`.
  162. * Parametr `correctOrientation` jest ignorowany.
  163. * Parametr `cameraDirection` jest ignorowany.
  164. #### Dziwactwa iOS
  165. * Ustaw `quality` poniżej 50 aby uniknąć błędów pamięci na niektórych urządzeniach.
  166. * Podczas korzystania z `destinationType.FILE_URI` , zdjęcia są zapisywane w katalogu tymczasowego stosowania. Zawartość katalogu tymczasowego stosowania jest usuwany po zakończeniu aplikacji.
  167. #### Dziwactwa Tizen
  168. * opcje nie są obsługiwane
  169. * zawsze zwraca FILE URI
  170. #### Windows Phone 7 i 8 dziwactwa
  171. * Parametr `allowEdit` jest ignorowany.
  172. * Parametr `correctOrientation` jest ignorowany.
  173. * Parametr `cameraDirection` jest ignorowany.
  174. * Ignoruje `saveToPhotoAlbum` parametr. Ważne: Wszystkie zdjęcia zrobione aparatem wp7/8 cordova API są zawsze kopiowane do telefonu w kamerze. W zależności od ustawień użytkownika może to też oznaczać że obraz jest automatycznie przesłane do ich OneDrive. Potencjalnie może to oznaczać, że obraz jest dostępne dla szerszego grona odbiorców niż Twoja aplikacja przeznaczona. Jeśli ten bloker aplikacji, trzeba będzie wdrożenie CameraCaptureTask, opisane na msdn: <http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh394006.aspx> można także komentarz lub górę głosowanie powiązanych kwestii w [śledzenia błędów](https://issues.apache.org/jira/browse/CB-2083)
  175. * Ignoruje `mediaType` Właściwość `cameraOptions` jako SDK Windows Phone nie umożliwiają wybór filmów z PHOTOLIBRARY.
  176. ## CameraError
  177. funkcja wywołania zwrotnego PrzyBłędzie, która zawiera komunikat o błędzie.
  178. function(message) {
  179. // Show a helpful message
  180. }
  181. #### Opis
  182. * **message**: Natywny kod komunikatu zapewniany przez urządzenie. *(Ciąg znaków)*
  183. ## cameraSuccess
  184. onSuccess funkcji wywołania zwrotnego, który dostarcza dane obrazu.
  185. function(imageData) {
  186. // Do something with the image
  187. }
  188. #### Opis
  189. * **imageData**: Dane obrazu kodowane przy pomocy Base64 *lub* URI pliku obrazu, w zależności od użycia `cameraOptions`. *(Ciąg znaków)*
  190. #### Przykład
  191. // Show image
  192. //
  193. function cameraCallback(imageData) {
  194. var image = document.getElementById('myImage');
  195. image.src = "data:image/jpeg;base64," + imageData;
  196. }
  197. ## CameraPopoverHandle
  198. Uchwyt do okna dialogowego popover, stworzony przez `navigator.camera.getPicture`.
  199. #### Opis
  200. * **setPosition**: Set the position of the popover. Takes the `CameraPopoverOptions` that specify the new position.
  201. #### Obsługiwane platformy
  202. ![](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)
  203. #### Przykład
  204. var cameraPopoverHandle = navigator.camera.getPicture(onSuccess, onFail,
  205. { destinationType: Camera.DestinationType.FILE_URI,
  206. sourceType: Camera.PictureSourceType.PHOTOLIBRARY,
  207. popoverOptions: new CameraPopoverOptions(300, 300, 100, 100, Camera.PopoverArrowDirection.ARROW_ANY)
  208. });
  209. // Reposition the popover if the orientation changes.
  210. window.onorientationchange = function() {
  211. var cameraPopoverOptions = new CameraPopoverOptions(0, 0, 100, 100, Camera.PopoverArrowDirection.ARROW_ANY);
  212. cameraPopoverHandle.setPosition(cameraPopoverOptions);
  213. }
  214. ## CameraPopoverOptions
  215. tylko do iOS parametrami, które określić kotwicy element lokalizacji i strzałka kierunku popover, przy wyborze zdjęć z iPad biblioteki lub album.
  216. { x : 0,
  217. y : 32,
  218. width : 320,
  219. height : 480,
  220. arrowDir : Camera.PopoverArrowDirection.ARROW_ANY
  221. };
  222. #### Opis
  223. * **x**: współrzędna piksela x elementu ekranu, na którym zakotwiczone jest wyskakujące okno. *(Liczba)*
  224. * **y**: współrzędna piksela y elementu ekranu, na którym zakotwiczone jest wyskakujące okno. *(Liczba)*
  225. * **width**: szerokość w pikselach elementu ekranu, na którym zakotwiczone jest wyskakujące okno. *(Liczba)*
  226. * **height**: wysokość w pikselach elementu ekranu, na którym zakotwiczone jest wyskakujące okno. *(Liczba)*
  227. * **arrowDir**: Kierunek, który powinna wskazywać strzałka na wyskakującym oknie. Zdefiniowane w `Camera.PopoverArrowDirection` *(Liczba)*
  228. Camera.PopoverArrowDirection = {
  229. ARROW_UP : 1, // matches iOS UIPopoverArrowDirection constants
  230. ARROW_DOWN : 2,
  231. ARROW_LEFT : 4,
  232. ARROW_RIGHT : 8,
  233. ARROW_ANY : 15
  234. };
  235. Należy pamiętać, że rozmiar popover może zmienić aby zmienić kierunek strzałki i orientacji ekranu. Upewnij się uwzględnić zmiany orientacji podczas określania położenia elementu kotwicy.
  236. ## navigator.camera.cleanup
  237. Usuwa pośrednie zdjęcia zrobione przez aparat z czasowego składowania.
  238. navigator.camera.cleanup( cameraSuccess, cameraError );
  239. #### Opis
  240. Usuwa pliki obrazów pośrednich, które są przechowywane w pamięci tymczasowej po wywołaniu `camera.getPicture`. Ma zastosowanie tylko, gdy wartość `Camera.sourceType` jest równa `Camera.PictureSourceType.CAMERA` i `Camera.destinationType` jest równa `Camera.DestinationType.FILE_URI`.
  241. #### Obsługiwane platformy
  242. ![](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)
  243. #### Przykład
  244. navigator.camera.cleanup(onSuccess, onFail);
  245. function onSuccess() {
  246. console.log("Camera cleanup success.")
  247. }
  248. function onFail(message) {
  249. alert('Failed because: ' + message);
  250. }