使用Flex没有CameraUI的相机相机、Flex、CameraUI

2023-09-09 21:39:15 作者:◆◇℡敷衍不嘚的爱丶

约我在提出申请的另一个问题。所以,当用户签约,他需要拍照。我想这样做,不使用CameraUI的。我跟着一种教程,但应用程序不运行。我不明白的错误,但相机不显示。这是我做的:

Another question about the application I'm making. So when the user signs up, he needs to take a picture. I want to do this without using the cameraUI. I followed a sort of tutorial but the application doesn't run. I don't get errors, but the camera doesn't show. Here is what I did:

    <?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" 
        xmlns:mx="library://ns.adobe.com/flex/mx"
        activate="view1_activateHandler(event)"
        title="Camera Test">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>


    <fx:Script>
        <![CDATA[
            import mx.core.UIComponent;

            import spark.components.Image;
            import spark.components.VideoDisplay;
            import spark.components.ViewNavigator;

            private var cam:Camera;
            private var video:Video;
            private var uic:UIComponent;

            protected function cameraButton_clickHandler(event:MouseEvent):void
            {
                if(!cam){
                    trace("whut");
                    cameragroup.removeAllElements();
                    this.cam=Camera.getCamera();
                    cam.setQuality(0,100);

                    cam.setMode(cameragroup.width, cameragroup.height, 30, false);
                    if(cam){
                        trace("camera added");
                        this.video=new Video(cameragroup.width, cameragroup.height);

                        video.attachCamera(cam);

                        this.uic=new UIComponent();
                        uic.addChild(video);

                        var m:Matrix=new Matrix();
                        m.rotate(Math.PI/2);
                        video.transform.matrix=m;

                        var m2:Matrix = new Matrix();
                        m2.translate((video.width+cameragroup.width/4)-this.frame.x, 5);
                        uic.transform.matrix=m2;

                        cameragroup.addElement(uic);
                        cameraButton.label="shoot";
                    }
                }
            }

            protected function view1_activateHandler(event:Event):void
            {
                this.cameraButton.label="shoot";
            }

        ]]>
    </fx:Script>

    <s:VGroup width="100%" height="100%" horizontalAlign="center" paddingBottom="30" paddingLeft="10" paddingRight="10" paddingTop="30">
        <s:Group id="frame" width="100%" height="100%">
            <s:Rect width="100%" height="100%">
                <s:fill>
                    <s:SolidColor color="0x000000" alpha="0.2"/>
                </s:fill>
            </s:Rect>
            <s:Group id="cameragroup" width="210" height="220"/>
        </s:Group>

        <s:Spacer height="100%"/>
        <s:HGroup width="100%" horizontalAlign="center">
            <s:Button id="cameraButton" width="50%" height="80" label="start" click="cameraButton_clickHandler(event)"/>
        </s:HGroup>
    </s:VGroup>
</s:View>

这是一个完整的.mxml文件。我忽略了线code线,但没有发现任何错误。

This is the complete .mxml file. And I overlooked the code line by line but didn't found anything wrong.

Grtz

推荐答案

在您的应用程序app.xml中

In your Application-app.xml

请确保以下是存在的。

<uses-permission android:name="string" />

在我们的例子:

<uses-permission android:name="android.permission.CAMERA"/>

这是在这里更详细的解释: http://developer.android.com/guide/topics/manifest /uses-permission-element.html

This is explained in more detail here: http://developer.android.com/guide/topics/manifest/uses-permission-element.html