请问如何添加开机声音

解决方案 »

  1.   

    本地写一个播放声音的应用程序, 放在init.rc中,和开机动画一样启动
      

  2.   

    这个应用程序,能用MediaPlayer这个类来写吗,如果不能,怎么写?
      

  3.   

    可以用,没问题。这是native的android程序,不是纯的linux的程序
      

  4.   

    我看了 framework下的东西mediaplayer这个类是java文件, 我想问下, 我是下java文件 还是写C++文件,我看了那个bootanimation是写的C++程序, 我想知道  写C++ 程序的话,怎么应用那个mediaplayer类,请指教。谢啦我知道用mediaplayer,只要下面几行话,就能播放声音了:
    MediaPlayer mp = new MediaPlayer();mp.setDataSource(String URL/FILE_PATH);mp.prepare();mp.start();但是我现在不知道怎么在C++文件中,应用mediaplayer这个java类
      

  5.   

    java端的MediaPlayer只是个皮, 实际上的东西都是通过jni调用下面的C/C++的mediaPlayer。
    你看下:
    android_media_MediaPlayer.cpp
    看一下里面几个函数即可,这几个函数就是java那边几个native成员函数的实现。
    创建MediaPlayer在:
    android_media_MediaPlayer_native_setup()
      

  6.   

    可以在 解析开机动画的BootAniamtion.cpp文件中的android:movie()方法中加入播放开机音乐的代码,比在JAVA代码中加开机音乐的代码时间控制上准确很多
      

  7.   

    我想问问,在那个文件加入播放音乐代码,那你播放的音乐文件是直接以二进制的形式直接定义在move()文件中嘛?
      

  8.   

    去bootanimation文件里修改源码,想怎么改怎么改,嘻嘻
      

  9.   

    我之前做过开机动画和音乐,在bootanimation里面去调mediaplayer播放音乐,但是一直没有成功,后来实在没有办法了,就porting了mp3play,然后在bootanimation里面fork一个进程去播放,同步不错。不过需要注意的是,bootanimation启动的时候声卡已经被android打开了,所以调用mp3play会失败,我的做法是在init.rc里把media这个service disable掉,在sufracefilnger(他启动了bootanimation)里面启动meida这个service。如果楼主播放的开机动画有点长的话,会导致播放到一半就进入android界面了,我是在init进程里面去等待bootanimation结束之后再往下跑,即调用waitpid。
    上述是我愚钝的做法,因为当时催的比较紧。如果楼主有新的解决办法,记得回复下哦
      

  10.   

    问问就是在你移植MP3play是在其bootanimation文件下加的文件,之后再在.pp文件中创建一个fork,进行调用吗?还有你那个init.rc是什么目录下的,我想问问,我也才做这个不是很懂,望赐教!!!
      

  11.   

    我现在在bootanimation里面添加了播放声音的代码,但是通过log看的话,执行都是正确的 ,就是没有声音输出,不知道为什么,希望大侠赐教啊
      

  12.   

    在CameraService.cpp下面有一个播放声音的代码,Copy一份就可以了,但是必须在BootAnimation的Android.mk文件里把mediaplay的库包含进来。
      

  13.   

    大侠,为什么我这段代码会卡在mp->prepare();下不去了呢?我看cameraservice里面也是调用的prepare,可以返回的,为什么我调用这个不返回呢?int main(int argc, char *argv[])
    {
            MediaPlayer* mp = new MediaPlayer();
            if (mp->setDataSource("/system/media/bootup_music.mp3", NULL) == NO_ERROR) {
                    mp->setAudioStreamType(AudioSystem::ENFORCED_AUDIBLE);
                    mp->prepare();
            }        int index;
            AudioSystem::getStreamVolumeIndex(AudioSystem::ENFORCED_AUDIBLE, &index);
            if (index != 0) {
                mp->seekTo(0);
                mp->start();
            }        return 0;
    }
      

  14.   

    我的blog 有解答: http://blog.csdn.net/k_linux_man/article/details/7282958
      

  15.   


    我试过了。我这边是先出画面的,隔1-2秒在出声音的。 但是,等系统起来后。在执行 bootanimation。就不会出现这样的情况。