You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by ag...@apache.org on 2013/01/18 18:21:42 UTC
spec commit: Add a manual test for .
Updated Branches:
refs/heads/master 09bfd9381 -> 28b89863a
Add a manual test for <input type=file>.
Tested it works on iOS6 and Android ICS
Project: http://git-wip-us.apache.org/repos/asf/cordova-mobile-spec/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-mobile-spec/commit/28b89863
Tree: http://git-wip-us.apache.org/repos/asf/cordova-mobile-spec/tree/28b89863
Diff: http://git-wip-us.apache.org/repos/asf/cordova-mobile-spec/diff/28b89863
Branch: refs/heads/master
Commit: 28b89863a42823191124886e8f4023804cb85e5e
Parents: 09bfd93
Author: Andrew Grieve <ag...@chromium.org>
Authored: Fri Jan 18 12:16:35 2013 -0500
Committer: Andrew Grieve <ag...@chromium.org>
Committed: Fri Jan 18 12:16:35 2013 -0500
----------------------------------------------------------------------
camera/index.html | 88 ++++++++++++++++++++++++++++++++++++++---------
1 files changed, 71 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-mobile-spec/blob/28b89863/camera/index.html
----------------------------------------------------------------------
diff --git a/camera/index.html b/camera/index.html
index aa44085..7a6a5f3 100644
--- a/camera/index.html
+++ b/camera/index.html
@@ -27,32 +27,37 @@
<meta http-equiv="Content-type" content="text/html; charset=utf-8"> <!-- ISO-8859-1 -->
<title>Cordova Mobile Spec</title>
<link rel="stylesheet" href="../master.css" type="text/css" media="screen" title="no title" charset="utf-8">
- <script type="text/javascript" charset="utf-8" src="../cordova.js"></script>
+ <script type="text/javascript" charset="utf-8" src="../cordova.js"></script>
+
-
<script type="text/javascript" charset="utf-8">
var deviceReady = false;
//-------------------------------------------------------------------------
- // Camera
+ // Camera
//-------------------------------------------------------------------------
+ function showPicture(url, callback) {
+ var img = document.getElementById('camera_image');
+ img.style.visibility = "visible";
+ img.style.display = "block";
+ img.src = url;
+ img.onloadend = callback;
+ }
+
/**
* Capture picture
*/
function getPicture() {
-
- //navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50,
+
+ //navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50,
// destinationType: Camera.DestinationType.FILE_URI, sourceType : Camera.PictureSourceType.CAMERA });
-
+
navigator.camera.getPicture(
function(data) {
- var img = document.getElementById('camera_image');
- img.style.visibility = "visible";
- img.style.display = "block";
//img.src = "data:image/jpeg;base64," + data;
- img.src = data;
+ showPicture(data);
document.getElementById('camera_status').innerHTML = "Success";
},
function(e) {
@@ -69,11 +74,7 @@
function getImageUsingFileUri() {
navigator.camera.getPicture(
function(data) {
- var img = document.getElementById('camera_image');
- img.style.visibility = "visible";
- img.style.display = "block";
- //img.src = "data:image/jpeg;base64," + data;
- img.src = data;
+ showPicture(data);
document.getElementById('camera_status').innerHTML = "Success";
},
function(e) {
@@ -105,6 +106,51 @@
Camera.DestinationType.NATIVE_URI, sourceType: Camera.PictureSourceType.PHOTOLIBRARY});
};
+ function testNativeFile(inputEl) {
+ // iOS 6 likes to dead-lock in the onchange context if you
+ // do any alerts or try to remote-debug.
+ window.setTimeout(function() {
+ testNativeFile2(inputEl);
+ }, 0);
+ }
+
+ function testNativeFile2(inputEl) {
+ if (!inputEl.value) {
+ alert('No file selected.');
+ return;
+ }
+ var file = inputEl.files[0];
+ if (!file) {
+ alert('Got value but no file.');
+ return;
+ }
+ var URLApi = window.URL || window.webkitURL;
+ var statusText = '';
+ if (URLApi) {
+ var blobURL = URLApi.createObjectURL(file);
+ if (blobURL) {
+ showPicture(blobURL, function() {
+ URLApi.revokeObjectURL(blobURL);
+ });
+ } else {
+ statusText = 'URL.createObjectURL returned null';
+ }
+ } else {
+ statusText = 'URL.createObjectURL() not supported.';
+ }
+ document.getElementById('camera_status').innerHTML = statusText;
+ var reader = new FileReader();
+ reader.onloadend = function() {
+ if (!reader.result) {
+ statusText += ' FileReader.readAsDataURL() failed';
+ } else {
+ statusText += ' DataURL size: ' + reader.result.length;
+ }
+ document.getElementById('camera_status').innerHTML = statusText;
+ };
+ reader.readAsDataURL(file);
+ }
+
/**
* Function called when page has finished loading.
*/
@@ -124,7 +170,7 @@
</head>
<body onload="init();" id="stage" class="theme">
-
+
<h1>Camera</h1>
<div id="info">
<b>Status:</b> <span id="camera_status"></span><br>
@@ -134,6 +180,14 @@
<div class="btn large" onclick="getPicture();">Take Picture</div>
<div class="btn large" onclick="getImageUsingFileUri();">Select Image Using File URI</div>
<div class="btn large" onclick="getImageInfoUsingNativeUri();">Select Image Using Native URI</div>
+ <h3>input type=file</h3>
+ <input type="file" onchange="testNativeFile(this)">
+ <h3>capture=camera</h3>
+ <input type="file" accept="image/*;capture=camera" onchange="testNativeFile(this)">
+ <h3>capture=camcorder</h3>
+ <input type="file" accept="video/*;capture=camcorder" onchange="testNativeFile(this)">
+ <h3>capture=microphone</h3>
+ <input type="file" accept="audio/*;capture=microphone" onchange="testNativeFile(this)">
<h2> </h2><div class="backBtn" onclick="backHome();">Back</div>
</body>
-</html>
+</html>