2012-01-19 10 views
0

私はロールスクリーンから画像を選択する際に問題が発生しています。私のアプリケーションはタブ付きではありませんが、その1つの部分にタブ付きビューナビゲーターがあり、タブの下にタブがあります。これらのタブの1つでは、自分が作成したWebサービスに画像をアップロードする機能があります。しかし、画像を選択するか写真を撮ると、最初のスプラッシュ画面に戻り、アプリケーションが再起動します。コンポーネントをスタンドアロン(タブ付きビューナビゲーターの外)で使用すると、画像を選択して問題なくアップロードできます。Adob​​e Flexモバイルでカメラロールから画像を選択するか、画像を撮影するとアプリケーションが再開されます

<s:TabbedViewNavigator id="tvn" width="100%" height="100%"> 
    <s:ViewNavigator icon="@Embed('assets/icons/contact.png')" label="contact" width="100%" height="100%" firstView="Concern.ContactInfo" firstViewData="{data}"/> 
    <s:ViewNavigator icon="@Embed('assets/icons/notes.png')" label="details" width="100%" height="100%" firstView="Concern.Description" firstViewData="{data}"/> 
    <s:ViewNavigator icon="@Embed('assets/icons/updates.png')" label="updates" width="100%" height="100%" firstView="Concern.Updates" firstViewData="{data}"/> 
    <s:ViewNavigator icon="@Embed('assets/icons/upload.png')" label="uploads" width="100%" height="100%" firstView="Concern.Uploads" firstViewData="{data}"/> 
</s:TabbedViewNavigator> 

Concern.Uploads:

<?xml version="1.0" encoding="utf-8"?> 

民間のvarのURLRequest:URLRequestの=新しいULRequest( "のhttp://mywebservice.php"); プライベートvarファイル:ファイル。

 //take a new picture with the camera 
     protected function uploadCamera_clickHandler(event:MouseEvent):void 
     { 
      if (CameraUI.isSupported) 
      { 
       trace("camera is supported"); 
       var myCam:CameraUI = new CameraUI(); 
       myCam.launch(MediaType.IMAGE); 
       myCam.addEventListener(MediaEvent.COMPLETE,selectCompleteHandler); 
      } 
      else 
      { 
       trace("camera not supported"); 
       statusText.text = "Camera not supported on this device."; 
      } 
     } 

     //select a picture from the camera roll (gallery) 
     protected function uploadGallery_clickHandler(event:MouseEvent):void 
     { 
      if (CameraRoll.supportsBrowseForImage) 
      { 
       trace("camera roll is supported"); 
       var roll:CameraRoll = new CameraRoll(); 
       roll.browseForImage(); 
       roll.addEventListener(MediaEvent.SELECT,selectCompleteHandler); 
      } 
      else 
      { 
       trace("camera roll not supported"); 
       statusText.text = "Camera roll not supported on this device."; 
      } 
     } 

     //when the selection is complete upload it 
     protected function selectCompleteHandler(event:MediaEvent):void 
     { 
      trace("event.data.file.url; = "+event.data.file.url); 
      takePhotoButton.enabled = galleryPhotoButton.enabled = false; 
      file = event.data.file; 
      file.addEventListener(Event.COMPLETE,uploadCompleteHandler); 
      file.addEventListener(Event.OPEN,openUploadHandler); 
      urlRequest = new URLRequest("http://MyWebService.php?ID=" + data.ID.toString()); 
      statusText.text = "Uploading please wait..."; 
      file.upload(urlRequest);     
     } 

     protected function uploadCompleteHandler(event:Event):void 
     { 
      trace("upload complete"); 
      takePhotoButton.enabled = galleryPhotoButton.enabled = true; 
      statusText.text = "Photo Uploaded"; 
     } 

     protected function openUploadHandler(event:Event):void 
     { 
      trace("uploading"); 
      statusText.text = "Uploading..."; 
     } 
    ]]> 
</fx:Script> 
<s:Image source="@Embed('assets/i/logo.jpg')" horizontalAlign="center" horizontalCenter="0" bottom="0"/> 
<s:Label width="100%" id="res" textAlign="left"/> 
<s:Scroller width="100%" height="100%"> 
    <s:VGroup width="100%" height="100%" verticalAlign="top" paddingLeft="15" paddingRight="15" horizontalAlign="center"> 
     <s:VGroup width="100%" paddingTop="15"> 
      <s:Label text="My Header" styleName="cityTitle" width="100%"> 
       <s:filters> 
        <s:DropShadowFilter color="#000000"/> 
       </s:filters> 
      </s:Label> 
      <s:Label text="Portal" styleName="citySubtitle" width="100%"> 
       <s:filters> 
        <s:DropShadowFilter color="#000000"/> 
       </s:filters> 
      </s:Label> 
     </s:VGroup> 
     <s:VGroup horizontalAlign="center" gap="25" width="100%"> 
      <s:Button id="takePhotoButton" label="Take Photo" click="uploadCamera_clickHandler(event)" minHeight="50" width="50%"/> 
      <s:Button id="galleryPhotoButton" label="From Gallery" 
         click="uploadGallery_clickHandler(event)" minHeight="50" width="50%"/>     
      <s:Label id="statusText" fontSize="24" text="" color="#FFFFFF"/>     
     </s:VGroup> 
    </s:VGroup> 
</s:Scroller> 

は、どのような援助のために事前にありがとうございます。

JH

答えて

0

私は同様の動作を得て、最近another questionに私の洞察を追加しました。 AIR 2.5のリリースノートで、カメラのリソースが不足しているときにAndroidがプロセスを終了させる可能性について、私は何かを見ました。

少なくともFOLだと思うので、Adobeにバグレポート(#3099508)を提出しました。私はデータとGPSをオフにすれば、現在使用されているリソースを減らすことができました。非常にイライラしますが、私は回避策を見ていません。私のアプリでは、カメラに行く前にボタンを押したときにノート(共有オブジェクト)を作って状況を検出し、それが返ってきたらクリアしますが、そのノートセットでアプリが始まると、リソースを節約するためのダイアログボックスを表示します。これはAIRバグです。

+0

返信いただきありがとうございます。同じ問題である可能性があります。また、カメラを起動する前にデータを電話機に保存していただきありがとうございます。痛いですが、私は回避策を実装することができます。 – jay

関連する問題