我必須將phoneGap攝像頭api和sencha touch相結合。phoneGap攝像頭和sencha觸摸視圖
我已經創建了一個視圖CameraView
和控制器Camera
,但我不知道如何在我的視圖中顯示攝像頭捕獲的圖像。這一個
var myImage = document.Ext.getCmp('myImage');
:
// JavaScript Document
LoginForm.views.CameraView = Ext.extend(Ext.form.FormPanel,
{
id:'CameraView',
title: "CameraView",
html:'<img height=200 width=200 id="myImage"/>',
initComponent: function()
{
Ext.apply(this,
{
bodyStyle:'background-color:#fff;padding: 10px',
dockedItems:
[{
dock:'bottom',
xtype: "toolbar",
id:"loginToolbar",
title: "Login",
items:[{ xtype:'button',cls:'x-backButton', ui:'back',text:'Back',cls:'x-button-back',handler:this.backButton,scope:this},{xtype:'spacer'},
{ xtype:'button' ,cls:'x-cameraButtonBlack',ui:'normal',handler:this.onCameraClicked,scope:this }
]
}],
});
LoginForm.views.CameraView.superclass.initComponent.apply(this, arguments);
},
onCameraClicked:function()
{
console.log("inside oncameracliked");
Ext.dispatch({ controller: 'Camera',action: 'capturePhoto'});
}
});
Ext.reg('CameraView', LoginForm.views.CameraView);
// JavaScript Document
Ext.regController('Camera', {
onBodyLoad:function()
{
document.addEventListener("deviceready",onDeviceReady,false);
},
/* When this function is called, PhoneGap has been initialized and is ready to roll */
onDeviceReady: function()
{
phoneGapReady.innerHTML = "PhoneGap is Ready";
},
// Called when a photo is successfully retrieved
//
onPhotoDataSuccess:function(imageData) {
// Uncomment to view the base64 encoded image data
// console.log(imageData);
// Get image handle
//
var myImage = document.Ext.getCmp('myImage');
// Unhide image elements
//
myImage.style.display = 'block';
// Show the captured photo
// The inline CSS rules are used to resize the image
//
myImage.src = "data:image/jpeg;base64," + imageData;
},
onPhotoURISuccess:function(imageURI) {
// Uncomment to view the image file URI
// console.log(imageURI);
// Get image handle
//
var myImage = document.Ext.getCmp('myImage');
// Unhide image elements
//
myImage.style.display = 'block';
// Show the captured photo
// The inline CSS rules are used to resize the image
//
myImage.src = imageURI;
return(myImage.src);
},
// A button will call this function
//
capturePhoto: function() {
console.log("inside capture photo");
// Take picture using device camera and retrieve image as base64-encoded string
try {
console.log("inside try capture photo");
var pictureSource=navigator.camera.PictureSourceType;
var destinationType=navigator.camera.DestinationType;
navigator.camera.getPicture(this.onPhotoURISuccess, onFail, { quality: 50,
destinationType: destinationType.FILE_URI });
}
catch (err)
{
alert(err);
}
},
onFail: function (message) {
alert('Failed: ' + message);
},
backButton:function()
{
}
});