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回試してみると、画像が表示されています!
デバッグにお役立てください。
私はあなたがsetimeoutを使用する必要があると思う。画像を読み込むために時間がかかることを願っています。 – Unknown
タイムアウトの設定方法は?申し訳ありません、私はあなたを取得していない...! – Smitha
window.setTimeout(myMethod()、3000); myMethod()関数では、コードを使用してイメージを表示できます。 – Unknown