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

本来在android4.0.4中使用libmedia的时候采用了如下方式:
[cpp]  
  #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文件内
函数原型为:
[cpp] 
status_t AudioSystem::getStreamVolumeIndex(audio_stream_type_t stream,  
                                           int *index,  
                                           audio_devices_t device)  
 
所以需要修改为如下代码:(由于开机的时候声音为最小,所以这里重新设置了下device的声音大小)
[cpp]  
#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  
 
上面只是起到了播放音乐的作用,那么要同步,只需要将代码中的
[cpp]  
mp->start();  
 
移至你需要播放音乐的位置即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值