Android 从我的应用程序中拍照的可用选项

Android 从我的应用程序中拍照的可用选项,android,android-camera,camera2,Android,Android Camera,Camera2,我一直在尝试创建一个Android摄像头活动来测试它如何在模拟器上工作,但我不确定我是否做对了 我已向清单中添加了对不推荐的相机版本、焦距和前置相机的权限。我一直在查找教程并学习代码 我也尝试过使用一些自定义按钮包括框架布局预览,但我真的不知道如何使按钮布局覆盖框架 我需要使用碎片吗 我还应该提到,我已经读到了关于新“camera2”的内容,并且我有兴趣将其应用到相同的活动中,但是对于一个简单的测试来说,这可能太多了。你对此有什么建议 如果您要搜索代码,请尝试以下示例代码(我在上也有答案,您可以

我一直在尝试创建一个Android摄像头活动来测试它如何在模拟器上工作,但我不确定我是否做对了

我已向清单中添加了对不推荐的相机版本、焦距和前置相机的权限。我一直在查找教程并学习代码

  • 我也尝试过使用一些自定义按钮包括框架布局预览,但我真的不知道如何使按钮布局覆盖框架

  • 我需要使用碎片吗

  • 我还应该提到,我已经读到了关于新“camera2”的内容,并且我有兴趣将其应用到相同的活动中,但是对于一个简单的测试来说,这可能太多了。你对此有什么建议


  • 如果您要搜索代码,请尝试以下示例代码(我在上也有答案,您可以看一看)

    如果使用emulator进行测试,请确保支持以下摄像头:


    如果您要搜索代码,请尝试以下示例代码(我还有一个答案,您可以查看)

    如果使用emulator进行测试,请确保支持以下摄像头:


    我想我不能给你们一个确切的答案,因为这是一件很难回答的事情。但我将尝试为您的方法提供一些高级指导

    一般来说,使用片段是编写Android应用程序的最佳方式,现在是推荐的方式

    您可以在Android中使用Intents使另一个应用程序代表您的应用程序工作。也就是说,您可以启动设备上安装的摄像头应用程序,代表应用程序拍摄图像

    static final int REQUEST_IMAGE_CAPTURE = 1;
    
    private void dispatchTakePictureIntent() {
        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
            startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
        }
    }
    
    你可以从中读到更多

    但是,如果您想编写自己的自定义摄影机API,这些摄影机API将发挥作用。因为在某些场景中,您实际上希望自己的自定义相机功能满足您正在构建的应用程序的特殊需求

    所以,决定你想要实现什么。如果您只想获取并保存照片,只需使用Intent并请求相机应用程序为您的应用程序拍摄照片

    要更深入地了解摄像头API,您可以从

    编辑

    是的,你实际上可以做如下的事情

    if (Build.VERSION.SDK_INT > 9) { 
    

    并且根据版本的不同有不同的执行路径。

    我不认为我能给你一个准确的答案,因为这是一个非常难回答的问题。但我将尝试为您的方法提供一些高级指导

    一般来说,使用片段是编写Android应用程序的最佳方式,现在是推荐的方式

    您可以在Android中使用Intents使另一个应用程序代表您的应用程序工作。也就是说,您可以启动设备上安装的摄像头应用程序,代表应用程序拍摄图像

    static final int REQUEST_IMAGE_CAPTURE = 1;
    
    private void dispatchTakePictureIntent() {
        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
            startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
        }
    }
    
    你可以从中读到更多

    但是,如果您想编写自己的自定义摄影机API,这些摄影机API将发挥作用。因为在某些场景中,您实际上希望自己的自定义相机功能满足您正在构建的应用程序的特殊需求

    所以,决定你想要实现什么。如果您只想获取并保存照片,只需使用Intent并请求相机应用程序为您的应用程序拍摄照片

    要更深入地了解摄像头API,您可以从

    编辑

    是的,你实际上可以做如下的事情

    if (Build.VERSION.SDK_INT > 9) { 
    

    并且根据版本有不同的执行路径。

    我看到您在这些问题中有几个不同的问题,我建议您选择Camera2 API。您可以找到使用Camea2 API的示例代码。通读代码并理解。但是您不会在几分钟内理解整个代码,这需要时间谢谢您的建议。camera2能否与21岁以下的API配合使用?我想学习两者,它们是彼此非常不同还是有办法使两者兼容?我想在我的设备上测试这个,它是一个果冻豆。是的,camera2可以在v21及以上版本工作。但是早期的API仍然可以很好地工作,并且易于使用。但是新的API是核心复杂的,这意味着开发人员更灵活、更强大。如果你的目标是Jellybeans,我认为早期版本是最兼容的API。我明白了,我认为摄像头测试摄像头会更方便。真遗憾,我对照相机的改进很感兴趣。有没有办法将它们都包括在清单中,并且不需要摄像头或摄像头2,以便任何设备都能够识别其版本?你知道我的意思,让设备像开发者教程所说的那样搜索相机。我看到你在这个问题中有几个不同的问题,我建议你选择Camera2 API。您可以找到使用Camea2 API的示例代码。通读代码并理解。但是您不会在几分钟内理解整个代码,这需要时间谢谢您的建议。camera2能否与21岁以下的API配合使用?我想学习两者,它们是彼此非常不同还是有办法使两者兼容?我想在我的设备上测试这个,它是一个果冻豆。是的,camera2可以在v21及以上版本工作。但是早期的API仍然可以很好地工作,并且易于使用。但是新的API是核心复杂的,这意味着开发人员更灵活、更强大。如果你的目标是Jellybeans,我认为早期版本是最兼容的API。我明白了,我认为摄像头测试摄像头会更方便。真遗憾,我对照相机的改进很感兴趣。有没有办法将它们都包括在清单中,并且不需要摄像头或摄像头2,以便任何设备都能够识别其版本?你知道我的意思,让设备像开发者教程所说的那样搜索相机。谢谢。这是允许您取p的代码吗