我正在尝试使用Sencha Touch 2.3.1和Cordova 3.4.1-0.1.0在应用中捕捉图片。 阅读文档(http://docs.sencha.com/touch/2.3.1/#!/api/Ext.device.Camera-method-capture)看起来非常简单,但我的体验非常奇怪。
首先,我创建一个Sencha Touch应用并在其中初始化Cordova
sencha app generate MyApp ./MyApp
cd ./MyApp
sencha cordova init
此时,当我尝试构建时,它可以在真实设备,Android模拟器甚至浏览器上正常工作。 然后,我更改了Main.js以添加捕获功能。
Ext.define('CameraTest.view.Main', {
extend: 'Ext.tab.Panel',
xtype: 'main',
requires: [
'Ext.TitleBar',
'Ext.device.*'
],
config: {
tabBarPosition: 'bottom',
items: [
{
title: 'Welcome',
iconCls: 'home',
styleHtmlContent: true,
scrollable: true,
items: {
docked: 'top',
xtype: 'titlebar',
title: 'Welcome to Sencha Touch 2'
},
html: [
"You've just generated a new Sencha Touch 2 project. What you're looking at right now is the ",
"contents of <a target='_blank' href=\"app/view/Main.js\">app/view/Main.js</a> - edit that file ",
"and refresh to change what's rendered here."
].join("")
},
{
title: 'Camera',
iconCls: 'action',
layout: {
type:"vbox",
pack:"center",
align:"center"
},
items: [
{
docked: 'top',
xtype: 'titlebar',
title: 'CameraTest'
},
{
xtype: 'panel',
html: '<img style="height: 200px; width: 200px;" src="http://placehold.it/200x200" />'
},
{
xtype: "button",
text: "Photo",
handler: function() {
function success(image_uri) {
var img = Ext.ComponentQuery.query("image")[0];
img.setSrc(image_uri);
}
function fail(message) {
Ext.Msg.alert("Failed: " + message);
}
Ext.device.Camera.capture({
sucess: success,
failure: fail,
quality: 50,
destination: 'data',
source: 'camera'
});
}
}
]
}
]
}
});
完成后,该应用停止加载。它停留在appLoadingIndicator中,但未到达选项卡面板组件。
但是,如果我在浏览器中打开它可以正常工作。 我甚至不知道如何调试这个。
答案 0 :(得分:0)
您可能会混淆一些参数。
捕获(选项,范围,目的地,编码,宽度,高度)
options =一个对象,在你的情况下会有{success:,failure:,quality:,source},... 和,destination:不是选项对象的一部分,而是它自己的参数(原样,范围,编码,宽度和高度)
答案 1 :(得分:0)
我刚刚解决了! 阅读这些Cordova文档:http://cordova.apache.org/docs/en/3.0.0/guide_cli_index.md.html我发现我需要在使用API = P之前安装插件。
这样做解决了所有问题:
cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-camera.git