资源简介
基于Linux系统的音乐播放器整个工程文件,可用
代码片段和文件信息
/*
* SD卡mp3播放器控制程序
* 功能:
k1:播放、暂停
k2:停止播放
k3:上一首
k4:下一首
* 附加:歌曲自动循环播放SD卡/sdcard/song目录中mp3歌曲
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
/*共享内存申请标记*/
#define PERM S_IRUSR|S_IWUSR
/*双向循环列表:存放歌曲名*/
struct song
{
char songname[20];
struct song *prev;
struct song *next;
};
/*孙子进程id号*/
pid_t gradchild;
/*子进程id号*/
pid_t pid;
/*共享内存描述标记*/
int shmid;
char *p_addr;
/*共享内存内容格式*/
/*|gradchild(孙子进程PID) |+ |空一个字节|+ currentsong(当前播放列表的节点指针)|*/
/*播放标记*/
int first_key=1;
int play_flag=0;
/*************************************************
Function name: play
Parameter : struct song *
Description : 播放函数
Return : void
Argument : void
**************************************************/
void play(struct song *currentsong)
{
pid_t fd;
char *c_addr;
char *p;
int len;
char my_song[30]=“/udisk/song/“;
while(currentsong)
{
/*创建子进程,即孙子进程*/
fd = fork();
if(fd == -1)
{
perror(“fork“);
exit(1);
}
else if(fd == 0) //孙子进程
{
/*把歌曲名加上根路径*/
strcat(my_songcurrentsong->songname);
p = my_song;
len = strlen(p);
/*去掉文件名最后的‘\n‘*/
my_song[len-1]=‘\0‘;
printf(“THIS SONG IS %s\n“my_song);
/*运行madplay播放器,播放MP3*/
execl(“/bin/madplay““madplay“my_songNULL);//播放当前列表MP3音乐
printf(“\n\n\n“);
}
else //子进程
{
/*内存映射*/
c_addr = shmat(shmid00);
/*把孙子进程的id和当前播放歌曲的节点指针传入共享内存*/
memcpy(c_addr&fdsizeof(pid_t));
memcpy(c_addr + sizeof(pid_t)+1¤tsong4);
/*使用wait阻塞子进程,直到孙子进程播放完才能被唤醒;
当被唤醒时,表示播放MP3期间没有按键按下,则继续顺序播放下一首MP3*/
if(fd == wait(NULL))
{
currentsong = currentsong->next;
printf(“THE NEXT SONG IS %s\n“currentsong->songname);
}
}
}
}
/*************************************************
Function name: creat_song_list
Parameter : void
Description : 创建歌曲名的双向循环链表
Return : struct song *
Argument : void
**************************************************/
struct song *creat_song_list(void)
{
FILE *fd;
size_t size;
size_t len;
char *line = NULL;
struct song *head;
struct song *p1;
struct song *p2;
system(“ls /udisk/song >song_list“);
fd = fopen(“song_list““r“);
p1 = (struct song *)malloc(sizeof(struct song));
printf(“==================================song list=====================================\n“);
system(“ls /sdcard/song“);
printf(“\n“);
printf(“================================================================================\n“);
size = getline(&line&lenfd);
strncpy(p1->songnamelinestrlen(line));
head = p1;
while((size = getline(&line&lenfd)) != -1) //从文件中读取一行,直到出错或者到文件尾EOF返回-1
{
p2 = p1;
p1 = (struct song *)malloc(sizeof(struct song));
strncpy(p1->songnamelinestrlen(line));
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2014-04-10 15:53 嵌入式作业\
目录 0 2014-04-10 16:30 嵌入式作业\app\
文件 78 2011-01-03 01:58 嵌入式作业\app\Makefile
文件 597674 2014-04-10 16:30 嵌入式作业\app\mp3_pla
文件 9003 2015-04-08 10:35 嵌入式作业\app\pla
目录 0 2014-04-10 15:52 嵌入式作业\bin\
文件 103392 2011-09-02 15:52 嵌入式作业\bin\madplay
目录 0 2014-04-10 15:52 嵌入式作业\driver\
文件 247 2011-01-03 01:48 嵌入式作业\driver\.int_key_drv.ko.cmd
文件 14060 2011-01-03 01:48 嵌入式作业\driver\.int_key_drv.mod.o.cmd
文件 22926 2011-01-03 01:48 嵌入式作业\driver\.int_key_drv.o.cmd
目录 0 2014-04-10 15:52 嵌入式作业\driver\.tmp_versions\
文件 77 2011-01-03 01:48 嵌入式作业\driver\.tmp_versions\int_key_drv.mod
文件 8537 2011-04-05 21:58 嵌入式作业\driver\int_key_drv.c
文件 390 2010-09-16 16:35 嵌入式作业\driver\Makefile
目录 0 2014-04-10 15:52 嵌入式作业\madplay\
文件 338143 2006-11-04 14:06 嵌入式作业\madplay\libid3tag-0.15.1b.tar.gz
文件 502379 2006-11-04 14:10 嵌入式作业\madplay\libmad-0.15.1b.tar.gz
文件 590929 2006-11-04 14:10 嵌入式作业\madplay\madplay-0.15.2b.tar.gz
文件 2357056 2011-09-02 16:01 嵌入式作业\madplay\madplay.tar.gz
文件 75616 2011-11-16 14:33 嵌入式作业\madplay\madplay移植到mini2440开发手册-贺工.pdf
文件 496597 2006-11-04 14:13 嵌入式作业\madplay\zlib-1.2.3.tar.tar
目录 0 2014-04-10 15:54 嵌入式作业\song\
文件 14246016 2014-03-01 22:12 嵌入式作业\song\cannon.mp3
文件 9630855 2014-03-01 21:40 嵌入式作业\song\catchmybreath.mp3
文件 9322578 2014-02-27 22:26 嵌入式作业\song\innocence.mp3
文件 10093671 2014-02-26 20:16 嵌入式作业\song\ykzzldx.mp3
文件 3852781 2014-02-27 22:26 嵌入式作业\song\zuijiasunyou.mp3
- 上一篇:onvif框架搭建所需源码
- 下一篇:超实用的微信小程序开发的商城系统源码
评论
共有 条评论