首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在android中通过intent打开前后摄像头?

如何在android中通过intent打开前后摄像头?
EN

Stack Overflow用户
提问于 2017-05-08 15:10:00
回答 6查看 12.8K关注 0票数 3

我们实现相机的意图,它在micromax480p版本5.1工作得很好,但当我们在Nexus7版本6.1中使用的时候,相机是打开的,但我想打开一些时间前和一些时间回来,它可以根据我们的需要打开。

代码语言:javascript
运行
复制
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

    fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
    //intent.addCategory(Intent.CATEGORY_OPENABLE);
    //intent.setAction(Intent.ACTION_GET_CONTENT);
    if(camera == 1) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
            //intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            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.putExtra("android.intent.extras.CAMERA_FACING", 1);
        }
    }


    // start the image capture Intent
    startActivityForResult(intent, requestCode);

我是这样使用的,但它默认是打开的,无论我们使用的是什么相机(前置和后置) previously.thanks。很抱歉,我的英语沟通能力很差。

EN

回答 6

Stack Overflow用户

发布于 2019-09-10 21:14:50

要打开back摄像头,请执行以下操作:

代码语言:javascript
运行
复制
val cameraIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
startActivityForResult(cameraIntent, REQUEST_CODE_CAMERA)

要打开前置摄像头:-

代码语言:javascript
运行
复制
val cameraIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
when {
     Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1 && Build.VERSION.SDK_INT < Build.VERSION_CODES.O -> {
         cameraIntent.putExtra("android.intent.extras.CAMERA_FACING", CameraCharacteristics.LENS_FACING_FRONT)  // Tested on API 24 Android version 7.0(Samsung S6)
     }
     Build.VERSION.SDK_INT >= Build.VERSION_CODES.O -> {
         cameraIntent.putExtra("android.intent.extras.CAMERA_FACING", CameraCharacteristics.LENS_FACING_FRONT) // Tested on API 27 Android version 8.0(Nexus 6P)
         cameraIntent.putExtra("android.intent.extra.USE_FRONT_CAMERA", true)
     }
     else -> cameraIntent.putExtra("android.intent.extras.CAMERA_FACING", 1)  // Tested API 21 Android version 5.0.1(Samsung S4)
}
startActivityForResult(cameraIntent, REQUEST_CODE_CAMERA)

我不能让它在API 28和更高版本上工作。此外,在某些设备中不能直接打开前置摄像头(取决于制造商)。

票数 3
EN

Stack Overflow用户

发布于 2017-05-08 15:21:12

尝试下面的代码

代码语言:javascript
运行
复制
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { 
    intent.putExtra("android.intent.extras.LENS_FACING_FRONT", 1);
} else { 
    intent.putExtra("android.intent.extras.CAMERA_FACING", 1); 
}
票数 2
EN

Stack Overflow用户

发布于 2017-05-08 15:24:13

要调用前置摄像头,您可以使用:

代码语言:javascript
运行
复制
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);    
intent.putExtra("android.intent.extras.CAMERA_FACING", 1);

要调用Back相机,您可以使用:

代码语言:javascript
运行
复制
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
startActivity(intent);

需要在您的AndroidManifest.xml中设置摄像头的权限:

代码语言:javascript
运行
复制
 <uses-permission android:name="android.permission.CAMERA"> </uses-permission>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43841738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档