音频设备事件处理2

这篇博客主要讨论了音频设备事件的处理,特别是针对音乐播放器。当接收到SYS_KEY_EVENT时,调用music_key_event_opr处理按键事件,如播放/暂停、切换歌曲等。对于SYS_DEVICE_EVENT,主要关注设备拔出情况,如果拔出的是当前播放设备,则保存断点并停止解码。文章还提到了按键消息的多种类型和快进、快退功能的实现,以及删除文件和播放下一首的操作。
摘要由CSDN通过智能技术生成

music 设备事件响应接口:music_sys_event_handler
主要处理两类事件:
SYS_KEY_EVENT:按键事件,调用music_key_event_opr
SYS_DEVICE_EVENT:设备事件

设备事件主要处理设备拔出事件。
设备被拔出后,判断拔出的设备与当前播放的设备是不是同一个设备,是的话需要保存断点信息。停止文件解码,释放扫盘句柄。

music的key事件处理函数:music_key_event_opr
返回值:1表示事件处理完成,0表示事件还未处理
如果事件还未处理,事件消息将通过公共消息处理器进行处理。

按键消息类型:
KEY_MUSIC_PP,//播放或暂停
KEY_MUSIC_PREV,//播放前一个
KEY_MUSIC_NEXT,//播放下一个
KEY_MUSIC_FF,//快进
KEY_MUSIC_FR,//快退
KEY_MUSIC_PLAYER_START,//播放开始
KEY_MUSIC_PLAYER_END,//播放结束
KEY_MUSIC_PLAYER_DEC_ERR,//解码错误
KEY_MUSIC_DEVICE_TONE_END,//设备提示音结束
KEY_MUSIC_PLAYER_QUIT,//播放器退出
KEY_MUSIC_PLAYER_AUTO_NEXT,//自动播放下一个
KEY_MUSIC_PLAYER_PLAY_FIRST,//播放第一个文件
KEY_MUSIC_PLAYER_PLAY_LAST,//播放最后一个文件
KEY_MUSIC_CHANGE_REPEAT,//
KEY_MUSIC_CHANGE_DEV,
KEY_MUSIC_AUTO_NEXT_DEV,
KEY_MUSIC_CHANGE_DEV_REPEAT,
KEY_MUSIC_SET_PITCH,
KEY_MUSIC_SET_SPEED,
KEY_MUSIC_PLAYE_BY_DEV_FILENUM,//通过文件号
KEY_MUSIC_PLAYE_BY_DEV_SCLUST,//通过蔟播放
KEY_MUSIC_PLAYE_BY_DEV_PATH,//通过路径播放
KEY_MUSIC_DELETE_FILE,//删除文件
KEY_MUSIC_PLAYE_NEXT_FOLDER,//下一个目录
KEY_MUSIC_PLAYE_PREV_FOLDER,//上一个目录
KEY_MUSIC_PLAYE_REC_FOLDER_SWITCH,
KEY_MUSIC_PLAYER_AB_REPEAT_SWITCH,

播放时快进和快退:
KEY_MUSIC_FF:music_player_ff(3);
KEY_MUSIC_FR,:music_player_fr(3);
这里可以修改快进、快退的步进值,默认是3。

删除文件:

    case KEY_MUSIC_DELETE_FILE: //删除文件
        log_i("KEY_MUSIC_DELETE_FILE\n");
        err = music_player_delete_playing_file();//删除当前播放文件,并播放下一首
        break;

删除文件操作中进行了文件删除,并播放下一首。

int music_player_delete_playing_file(void)//music_player删除当前播放文件,并播放下一曲
{
   
//__this指music_player,即音乐播放器
    if (__this && __this->file) {
   //文件存在
        ///获取当前播放文件序号, 文件删除之后, 播放下一曲
        int err = 0;
        int cur_file = music_player_get_file_cur();//获取当前播放的文件
        char *cur_dev = music_player_get_dev_cur();//获取当前的设备
        
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值