精华内容
下载资源
问答
  • HTML5,调用手机前置摄像头,调用手机后置摄像头

    最近刚好有些时间,打算写一个完善一点的demo出来,处理一下兼容性和拍摄视频上传 ps:预计需要下周完成 2019-8-24

    HTML5可以通过调用navigator.getUserMedia来获取手机设备摄像头,兼容性写法如下

    window.navigator.getUserMedia = navigator.getUserMedia || navigator.webKitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
    

    但是navigator.getUserMediau已经从 Web 标准中删除,虽然部分浏览器可以使用,生产环境中还是要做好兼容。新的API更替为MediaDevices.getUserMedia。MediaDevices.getUserMedia可以通过video的facingMode属性指定调用手机的前置或后置摄像头

    video:{ 'facingMode': "user" }//调用前置摄像头
    video: { facingMode: { exact: "environment" } }//后置
    

    注意,以下HTML需要在HTTPS下访问方可正常工作

    具体代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no">
        <title>Document1</title>
        <style type='text/css'>
            * { margin: 0; padding: 0; }
    
            html, body { height: 100%; }
    
            .flex { display: flex; }
    
            .flex-row { flex-direction: row; justify-content: space-around; align-items: center; }
    
            .flex-column { flex-direction: column; justify-content: flex-start; align-items: center; }
    
            body { overflow: auto; background: #fff; }
    
            .title { width: 920px; padding: 30px; align-items: flex-end; }
    
            .title h1 { padding-bottom: 20px; font-size: 38px; color: #ffffff; text-shadow: 0 1px 3px #222222; }
    
            .title p { font-size: 18px; color: #f5f5f5; text-shadow: 0 1px 3px #565656; }
    
            .wrap { width: 1220px; }
    
            .wrap .reference { position: relative; padding: 10px; background-color: rgba(255, 255, 255, 0); border-radius: 10px; box-shadow: 0 0 20px #a1a19f; }
    
            .wrap .reference img.face { display: block; width: 320px; height: auto; border-radius: 10px; }
    
            .wrap .reference img.toggle { position: absolute; right: 10px; top: 10px; width: 50px; height: 50px; }
    
            .wrap .scan video { background-color: rgba(0, 0, 0, .8); border-radius: 10px; }
    
            .wrap .control { justify-content: space-around; height: 456px; padding: 0 20px; }
    
            .wrap .control p { width: 160px; height: 60px; background-color: #f9f9f9; text-align: center; line-height: 60px; color: #ffffff; font-size: 24px; border-radius: 8px; cursor: pointer; box-shadow: -8px -8px 150px -8px #b2b3b5 inset, 0 0 5px #222222; text-shadow: 0 0 1px #222222; transition: .5s; }
    
            .wrap .control p:hover { box-shadow: -8px -8px 150px -8px #50c4f1 inset, 0 0 5px #ffffff; }
    
            .wrap .scan { position: relative; overflow: hidden; }
    
            .wrap .scan .strainer { position: absolute; top: 10px; width: 320px; z-index: 999; height: 3px; }
    
            .wrap .scan .capture { width: 320px; height: 456px; }
    
            .wrap .scan .strainer.on { background: linear-gradient(to left, transparent, #0bffb2, transparent); animation: scan 1s linear infinite; }
    
            @keyframes scan {
                0% { top: 10px; }
                50% { top: 456px; }
                100% { top: 10px; }
            }
    
        </style>
        <script type="text/javascript" src="vconsole.min.js"></script>
    </head>
    <body>
        <div class="title flex flex-column">
    </div>
    <div class="wrap flex flex-row">
        <div class="control flex flex-column">
            <p class="open">开启摄像头</p>
            <p class="recognition">显示到Canvas</p>
            <p class="close">关闭摄像头</p>
        </div>
        <div class="scan reference">
            <div class="strainer"></div>
            <video class="capture" width="320" height="456" src=""></video>
        </div>
    
    </div>
    
        <script type="text/javascript">
            var buffer;
            var oCapture = document.querySelector(".capture"),
            open = document.querySelector(".open"),
            recognition = document.querySelector(".recognition"),
            close = document.querySelector(".close");
            var control = document.querySelector(".control");
    
            window.navigator.getUserMedia = navigator.getUserMedia || navigator.webKitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
            
            function invokingCarera(){
                if(navigator.mediaDevices&&navigator.mediaDevices.getUserMedia){
                    navigator.mediaDevices.getUserMedia({
                        'audio':true,
                        'video':{ 'facingMode': "user" }//调用前置摄像头,后置摄像头使用video: { facingMode: { exact: "environment" } }
                    })
                    .then(function(mediaStream) {console.log(555);getVideoStream(mediaStream)})
                    .catch(function(error) { console.log(666);console.log(error) })
                }else if(navigator.getUserMedia){
                    navigator.getUserMedia({
                        'video':true,
                        'audio':true
                    },getVideoStream,getFail)
                }else{
                    alert('不支持摄像头调用!')
                }
            }
            //调用成功
            function getVideoStream(stream){
                buffer = stream;
                if(oCapture.mozSrcObject !== undefined){
                    oCapture.mozSrcObject = buffer;
                }else{
                    oCapture.src = window.URL && window.URL.createObjectURL(buffer);                
                }
                oCapture.play();
            }
            function getFail(){
    
            }
            recognition.onclick = function(){
    
            }
            control.addEventListener('click',function(e){
                e = e || window.event;
                var className = e.target.className;
                switch(className){
                    case 'open':
                    invokingCarera();
                    break;
                    case 'close':
                    closeCamera();
                    break;
                    case 'recognition':
                    screenShot();
                    break;
                    default:
                    break;
                }
            })
            function closeCamera(){
                buffer&&buffer.getTracks()[1].stop();//关闭摄像头
            }        
            window.requestAnimFrame = (function(){
              return  window.requestAnimationFrame       ||
                      window.webkitRequestAnimationFrame ||
                      window.mozRequestAnimationFrame    ||
                      function( callback ){
                        window.setTimeout(callback, 1000 / 60);
                      };
            })();
            function screenShot(){
                var canvas = document.createElement('canvas');
                canvas.width=320,canvas.height = 456;
                document.querySelector(".wrap").appendChild(canvas);
                var ctx =  canvas.getContext('2d');
                function drawVideo(){
                    ctx.drawImage(oCapture,0,0,320,456);
                    ctx.font = "30px sans-serif";
                    ctx.fillStyle = "blue";
                    ctx.fillText("请眨眼", 50, 50);
                    requestAnimationFrame(drawVideo);
                }
                window.requestAnimationFrame(drawVideo);
            }
        </script>
    </body>
    </html>
    

    以上代码并没有进行太多的错误处理,比如用户拒绝授权访问摄像头或浏览器不支持等情况,生产环境使用需添加错误处理代码.

    以上代码在PC端和Android手机端和微信测试通过,IOS下浏览器均不支持,据说IOS11会开放权限。

    注意,以上HTML需要在HTTPS下访问方可正常工作

    查看在线DEMO,如果使用微信访问可能被屏蔽,微信打开链接后点击右下角“访问原网页”

    如需本地测试请使用Chrome插件:web-server;

    webserver使用方法:chrome://apps > web-server > choose folder 勾选 Show Advanced Settings下Set CORS Headers即可

    使用input type="file"调用摄像头拍照可以参考camera API

    本文所用API可能被有所变更,可以访问MDN查看最新API MDN地址

    chaos-fe

    展开全文
  • 主要介绍了Android中判断是否有前置摄像头、后置摄像头的方法,本文直接给出实现代码,需要的朋友可以参考下
  • 手机前置摄像头代码 android

    热门讨论 2012-02-19 12:25:39
    开发前置摄像头的哥们有福了,介绍了关于前置摄像头使用方面的弯弯绕
  • 前置摄像头自动录像软件,可以将您的普通摄像头摇身变成行车记录仪,可循环录像,自动覆盖。
  • 手机前置摄像头怎样改为后置摄像头如果可以修改的话 激情各位帮我改一下程序
  • 我可以选择从前置摄像头切换到后置摄像头,使用后置摄像头拍照时一切都很好。当我用前置摄像头拍照时,它们会被倒置180度。 现在我知道这可能与纵向模式中的方向有关,但是在横向模式中使用它会破坏我的应用程序的...

    我有这个以纵向模式运行的应用程序,作为一个活动的一部分,我有一个相机对象作为片段运行。

    我可以选择从前置摄像头切换到后置摄像头,使用后置摄像头拍照时一切都很好。

    当我用前置摄像头拍照时,它们会被倒置180度。 现在我知道这可能与纵向模式中的方向有关,但是在横向模式中使用它会破坏我的应用程序的想法。

    无论如何这可以修复,所以拍摄的照片与您在预览中看到的相同吗?

    listener = new OrientationEventListener(this.getActivity(),SensorManager.SENSOR_DELAY_NORMAL){ @Override public void onOrientationChanged(int orientation) { // TODO Auto-generated method stub if (orientation == ORIENTATION_UNKNOWN) return; android.hardware.Camera.CameraInfo info = new android.hardware.Camera.CameraInfo(); android.hardware.Camera.getCameraInfo(mCurrentCamera, info); orientation = (orientation + 45) / 90 * 90; int rotation = 0; if (info.facing == CameraInfo.CAMERA_FACING_FRONT) { rotation = (info.orientation - orientation + 360) % 360; } else { // back-facing camera rotation = (info.orientation + orientation) % 360; } if (mCamera.getParameters() != null){ Camera.Parameters mParameters = mCamera.getParameters(); mParameters.setRotation(rotation); mCamera.setParameters(mParameters); } } }; listener.enable(); if (listener.canDetectOrientation()) Log.d("Orientation Possible", "Orientation Possible");

    问题是,在我尝试拍照后,这件事情崩溃了。 此外,如果它仅在预览模式下运行一段时间,它会再次崩溃。 我也应该补充一点,在另一种方法中,我这样做。

    public void switchCamera(Camera camera) { setCamera(camera); try { camera.setPreviewDisplay(mHolder); } catch (IOException exception) { Log.e(TAG, "IOException caused by setPreviewDisplay()", exception); } Camera.Parameters parameters = camera.getParameters(); parameters.setPreviewSize(mPreviewSize.width, mPreviewSize.height); requestLayout(); try{ camera.setParameters(parameters); } catch (RuntimeException ex){ Log.d("Preview", "Failure to set proper parameters"); //need to improve this method if (mSupportedPreviewSizes != null) { Camera.Size cs = mSupportedPreviewSizes.get(0); parameters.setPreviewSize(cs.width, cs.height); camera.setParameters(parameters); requestLayout(); //int tempheight = mPreviewSize.height; //mPreviewSize.height = mPreviewSize.width; //mPreviewSize.width = tempheight; } }

    在摄像机之间切换时会调用此方法(背面朝向正面,反之亦然)。 这会干扰方向事件监听器吗?

    此外,保存拍摄的照片时,这就是我所说的。 在将数据作为参数进行处理之前,我尝试将其作为屏幕方向。 问题是无论如何,屏幕方向始终为90。 因此,位图将始终旋转90度(这对于使用后置摄像头拍摄照片非常有用),但在使用前置摄像头拍摄时会将其反转。 可以在此function中实现修复吗?

    public static Bitmap MakeSquare(byte[] data, int orientation) { int width; int height; // Rotate photo Matrix matrix = new Matrix(); matrix.postRotate(orientation); // Convert ByteArray to Bitmap Bitmap bitPic = BitmapFactory.decodeByteArray(data, 0, data.length); width = bitPic.getWidth(); height = bitPic.getHeight(); // Create new Bitmap out of the old one Bitmap bitPicFinal = Bitmap.createBitmap(bitPic, 0, 0, width, height,matrix, true); bitPic.recycle(); int desWidth; int desHeight; desWidth = bitPicFinal.getWidth(); desHeight = desWidth; Bitmap croppedBitmap = Bitmap.createBitmap(bitPicFinal, 0,bitPicFinal.getHeight() / 2 - bitPicFinal.getWidth() / 2,desWidth, desHeight); croppedBitmap = Bitmap.createScaledBitmap(croppedBitmap, 528, 528, true); return croppedBitmap; }

    好吧。 看来我有点照顾它。 我使用了这个建议: Android,前后摄像头Orientation,Landscape

    并将我的MakeSquare函数更改为:

    public static Bitmap MakeSquare(byte[] data, int cameraID) { int width; int height; Matrix matrix = new Matrix(); Camera.CameraInfo info = new Camera.CameraInfo(); android.hardware.Camera.getCameraInfo(cameraID, info); // Convert ByteArray to Bitmap Bitmap bitPic = BitmapFactory.decodeByteArray(data, 0, data.length); width = bitPic.getWidth(); height = bitPic.getHeight(); // Perform matrix rotations/mirrors depending on camera that took the photo if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) { float[] mirrorY = { -1, 0, 0, 0, 1, 0, 0, 0, 1}; Matrix matrixMirrorY = new Matrix(); matrixMirrorY.setValues(mirrorY); matrix.postConcat(matrixMirrorY); } matrix.postRotate(90); // Create new Bitmap out of the old one Bitmap bitPicFinal = Bitmap.createBitmap(bitPic, 0, 0, width, height,matrix, true); bitPic.recycle(); int desWidth; int desHeight; desWidth = bitPicFinal.getWidth(); desHeight = desWidth; Bitmap croppedBitmap = Bitmap.createBitmap(bitPicFinal, 0,bitPicFinal.getHeight() / 2 - bitPicFinal.getWidth() / 2,desWidth, desHeight); croppedBitmap = Bitmap.createScaledBitmap(croppedBitmap, 528, 528, true); return croppedBitmap; }

    这似乎有效并且可以解决问题。 虽然我不确定这是最好的方式,但我很满意。 现在,我所要做的就是弄清楚为什么在使用前置摄像头时它没有采用适当的宽高比。

    试试这些链接:

    具体来说,这是来自setRotation链接的一大块措辞。

    “如果应用程序想要旋转图片以匹配用户看到的方向,则应该使用OrientationEventListener和Camera.CameraInfo。来自OrientationEventListener的值相对于设备的自然方向.CameraInfo.orientation是相机方向和自然设备方向。两者的总和是后置摄像头的旋转角度。 两者的差异是前置摄像头的旋转角度 。请注意, 前置摄像头的JPEG图像不像预览那样镜像显示。”

    我按原样使用了这段代码,根本没有修改它。 我的相机现在更好,但仍然需要一些TLC。 我还没有前面的function。

    祝你好运!

    展开全文
  • CatchCam 使用链接抓取前置摄像头
  • Android 调用前置摄像头

    千次阅读 2019-02-10 11:28:44
    Android 调用前置摄像头
                   

    转自:http://www.cnblogs.com/stay/archive/2011/06/24/2089129.html

    首先,鄙人要发泄下对Android小小的不满,为神马2.3才有api来支持front Camera ,为神马2.3之前的版本也会有前置摄像头,为神马每个厂商的调用前置摄像头的方式都不一样。尼玛同样是写程序,至于搞那么多不同版本不同兼容性问题么。生物识别技术你们伤不起啊!!!GOOGLE 您神马时候才能统一啊!!!别折磨我们这群蛋疼的码农了。该死的魂淡厂商们,你们大致统一一下行不行,坑爹的。

    if(model.equals(SUMSUNG&HTC&MOTO)){system.exit(0)}//支持山寨。

    先说如何录频吧。最简单的,调用MediaRecorder,最好开个子线程去写:

    这里网上有很多帖子都说,有bug,问题出在编码上,因为每个厂商支持的视频编码有点差异,所以别指望同一个代码能支持所有的手机。我用H264测试了十部手机,

    9个通过,1个坑爹的HTC 野火不支持。所以还是使用DEFAULT吧。MediaRecorder.VideoEncoder.DEFAULT

     Runnable run = new Runnable() {
      public void run() {
       try {
        myRecAudioFile = new File(Environment.getExternalStorageDirectory(), "video.mp4");// 创建临时文件
        if (myRecAudioFile.exists()) {
         myRecAudioFile.delete();
        }
        myRecAudioFile.createNewFile();
        recorder.reset();
        recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);// 视频源
        recorder.setAudioSource(MediaRecorder.AudioSource.MIC); // 录音源为麦克风
        recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);// 输出格式为mp4
        recorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);// 视频编码
        recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);// 音频编码
        recorder.setVideoFrameRate(15);// 视频帧频率
        recorder.setVideoSize(320, 240);// 视频尺寸
        recorder.setPreviewDisplay(mSurfaceHolder.getSurface());// 预览
        // recorder.setMaxDuration(10000);// 最大期限
        recorder.setOutputFile(myRecAudioFile.getAbsolutePath());// 保存路径
        recorder.prepare();
        recorder.start();
        mHandler.sendEmptyMessageDelayed(1, 10000);
       } catch (Exception e) {
        stop(true);
       }
      }
     };

    现在来说前置摄像的问题

    2.3的api调用前置非常easy

    Camera  android.hardware. Camera .open(int cameraId)

    Creates a new Camera object to access a particular hardware camera.

    cameraId the hardware camera to access, between 0 and  getNumberOfCameras()-1.

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
       for (int i = 0; i < Camera.getNumberOfCameras(); i++) {
        CameraInfo info = new CameraInfo();
        Camera.getCameraInfo(i, info);
        if (info.facing == CameraInfo.CAMERA_FACING_FRONT) {//这就是前置摄像头,亲。
         c = Camera.open(i);
        }
       }
      }
      if (c == null) {
       c = Camera.open();
      }

      c.unlock();//注意,要在MediaRecorder设置参数之前就调用unlock来获得camera的控制权。camera是单例的嘛。如果不调用,程序就挂
      recorder.setCamera(c);

    void android.hardware. Camera.unlock()

    Unlocks the camera to allow another process to access it. Normally, the camera is locked to the process with an active Camera object until release() is called. To allow rapid handoff between processes, you can call this method to release the camera temporarily for another process to use; once the other process is done you can call reconnect() to reclaim the camera.

    This must be done before calling android.media.MediaRecorder.setCamera(Camera).

    If you are not recording video, you probably do not need this method.

    这样就大功告成了。最后还有要注意的地方,就是当你停止拍摄或程序down掉的时候,要调用camera.lock()来释放camera的控制权,否则就不能再开启camera。知道抛异常。

    private void stop(boolean force) {
      if (!force) {
       recorder.stop();
      }
      recorder.reset();
      recorder.release();
      recorder = null;
      if (c != null) {
       c.lock();
       c.release();
       c = null;
      }
      setResult(force ? Activity.RESULT_CANCELED : Activity.RESULT_OK);

    //还记得,调用系统的camera来拍照时,intent里会返回文件的uri。你也可以这样做   intent.setData(Uri.fromFile(tempFile))
      this.finish();
     }

    下面再来说2.3之前的如何调用前置的。公司只有HTC野火和SUMSUNG I9000有前置,所以我只研究了这两个,有其他brand的可以用类似的方法去做,如果你弄出来了,请告诉我,mark下

    debug还是比较有趣的事情,我是指能成功的debug的话。。。。。

    测试这两个手机的时候我一行一行的看log。眼睛都花了,一遍咒骂宏达电和三星。

    06-23 17:49:05.058: WARN/CameraService(2374): getParameters(AppShutterSound=0;anti-shake=0;antibanding=auto;antibanding-values=auto,50hz,60hz,off;beauty-shot=0;blur=0;camera-id=1;chk_dataline=0;contrast=2;contrast-max=4;contrast-min=0;effect=none;effect-values=none,mono,negative,sepia;exposure-compensation=0;exposure-compensation-step=0.5;focal-length=3.79;focus-mode=auto;focus-mode-values=auto,macro;horizontal-view-angle=51.2;iso=auto;jpeg-quality=100;jpeg-thumbnail-height=120;jpeg-thumbnail-quality=100;jpeg-thumbnail-size-values=160x120,0x0;jpeg-thumbnail-width=160;max-exposure-compensation=4;max-zoom=30;metering=center;min-exposure-compensation=-4;picture-format=jpeg;picture-format-values=jpeg;picture-size=2560x1920;picture-size-values=2560x1920,2048x1536,1600x1200,640x480,2560x1536,2048x1232,1600x960,800x480;preview-format=yuv420sp;preview-format-values=yuv420sp;preview-frame-rate=30;preview-frame-rate-values=15,30;preview-size=640x480;preview-size-values=320x240,640x480,800x480;rotation=0;saturation=2;saturation-max=4;saturation-min=0;scene-mode=au

    这是三星的Camera.Parameters         你觉得哪个是设置前置摄像头的么    camera-id=1   bingo   就是它了。

    //  Parameters parameters = c.getParameters();
    //  parameters.set("camera-id",2);//sumsung 2.3以前的手机     我的I9000成功设置成前置的了。

    06-23 18:14:50.697: DEBUG/CameraService(1622): getParameters(Make=HTC;antibanding=auto;antibanding-values=auto,50hz,60hz;brightness=0;brightness-def=0;brightness-max=20;brightness-min=-20;contrast=0;contrast-def=0;contrast-max=100;contrast-min=-100;device=;device-list=/dev/video0,/dev/video1,/dev/video2;effect=none;effect-values=none,mono,negative,sepia,aqua;exposure-compensation=0;exposure-compensation-step=0;fnumber=3.5;focal-length=2.76;focus-mode=auto;focus-mode-values=auto;gps-mapdatum=WGS 84;horizontal-view-angle=54;iso=auto;jpeg-quality=85;jpeg-thumbnail-height=240;jpeg-thumbnail-size-values=320x240,0x0;jpeg-thumbnail-width=320;max-exposure-compensation=0;max-zoom=10;meter-mode=meter-average;min-exposure-compensation=0;models=A3360;picture-format=jpeg;picture-format-values=jpeg;picture-size=2048x1536;picture-size-values=2048x1536,1600x1200,1280x1024,1280x960,1024x768,800x600,640x480,384x288,352x288,320x240,176x144;preview-format=yuv420sp;preview-format-values=yuv420sp;preview-frame-rate=15;preview-frame-rate-values=30,15;preview-size=320x240;previ

    好了,这是宏达电的,你猜哪个是?   不好意思,木有这个参数。当时我就郁闷了。Android程序员你们都伤不起啊。一堆的兼容性问题。尼玛你们来试试。

    肿么办,好吧,去看系统自带的Camera吧,如果你懂得观察,还是比较有意思的。野火的后置摄像头叫  (主)   你们有这个机器的可以自己测试下。

    06-23 18:14:50.716: DEBUG/CameraService(1622): setParameters: video_input= main(有意思吧)

    debug吧,坑爹的叫video_input    尼玛弄不一样的key有意思么,搞这么混乱让人肿么活。人家做爱疯的,从底层自己写上来,一遍就ok啦。有木有。我们有一大堆的api,半小时就能写出来的功能,debug就要几天。有木有!!!

    你再试试吧系统的Camera切换成副摄像头叫什么。。。Secondary。有木有!!!

    好吧。video_input= Secondary    去试吧。依旧不行。。。S小写。尼玛伤不起啊

    //  Parameters parameters = c.getParameters();

    //  parameters.set("camera-id",2);//sumsung 2.3以前的手机  前置

    //  parameters.set("camera-id",1);//sumsung 2.3以前的手机  后置

    //  parameters.set("video_input","secondary");//htc2.3以前的手机  前置

    //  parameters.set("video_input","main");//htc2.3以前的手机   后置

    //  c.setParameters(parameters);

    ok,都这里就全部结束了。蛋疼的debug。蛋疼的Android。蛋疼的人生。码农你们伤不起啊!!!!


               

    再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

    展开全文
  • 三星前置摄像头补丁

    2015-03-10 18:09:24
    三星9500前置摄像头补丁,亲测能用,放心下载。
  • android前置摄像头扫描二维码
  • 正确打开前置摄像头的姿势 Intent intent; if (front) { intent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA); intent.putExtra("android.intent.extras.CAMERA_FACING", android.hardware.Camera....

    已经失效的方法

    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

    if (front) {

    intent.putExtra("android.intent.extras.CAMERA_FACING", 1);

    }

    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(targetFile));

    startActivityForResult(this, intent, requestCode);

    正确打开前置摄像头的姿势

    Intent intent;

    if (front) {

    intent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);

    intent.putExtra("android.intent.extras.CAMERA_FACING", android.hardware.Camera.CameraInfo.CAMERA_FACING_FRONT);

    intent.putExtra("android.intent.extras.LENS_FACING_FRONT", 1);

    intent.putExtra("android.intent.extra.USE_FRONT_CAMERA", true);

    } else{

    intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

    }

    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(targetFile));

    startActivityForResult(this, intent, requestCode);

    关键在于需要使用MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA

    展开全文
  • android 前置摄像头扫描二维码

    万次阅读 2016-11-02 14:53:43
    android 前置摄像头扫描二维码 其实前置摄像头与后置摄像头的二维码扫描是差不多的,同样也是用到zxing这个开源类库,把网上的二维码扫描的例子的下载下来,然后去修改一下调起的摄像头就可以了,也就是把原本是后置...
  • 本文实例为大家分享了微信小程序使用前置摄像头拍照的具体代码,供大家参考,具体内容如下 1、拍照页面: 拍照> <camera v-if=openCamera device-position=front frame-size=large class=zipai error=error> ...
  • android打开前置摄像头和后置摄像头

    千次阅读 2016-01-18 15:55:39
    android打开前置摄像头和后置摄像头 前言: 我的android设备是原道N70双擎pad。这个平板电脑没有后置摄像头,只有前置摄像头,当我安装一些程序的时候,会出现“xxxx.apk已经终止”的错误,然后程序就会退出。...
  • 我使用下面的代码来显示surfaceView中的front_camera,但是当我在三星Galaxy S plus上...Android - 前置摄像头预览SurfaceViewpublic class TestLedActivity extends Activity {private SurfaceView preview=null...
  • 支持竖屏、平板和只有前置摄像头的android二维码扫描demo(修复后)
  • 前置闪光灯 使用前置摄像头为自拍添加闪光灯
  • 修改默认的video quality,需改两处:(a)第一次进camera时的默认值,(b)“还原默认设置”时的默认值。 此处以后置摄像头默认fine,前置摄像头默认low为例。
  • 第一种方式是采用MediaStore,调用系统原生的相机。Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);... // 调用前置摄像头intent.putExtra("autofocus", true); // 自动对焦intent.putExtra("f...
  • 我想直接调用手机系统的前置摄像头,不用自定义相机。 三星、华为不能打开前置摄像头,每次都是打开后置摄像头。 vivo 魅族 小米 oppo可以正常打开前置摄像头。 特此请教各路大神,谢谢! ``` Intent camera...
  • 看了写一些资料后面自己...//判断是否有前置摄像头 private int FindFrontCamera() { int cameraCount = 0; Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); cameraCount = Camera.getNumberOfCameras...
  • 最近 接到一个需求 - 微信公众号里面嵌入人脸识别。...调起前置摄像头 图片压缩上传 调起前置摄像头 这个问题 网上有很多,大致是input 和 navigator.getUserMedia 这两种。我选择的第一种。 如果大家有更...
  • 行业分类-机械工程-一种手机前置摄像头贴合装置.zip
  • FrontFlash 前置摄像头闪光灯,即使在iPad中也是如此。 MIT许可证。 NKO拾色器: :
  • 调用手机前置摄像头拍照,可重复预览,重复拍照
  • java的Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);Uri photoUri = Uri.fromFile(getOutputPhotoFile());intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);intent.putExtra("android.intent....
  • android2.3下开发的照相机程序源码,可以调用前置摄像头和后置摄像头进行照相,安装环境>=android2.2
  • 一、准备工作SteamVR中开启摄像头 打开SteamVR在设置中开启摄像头 ...发现预制体摄像机中多了,这两部分就是开启VIVE前置摄像头的关键,Quad为前置摄像头画面显示的地方 这个时候运行程...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,958
精华内容 5,183
关键字:

前置摄像头