Android 4.1.2开机音乐与动画的代码

本来在android4.0.4中使用libmedia的时候采用了如下方式:

    #define SYSTEM_BOOTMUSIC_FILE "/system/media/sound.ogg"
    int index;  
    MediaPlayer* mp = new MediaPlayer();  
    
    if((access(SYSTEM_BOOTMUSIC_FILE,F_OK))!=-1){  
		if (mp->setDataSource(SYSTEM_BOOTMUSIC_FILE, NULL) == NO_ERROR) {  
            mp->setAudioStreamType(AUDIO_STREAM_ENFORCED_AUDIBLE);  
            mp->prepare();
            mp->setLooping(true);  
	    }  
	    AudioSystem::getStreamVolumeIndex(AUDIO_STREAM_ENFORCED_AUDIBLE, &index);  
	    if (index != 0) {  
	        mp->seekTo(0);  
                mp->start(); 
	    } 
   	}  

这段代码在4.0.4是可以用的,但到了4.1.2的时候发现getStreamVolumeIndex的接口发生了变化

该函数位于frameworks/av/media/Libmedia/AudioSystem.cpp文件内

函数原型为:

status_t AudioSystem::getStreamVolumeIndex(audio_stream_type_t stream,
                                           int *index,
                                           audio_devices_t device)

所以需要修改为如下代码:(由于开机的时候声音为最小,所以这里重新设置了下device的声音大小)

    #define SYSTEM_BOOTMUSIC_FILE "/system/media/sound.ogg"
    //Neo Modify
    int index = 5;  
    audio_devices_t device;
    MediaPlayer* mp = new MediaPlayer();  
        
    if((access(SYSTEM_BOOTMUSIC_FILE,F_OK))!=-1){  
        //printf("access audio\n");
        if (mp->setDataSource(SYSTEM_BOOTMUSIC_FILE, NULL) == NO_ERROR) {  
            printf("setDataSource audio\n");
            mp->setAudioStreamType(AUDIO_STREAM_ENFORCED_AUDIBLE);  
            mp->prepare();
            mp->setLooping(true);  
        }  
        device = AudioSystem::getDevicesForStream(AUDIO_STREAM_ENFORCED_AUDIBLE);
        printf("device = %d\n", device);
        bool temp = AudioSystem::setStreamVolumeIndex(AUDIO_STREAM_ENFORCED_AUDIBLE, index, device); 
        //printf("index = %d,temp = %d\n", index,temp);
        temp = AudioSystem::getStreamVolumeIndex(AUDIO_STREAM_ENFORCED_AUDIBLE, &index, device);
        //printf("index = %d,temp = %d\n", index,temp);
        if (index != 0){
            //printf("index!=0\n");
            mp->seekTo(0); 
            mp->start();
        }	                  
    }
    //End


上面只是起到了播放音乐的作用,那么要同步,只需要将代码中的

mp->start();

移至你需要播放音乐的位置即可。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值