UI:音频播放,桥接,相片和照片处…

 

#import "ViewController.h"

#import

#import


@interface ViewController ()

{

    MPMoviePlayerController *_playerCtrl;

}

@end


@implementation ViewController 


- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

}


- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


- (IBAction)selectPhoto:(id)sender {

   // NSData *data = [UIImageJPEGRepresentation([UIImage imageNamed:], 1)]图像压缩,0.0-1.0

    UIImagePickerController *pickVC = [[UIImagePickerController alloc] init];//相册管理器

    

   

    pickVC.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;

    

    //照片可编辑

    pickVC.allowsEditing = YES;

    

    pickVC.delegate = self;

    

    [self presentViewController:pickVC animated:YES completion:NULL];

    

}


- (IBAction)CameraPhoto:(id)sender {

    

    //判断是否有摄像头

    BOOL isCamera = [UIImagePickerController isCameraDeviceAvailable:    UIImagePickerControllerCameraDeviceRear];

    if (!isCamera) {

        UIAlertController *alter = [UIAlertController alertControllerWithTitle:@"提示" message:@"没有可用的摄像头" preferredStyle:UIAlertControllerStyleAlert];

        UIAlertAction *action = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {

        [alter dismissViewControllerAnimated:YES completion:NULL];

    }];

        [alter addAction:action];

        [self presentViewController:alter animated:YES completion:NULL];

        

        return;

        

    }

        

    

    

    UIImagePickerController *pickVC = [[UIImagePickerController alloc] init];

    

    pickVC.sourceType = UIImagePickerControllerSourceTypeCamera;

    

    pickVC.delegate = self;

    

    [self presentViewController:pickVC animated:YES completion:NULL];

}


- (IBAction)selectMovie:(id)sender {

    

    UIImagePickerController *pickVC = [[UIImagePickerController alloc] init];

    

    pickVC.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;//指定的资源类型

    

    pickVC.delegate = self;

    //媒体资源类型的过滤

    pickVC.mediaTypes = @[@"public.movie"];

    

    [self presentViewController:pickVC animated:YES completion:NULL];

    

}


- (IBAction)cameraMovie:(id)sender {

    

    

}



#pragma mark - UIImagePickerController协议

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

    

    NSLog(@"%@", info);

    

    NSString *mediaType = info[UIImagePickerControllerMediaType];

    

    if ([mediaType isEqualToString:@"public.image"]) {

        

        //1.获取到被选择的图片

        UIImage *image = info[UIImagePickerControllerEditedImage];

        

        //2.将其显示在界面上

        self.imageView.image = image;

        

        //3.如果照片来自于摄像头则保存照片到相册。

        if (picker.sourceType == UIImagePickerControllerSourceTypeCamera) {

            

            UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), NULL);//写入

            

        }

     

        

    } else if ([mediaType isEqualToString:@"public.movie"]) {

        

        //如果为视频,则获取到此视频资源的URL地址

        NSURL *url = info[UIImagePickerControllerMediaURL];

        //播放此视频

         _playerCtrl = [[MPMoviePlayerController alloc] initWithContentURL:url];

        

        _playerCtrl.view.frame = CGRectMake((self.view.frame.size.width - 300) / 2, 100, 300, 200);

        

            [self.view addSubview:_playerCtrl.view];

        

            //开始播放

            [_playerCtrl prepareToPlay];

            [_playerCtrl play];

    }

    

    [picker dismissViewControllerAnimated:YES completion:NULL];

    

}



//照片保存至相册后调用的方法

- (void)image:(UIImage *)image didFinishSavingWithError: (NSError *) error contextInfo: (void *) contextInfo {

    

    NSLog(@"保存成功");

}

 


   ------------------------------音频---------------------------------

@interface ViewController () {

    AVAudioPlayer *audioPlayer;//本地音频

    AVPlayer *player;//网络音频

    SystemSoundID soundID;

}


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    

    

    //1.AVAudioPlayer播放本地音频

    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"浮夸" ofType:@"mp3"];

    

    //urlWithString:只适用于网络URL

    //fileURLWithPath:适用于本地URL

    NSURL *url = [NSURL fileURLWithPath:filePath];

    

    NSError *error = nil;

    

    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];

    if (error) {

        

        NSLog(@"error:%@", error);

        return;

    }

    

    audioPlayer.delegate = self;

    audioPlayer.currentTime = 20;

    

    [audioPlayer prepareToPlay];

    

    [audioPlayer play];

    

    //如果需要后台播放音频文件,需要两步设置

//    1.设置音频会话的类型

    AVAudioSession *session = [AVAudioSession sharedInstance];//单例类,管理对象

    [session setCategory:AVAudioSessionCategoryPlayback error:NULL];//设置播放类型

UI:音频播放,桥接,相片和照片处理

  



  [session setActive:YES error:NULL];

//    2.info.plist配置文件中增加设置。

    

    

    //2.AVPlayer播放网络音频

//    NSURL *url = [NSURL URLWithString:@"http://218.76.27.57:8080/chinaschool_rs02/135275/153903/160861/160867/1370744550357.mp3"];

//    player = [[AVPlayer alloc] initWithURL:url];

//    

//    [player play];

    

    //3.直接注册为系统声音进行播放(时长小于30s的音频文件,格式一般为wav,caf,aiff

    //不需要进行音频文件的解压和解码,提高CPU的运行效率。

//    NSString *sysString = [[NSBundle mainBundle] pathForResource:@"guitar" ofType:@"caf"];

//    NSURL *sysURL = [NSURL fileURLWithPath:sysString];

    

//    //把本地音频文件注册成系统声音

//    soundID = 0;

//    

//    AudioServicesCreateSystemSoundID((__bridge CFURLRef)sysURL, &soundID);

//    

//    //播放系统声音

//    AudioServicesPlaySystemSound(soundID);

//    

//    //播放振动

//    AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);

    

}


- (void)dealloc {

    

    //移除注册的系统声音,如果想要重新使用此声音则需要重新注册

    AudioServicesRemoveSystemSoundCompletion(soundID);

    

    //停止播放系统声音,但此时此声音还是注册的系统声音

    //AudioServicesDisposeSystemSoundID(soundID);

    

}


- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


#pragma mark - AVAudioPlayerDelegate 


- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag {

    

    NSLog(@"播放完成");

}

 

        -----------------------桥接---------------------------


 

#import "ViewController.h"


@interface ViewController ()


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

//    NSString *str = @"hello world"; //malloc free

//    

//    CFStringRef cString = (__bridge_retained CFStringRef)str;3233是的等价的

//    CFStringRef cString = CFBridgingRetain(str);

//    

//    //手动释放内存

//    CFRelease(cString);

    

    CFStringRef cfString = CFStringCreateWithFormat(kCFAllocatorDefault, NULL, (CFStringRef)@"helloworld");

    

    //NSString *ocString = (__bridge_transfer NSString *)cfString;

    NSString *ocString = CFBridgingRelease(cfString);

    //内存管理权转移给ARC,此时不需要再手动释放CF对象的内存

    //CFRelease(cfString);

    

    

 

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值