分享

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

 灬木木的花灬 2015-02-02
本来在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条评论

    发表

    请遵守用户 评论公约

    类似文章 更多