zoukankan      html  css  js  c++  java
  • 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调用摄像头实例

  • 相关阅读:
    OutputStream 和 Writer
    elasticsearch技术解析与实战(一) 入门和索引
    Kafka Consumer API样例
    关于kafka的新的group无法订阅到topic中历史消息的问题
    apache kafka系列之在zookeeper中存储结构
    KafkaConsumer 长时间地在poll(long )方法中阻塞
    问题记录
    java随笔
    Ubuntu18.10下运行blender2.80bate闪退(问题?)
    linux下简单制作iso,img镜像文件
  • 原文地址:https://www.cnblogs.com/yinpengxiang/p/2368638.html
Copyright © 2011-2022 走看看