类型 函数 库 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