Android R 高通4100平台,增加开机铃声

commit 8e57de2e9f1d0eda0406df88089b746e7715b5c1
Author: luojia <luojia@caron-tech.com>
Date:   Thu Dec 14 16:32:00 2023 +0800

    bootsound

diff --git a/frameworks/base/cmds/bootanimation/Android.bp b/frameworks/base/cmds/bootanimation/Android.bp
index befb67bcf2..b7b285f8d1 100644
--- a/frameworks/base/cmds/bootanimation/Android.bp
+++ b/frameworks/base/cmds/bootanimation/Android.bp
@@ -18,6 +18,8 @@ cc_defaults {
         "libcutils",
         "liblog",
         "libutils",
+        "libmedia",
+        "libaudioclient",
     ],
 }

diff --git a/frameworks/base/cmds/bootanimation/BootAnimation.cpp b/frameworks/base/cmds/bootanimation/BootAnimation.cpp
index 301726d1aa..1d6a0cb51f 100644
--- a/frameworks/base/cmds/bootanimation/BootAnimation.cpp
+++ b/frameworks/base/cmds/bootanimation/BootAnimation.cpp
@@ -580,7 +580,7 @@ bool BootAnimation::threadLoop() {
     } else {
         result = movie();
     }
-
+bootMusic();
     eglMakeCurrent(mDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
     eglDestroyContext(mDisplay, mContext);
     eglDestroySurface(mDisplay, mSurface);
@@ -895,6 +895,7 @@ bool BootAnimation::parseAnimationDesc(Animation& animation)  {
             //    pathType, count, pause, path, color, clockPos1, clockPos2);
             Animation::Part part;
             part.playUntilComplete = pathType == 'c';
+                       part.playUntilComplete = 1;
             part.count = count;
             part.pause = pause;
             part.path = path;
@@ -1449,6 +1450,68 @@ status_t BootAnimation::TimeCheckThread::readyToRun() {
     return NO_ERROR;
 }


+void BootAnimation::bootMusic()
+{
+    int index;
+    const char *fileName = "/system/media/bootsound.mp3";//选择一个有权限访问的位置 存放开机铃声
+    MediaPlayer* mp = new MediaPlayer();             //创建MediaPlayer
+//     MediaPlayer* mp = new MediaPlayer();
+    audio_devices_t device = AudioSystem::getDevicesForStream(AUDIO_STREAM_ENFORCED_AUDIBLE);
+//     if (mp->setDataSource(NULL, fileName, NULL) == NO_ERROR)
+    if (mp->setDataSource(open(fileName, O_RDONLY), 0, 0x7ffffffffffffffL)== NO_ERROR)
+    {
+        mp->setAudioStreamType(AUDIO_STREAM_ENFORCED_AUDIBLE/*AudioSystem: :ENFORCED_AUDIBLE*/);
+        mp->prepare();
+    }
+    ALOGE ("bootMusic\n");
+    AudioSystem::initStreamVolume(AUDIO_STREAM_ENFORCED_AUDIBLE, 0,7);
+    AudioSystem::setStreamVolumeIndex(AUDIO_STREAM_ENFORCED_AUDIBLE, 7, device);
+    AudioSystem::getStreamVolumeIndex(AUDIO_STREAM_ENFORCED_AUDIBLE/*AudioSystem::ENFORCED_AUDIBLE*/, &index, device);
+    ALOGE ("bootMusic index %d",index);
+//     if (index != 0)
+//     {
+        ALOGE("bootMusic playing %s", fileName);
+        mp->setVolume(0.4f, 0.4f);
+        mp->seekTo(0);
+        mp->start();
+//     }
+}
 } // namespace android
diff --git a/frameworks/base/cmds/bootanimation/BootAnimation.h b/frameworks/base/cmds/bootanimation/BootAnimation.h
index 6ba7fd450f..5445f2386f 100644
--- a/frameworks/base/cmds/bootanimation/BootAnimation.h
+++ b/frameworks/base/cmds/bootanimation/BootAnimation.h
@@ -28,7 +28,8 @@
 #include <utils/Looper.h>
 #include <utils/Thread.h>
 #include <binder/IBinder.h>
-
+#include <media/AudioSystem.h>
+#include <media/mediaplayer.h>
 #include <EGL/egl.h>
 #include <GLES/gl.h>

@@ -121,7 +122,7 @@ public:

     explicit BootAnimation(sp<Callbacks> callbacks);
     virtual ~BootAnimation();
-
+       void bootMusic();
     sp<SurfaceComposerClient> session() const;

 private:
diff --git a/frameworks/base/cmds/bootanimation/bootanim.rc b/frameworks/base/cmds/bootanimation/bootanim.rc
index ad4de0ab73..3395824131 100644
--- a/frameworks/base/cmds/bootanimation/bootanim.rc
+++ b/frameworks/base/cmds/bootanimation/bootanim.rc
@@ -1,6 +1,6 @@
 service bootanim /system/bin/bootanimation
     class core animation
-    user graphics
+    user media
     group graphics audio
     disabled
     oneshot
diff --git a/frameworks/base/cmds/bootanimation/bootanimation_main.cpp b/frameworks/base/cmds/bootanimation/bootanimation_main.cpp
index 6c7b3e51ff..a368c5eb0e 100644
--- a/frameworks/base/cmds/bootanimation/bootanimation_main.cpp
+++ b/frameworks/base/cmds/bootanimation/bootanimation_main.cpp
@@ -43,10 +43,13 @@ int main()

         sp<ProcessState> proc(ProcessState::self());
         ProcessState::self()->startThreadPool();
-
+
         // create the boot animation object (may take up to 200ms for 2MB zip)
         sp<BootAnimation> boot = new BootAnimation(audioplay::createAnimationCallbacks());
-
+               //lj+s
+        BootAnimation *bootMusic = new BootAnimation(audioplay::createAnimationCallbacks());
+        bootMusic->bootMusic();
+               //lj+e
         waitForSurfaceFlinger();

         boot->run("BootAnimation", PRIORITY_DISPLAY);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值