arnaucube
arnaucube/openEventsPlatformAppPublic Self-hosted repository
openEventsPlatformApp/plugins/cordova-plugin-camera/doc/zh/index.md
plugins/cordova-plugin-camera/doc/zh/index.mdRaw
  1<!---
  2    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
 20# cordova-plugin-camera
 21
 22這個外掛程式定義了一個全球 `navigator.camera` 物件,它提供了 API,拍照,從系統的圖像庫中選擇圖像。
 23
 24雖然該物件附加到全球範圍內 `導航器`,它不可用直到 `deviceready` 事件之後。
 25
 26    document.addEventListener("deviceready", onDeviceReady, false);
 27    function onDeviceReady() {
 28        console.log(navigator.camera);
 29    }
 30    
 31
 32## 安裝
 33
 34    cordova plugin add cordova-plugin-camera
 35    
 36
 37## navigator.camera.getPicture
 38
 39需要一張照片,使用相機,或從設備的圖像庫檢索一張照片。 圖像被傳遞給成功回檔的 base64 編碼 `String`,或作為 URI 為影像檔。 該方法本身返回一個 `CameraPopoverHandle` 物件,它可以用來重新置放檔選擇氣泡框。
 40
 41    navigator.camera.getPicture( cameraSuccess, cameraError, cameraOptions );
 42    
 43
 44### 說明
 45
 46`camera.getPicture` 函數打開該設備的預設攝像頭應用程式,允許使用者拍照。 `Camera.sourceType` 等於 `Camera.PictureSourceType.CAMERA` 時,預設情況下,發生此行為。 一旦使用者打斷了他的照片,相機應用程式關閉,且應用程式還原。
 47
 48如果 `Camera.sourceType` 是 `Camera.PictureSourceType.PHOTOLIBRARY` 或 `Camera.PictureSourceType.SAVEDPHOTOALBUM`,然後顯示一個對話方塊,允許使用者選擇一個現有的圖像。 `camera.getPicture` 函數返回一個 `CameraPopoverHandle` 物件,它可以用於重新置放圖像選擇的對話方塊,例如,當設備的方向變化。
 49
 50傳回值是發送到 `cameraSuccess` 回呼函數中,在以下的格式,具體取決於指定的 `cameraOptions` 之一:
 51
 52*   A `String` 包含的 base64 編碼的照片圖像。
 53
 54*   A `String` 表示在本機存放區 (預設值) 上的影像檔位置。
 55
 56你可以做任何你想要的編碼的圖像或 URI,例如:
 57
 58*   呈現在圖像 `<img>` 標記,如下面的示例所示
 59
 60*   保存本地的資料 ( `LocalStorage` , [Lawnchair][1],等等.)
 61
 62*   將資料發佈到遠端伺服器
 63
 64 [1]: http://brianleroux.github.com/lawnchair/
 65
 66**注**: 在更新設備上的照片解析度是很好。 選擇從設備的庫的照片是不壓縮螢幕使其以較低的品質,即使指定了一個 `quality` 參數。 要避免常見的記憶體問題,請將 `Camera.destinationType` 設置為 `FILE_URI`,而不是 `DATA_URL`.
 67
 68### 支援的平臺
 69
 70*   亞馬遜火 OS
 71*   Android 系統
 72*   黑莓 10
 73*   瀏覽器
 74*   火狐瀏覽器的作業系統
 75*   iOS
 76*   泰
 77*   Windows Phone 7 和 8
 78*   Windows 8
 79
 80### 首選項 (iOS)
 81
 82*   **CameraUsesGeolocation**(布林值,預設值為 false)。 用於捕獲 jpeg 檔,設置為 true,以在 EXIF 頭資訊中獲取地理定位資料。 這將觸發請求的地理位置的許可權,如果設置為 true。
 83    
 84        <preference name="CameraUsesGeolocation" value="false" />
 85        
 86
 87### 亞馬遜火 OS 怪癖
 88
 89亞馬遜火 OS 使用意圖啟動相機活動設備來捕捉圖像上, 和手機上記憶體不足,科爾多瓦活動可能被殺害。 在這種情況下,可能不會顯示圖像時恢復了科爾多瓦活動。
 90
 91### Android 的怪癖
 92
 93Android 使用意圖以啟動相機活動設備來捕捉圖像上, 和手機上記憶體不足,科爾多瓦活動可能被殺害。 在這種情況下,可能不會顯示圖像時恢復了科爾多瓦活動。
 94
 95### 瀏覽器的怪癖
 96
 97可以只返回照片作為 base64 編碼的圖像。
 98
 99### 火狐瀏覽器作業系統的怪癖
