• Android上 用Html5做界面,javascript调用摄像头实例


    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调用摄像头实例

  • 相关阅读:
    自动跳转至首页(Java Script)
    简单的轮播图(Java Script)
    蓝桥杯 2016年 第七届 四平方和(JAVA)
    蓝桥杯 2016年 第七届 剪邮票(JAVA)
    蓝桥杯 2015年 第六届 生命之树(JAVA)
    蓝桥杯 2015年 第六届 垒骰子(JAVA)
    numpy笔记
    opencv安装和运行
    vs code环境配置注意点
    numpy中matrix使用方法
  • 原文地址:https://www.cnblogs.com/yinpengxiang/p/2368638.html
Copyright © 2020-2023  润新知