在Xcode当中用slider和switch控件实现音乐的开关和音量控制

来源:互联网 发布:日语过n2 知乎 编辑:程序博客网 时间:2024/06/05 07:35
在Xcode当中用slider和switch控件实现音乐的开关和音量控制

在Xcode当中用slider和switch控件实现音乐的开关和音量控制


在建好项目之后需在Framework文件中添加AVFoundation.framework
以上图片有导入的方法,不同版本的Xcode导入的方法可能有些差别


AppDelegate.h中

#import

#import

#import "ViewController.h"

@class ViewController;


@interface AppDelegate : UIResponder <</span>UIApplicationDelegate>


@property (strong, nonatomic) UIWindow *window;


@property (strong, nonatomic) ViewController *viewController;

@end


AppDelegate.m中

 

#import "AppDelegate.h"


#import "ViewController.h"


@implementation AppDelegate

@synthesize viewController;


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions

{

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

   // Override point for customization after application launch.

   self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];

   self.window.rootViewController = self.viewController;


    [self.window makeKeyAndVisible];

    return YES;

}

。。。。。。。。

ViewController中

#import

#import


@interface ViewController : UIViewController <</span>AVAudioPlayerDelegate>

{


    UILabel *label;

    UISlider *slider;

    UISwitch *Switch;

    //int dir;

    AVAudioPlayer *player;

}

//@property  int dir ;

@property(nonatomic,strong)UILabel*label;

@property(nonatomic,strong)UISlider *slider;

@property(nonatomic,strong) UISwitch *Switch;

@property(nonatomic,strong)AVAudioPlayer *player;

@property(nonatomic,strong)IBOutlet UISlider *m_volume;

-(IBAction)sliderChanged:(UISlider*)sender;


//

- (IBAction)musicSwitch:(id)sender;

-(IBAction)changeVolume:(id)sender;

-(void)playAudioFile:(NSString *)soundFileName;

@end



 

#import "ViewController.h"

#import "AppDelegate.h"

@interface ViewController ()


@end


@implementation ViewController

@synthesize label;

@synthesize slider;

@synthesize Switch;

@synthesize player;

@synthesize m_volume;

- (void)viewDidLoad

{

    [super viewDidLoad];

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

    label=[[UILabel alloc]initWithFrame:CGRectMake(100, 100, 200, 100)];

   label.text=@"50";

    

      [self.view addSubview:label];

        [slider addTarget:self action:@selector(sliderChange:)forControlEvents:UIControlEventEditingChanged];

            [slider addTarget:self action:@selector(switchChange:)forControlEvents:UIControlEventEditingChanged];

    [self playAudioFile:@"05 05.Forever Love副本"];

    

}


- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


//tabel里面的数字由1100内增减

-(IBAction)sliderChanged:(UISlider*)sender

{

    slider=(UISlider*)sender;

    //    int progressAsInt=(int)(slider.value+0.5f);

    int progressAsInt=[slider value]*100;

    NSString *newText=[[NSString alloc]initWithFormat:@"%d",progressAsInt ];

    label .text=newText;

    //[newText release];

}




//[[NSNotificationCenter defaultCenter] addObserver:self

//selector:@selector(volumeChanged:)

//name:@"AVSystemController_SystemVolumeDidChangeNotification"

//object:nil];




//实现协议方法

-(void)audioPlayerBeginInterruption:(AVAudioPlayer *)player

{

    //播放器被中断的时候让音乐暂停

    [self.player pause];

}


//实现协议方法

-(void)audioPlayerEndInterruption:(AVAudioPlayer *)player withOptions:(NSUInteger)flags

{

    //结束中断返回到这个程序的时候让音乐继续播放

    [self.player play];

}

//播放音乐

-(void)playAudioFile:(NSString *)soundFileName{

    NSString *fileName=[[NSBundle mainBundle]pathForResource:soundFileName ofType:@"mp3"];

    if ([[NSFileManager defaultManager]fileExistsAtPath:fileName]) {

        NSURL *fileUrl=[NSURL fileURLWithPath:fileName];

        NSError *err=nil;

        player=[[AVAudioPlayer alloc]initWithContentsOfURL:fileUrl error:&err];

        if (!player) {

            //问题处理

        }

        else{

            //让音乐播放完之后继续循环播放

            [player setNumberOfLoops:-1];

            //设置事件委派

            [player setDelegate:self];

            //调节音量(范围从01

            player.volume=0.5;

            //准备buffer,减少播放延时的时间

            [player prepareToPlay];

            //播放音乐

            [player play];

            //[player playAtTime:1];

        }

    }

    else{

        NSLog(@"没有找到文件");

    }

}

- (IBAction)musicSwitch:(id)sender

{

    UISwitch *s=(UISwitch *)sender;

    if ([s isOn]==YES) {

        if (self.player.playing==NO) {

            [self.player play];

        }

    }

    else{

        if (self.player.playing==YES) {

            [self.player pause];

        }

    }

}

-(IBAction)changeVolume:(id)sender

{

    if (self.player.playing) {

        float value= m_volume.value;

        player.volume=value;

    }

}

@end

原创粉丝点击