升级版音乐播放器

//

//  secondViewController.m

//  AudioPlayer

//

//  Created by apple on 14-7-24.

//  Copyright (c) 2014年 苹果IOS软件开发者. All rights reserved.

//

#import "secondViewController.h"

#import "ViewController.h"

@interface secondViewController ()<UITableViewDataSource,UITableViewDelegate>

@end

@implementation secondViewController

{

NSArray *playlist;

}

- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

if (self) {

// Custom initialization

}

return self;

}

- (void)viewDidLoad

{

[super viewDidLoad];

//(0,0,self.view.frame.size.width,self.view.frame.height)

UITableView *tableview = [[UITableView alloc] initWithFrame:CGRectMake(0, 14, 320, 466) style:UITableViewStylePlain];

//设置数据源

tableview.dataSource = self;

tableview.delegate = self;

tableview.rowHeight = 30;

[self.view addSubview:tableview];

playlist = @[@"拯救",@"给我一个理由忘记",@"小苹果",@"江南Style"];

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

#pragma mark - UITableViewDataSource

//这是UITableViewDataSource里面的方法

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;

{

//返回表格的行数

return playlist.count;

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;

{

//使用重用标示获取已有的Cell

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" ];

if (cell == nil)

{

//使用一个重要标示创建一个Cell

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];

}

//在cell上显示文字

cell.textLabel.text = [NSString stringWithFormat:@"%ld.%@",(long)indexPath.row,playlist[indexPath.row]];

return cell;

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;

{

NSLog(@"did select row: %d",indexPath.row);

ViewController *Ctrl = [[ViewController alloc] initWithNibName:nil bundle:nil];

[Ctrl myRow:indexPath.row];

//延时加载

[self presentViewController:Ctrl animated:YES completion:^{NSLog(@"...completion");}];

}

#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

{

// Get the new view controller using [segue destinationViewController].

// Pass the selected object to the new view controller.

}

@end

//

//  ViewController.m

//  AudioPlayer

//

//  Created by apple on 14-7-18.

//  Copyright (c) 2014年 苹果IOS软件开发者. All rights reserved.

//

#import "ViewController.h"

#import "secondViewController.h"

#import <AVFoundation/AVFoundation.h>

@interface ViewController ()<AVAudioPlayerDelegate>

{

int _myRow;

AVAudioPlayer *player;

UIImageView *imageview;

NSTimer *timer;

NSArray *playlist;

}

@property IBOutlet UISlider *progressSlider;

@property IBOutlet UILabel  *musicname;

@end

@implementation ViewController

- (void)myRow:(int)row

{

_myRow = row;

}

- (void)createbjview

{

//设置音量图标

UIImageView *volimageview = [[UIImageView alloc] initWithFrame:CGRectMake(0, 15, 64, 64)];

volimageview.image = [UIImage imageNamed:@"vol"];

[self.view addSubview:volimageview];

imageview = [[UIImageView alloc ]initWithFrame:CGRectMake(0, 0, 320, 480)];

imageview.image = [UIImage imageNamed:@"0"];

[self.view addSubview:imageview];

[self.view sendSubviewToBack:imageview];

}

-(void)createButtons

{

//2.上一曲/下一曲按钮

UIButton *nextbtn = [UIButton buttonWithType:UIButtonTypeCustom];

[nextbtn setImage:[UIImage imageNamed:@"next"] forState:UIControlStateNormal];

nextbtn.frame = CGRectMake(224, 410, 64, 64);

[nextbtn addTarget:self action:@selector(didnextclicked:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:nextbtn];

UIButton *prevbtn = [UIButton buttonWithType:UIButtonTypeCustom];

[prevbtn setImage:[UIImage imageNamed:@"prev"] forState:UIControlStateNormal];

prevbtn.frame = CGRectMake(32, 410, 64, 64);

[prevbtn addTarget:self action:@selector(didprevclicked:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:prevbtn];

}

- (void)createSlider

{

UISlider *volumeSlider=[[UISlider alloc] initWithFrame:CGRectMake(60, 35, 220, 10)];

volumeSlider.value = 0.5;

volumeSlider.maximumValue= 1 ;

volumeSlider.minimumValue= 0 ;

[volumeSlider addTarget:self action:@selector(Volume:) forControlEvents:UIControlEventValueChanged];

[self.view addSubview:volumeSlider];

_progressSlider=[[UISlider alloc]initWithFrame:CGRectMake(30,390 ,260 ,10 )];

_progressSlider.tintColor = [UIColor blueColor];_progressSlider.minimumValue = 0;

_progressSlider.maximumValue = 1;

[_progressSlider addTarget:self action:@selector(Progress:) forControlEvents:UIControlEventValueChanged];

[self.view addSubview:_progressSlider];

}

- (void)createLabel

{

_musicname=[[UILabel alloc]initWithFrame:CGRectMake(60, 350, 200, 20)];

_musicname.textColor=[UIColor whiteColor];

_musicname.textAlignment=NSTextAlignmentCenter;

_musicname.text=[NSString stringWithFormat:@"%@",playlist[_myRow]];

[self.view addSubview:_musicname];

}

- (void)didclicked:(id)sender

{

UIButton *playorstopbtn =(UIButton *)sender;

//判断当前的播放状态

if(player.playing)

{

playorstopbtn.selected = NO;

[player pause];

}

else

{

playorstopbtn.selected = YES;

[player play];

}

}

- (void)didnextclicked:(UIButton *)sender

{

if(player.playing)

{

if (_myRow == playlist.count-1)

{

_myRow = 0;

}

else

{

_myRow++;

}

[self play];

}

else{

if (_myRow == playlist.count-1)

{

_myRow = 0;

}

else

{

_myRow++;

}

[player pause];

}

NSLog(@"The next song");

}

- (void)didprevclicked:(UIButton *)sender

{

if(player.playing)

{

if(_myRow==0)

{

_myRow=playlist.count-1 ;

}

else

{

_myRow=_myRow-1;

}

[self play];

}

else

{

if(_myRow==0)

{

_myRow=playlist.count-1 ;

}

else

{

_myRow=_myRow-1;

}

[player pause];

}

NSLog(@"The previous song");

}

- (void)Volume:(UISlider *)sender

{

player.volume = sender.value;

NSLog(@"%f",sender.value);

}

- (void)Progress:(UISlider *)sender {

player.currentTime =sender.value *player.duration;

}

- (void)refreshProgress

{

self.progressSlider.value=player.currentTime/player.duration;

}

- (void)viewDidLoad {

UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];

[btn setTitle:@"Back" forState:UIControlStateNormal];

[btn addTarget:self action:@selector(didClicked) forControlEvents:UIControlEventTouchUpInside];

btn.frame = CGRectMake(280, 20, 40, 20);

[self.view addSubview:btn];

[super viewDidLoad];

[self createbjview];

[self createButtons];

[self createSlider];

[self createLabel];

playlist = @[@"拯救",@"给我一个理由忘记",@"小苹果",@"江南Style"];

[self play];

//    [player stop];

}

- (void)didClicked

{

[timer invalidate];

//使模态视图消失

[self dismissViewControllerAnimated:YES completion:nil];

}

- (void)play

{

//1.播放/暂停按钮

UIButton *playorstopbtn = [UIButton buttonWithType:UIButtonTypeCustom];

//设置按钮的图片

[playorstopbtn setImage:[UIImage imageNamed:@"play"] forState:UIControlStateNormal];

[playorstopbtn setImage:[UIImage imageNamed:@"pause"] forState:UIControlStateSelected];

playorstopbtn.frame = CGRectMake(128, 410, 64, 64);

[playorstopbtn addTarget:self action:@selector(didclicked:) forControlEvents:UIControlEventTouchUpInside];

playorstopbtn.adjustsImageWhenHighlighted =FALSE;

[self.view addSubview:playorstopbtn];

//显示专辑图片

NSString *imageName =[NSString stringWithFormat:@"%d.jpg", _myRow];

imageview.image=[UIImage imageNamed:imageName];

NSString *name = playlist[_myRow];

_musicname.text=[NSString stringWithFormat:@"%@",playlist[_myRow]];        //获取本地音乐的文件路径

NSString *path = [[NSBundle mainBundle] pathForResource:name ofType:@"mp3"];

//将文件读入内存中

//    NSData *data = [NSData dataWithContentsOfFile:path];

//创建一个播放器对象

//player = [[AVAudioPlayer alloc] initWithData:data error:nil];

//网络地址用下面的方法

//[NSURL URWithString:@"http://www.baidu.com"];

//    //从文件路径生成一个url对象

NSURL *url = [NSURL fileURLWithPath:path];

//AVAudioPlayer只能播放本地文件

NSError *err;

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

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

player.delegate = self;

//使能,播放速率控制,音量初始值

player.enableRate = YES;

player.rate = 1;

player.volume = 0.5;

NSLog(@"%f",player.volume);

[player prepareToPlay];

[player play];

//从currentTime开始播放

//player.currentTime = 100;

if(player.playing)

{

playorstopbtn.selected = YES;

}

[timer invalidate];

//每隔1秒调用依次refreshProgress

timer = [NSTimer scheduledTimerWithTimeInterval: 1 target:self selector:@selector(refreshProgress) userInfo:nil repeats:YES];

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

}

@end

升级版音乐播放器

时间: 2024-11-09 02:15:13

升级版音乐播放器的相关文章

每天写个APP_第2天——升级版音乐播放器

每天写个APP_第2天--升级版音乐播放器 android 音乐播放器 SeekBar Runnable 前面的话 :有同学说我写的不够详细,我以后会注意和完善.又说能否有源码,我一般会在文章里贴出所有源码,另外我今天会吧代码传到github上提供下载. 回顾:上篇文章实现各一个简单的播放器,但是仍然不是很酷.今天,我们对它做个改进.还记得网易云音乐APP中播放界面有个CD吗?当播放音乐时,中间的CD就会转动,是不是很酷?今天我们也把中间的CD转起来!然后,我们还要添加歌曲进度条,还可以用手指拖

第二十九节(java-开发简单音乐播放器 )

package com.tanzhou.jmf; import java.applet.*; import java.awt.*; import java.awt.event.*; import java.io.File; import java.net.MalformedURLException; import java.net.URL; import javax.swing.*; // JFrame java的GUI程序的基本思路是以JFrame为基础,它是屏幕上window的对象,能够最大

Android实现音乐播放器(一)

Graphical User Interface 本篇文章记录了我实现Android简单音乐播放器的过程,(一)中介绍了怎么构建音乐播放器的前端页面.首先大家看一下,界面最后是这样的(界面有点粗陋) 音乐文件列表是从SD卡中读取出来的. 首先我们先在Layout里面创建Music Player的GUI,diagram如下图所示: 根据diagram我们在activity_main.xml写出如下代码: <LinearLayout xmlns:android="http://schemas.

手把手教你做音乐播放器(八)桌面小工具(上)

第8节 桌面小工具 桌面小工具是可以放置在主界面的.快速控制应用的小助手.例如我们的音乐小工具,它可以帮助用户在桌面上就完成音乐的暂停.播放.切换等操作,而不需要启动应用本身. 在安卓系统中,我们也常常叫它App widget. 实现一个App widget要经过以下几个步骤, 创建一个App widget类,让它继承自AppWidgetProvider,例如AnddleMusicAppWidget类: 放在res\layout目录下,为App widget的界面定义一个布局,例如anddle_

毕业设计——基于STM32的音乐播放器设计(一)

基于STM32的音乐播放器设计, 源代码下载地址:http://download.csdn.net/detail/cxp2205455256/8334021      SD卡文件下载地址:http://download.csdn.net/detail/cxp2205455256/8334089 电路图下载地址:文件太大了,上传不了....... 以下是截图: 1.硬件电路 2.软件主界面 3.音乐播放器界面 4.音乐定时播放界面 5.音乐列表界面 6.日历功能界面 9.温度功能界面 10.计算器

Xamarin.Android开发音乐播放器

最近.Net开源着实让C#火了一把,好久就听说Mono for Android一直没静下心来看,上周末找来看看,确实不错,前台界面axml编写跟Java安卓开发毫无区别,后台用C#其实很多windows下的方法都可以用,做一个安卓音乐播放器,主要实现音乐播放,上一曲下一曲,音乐播放列表,随机播放,扫描SD卡内所有音乐. 先show一组界面啊,话说有图有真相啊: 项目结构如图: Lrc是歌词处理方法 MusicService是安卓服务播放音乐,服务Broadcast,以及界面接收Receiver

html网页音乐播放器自带播放列表

基于网页的音乐播放器demo  http://pan.baidu.com/s/1dDgm7HR 自己diy了一个手机端在线音乐播放器演示地址http://shanxi2014.com/zhuandizhi/dom.php 全面支持手机端浏览器. 主要修改引用路径(不要修改文件相对存放地址) 第二就是正则拼接参数了 <script src="/city/js/libs/jquery-1.10.2.min.js"></script> <script src=&

【源码分享】mui实现简单的手机音乐播放器

mui实现简单的手机音乐播放器 最近先来无事,我用mui写了一个可以跨页面控制的音乐播放器.主要功能有上一曲,下一曲,播放,暂停,感兴趣的可以继续看下去. 说的总是不实在,直接上源码,有兴趣的可以读下注释. 1首页代码 ①首页的html代码 1 <a> 2 <i id="bofang" class="iconfont icon-play-o"></i> <!--就是一个播放按钮没啥特殊的--> 3 </a>

HTML5项目笔记4:使用Audio API设计绚丽的HTML5音乐播放器

HTML5 有两个很炫的元素,就是Audio和 Video,可以用他们在页面上创建音频播放器和视频播放器,制作一些效果很不错的应用. 无论是视屏还是音频,都是一个容器文件,包含了一些音频轨道,视频轨道和一些元数据,这些是和你的视频或者音频控件绑定到一块的,这样才形成了一个完整的播放组件. 浏览器支持情况: 浏览器 支持情况 编解码器 Chrome 3.0 Theora . Vorbis .Ogg H.264 . AAC .MPEG4 FireFox 3.5 Theora . Vorbis .Og