系统默认是没有播放开机铃声的功能,MTK有一套自己的开机铃声处理逻辑,代码在/vendor/mediatek/proprietary/operator/frameworks/bootanimation/MtkBootanimation下,但是在10之后MTK就不在维护这部分代码了。直接使用会有很多编译报错,现在把MTK播放铃声的逻辑移植过来。
移植铃声播放功能
- /frameworks/base/cmds/bootanimation/BootAnimation.cpp
index 958558669ef..3b4eb12ee00 100755
--- a/frameworks/base/cmds/bootanimation/BootAnimation.cpp
+++ b/frameworks/base/cmds/bootanimation/BootAnimation.cpp
@@ -59,10 +59,20 @@
#include "BootAnimation.h"
+#include <media/IMediaHTTPService.h>
+#include <media/mediaplayer.h>
+#include <media/MediaPlayerInterface.h>
+
#define ANIM_PATH_MAX 255
#define STR(x) #x
#define STRTO(x) STR(x)
+#define PATH_COUNT 2
+static const char* mAudioPath[2][PATH_COUNT] =
+ {
{
"/system/media/bootaudio.mp3", "/custom/media/bootaudio.mp3"} , /* bootaudio path */
+ {
"/system/media/shutaudio.mp3", "/custom/media/shutaudio.mp3"} /* shutaudio path */
+ };
+
namespace android {
using ui::DisplayMode;
@@ -123,6 +133,11 @@ BootAnimation::BootAnimation(sp<Callbacks> callbacks)
} else {
mShuttingDown = true;
}
+
+ bPlayMP3 = true;
+ mBootVideoPlayState = MEDIA_NOP;
+ bAudioStarted = false;
+
ALOGD("%sAnimationStartTiming start time: %" PRId64 "ms", mShuttingDown ? "Shutdown" : "Boot",
elapsedRealtime());
}
@@ -136,6 +151,50 @@ BootAnimation::~BootAnimation() {
elapsedRealtime());
}
+BootVideoListener::BootVideoListener(const sp<BootAnimation> &bootanim) {
+ ALOGD("[MtkBootAnimation %s %d]",__FUNCTION__,__LINE__);
+ mBootanim = bootanim;
+}
+BootVideoListener::~BootVideoListener() {
+ ALOGD("[MtkBootAnimation %s %d]",__FUNCTION__,__LINE__);
+}
+void BootVideoListener::notify(int msg, int ext1, int ext2, const Parcel *obj) {
+ ALOGD("[MtkBootAnimation %s %d] msg=%d ext1=%d ext2=%d",__FUNCTION__,__LINE__, msg, ext1, ext2);
+ if(msg == MEDIA_PLAYBACK_COMPLETE || msg == MEDIA_SEEK_COMPLETE) {
+ mBootanim->setBootVideoPlayState(MEDIA_PLAYBACK_COMPLETE);
+ ALOGD("[MtkBootAnimation %s %d] media player complete",__FUNCTION__,__LINE__);
+ }
+ if(msg == MEDIA_ERROR || msg == MEDIA_SKIPPED) {
+ mBootanim->setBootVideoPlayState(MEDIA_ERROR);
+ ALOGD("[MtkBootAnimation %s %d] media player error",__FUNCTION__,__LINE__);
+ }

最低0.47元/天 解锁文章
662

被折叠的 条评论
为什么被折叠?



