类型 函数 库 media.* 返回值 无 修订版 发行版 2024.3703 关键字 media、相机、照片 另请参阅 media.hasSource()
打开一个设备相机特有的平台接口。此函数是异步的,意味着它立即返回,因此调用代码将继续执行直到其范围结束;之后,应用程序将暂停,直至会话完成。默认情况下,图片对象被添加到当前舞台的顶部,尽管可以选择将图片另存为目录。
此 API 并不支持 Windows 桌面版或 tvOS。
在 Android 中,要使用摄像头,你必须在 build.settings
文件中设置下列权限。即使你的应用不会将拍摄的图片写入到文件中,外部存储权限也是必需的,因为 Android 的相机应用需要权限将其拍摄的图片保存到公共存储空间中,以供你的应用使用。
settings = { android = { usesPermissions = { "android.permission.CAMERA", "android.permission.WRITE_EXTERNAL_STORAGE", }, }, }
在 iOS 中,要使用摄像头,你必须在 build.settings
的 plist
表中包含下列键/描述。当系统提示用户允许访问时,相关描述会作为警报的一部分显示。请注意,这些描述可以按你的喜好进行自定义,甚至可以本地化(指南)。
settings = { iphone = { plist = { NSCameraUsageDescription = "This app would like to access the camera.", NSPhotoLibraryUsageDescription = "This app would like to access the photo library.", }, }, }
media.capturePhoto( { listener [, destination] } )
侦听器. 可为函数侦听器或表侦听器。如果是表,它必须有一个完成方法。分发给侦听器的事件将是一个完成事件,其中包含下列附加属性
event.target
是基于 mediaSource
参数的 显示对象。如果选定的图片被保存到文件中,则不会将显示对象添加到舞台中,且该值将为 nil
。event.completed
将为 true
;如果用户取消了拍照或照片选择,则为 false
。表. 如果已提供,则选定的图片将保存到文件中。在这种情况下,不会将 显示对象 添加到舞台中,也不会将事件发送给侦听器。此表应采用以下形式{ [baseDir= ,] filename= }
baseDir
,则此目录 常量 将作为保存文件的目录。
local function onComplete( event ) local photo = event.target print( "photo w,h = " .. photo.width .. "," .. photo.height ) end if media.hasSource( media.Camera ) then media.capturePhoto( { listener=onComplete } ) else native.showAlert( "Corona", "This device does not have a camera.", { "OK" } ) end