123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818 |
- //
- // OralCavityManager.m
- // OralCavityFramework
- //
- // Created by ss on 2024/8/30.
- //
- #import "OralCavityManager.h"
- //#import <UIKit/UIKit.h>
- #import <Photos/Photos.h>
- #import <MobileCoreServices/MobileCoreServices.h>
- #import <AVFoundation/AVFoundation.h>
- #import "cf680SDK.h"
- #import "AAPLEAGLLayerCustom.h"
- #define WeakSelf __weak typeof(self) weakSelf = self;
- #define kSCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width)
- #define kSCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height)
- @interface OralCavityManager ()<UIImagePickerControllerDelegate,UINavigationControllerDelegate>
- @property (nonatomic, strong) cf680SDK *sdk;
- @property (nonatomic, strong) UIView *videoView;
- @property (nonatomic, strong) AAPLEAGLLayerCustom *bfLayer;
- @property (nonatomic, copy) NSString *imageName;
- @property (nonatomic, copy) NSString *recordName;
- @property (nonatomic, assign) int connect;
- @end
- @implementation OralCavityManager
- + (instancetype)sharedInstance {
- static OralCavityManager *sharedInstance = nil;
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- sharedInstance = [[self alloc] init];
-
- // [sharedInstance startVideo];
- });
- return sharedInstance;
- }
- - (cf680SDK *)sdk {
-
- WeakSelf;
- dispatch_async(dispatch_get_main_queue(), ^{
-
- if (!weakSelf.sdk) {
-
- //初始化视频view
- UIView *videoView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kSCREEN_WIDTH, kSCREEN_WIDTH * 9 / 16)];
- weakSelf.videoView = videoView;
-
- weakSelf.sdk = [[cf680SDK alloc] init];
- //设置view w/h = 16 / 9
- [weakSelf.sdk SetVideoRect:weakSelf.videoView.frame viewlay:weakSelf.videoView.layer];
- [weakSelf.sdk SetVideoFullScreenRect:CGRectMake(0, 0, 16 / 9 * kSCREEN_HEIGHT, kSCREEN_HEIGHT)];
- [weakSelf.sdk ShowVideoRect:NO];
-
- static NSString *const notificationName = @"cf680SDK";
- NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
- [defaultCenter addObserver:weakSelf selector:@selector(handleNotification:) name:notificationName object:nil];
-
- NSString *filepath = [weakSelf MakeJPGFold:@"jpgimage"];
- const char *jpgfold = [filepath UTF8String];
- [weakSelf.sdk SetCapturePath:(char *)jpgfold];
-
- [[UIApplication sharedApplication] setIdleTimerDisabled: YES];
-
- //初始化相册名字
- weakSelf.imageName = @"";
- weakSelf.recordName = @"";
-
- // //获取pixelBuffer
- // _bfLayer = _videoView.layer.sublayers[0];
- // // 定时器,用于定时获取帧数据
- // CADisplayLink *displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(displayLinkCallback:)];
- // [displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
- if (weakSelf.getVideoView) {
- // self.getVideoView(weakSelf.videoView);
- weakSelf.getVideoView(weakSelf.videoView.layer.sublayers[0]);
- }
-
- //申请相册权限
- /*if (@available(iOS 14, *)) {
- [PHPhotoLibrary requestAuthorizationForAccessLevel:PHAccessLevelReadWrite handler:^(PHAuthorizationStatus status) {
-
- dispatch_async(dispatch_get_main_queue(), ^{
-
- if (status == PHAuthorizationStatusLimited) {
- NSLog(@"status == %ld",(long)status);
- }
- else if (status == PHAuthorizationStatusDenied ||
- status == PHAuthorizationStatusRestricted){
- NSLog(@"status == %ld",(long)status);
- }
- else if(status == PHAuthorizationStatusAuthorized){
- NSLog(@"status == %ld",(long)status);
- }
-
- });
-
- }];
- }
- else {
- [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
-
- dispatch_async(dispatch_get_main_queue(), ^{
-
- if (status == PHAuthorizationStatusDenied ||
- status == PHAuthorizationStatusRestricted){
- NSLog(@"status == %ld",(long)status);
- }
- else if(status == PHAuthorizationStatusAuthorized){
- }
-
- });
-
- }];
-
- }*/
-
- }
-
- });
- return _sdk;
- }
- //照片路径
- - (NSString *)MakeJPGFold:(NSString *)jpgfoldname {
-
- NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
- NSString *documentPath = [path objectAtIndex:0];
- NSFileManager *fileManager = [NSFileManager defaultManager];
- NSString *imageDocPath = [documentPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@",jpgfoldname]];
-
- NSLog(@"====>name:%@",imageDocPath);
- [fileManager createDirectoryAtPath:imageDocPath withIntermediateDirectories:YES attributes:nil error:nil];
- return imageDocPath;
-
- }
- ////获取视频pixelBuffer
- //- (void)displayLinkCallback:(CADisplayLink *)sender {
- //
- // if (_bfLayer.pixelBuffer && self.getPixelBuffer) {
- // //block回调
- // self.getPixelBuffer(_bfLayer.pixelBuffer);
- // }
- //}
- //1: 成功 -4 10秒链接超时。-1 错误
- - (int)connectToServer {
-
- WeakSelf;
- //异步调用
- dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
- char Version[32];
- weakSelf.connect = [weakSelf.sdk GetDeviceVersion:Version];
- });
- return _connect;
-
- }
- //开始视频
- - (void)startVideo {
-
- [self stopVideo];
-
- char ipaddr[16];
- //[SDK FindDevice:ipaddr];
- memset(ipaddr,0,sizeof(ipaddr));
- strcpy(ipaddr,"192.168.1.1");
-
- int ret = [self.sdk StartVideo:ipaddr];
- if(ret != 0)
- {
- printf("connect device error!\n");
- return;
- }
- }
- //停止视频
- - (void)stopVideo {
- [self.sdk StopVideo];
- }
- //拍照
- - (void)takePhoto:(NSString *)str {
-
- //删除临时文件
- [self deleteTmpFileisPhoto:YES];
-
- //拍照
- char filename[255];
- struct tm *ptm;
- time_t timep;
- time(&timep);
- ptm = localtime(&timep);
- memset(filename,0,sizeof(filename));
- sprintf(filename,"%04d%02d%02d%02d%02d%02d.jpg", (ptm->tm_year+1900),ptm->tm_mon+1,ptm->tm_mday,ptm->tm_hour,ptm->tm_min,ptm->tm_sec);
- [self.sdk ManualCapture:(char *)filename];
-
- // _imageName = str;
- _imageName = @"";
- }
- //拍照结果
- - (void)handleNotification:(NSNotification *)notify {
-
- NSString *param = notify.userInfo[@"content"];
- NSLog(@"recv: %@",param);
- //please handle result....
- // if ([param rangeOfString:@"jpg"].location == NSNotFound)
-
- //点击设备拍照按钮
- if (![param containsString:@"jpg"])
- {
- //device button key0
- // self.imageName = @"";
-
- //点击设备拍照按钮,通知flutter去拍照
- if (self.onDeviceTakePhoto) {
- self.onDeviceTakePhoto();
- }
-
- }
- //调用拍照方法
- else
- {
- // UIImage *image = [[UIImage alloc] initWithContentsOfFile:param];
-
- //1.保存照片
- // [self saveImgAndVideo:param isPhoto:YES];
-
-
-
- //2.检查文件是否存在 存在返回路径,不存在返回失败
- NSFileManager *fileManager = [NSFileManager defaultManager];
- if ([fileManager fileExistsAtPath:param]) {
- if (self.getPhotoPath) {
- self.getPhotoPath(param);
- }
- } else {
- if (self.getPhotoPath) {
- self.getPhotoPath(@"error:获取照片路径失败");
- }
- }
-
-
- }
- }
- //开始录像
- - (void)startRecord:(NSString *)str {
-
- //删除临时文件
- [self deleteTmpFileisPhoto:NO];
-
- //启动录像. 是否推送到相册 0: 不用 1:推送
- [self.sdk JPGStartRecord:0];
-
- _recordName = str;
-
- }
- //停止录像
- - (void)stopRecord {
- [self.sdk JPGStopRecord];
- //1.保存视频
- // [weakSelf saveImgAndVideo:@"" isPhoto:NO];
- //2.返回视频地址 延迟1.0s,以防没有获取完整视频地址
- WeakSelf;
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
-
- // 获取应用沙盒中的 Documents 目录路径
- NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
- // 拼接目标文件夹的路径
- NSString * targetFolderPath = [documentsPath stringByAppendingPathComponent:@"jpgvideo/"];
- // 创建文件管理器实例
- NSFileManager *fileManager = [NSFileManager defaultManager];
-
- // 获取目标文件夹中的所有内容
- NSError *error = nil;
- NSArray *contents = [fileManager contentsOfDirectoryAtPath:targetFolderPath error:&error];
-
- if (error) {
- NSLog(@"Error accessing folder contents: %@", error.localizedDescription);
-
- if (weakSelf.getVideoPath) {
- weakSelf.getVideoPath(@"error:获取视频路径失败");
- }
-
- }
- else {
- //从document中获取路径,找到不带下划线的
- NSString *tmpPath = [targetFolderPath stringByAppendingPathComponent:contents.lastObject];
- for (NSString *tmpStr in contents) {
- if (![tmpStr containsString:@"_"]) {
- tmpPath = [targetFolderPath stringByAppendingPathComponent:tmpStr];
- }
- }
-
- // 检查文件是否存在
- if ([fileManager fileExistsAtPath:tmpPath]) {
-
- if ([tmpPath containsString:weakSelf.recordName]) {
- NSLog(@"无需重命名");
- } else {
-
- //重命名
- NSRange range = [tmpPath rangeOfString:@"jpgvideo/"];
- NSMutableString *mutableString = [NSMutableString stringWithString:tmpPath];
- [mutableString insertString:weakSelf.recordName atIndex:range.location + range.length];
- NSString *newFilePath = [mutableString copy];;
- // 使用 moveItemAtPath:toPath:error: 方法重命名文件
- BOOL success = [fileManager moveItemAtPath:tmpPath toPath:newFilePath error:&error];
-
- if (success) {
- NSLog(@"文件重命名成功: %@ -> %@", tmpPath, newFilePath);
- tmpPath = newFilePath;
-
- //返回视频地址
- if (weakSelf.getVideoPath) {
- weakSelf.getVideoPath(tmpPath);
- }
-
- } else {
- NSLog(@"文件重命名失败: %@", error.localizedDescription);
- if (weakSelf.getVideoPath) {
- weakSelf.getVideoPath(@"error:文件重命名失败");
- }
- }
-
- }
-
- } else {
- NSLog(@"文件不存在: %@", tmpPath);
- if (weakSelf.getVideoPath) {
- weakSelf.getVideoPath(@"error:文件不存在");
- }
- }
-
- }
-
- });
-
- }
- //保存照片 数组,两个元素,0:临时视频路径,1:编辑后视频路径
- - (void)savePhoto:(NSArray *)arr {
- [self newSaveImgAndVideo:arr isPhoto:YES];
- }
- //保存视频 数组,两个元素,0:临时视频路径,1:编辑后视频路径
- - (void)saveRecord:(NSArray *)arr {
- [self newSaveImgAndVideo:arr isPhoto:NO];
- }
- //保存照片,视频到相册
- - (void)newSaveImgAndVideo:(NSArray *)path isPhoto:(BOOL)isPhoto {
-
- WeakSelf;
- dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
-
- //删除临时的
- if (path[0]) {
-
- if ([path[0] isEqualToString:path[1]]) {
-
- }
- //链接不一致时删除
- else {
- [weakSelf deleteFile:path[0]];
- }
-
- }
-
- if (path[1]) {
-
- //保存新的 检查文件是否存在
- NSString * tmpPath = path[1];
-
- // 获取自定义相册的集合
- NSString *albumName = @"dental";
- PHFetchResult<PHAssetCollection *> *collections = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum
- subtype:PHAssetCollectionSubtypeAlbumRegular
- options:nil];
-
- __block PHAssetCollection *customAlbum = nil;
- [collections enumerateObjectsUsingBlock:^(PHAssetCollection * _Nonnull collection, NSUInteger idx, BOOL * _Nonnull stop) {
- if ([collection.localizedTitle isEqualToString:albumName]) {
- customAlbum = collection;
- *stop = YES;
- }
- }];
-
- // 如果相册不存在,创建一个新相册
- if (!customAlbum) {
- [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
- [PHAssetCollectionChangeRequest creationRequestForAssetCollectionWithTitle:albumName];
- } completionHandler:^(BOOL success, NSError * _Nullable error) {
- if (success) {
- NSLog(@"Successfully created album: %@", albumName);
- [weakSelf newSaveImgAndVideo:path isPhoto:isPhoto]; // 重新调用自己保存
- } else {
- NSLog(@"Error creating album: %@", error.localizedDescription);
- if (isPhoto) {
- if (weakSelf.getSavePhotoPath) {
- weakSelf.getSavePhotoPath(@"error:创建相册失败");
- }
- }
- else{
- if (weakSelf.getSaveRecordPath) {
- weakSelf.getSaveRecordPath(@"error:创建相册失败");
- }
- }
- }
- }];
- return;
- }
-
- // 相册存在 开始保存文件到相册
- [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
- PHAssetCollectionChangeRequest *albumChangeRequest = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:customAlbum];
-
- // 图片文件
- if (isPhoto) {
- UIImage *image = [UIImage imageWithContentsOfFile:tmpPath];
- if (image) {
- PHAssetChangeRequest *assetChangeRequest = [PHAssetChangeRequest creationRequestForAssetFromImage:image];
- [albumChangeRequest addAssets:@[[assetChangeRequest placeholderForCreatedAsset]]];
- }
- }
- //视频文件
- else {
- NSURL *fileURL = [NSURL fileURLWithPath:tmpPath];
- PHAssetChangeRequest *assetChangeRequest = [PHAssetChangeRequest creationRequestForAssetFromVideoAtFileURL:fileURL];
- [albumChangeRequest addAssets:@[[assetChangeRequest placeholderForCreatedAsset]]];
- }
-
- } completionHandler:^(BOOL success, NSError * _Nullable error) {
- if (success) {
- NSLog(@"Successfully saved images to album: %@", albumName);
-
- //回到主线程回传
- dispatch_async(dispatch_get_main_queue(), ^{
-
- if (isPhoto) {
- if (weakSelf.getSavePhotoPath) {
- weakSelf.getSavePhotoPath(@"保存相册成功");
- }
- }
- else {
- if (weakSelf.getSaveRecordPath) {
- weakSelf.getSaveRecordPath(@"保存相册成功");
- }
- }
-
- });
-
-
- } else {
- NSLog(@"Error saving images: %@", error.localizedDescription);
- if (isPhoto) {
- if (weakSelf.getSavePhotoPath) {
- weakSelf.getSavePhotoPath(@"error:保存相册失败");
- }
- }
- else {
- if (weakSelf.getSaveRecordPath) {
- weakSelf.getSaveRecordPath(@"error:保存相册失败");
- }
- }
- }
- }];
-
- }
-
-
- });
-
- }
- //保存照片,视频到相册
- - (void)saveImgAndVideo:(NSString *)path isPhoto:(BOOL)isPhoto {
-
- WeakSelf;
- __block NSString *tmpPath = path;
- dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
-
- //重命名 保存照片
- if (isPhoto) {
-
- //替换文件名添加前缀
- // 创建文件管理器实例
- NSFileManager *fileManager = [NSFileManager defaultManager];
- // 获取目标文件夹中的所有内容
- NSError *error = nil;
- // 检查文件是否存在
- if ([fileManager fileExistsAtPath:tmpPath]) {
-
- if ([tmpPath containsString:weakSelf.imageName]) {
- NSLog(@"无需重命名");
- } else {
- //插入文件名
- NSRange range = [tmpPath rangeOfString:@"jpgimage/"];
- NSMutableString *mutableString = [NSMutableString stringWithString:tmpPath];
- [mutableString insertString:weakSelf.imageName atIndex:range.location + range.length];
- NSString *newFilePath = [mutableString copy];;
- // 使用 moveItemAtPath:toPath:error: 方法重命名文件
- BOOL success = [fileManager moveItemAtPath:tmpPath toPath:newFilePath error:&error];
-
- if (success) {
- NSLog(@"文件重命名成功: %@ -> %@", tmpPath, newFilePath);
- tmpPath = newFilePath;
- } else {
- NSLog(@"文件重命名失败: %@", error.localizedDescription);
- }
- }
-
- } else {
- NSLog(@"文件不存在: %@", tmpPath);
- }
-
- }
-
- //重命名 保存视频
- else {
-
- // 获取应用沙盒中的 Documents 目录路径
- NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
- // 拼接目标文件夹的路径
- NSString * targetFolderPath = [documentsPath stringByAppendingPathComponent:@"jpgvideo/"];
- // 创建文件管理器实例
- NSFileManager *fileManager = [NSFileManager defaultManager];
-
- // 获取目标文件夹中的所有内容
- NSError *error = nil;
- NSArray *contents = [fileManager contentsOfDirectoryAtPath:targetFolderPath error:&error];
-
- if (error) {
- NSLog(@"Error accessing folder contents: %@", error.localizedDescription);
-
- if (weakSelf.getVideoPath) {
- weakSelf.getVideoPath(@"error:获取视频路径失败");
- }
-
- return;
- }
- //从document中获取路径
- tmpPath = [targetFolderPath stringByAppendingPathComponent:contents.firstObject];
-
-
-
- // 检查文件是否存在
- if ([fileManager fileExistsAtPath:tmpPath]) {
-
- if ([tmpPath containsString:weakSelf.recordName]) {
- NSLog(@"无需重命名");
- } else {
-
- //重命名
- NSRange range = [tmpPath rangeOfString:@"jpgvideo/"];
- NSMutableString *mutableString = [NSMutableString stringWithString:tmpPath];
- [mutableString insertString:weakSelf.recordName atIndex:range.location + range.length];
- NSString *newFilePath = [mutableString copy];;
- // 使用 moveItemAtPath:toPath:error: 方法重命名文件
- BOOL success = [fileManager moveItemAtPath:tmpPath toPath:newFilePath error:&error];
-
- if (success) {
- NSLog(@"文件重命名成功: %@ -> %@", tmpPath, newFilePath);
- tmpPath = newFilePath;
- } else {
- NSLog(@"文件重命名失败: %@", error.localizedDescription);
- }
-
- }
-
- } else {
- NSLog(@"文件不存在: %@", tmpPath);
- }
-
- }
-
-
- // 获取自定义相册的集合
- NSString *albumName = @"dental";
- PHFetchResult<PHAssetCollection *> *collections = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum
- subtype:PHAssetCollectionSubtypeAlbumRegular
- options:nil];
-
- __block PHAssetCollection *customAlbum = nil;
- [collections enumerateObjectsUsingBlock:^(PHAssetCollection * _Nonnull collection, NSUInteger idx, BOOL * _Nonnull stop) {
- if ([collection.localizedTitle isEqualToString:albumName]) {
- customAlbum = collection;
- *stop = YES;
- }
- }];
-
- // 如果相册不存在,创建一个新相册
- if (!customAlbum) {
- [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
- [PHAssetCollectionChangeRequest creationRequestForAssetCollectionWithTitle:albumName];
- } completionHandler:^(BOOL success, NSError * _Nullable error) {
- if (success) {
- NSLog(@"Successfully created album: %@", albumName);
- [weakSelf saveImgAndVideo:tmpPath isPhoto:isPhoto]; // 重新调用自己保存
- } else {
- NSLog(@"Error creating album: %@", error.localizedDescription);
- if (isPhoto) {
- if (weakSelf.getPhotoPath) {
- weakSelf.getPhotoPath(@"error:创建相册失败");
- }
- }
- else{
- if (weakSelf.getVideoPath) {
- weakSelf.getVideoPath(@"error:创建相册失败");
- }
- }
- }
- }];
- return;
- }
-
- // 开始保存文件到相册
- [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
- PHAssetCollectionChangeRequest *albumChangeRequest = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:customAlbum];
-
- // 图片文件
- if (isPhoto) {
- UIImage *image = [UIImage imageWithContentsOfFile:tmpPath];
- if (image) {
- PHAssetChangeRequest *assetChangeRequest = [PHAssetChangeRequest creationRequestForAssetFromImage:image];
- [albumChangeRequest addAssets:@[[assetChangeRequest placeholderForCreatedAsset]]];
- }
- }
- //视频文件
- else {
- NSURL *fileURL = [NSURL fileURLWithPath:tmpPath];
- PHAssetChangeRequest *assetChangeRequest = [PHAssetChangeRequest creationRequestForAssetFromVideoAtFileURL:fileURL];
- [albumChangeRequest addAssets:@[[assetChangeRequest placeholderForCreatedAsset]]];
- }
-
- } completionHandler:^(BOOL success, NSError * _Nullable error) {
- if (success) {
- NSLog(@"Successfully saved images to album: %@", albumName);
-
- //回到主线程回传
- dispatch_async(dispatch_get_main_queue(), ^{
-
- if (isPhoto) {
- //获取照片路径
- if (weakSelf.getPhotoPath) {
- weakSelf.getPhotoPath(tmpPath);
- }
- }
- else {
- //返回视频路径
- if (weakSelf.getVideoPath) {
- weakSelf.getVideoPath(tmpPath);
- }
- }
-
- });
-
-
- } else {
- NSLog(@"Error saving images: %@", error.localizedDescription);
- if (isPhoto) {
- if (weakSelf.getPhotoPath) {
- weakSelf.getPhotoPath(@"error:保存相册失败");
- }
- }
- else {
- if (weakSelf.getVideoPath) {
- weakSelf.getVideoPath(@"error:保存相册失败");
- }
- }
- }
- }];
-
-
- });
-
- }
- //获取图片列表
- - (NSArray *)getPhotoList {
-
- return [self fetchPhotosAndVideosFromAlbum:@"jpgimage"];
- }
- //获取视频列表
- - (NSArray *)getVideoList {
- return [self fetchPhotosAndVideosFromAlbum:@"jpgvideo"];
- }
- //获取照片视频文件列表
- - (NSArray *)fetchPhotosAndVideosFromAlbum:(NSString *)str {
-
- // 获取应用沙盒中的 Documents 目录路径
- NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
- // 拼接目标文件夹的路径
- NSString * targetFolderPath = [documentsPath stringByAppendingPathComponent:str];
-
- // 创建文件管理器实例
- NSFileManager *fileManager = [NSFileManager defaultManager];
-
- // 获取目标文件夹中的所有内容
- NSError *error = nil;
- NSArray *contents = [fileManager contentsOfDirectoryAtPath:targetFolderPath error:&error];
-
- //删除临时文件
- for (NSString *str in contents) {
- if ([str containsString:@"_"]) {
- }else {
- [fileManager removeItemAtPath:[targetFolderPath stringByAppendingPathComponent:str] error:&error];
- }
- }
- //重新获取目标文件夹下内容
- contents = [fileManager contentsOfDirectoryAtPath:targetFolderPath error:&error];
-
- //拼接完整地址
- NSMutableArray *tmpArr = [NSMutableArray new];
- for (NSString *tmpStr in contents) {
- [tmpArr addObject:[targetFolderPath stringByAppendingPathComponent:tmpStr]];
- }
-
-
- if (error) {
- NSLog(@"Error accessing folder contents: %@", error.localizedDescription);
- return @[];
- }
-
- return tmpArr.copy;
-
- }
- //删除临时文件
- - (void)deleteTmpFileisPhoto:(BOOL)isPhoto {
-
- // 获取应用沙盒中的 Documents 目录路径
- NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
- // 拼接目标文件夹的路径
- NSString * targetFolderPath = [documentsPath stringByAppendingPathComponent: isPhoto == YES ? @"jpgimage/" : @"jpgvideo/"];
- // 创建文件管理器实例
- NSFileManager *fileManager = [NSFileManager defaultManager];
- // 获取目标文件夹中的所有内容
- NSError *error = nil;
- NSArray *contents = [fileManager contentsOfDirectoryAtPath:targetFolderPath error:&error];
- //删除临时文件
- for (NSString *str in contents) {
- if ([str containsString:@"_"]) {
- }else {
- [fileManager removeItemAtPath:[targetFolderPath stringByAppendingPathComponent:str] error:&error];
- }
- }
-
- }
- //删除指定文件
- - (BOOL)deleteFile:(NSString *)filePath {
-
- //1.删除沙盒中照片
- // 创建NSFileManager实例
- NSFileManager *fileManager = [NSFileManager defaultManager];
- // 删除文件
- NSError *error;
- [fileManager removeItemAtPath:filePath error:&error];
- if (error) {
- NSLog(@"Error: %@", [error localizedDescription]);
- return NO;
- } else {
- NSLog(@"File deleted successfully.");
- return YES;
- }
-
- }
- //横屏
- - (void)getLandscapeView:(NSArray *)arr {
- [self.sdk SetVideoFullScreenRect:CGRectMake(0, 0, [arr[0] floatValue], [arr[1] floatValue])];
- [self.sdk SetVideoWindows:1];
- }
- //竖屏
- - (void)getPortraitView {
- [self.sdk SetVideoWindows:0];
- }
- @end
|