2011-12-20 13 views
0

私はandroid、js、html5を使ってハイブリッドアプリを開発しています。次のようにカメラでの不思議な振る舞い

私のコードは次のとおりです。

のjava:

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     WebView webView=(WebView)findViewById(R.id.webkitWebView1); 
     WebSettings settings = webView.getSettings(); 
     settings.setJavaScriptEnabled(true); 
     settings.setDatabaseEnabled(true); 
     settings.setDomStorageEnabled(true); 
     //To display the alert 
     webView.setWebViewClient(new WebViewClient()); 
     webView.setWebChromeClient(new WebChromeClient()); 
     webView.setWebChromeClient(new WebChromeClient() { 
      public void onExceededDatabaseQuota(String url, String databaseIdentifier, long currentQuota, long estimatedSize, 
       long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) { 
       quotaUpdater.updateQuota(estimatedSize * 1); 
     } 
    }); 

    //load html5 page 

     webView.loadUrl("file:///android_asset/html/index.html"); 

     openCamera=new OpenCamera(webView,AvivaInsureActivity.this); 
     webView.addJavascriptInterface(openCamera,"camera"); 
    } 

public class OpenCamera { 
private WebView mAppView; 
    private Activity context; 
    protected String _path; 
    private Bitmap bitmap; 

public String getImagePath1() { 
     return imagePath1; 
    } 

    public void setImagePath1(String imagePath1) { 
    this.imagePath1 = imagePath1; 
    } 

     public String getImagePath2() { 
     return imagePath2; 
    } 

     public void setImagePath2(String imagePath2) { 
     this.imagePath2 = imagePath2; 
    } 
    public void startCameraActivity1(){ 

     Date dt = new Date();  
     int date=dt.getDate(); 
     int hours = dt.getHours();  
     int minutes = dt.getMinutes(); 
     int seconds = dt.getSeconds();  

     String curTime = date+"_"+hours + "_"+minutes + "_"+ seconds; 
      imagePath1=Environment.getExternalStorageDirectory() +"/"+curTime+".jpg"; 
     File file1 = new File(imagePath1); 


     Uri outputFileUri1 = Uri.fromFile(file1); 


     Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri1); 

     context.startActivityForResult(intent,0); 

    } 

同様camer2方法。 とJSとHTML5:

<script type="text/javascript"><!-- 
function openCamera1(){ 
    camera.startCameraActivity1(); 
    var path1=camera.getImagePath1(); 
    //alert(path1); 
    document.getElementById("image1").src=path1; 
} 

HTML:


<div><input type="submit" value="Submit" onclick="submitForm()" /><br /> 
</div> 

<div><img id="image1" height="50" width="50" />" "<img id="image2" 
height="50" width="50" /></div> 

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     //data.getExtras(); 
     if (requestCode== 0 && resultCode == Activity.RESULT_OK){ 
      String imagePath1 = "file://"+openCamera.getImagePath1(); 
      System.out.println("Image Pathhhhhhhhhh11111111 :::::::::::: " + imagePath1); 

... }

ここで "データ" nullです!!どのように可能ですか?私はここで何をしているのですか?

問題は、警告(path1)と警告(path2)をコメントするとimgタグに画像を読み込めないという問題です。その "?"代わりに。私はアラートを有効にするか、画像をキャプチャするのに3〜4回試してみると、画像が表示されています!

デバッグにお役立てください。

+0

私はあなたがsetimeoutを使用する必要があると思う。画像を読み込むために時間がかかることを願っています。 – Unknown

+0

タイムアウトの設定方法は?申し訳ありません、私はあなたを取得していない...! – Smitha

+0

window.setTimeout(myMethod()、3000); myMethod()関数では、コードを使用してイメージを表示できます。 – Unknown

答えて

0

私はこの方法でそれを解決:

追加:

function openCamera1(){  
     result = camera.startCameraActivity1(); 
     path1=camera.getImagePath1(); 
     path="file://"+path1; 
     do{ 
       fileIndicator=camera.findEOF(); 
      }while(!fileIndicator) 
       document.getElementById("image1").src=path; 
     } 

そしてOpenCamera内のメソッドを追加します。

public boolean findEOF(){ 
     File file=new File(imagePath1); 
     System.out.println("Inisde EOFL::::::::::::::"+file.length()); 

     if(file.length()>0){ 
      System.out.println("Inisde length is::::::::::::::"+file.length()); 
      return true; 
     }   
     return false; 

    } 

だから、問題はIMAGEPATHは()の前に呼び出されていた取得しましたイメージはファイルに書き込まれます。

関連する問題