当前位置:操作系统 > 安卓/Android >>

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();  
 
移至你需要播放音乐的位置即可。
 
补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,