phoneGap相机和sencha触摸视图 [英] phoneGap camera and sencha touch view

查看:123
本文介绍了phoneGap相机和sencha触摸视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我必须结合phoneGap相机api和sencha触摸。

I have to combine the phoneGap camera api with sencha touch.

我创建了一个视图 CameraView 控制器相机,但我不知道如何在我的视图上显示相机捕获的图像。

I have created a view CameraView and a controller Camera, but I don't know how to display the image captured by the camera on my view.

 // 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()
            {


            }
});


推荐答案

我使用以下代码显示 image on sencha touch xtype:image

视图中添加了以下代码以创建 image xtype

In view I have added following code to create image xtype:

              {
                xtype: 'image',
                width: 136,
                height: 102,
                html: "",
                id: 'cameraImage'
              },

在我的控制器中,我使用了以下代码:

In my Controller I have used following code:

config : {
    refs:{
      cameraImage: '#cameraImage'
    },
    control :{
      'cameraImage': {
        tap: 'launchCamera'
      }
    }
  },

launchCamera: function(item, event) {
  var imageButton='';
  var controller = this;
  navigator.camera.getPicture(
    function(imageURI) {
      accident_image_paths[target] = imageURI;
      imageButton = controller.getCameraImage1();
      imageButton.setHtml("<img src='"+imageURI+" 'class='imageToPanel'/>");
    },
    function(message) {
      Ext.Msg.alert('Failed','Failed because: ' + message);
    },
    {
      quality: 50,
      destinationType: Camera.DestinationType.FILE_URI,
      sourceType : Camera.PictureSourceType.CAMERA,
      allowEdit: false,
      saveToPhotoAlbum: true
    }
 );

}


不要忘记添加< script type =text / javascriptsrc =cordova-2.xxjs>< / script> 在您的index.html

Note: Don't forget to add <script type="text/javascript" src="cordova-2.x.x.js"></script> in your index.html

希望这将有助于...

Hope this will help you...

这篇关于phoneGap相机和sencha触摸视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