通过Sencha Touch捕捉图片的问题

时间:2014-05-07 18:23:01

标签: android mobile cordova sencha-touch android-camera

我正在尝试使用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中,但未到达选项卡面板组件。

但是,如果我在浏览器中打开它可以正常工作。 我甚至不知道如何调试这个。

This is the screen that the app gets stuck

2 个答案:

答案 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