API兼容性:
QRN:v1.0.0-RC
iOS:80011115
Android:60001130
CameraRoll
模块提供了访问本地相册的功能,可以获取用户的相册,并支持拍照和保存照片到相册
import { CameraRoll } from 'qunar-react-native';
getPhotosFromGroup
方法第二个参数照片选项的参数结构参见 getPhotosParamChecker
:
/**
* Shape of the param arg for the `getPhotosFromGroup` function.
*/
var getPhotosParamChecker = createStrictShapeTypeChecker({
/**
* 需要获取最近照片的数目
**/
first: ReactPropTypes.number.isRequired,
/**
* 指定从哪一张照片开始获取,这个参数可以通过上次调用 getPhotosFromGroup
* 的返回值 getPhotosReturnChecker.edges.page_info.end_cursor获得,
* 也可以指定任意一个获取图片的 image.uri
*/
after: ReactPropTypes.string,
});
getPhotosFromGroup
成功获取到的照片后返回的对象结构参见 getPhotosReturnChecker
:
/**
* Shape of the return value of the `getPhotosFromGroup` function.
*/
var getPhotosReturnChecker = createStrictShapeTypeChecker({
edges: ReactPropTypes.arrayOf(createStrictShapeTypeChecker({
node: createStrictShapeTypeChecker({
type: ReactPropTypes.string.isRequired,
group_name: ReactPropTypes.string.isRequired,
image: createStrictShapeTypeChecker({
uri: ReactPropTypes.string.isRequired,
height: ReactPropTypes.number.isRequired,
width: ReactPropTypes.number.isRequired,
isStored: ReactPropTypes.bool,
}).isRequired,
timestamp: ReactPropTypes.number.isRequired,
location: createStrictShapeTypeChecker({
latitude: ReactPropTypes.number,
longitude: ReactPropTypes.number,
altitude: ReactPropTypes.number,
heading: ReactPropTypes.number,
speed: ReactPropTypes.number,
}),
}).isRequired,
})).isRequired,
page_info: createStrictShapeTypeChecker({
has_next_page: ReactPropTypes.bool.isRequired,
start_cursor: ReactPropTypes.string,
end_cursor: ReactPropTypes.string,
}).isRequired,
});
CameraRoll.getPhotoGroups ( callBack: function, errCallBack: function)获取用户相册信息 callBack返回相册数组,获取失败调用errCallBack
CameraRoll.getPhotosFromGroup ( albumId: string, getPhotosParamChecker, callBack: function, errCallBack: function)获取指定albumId相册中的照片 获取成功,则callBack返回照片列表信息,否则调用errCallBack
CameraRoll.takePhotoAndSave ( callBack: function, errCallBack: function)跳转到拍照界面并拍照并保存到系统相册, 如果拍照成功,则callBack返回已保存到照片信息,否则调用errCallBack
CameraRoll.takePhoto (Map params, callBack: function, errCallBack: function)跳转到拍照界面并拍照,通过params中的 `saveToPhotoAlbum` 参数控制是否保存到系统相册, 如果拍照成功,则callBack返回已保存到照片信息,否则调用errCallBack
takePhoto
生效版本:Android:60001555,IOS:80011305import { CameraRoll } from 'qunar-react-native';
/**
* 获取相册列表
* 成功回调中能够接收到相册列表数组
*/
CameraRoll.getPhotoGroups(albums => {
//获取相册成功,albums为相册列表数组
//每个相册信息为{id:相册id,name:相册名称,count:照片数量,coverImage:封面照片uri}
albums = albums.filter((album) => album.count > 0);//过滤掉没有照片的相册
}, err => {
console.log(err.message);
});
/**
* 从相册中获取照片列表
* 第一个参数为相册id,第二个参数为获取照片选项,页面下方有详细说明
*/
CameraRoll.getPhotosFromGroup(
album.id, {first: album.count},
albumData => {
//照片列表,返回照片的信息
},
err => {
//获取失败
console.log(err.message);
}
);
//拍照并存储到相册中,返回照片的信息
CameraRoll.takePhotoAndSave(
photo => {
//photo={uri:'ph://EE1C7799-F6E9-42A6-ADBE-88F4FB0C9236/L0/001',width:1024,heigth:2048}
//photo.uri 照片uri
//photo.width 照片宽度
//photo.height 照片高度
}, err => {
//失败,返回失败的原因
console.log(err.message);
}
);
//拍照并存储到手机存储或系统相册中,返回照片的信息,api生效版本:Android:60001555,IOS:80011305
CameraRoll.takePhoto(
{saveToPhotoAlbum: false},//是否保存照片到系统相册,如果保存到系统相册会申请存储/媒体权限,默认是false
photo => {
//photo={uri:'ph://EE1C7799-F6E9-42A6-ADBE-88F4FB0C9236/L0/001',width:1024,heigth:2048}
//photo.uri 照片uri
//photo.width 照片宽度
//photo.height 照片高度
}, err => {
//失败,返回失败的原因
console.log(err.message);
}
);