100
101觀景窗外掛程式目前實施使用 [Web 活動][2].
102
103 [2]: https://hacks.mozilla.org/2013/01/introducing-web-activities/
104
105### iOS 的怪癖
106
107包括 JavaScript `alert ()` 中的回呼函數會導致問題。 包裝內 `setTimeout()` 允許 iOS 圖像選取器或氣泡框以完全關閉之前,警報將顯示警報:
108
109    setTimeout(function() {
110        // do your thing here!
111    }, 0);
112    
113
114### Windows Phone 7 的怪癖
115
116調用本機攝像頭應用程式,而通過 Zune 所連接的設備不能工作,並且觸發錯誤回檔。
117
118### 泰怪癖
119
120泰只支援 `destinationType` 的 `Camera.DestinationType.FILE_URI` 和 `Camera.PictureSourceType.PHOTOLIBRARY` 的 `sourceType`.
121
122### 示例
123
124拍一張照片,並檢索它作為一個 base64 編碼的圖像:
125
126    navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
127        destinationType: Camera.DestinationType.DATA_URL
128    });
129    
130    function onSuccess(imageData) {
131        var image = document.getElementById('myImage');
132        image.src = "data:image/jpeg;base64," + imageData;
133    }
134    
135    function onFail(message) {
136        alert('Failed because: ' + message);
137    }
138    
139
140拍一張照片和檢索圖像的檔位置:
141
142    navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
143        destinationType: Camera.DestinationType.FILE_URI });
144    
145    function onSuccess(imageURI) {
146        var image = document.getElementById('myImage');
147        image.src = imageURI;
148    }
149    
150    function onFail(message) {
151        alert('Failed because: ' + message);
152    }
153    
154
155## CameraOptions
156
157要自訂相機設置的可選參數。
158
159    { quality : 75,
160      destinationType : Camera.DestinationType.DATA_URL,
161      sourceType : Camera.PictureSourceType.CAMERA,
162      allowEdit : true,
163      encodingType: Camera.EncodingType.JPEG,
164      targetWidth: 100,
165      targetHeight: 100,
166      popoverOptions: CameraPopoverOptions,
167      saveToPhotoAlbum: false };
168    
169
170### 選項
171
172*   **品質**: 保存的圖像,表示為範圍 0-100,100,是通常全解析度,無損失從檔案壓縮的品質。 預設值為 50。 *(人數)*(請注意相機的解析度有關的資訊是不可用)。
173
174*   **可**: 選擇傳回值的格式。預設值是 FILE_URI。定義在 `navigator.camera.DestinationType` *(人數)*
175    
176        Camera.DestinationType = {
177            DATA_URL : 0,      // Return image as base64-encoded string
178            FILE_URI : 1,      // Return image file URI
179            NATIVE_URI : 2     // Return image native URI (e.g., assets-library:// on iOS or content:// on Android)
180        };
181        
182
183*   **時**: 設置圖片的來源。預設值是觀景窗。定義在 `navigator.camera.PictureSourceType` *(人數)*
184    
185        Camera.PictureSourceType = {
186            PHOTOLIBRARY : 0,
187            CAMERA : 1,
188            SAVEDPHOTOALBUM : 2
189        };
190        
191
192*   **allowEdit**: 允許簡單編輯前選擇圖像。*(布林)*
193
194*   **encodingType**: 選擇返回的影像檔的編碼。預設值為 JPEG。定義在 `navigator.camera.EncodingType` *(人數)*
195    
196        Camera.EncodingType = {
197            JPEG : 0,               // Return JPEG encoded image
198            PNG : 1                 // Return PNG encoded image
199        };
200        
201
202*   **targetWidth**: 向尺度圖像的圖元寬度。必須用**targetHeight**。縱橫比保持不變。*(人數)*
203
204*   **targetHeight**: 以圖元為單位向尺度圖像的高度。必須用**targetWidth**。縱橫比保持不變。*(人數)*
205
206*   **媒體類型**: 設置的媒體,從選擇類型。 時才起作用 `PictureSourceType` 是 `PHOTOLIBRARY` 或 `SAVEDPHOTOALBUM` 。 定義在 `nagivator.camera.MediaType` *(人數)*
207    
208        Camera.MediaType = {
209            PICTURE: 0,    // allow selection of still pictures only. 預設情況。 Will return format specified via DestinationType
210            VIDEO: 1,      // allow selection of video only, WILL ALWAYS RETURN FILE_URI
211            ALLMEDIA : 2   // allow selection from all media types
212        };
213        
214
215*   **correctOrientation**: 旋轉圖像,該設備時捕獲的定向的正確。*(布林)*
216
217*   **saveToPhotoAlbum**: 將圖像保存到相冊在設備上捕獲後。*(布林)*
218
219*   **popoverOptions**: 只有 iOS 在 iPad 中指定氣泡框位置的選項。在中定義`CameraPopoverOptions`.
220
221*   **cameraDirection**: 選擇相機以使用 (前面或後面-面向)。預設值是背。定義在 `navigator.camera.Direction` *(人數)*
222    
223        Camera.Direction = {
224            BACK : 0,      // Use the back-facing camera
225            FRONT : 1      // Use the front-facing camera
226        };
227        
228
229### 亞馬遜火 OS 怪癖
230
231*   任何 `cameraDirection` 值回朝的照片中的結果。
232
233*   忽略 `allowEdit` 參數。
234
235*   `Camera.PictureSourceType.PHOTOLIBRARY`和 `Camera.PictureSourceType.SAVEDPHOTOALBUM` 都顯示相同的相冊。
236
237### Android 的怪癖
238
239*   任何 `cameraDirection` 值結果在背面的照片。
240
241*   忽略 `allowEdit` 參數。
242
243*   `Camera.PictureSourceType.PHOTOLIBRARY`和 `Camera.PictureSourceType.SAVEDPHOTOALBUM` 都顯示相同的寫真集。
244
245### 黑莓 10 的怪癖
246
247*   忽略 `quality` 參數。
248
249*   忽略 `allowEdit` 參數。
250
251*   `Camera.MediaType`不受支援。
252
253*   忽略 `correctOrientation` 參數。
254
255*   忽略 `cameraDirection` 參數。
256
257### 火狐瀏覽器作業系統的怪癖
258
259*   忽略 `quality` 參數。
260
261*   `Camera.DestinationType`將被忽略並且等於 `1` (影像檔的 URI)
262
263*   忽略 `allowEdit` 參數。
264
265*   忽略 `PictureSourceType` 參數 (使用者選擇它在對話方塊視窗中)
266
267*   忽略`encodingType`
268
269*   忽略了 `targetWidth` 和`targetHeight`
270
271*   `Camera.MediaType`不受支援。
272
273*   忽略 `correctOrientation` 參數。
274
275*   忽略 `cameraDirection` 參數。
276
277### iOS 的怪癖
278
279*   設置 `quality` 低於 50,避免在某些設備上的記憶體不足錯誤。
280
281*   當使用 `destinationType.FILE_URI` ,照片都保存在應用程式的臨時目錄。應用程式結束時,將刪除該應用程式的臨時目錄中的內容。
282
283### 泰怪癖
284
285*   不支援的選項
286
287*   總是返回一個檔的 URI
288
289### Windows Phone 7 和 8 的怪癖
290
291*   忽略 `allowEdit` 參數。
292
293*   忽略 `correctOrientation` 參數。
294
295*   忽略 `cameraDirection` 參數。
296
297*   忽略 `saveToPhotoAlbum` 參數。 重要: 使用 wp7/8 科爾多瓦攝像頭 API 拍攝的所有圖像總是都複製到手機的相機膠捲。 根據使用者的設置,這可能也意味著圖像是自動上傳到他們另。 這有可能意味著的圖像,可以比你的應用程式的目的更多的觀眾。 如果此阻滯劑您的應用程式,您將需要實現 CameraCaptureTask 在 msdn 上記載: [HTTP://msdn.microsoft.com/en-us/library/windowsphone/develop/hh394006.aspx][3]你可能還評論或在[問題追蹤器][4]的向上投票的相關的問題
298
299*   忽略了 `mediaType` 屬性的 `cameraOptions` 作為 Windows Phone SDK 並不提供從 PHOTOLIBRARY 中選擇視頻的方法。
300
301 [3]: http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh394006.aspx
302 [4]: https://issues.apache.org/jira/browse/CB-2083
303
304## CameraError
305
306onError 的回呼函數提供了一條錯誤訊息。
307
308    function(message) {
309        // Show a helpful message
310    }
311    
312
313### 參數
314
315*   **message**: 消息提供的設備的本機代碼。*(String)*
316
317## cameraSuccess
318
319提供的圖像資料的 onSuccess 回呼函數。
320
321    function(imageData) {
322        // Do something with the image
323    }
324    
325
326### 參數
327
328*   **imageData**: Base64 編碼進行編碼的圖像資料,*或*影像檔的 URI,取決於 `cameraOptions` 效果。*(String)*
329
330### 示例
331
332    // Show image
333    //
334    function cameraCallback(imageData) {
335        var image = document.getElementById('myImage');
336        image.src = "data:image/jpeg;base64," + imageData;
337    }
338    
339
340## CameraPopoverHandle
341
342由 `navigator.camera.getPicture` 創建的氣泡框對話方塊的控制碼.
343
344### 方法
345
346*   **setPosition**: 設置氣泡框的位置。
347
348### 支援的平臺
349
350*   iOS
351
352### setPosition
353
354設置氣泡框的位置。
355
356**參數**:
357
358*   `cameraPopoverOptions`: `CameraPopoverOptions` ,指定新的位置
359
360### 示例
361
362     var cameraPopoverHandle = navigator.camera.getPicture(onSuccess, onFail,
363         { destinationType: Camera.DestinationType.FILE_URI,
364           sourceType: Camera.PictureSourceType.PHOTOLIBRARY,
365           popoverOptions: new CameraPopoverOptions(300, 300, 100, 100, Camera.PopoverArrowDirection.ARROW_ANY)
366         });
367    
368     // Reposition the popover if the orientation changes.
369     window.onorientationchange = function() {
370         var cameraPopoverOptions = new CameraPopoverOptions(0, 0, 100, 100, Camera.PopoverArrowDirection.ARROW_ANY);
371         cameraPopoverHandle.setPosition(cameraPopoverOptions);
372     }
373    
374
375## CameraPopoverOptions
376
377iOS 僅指定氣泡框的錨元素的位置和箭頭方向,從 iPad 庫或專輯選擇圖像時的參數。
378
379    { x : 0,
380      y :  32,
381      width : 320,
382      height : 480,
383      arrowDir : Camera.PopoverArrowDirection.ARROW_ANY
384    };
385    
386
387### CameraPopoverOptions
388
389*   **x**: x 螢幕元素到其錨定氣泡框上的圖元座標。*(人數)*
390
391*   **y**: 螢幕元素到其錨定氣泡框上的 y 圖元座標。*(人數)*
392
393*   **width**: 寬度以圖元為單位),到其錨定氣泡框上的螢幕元素。*(人數)*
394
395*   **height**: 高度以圖元為單位),到其錨定氣泡框上的螢幕元素。*(人數)*
396
397*   **arrowDir**: 氣泡框上的箭頭應指向的方向。定義在 `Camera.PopoverArrowDirection` *(人數)*
398    
399            Camera.PopoverArrowDirection = {
400                ARROW_UP : 1,        // matches iOS UIPopoverArrowDirection constants
401                ARROW_DOWN : 2,
402                ARROW_LEFT : 4,
403                ARROW_RIGHT : 8,
404                ARROW_ANY : 15
405            };
406        
407
408請注意氣泡框的大小可能會更改箭頭的方向和螢幕的方向進行調整。 請確保帳戶方向更改時指定錨元素位置。
409
410## navigator.camera.cleanup
411
412刪除中間從臨時存儲攝像機所拍攝的照片。
413
414    navigator.camera.cleanup( cameraSuccess, cameraError );
415    
416
417### 描述
418
419刪除保留在臨時存儲在調用 `camera.getPicture` 後的中間的影像檔。 適用只有當 `Camera.sourceType` 的值等於 `Camera.PictureSourceType.CAMERA` 和 `Camera.destinationType` 等於 `Camera.DestinationType.FILE_URI`.
420
421### 支援的平臺
422
423*   iOS
424
425### 示例
426
427    navigator.camera.cleanup(onSuccess, onFail);
428    
429    function onSuccess() {
430        console.log("Camera cleanup success.")
431    }
432    
433    function onFail(message) {
434        alert('Failed because: ' + message);
435    }