V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Features
V2EX  ›  Android

初学 Android,请教下 Camera 的问题

  •  
  •   Features · 2021-12-16 08:43:50 +08:00 · 5012 次点击
    这是一个创建于 833 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1.我在 AOSP 上看 Camera 应用的源码,发现没有 AndroidManifest.xml 这个文件

    2.我使用以下代码尝试打开 Camera ,没有请求任何权限,AndroidManifest 都没写,居然成功打开了,也没有闪退
    机型是 HW mate20 ,是啥原因呢?


    ```
    if(v == btn){
    //take photo and return result
    Intent intent = new Intent();
    intent.setAction("android.media.action.IMAGE_CAPTURE");
    intent.addCategory(Intent.CATEGORY_DEFAULT);

    startActivityForResult(intent,11);
    }
    ```
    8 条回复    2021-12-16 17:31:00 +08:00
    gtanyin
        1
    gtanyin  
       2021-12-16 08:47:01 +08:00   ❤️ 2
    因为你这是跳转了系统页面,请求拍照。而不是自己打开摄像头。由于你无法控制用摄像头做什么,只能被动接收返回的照片,所以不用权限。
    windplume
        2
    windplume  
       2021-12-16 08:47:05 +08:00   ❤️ 1
    你这个是调用其它的相机程序,当然不需要权限啊
    Mav
        3
    Mav  
       2021-12-16 09:37:24 +08:00
    理解成在桌面点开“相机”。
    SakuraOjosama
        4
    SakuraOjosama  
       2021-12-16 09:56:41 +08:00
    AOSP 源码下的相机不是 Camera ,路径是 packages\apps\Camera2 ,当然部分高通定制机可能是 packages\apps\SnapdragonCamera ,或者一部分 MTK 定制机可能是 vendor\mediatek\proprietary\packages\apps\Camera2 ,华为的话,如果是鸿蒙系统,还没有研究过
    SakuraOjosama
        5
    SakuraOjosama  
       2021-12-16 09:59:40 +08:00
    你所写的就相当于你启动了相机这个 APP ,而不是通过接口调用去控制相机
    接口调用的话,给出几个文档:
    https://developer.android.com/training/camerax
    https://developer.android.com/training/camera2
    Camera1 代虽然简单,但也接近废弃,就不给了,camera2 用起来很复杂,推荐 camerax
    unco020511
        6
    unco020511  
       2021-12-16 10:09:04 +08:00
    官方文档-评估应用是否需要声明权限 :https://developer.android.com/training/permissions/evaluating?hl=zh-cn

    评估应用是否需要声明权限
    在您的应用中声明权限之前,请考虑您是否需要这样做。如果应用声明权限,那么每当用户尝试使用需要运行时权限的应用功能时,应用便不得不中断用户的操作,请求相应权限。然后,用户必须做出决定。如果用户不能理解您的应用为何请求特定权限,可能就会拒绝授予该权限,甚至卸载您的应用。

    想想是否有其他已安装的应用能够代您的应用执行相应功能。如果有的话,您应使用 intent 将任务委托给其他应用。这样您就不必声明所需的权限,因为其他应用会声明该权限。

    声明权限的替代方案
    本部分将介绍您的应用可在不声明任何权限的情况下实现的几个用例。


    拍摄照片
    用户可能会在您的应用中使用预安装的系统相机应用来拍摄照片。

    在这种情况下,请勿声明 CAMERA 权限,而是改为调用 ACTION_IMAGE_CAPTURE intent 操作。
    Features
        7
    Features  
    OP
       2021-12-16 10:33:26 +08:00
    @Mav @SakuraOjosama @gtanyin @unco020511 @windplume
    非常感谢你们的回复,学习到很多😁
    SuperLino
        8
    SuperLino  
       2021-12-16 17:31:00 +08:00
    虽然上面大佬已经回答好了,但安卓佬还是想水一条评论
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2690 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 15:47 · PVG 23:47 · LAX 08:47 · JFK 11:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.