Android开发时候,界面制作基本会耗去大半部分时间,而且只能开发人员自己制作,所以一直想借用HTML5+CSS3完成,PhoneGap还不太成熟,自己准备用Android原生+WebView完成,发现和Flash As做互调差不多。以下代码是通过HTML的javascript调用原生接口,完成照片选取的代码,点击图像,将选择图片(从相机或者摄像头)。照片选取代码见上一篇文章 《Android 拍照加剪切处理方式

Activity代码:


import sh.path.R;
import sh.path.ui.image.ImageCrop;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.Window;
import android.webkit.WebView;
import android.widget.Toast;

public class HTMLFeedHomeActivity extends Activity {
private ImageCrop photoUtil;
private WebView webView = null;
private Handler mHandler = new Handler();
private String mJsData = null;
private Activity activityThis = this;

@Override
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.htmlfeeds);
setupWebView();
photoUtil = new ImageCrop(this);
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

}

private void setupWebView() {

webView = (WebView) findViewById(R.id.idhtmlfeedhome);
webView.getSettings().setJavaScriptEnabled(true);
webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
webView.loadUrl("file:///android_asset/path/index.html");
webView.addJavascriptInterface(new JavaScriptInterface(), "caller");
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
try{
if(photoUtil.capituredImage(requestCode, resultCode, data)){
if(ImageCrop.CROP_IMAGE ==requestCode){
//mImageView.setImageURI(photoUtil.getImageCaptureUriCutted());
webView.loadUrl("javascript:setPhoto('"+mJsData+"','"+photoUtil.getImageCaptureUriCutted().getPath()+"')");
}
return;
}
}catch(Exception exp){
exp.printStackTrace();
}
}

private class JavaScriptInterface{
@SuppressWarnings("unused")
public void clickOnAndroid() {
mHandler.post(new Runnable() {
public void run() {
webView.loadUrl("javascript:wave()");
}
});
}
@SuppressWarnings("unused")
public void takePhoto(String jsData){
mJsData = jsData;
photoUtil.getDialog().show();
}
@SuppressWarnings("unused")
public void showTip(String tip){
Toast.makeText(activityThis, tip, Toast.LENGTH_SHORT).show();
}
}
}

详见 《用Html5做界面,javascript调用摄像头实例》

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. Android(安卓)APK DEX分包总结
  3. 音乐你的生活—Android(安卓)QQMusic 设计实录
  4. Android中使用kotlin实现多行文本的上下滚动播放
  5. Android热更新之so库的热更新
  6. Android(安卓)Things学习的一点体验
  7. 210开发板Android系统串口程序
  8. 还不知道Android(安卓)Jetpack是什么?你就out了
  9. [新书]《Android和PHP开发最佳实践》

随机推荐

  1. ok6410 android driver(3)
  2. 修改xutils框架以支持fragment
  3. 浅析:为何到现在高端Android集成解决方案
  4. Android之如何学习
  5. 深入Android 【一】 —— 序及开篇
  6. TextView 在xml文件中的解释 android
  7. android service 生命周期
  8. Android M 新的运行时权限开发者需要知道
  9. Android Studio系列教程六--Gradle多渠道
  10. Android(安卓)获取网络时间