wangliang_wd

feat:优化图片选择器

... ... @@ -14,18 +14,8 @@ import { TrackConstants } from 'wdTracking/Index';
import { SPHelper } from 'wdKit/Index';
import { SpConstants } from 'wdConstant/Index';
import { photoPickerUtils} from '../../utils/PhotoPickerUtils';
import { abilityAccessCtrl, common, Permissions } from '@kit.AbilityKit';
import { picker } from '@kit.CoreFileKit';
import { camera, cameraPicker } from '@kit.CameraKit';
import { BusinessError } from '@kit.BasicServicesKit';
let mContext = getContext(this) as common.Context;
const PERMISSIONS: Array<Permissions> = [
'ohos.permission.READ_IMAGEVIDEO',
'ohos.permission.WRITE_IMAGEVIDEO'
];
@Entry
@Component
struct EditUserInfoPage {
... ... @@ -93,11 +83,7 @@ struct EditUserInfoPage {
builder: CustomDialogUI({
itemData:['相册','拍照'],
confirmCallback:(index)=>{
if (index === 0) {
this.getPhotoPicker()
}else {
this.getCamera()
}
this.pickerSelect(index)
}
}),
alignment: DialogAlignment.Bottom,
... ... @@ -105,42 +91,23 @@ struct EditUserInfoPage {
closeAnimation:{duration:0}
})
async getPhotoPicker(){
///权限查询
const context = getContext(this) as common.UIAbilityContext;
const atManager = abilityAccessCtrl.createAtManager();
await atManager.requestPermissionsFromUser(context, PERMISSIONS);
let PhotoSelectOptions = new picker.PhotoSelectOptions();
PhotoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE; // 过滤选择媒体文件类型
PhotoSelectOptions.maxSelectNumber = 1; // 选择媒体文件的最大数目
let photoPicker = new picker.PhotoViewPicker(); // 使用图库选择器对象前,需要先创建PhotoViewPicker实例
photoPicker.select(PhotoSelectOptions).then((PhotoSelectResult) => {
if (PhotoSelectResult !== null && PhotoSelectResult !==
undefined) {
// 接口采用callback异步返回形式,返回PhotoSelectResult对象,故进行下一步操作前要先判断是否已经成功返回PhotoSelectResult对象了
this.headerImg = PhotoSelectResult['photoUris'][0]
pickerSelect(index:number){
if (index === 0) {
photoPickerUtils.getPhotoPicker().then(value => {
if (value.length > 0) {
this.headerImg = value
}
})
}else {
photoPickerUtils.getCamera().then(value => {
if (value.length > 0) {
this.headerImg = value
}
async getCamera(){
try {
let pickerProfile: cameraPicker.PickerProfile = {
cameraPosition: camera.CameraPosition.CAMERA_POSITION_BACK
};
let pickerResult: cameraPicker.PickerResult = await cameraPicker.pick(mContext,
[cameraPicker.PickerMediaType.PHOTO, cameraPicker.PickerMediaType.VIDEO], pickerProfile);
if (pickerResult['resultCode'] === 0) {
this.headerImg = pickerResult['resultUri']
}
console.log("the pick pickerResult is:" + JSON.stringify(pickerResult));
} catch (error) {
let err = error as BusinessError;
console.error(`the pick call failed. error code: ${err.code}`);
})
}
}
aboutToAppear() {
let userType = SPHelper.default.getSync(SpConstants.USER_Type,"") as string
if (userType && userType.length > 0) {
... ...
import { abilityAccessCtrl, common, Permissions } from '@kit.AbilityKit';
import { picker } from '@kit.CoreFileKit';
import { camera, cameraPicker } from '@kit.CameraKit';
import { BusinessError } from '@kit.BasicServicesKit';
let mContext = getContext(this) as common.Context;
const PERMISSIONS: Array<Permissions> = [
'ohos.permission.READ_IMAGEVIDEO',
];
export class PhotoPickerUtils {
async getPhotoPicker(){
this.pickerPermissions()
let PhotoSelectOptions = new picker.PhotoSelectOptions();
PhotoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE; // 过滤选择媒体文件类型
PhotoSelectOptions.maxSelectNumber = 1; // 选择媒体文件的最大数目
let photoPicker = new picker.PhotoViewPicker(); // 使用图库选择器对象前,需要先创建PhotoViewPicker实例
return new Promise<string>((success, fail) => {
photoPicker.select(PhotoSelectOptions).then((PhotoSelectResult) => {
if (PhotoSelectResult !== null && PhotoSelectResult !==
undefined) {
// 接口采用callback异步返回形式,返回PhotoSelectResult对象,故进行下一步操作前要先判断是否已经成功返回PhotoSelectResult对象了
success(PhotoSelectResult['photoUris'][0])
}
})
})
}
async getCamera(){
this.pickerPermissions()
let pickerProfile: cameraPicker.PickerProfile = {
cameraPosition: camera.CameraPosition.CAMERA_POSITION_BACK
};
let pickerResult: cameraPicker.PickerResult = await cameraPicker.pick(mContext,
[cameraPicker.PickerMediaType.PHOTO, cameraPicker.PickerMediaType.VIDEO], pickerProfile);
return new Promise<string>((success, fail) => {
if (pickerResult['resultCode'] === 0) {
success(pickerResult['resultUri'])
}
})
}
async pickerPermissions(){
///权限查询
const context = getContext(this) as common.UIAbilityContext;
const atManager = abilityAccessCtrl.createAtManager();
await atManager.requestPermissionsFromUser(context, PERMISSIONS);
}
}
export const photoPickerUtils: PhotoPickerUtils = new PhotoPickerUtils();
\ No newline at end of file
... ...
... ... @@ -63,7 +63,7 @@ struct LaunchAdvertisingPage {
//显示视频播放
Video({
src: this.defaultModel.bootVideoUrl,
previewUri: this.defaultModel.bootVideoScreenUrl,
// previewUri: this.defaultModel.bootVideoScreenUrl,
controller: this.controller
}).controls(false)
.autoPlay(true)
... ...