mediaplaybackservice下载

下次自动登录
关注移动互联网和移动APP开发工具、开发框架、测试工具、微信开发、Android源码、Android开源类库以及各种开源组件的IT科技网站
现在的位置:
应用监听自身卸载,弹出用户反馈调查(上)
监听卸载情景和原理分析
1,情景分析
& & & & 在上上篇博客中我写了一下NDK开发实践项目,使用开源的LAME库转码MP3,作为前面几篇基础博客的加深理解使用的,但是这样的项目用处不大,除了练练NDK功底。这篇博客,我将讲述一下一个各大应用中很常见的一个功能,同样也是基于JNI开发的Android应用小Demo,看完这个之后,不仅可以加深对NDK开发的理解,而且该Demo也可以使用在实际的开发中。不知道大家在使用一个Android应用的时候,当我们卸载这个应用后,设备上会弹出一个“用户反馈调查”的网页出来,也许很多人没有留意过或者直接忽视了,那么从现在开始请留意,大家不妨下载一下“豌豆荚”“360”之类的应用装上,然后卸载,看看设备上有没有弹出浏览器,浏览器上打开的“XXX用户反馈”?上面写了一些HTML表单,问我们“你为毛要卸载我们这么好的应用啊?”“我们哪里得罪你了?”“卸载之后,你丫的还装不?”,呵呵,开个玩笑,实际效果如下图:
& & & &好了,上面的图片是感觉似曾显示啊?那么这样的一个小功能是怎么实现的呢?我们先从Java层以我们有的Android基础分析一下:
1,监听系统的卸载广播,但是这个只能监听其他应用的卸载广播的动作,通过卸载广播监听自己是监听不到的:失败
2,系统配置文件,做一个标记应用是否卸载,判断标记来show用户反馈,显然这也是不合理的,因为应用卸载之后,配置文件也没有了。
3,静默安装另一个程序,监听自己的应用被卸载的动作。前提是要root,才能实现。但是市场绝大多数手机都是默认没有root权限的。
4,服务检测,只能是自己开启,当自身被卸载了,服务也一并被干掉了。
以上几点看起来都无法实现这个功能,确实如此啊,单纯的从Java层是做不到这一点的。
2,原理分析
& & & &上面情景分析后表明Java实现不了这样的一个功能,是否该考虑一下使用JNI了,用C在底层为我们实现这样一个打开内置浏览器加载用户反馈网页即可,在知道这个方法之前,我们有必要了解以下几个知识点。
1.通过c语言,c进程监视。
& & 既然Java做不到的话,我们试着使用C语言在底层实现好了,让C语言调用Android adb的命令去打开内置浏览器。
判断自己是否被卸载
andoird程序在被安装的时候会在/data/data/目录下生成一个以为包名为文件名的目录/data/data/包名
监听该目录是否还存在,如果不存在,就证明应用被卸载了。
2.c代码可以复制一个当前的进程作为自己的儿子,父进程销毁的时候,子进程还存在。
fork()函数:
& & & &&fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,两个进程可以做相同的事,相当于自己生了个儿子,如果初始参数或者传入的参数不一样,两个进程做的事情也不一样。当前进程调用fork函数之后,系统先给当前进程分配资源,然后再将当前进程的所有变量的值复制到新进程中(只有少数值不一样),相当于克隆了一个自己。
& & & &pid_t fpid = fork()被调用前,就一个进程执行该段代码,这条语句执行之后,就将有两个进程执行代码,两个进程执行没有固定先后顺序,主要看系统调度策略,fork函数的特别之处在于调用一次,但是却可以返回两次,甚至是三种的结果
(1)在父进程中返回子进程的进程id(pid)
(2)在子进程中返回0
(3)出现错误,返回小于0的负值
出现错误原因:(1)进程数已经达到系统规定&(2)内存不足,此时返回
3.在c代码的子进程中监视父进程是否被卸载,如果被卸载,通知Android系统打开一个url,卸载调查的网页。
& & & & Android系统提供的adb工具,在adb的基础上执行adb shell就可以直接对android系统执行shell命令
& & & & am命令:在Android系统中通过adb shell 启动某个Activity、Service、拨打电话、启动浏览器等操作Android的命令。
& & & & am命令的源码在Am.java中,在shell环境下执行am命令实际是启动一个线程执行Am.java中的主函数(main方法),am命令后跟的参数都会当做运行时参数传递到主函数中,主要实现在Am.java的run方法中。
& & & & am命令可以用start子命令,和带指定的参数,start是子命令,不是参数
常见参数:-a:表示动作,-d:表示携带的数据,-t:表示传入的类型,-n:指定的组件名
例如,我们现在在命令行模式下进入adb shell下,使用这个命令去打开一个网页
类似的命令还有这些:
命令:am start -a android.intent.action.CALL -d tel:电话号码
示例:am start -a android.intent.action.CALL -d tel:10086
打开一个网页
命令:am start -a android.intent.action.VIEW -d &网址
示例:am start -a android.intent.action.VIEW -d &&
启动一个服务
命令:am startservice &服务名称&
示例:am startservice -n com.android.music/com.android.music.MediaPlaybackService
execlp()函数
& & & & & execlp函数简单的来说就是C语言中执行系统命令的函数
& & & & & execlp()会从PATH 环境变量所指的目录中查找符合参数file 的文件名, 找到后便执行该文件, 然后将第二个以后的参数当做该文件的argv[0], argv[1], ..., 最后一个参数必须用空指针(NULL)作结束.
& & & & & android开发中,execlp函数对应android的path路径为system/bin/目录下
调用格式:
execlp("am","am","start","--user","0","-a","android.intent.action.VIEW","-d","/web/uninstall/uninstall.html",(char*)NULL);
===================================================================================================================
编写代码实现
1,Java层定义native方法
& & & &在Java层定义一个native方法,提供在Java端和C端调用
该方法需要传递应用的安装目录和当前设备的版本号,在Java代码中获取,传递给C代码处理。
2,使用javah命令生成方法签名头文件
& & & &方法签名生成好之后,工程上右键 --& Android Tools --& Add Native Support,在弹出的对话框中输入编辑的C/C++的文件名,确定之后,在工程的自动生成的jni目录下找到cpp后缀名的文件修改为.c后缀名的文件,因为本案例是基于C语言上实现的,然后同样修改Android.mk文件中的LOCAL_SRC_FILES为.c的C文件,最后将上面生成好的.h方法签名文件拷贝到jni目录下。
3,编写C语言代码
& & & & 正如上面原理分析的那样,我们在实现这样一个功能的时候用Java是无法实现的,只能在C中克隆出一个当前App的子进程,让这个子进程去监听应用本身的卸载。那么实现这样的功能我们需要哪些步骤呢?下面就是编写代码的思路:
1,将传递过来的java的包名转为c的字符串
2,创建当前进程的克隆进程
3,根据返回值的不同做不同的操作
4,在子进程中监视/data/data/包名这个目录
5,目录被删除,说明被卸载,执行打开用户反馈的页面
& & & & 上述代码就如上述的步骤一样,用C代码实现了,首先注意的一点就是Android的版本问题,众所周知,Android是基于Linux的非常优秀的操作系统,而且在Android4.2版本以后支持多用户操作,但是这也给我们这个小小的项目中带来了不便之处,因为在多用户情况下执行am命令的时候强制指定一个用户和一个编号,在Android4.2之前的版本这些参数是没有必要的,所以我们在编写C代码的时候需要区别Android系统版本,分别执行相应的am命令,关于获取Android系统版本可以在Java层实现,然后将其作为参数传递给C代码中,C代码根据Android版本为判断条件执行am命令。
& & & & 注意:为了简便起见,我在C代码监视应用是否被卸载的时候,使用了一个While(true)的死循环,并且是每隔1毫秒执行一次监视检测,这样写的代码是“不环保的”,想想这样的结果是程序被不停的执行,LOG被不停的打印,造成cpu计算资源浪费和耗电是难免的。最好的解决方案是,使用Android给我们提供的FileObserve文件观察者,FileObserve使用到的是Linux系统下的inotify进程,用来监视文件目录的变化的,本实例中如果需要优化就需要使用这个API,但是需要的知识就更加多了,我现在为了简单的演示起见,暂时用了while(true)死循环,关于后期的优化版本,等我写出来,再一起公布一下!
4,编译.so动态库
& & & &正如上篇博客写的那样,我们编写好了C源码之后,就需要使用ndk-build命令来编译成.so文件了,具体编译的过程也是非常简单的,在Eclipse中切换到C/C++编辑的手下,找到“小锤子”按钮,点击一下就开始编译了,如果代码没有出现错误的情况,编译之后的结果是这样的:
5,编写Java代码,传递数据 ,加载链接库
& & & & 上面的工作做好了,剩下的就是在Java中加载这个链接库,和调用这个本地方法了。首先,要获取本应用安装的目录/data/data/包名,然后获取当前设备的版本号,一起传给本地方法中,最后调用这个方法。
& & & &好了,应用是做完了,我们clean一下工程,然后启动一个基于ARM的模拟器,运行这个程序,回到桌面,点击应用图片——卸载掉这个应用,看看效果:
好了,大家看看效果吧,实际上打开的网页应该是用户反馈调查页面,由于我暂时没有服务器,所以将网址定向到了百度首页了,大家在开发的时候,可以将execlp函数里的参数网址改成自己的服务器网址,这样就大功告成了。检查一下Log日志的输出:
看到了,LOG输入日志跟代码流程是一致的,好了,源码在下面的链接下,有兴趣的朋友可以下载研究,欢迎你给我提出宝贵意见,大家一起学习一起进步!
经过查询资料,我已经了解不使用while(true)轮询方式,改用Linux的Inotify机制监听应用安装目录的实现方法了,关于最新优化版本的案例已经做完,请点击这里查看实现原理和代码:
【上篇】【下篇】1195人阅读
E/OppoMusicWidget( 7596): EVENT_GET_TEXTURE , arg1 = 10 queue.length= 15
W/OppoMusicWidget( 7596): findTextureInfo,mTextureInfoBuffer,i = 0
D/OppoMusicWidget( 7596): &-findTextureInfo-&END!! index=10. Bitmap = android.gr
W/OppoMusicWidget( 7596): EVENT_GET_TEXTURE ,tmp =
V/OppoMusicWidget( 7596): getTrackName&& audioId=88
V/OppoMusicWidget( 7596): makeTitleBitmap&&&&&&& title=James Blunt - Goodbye my
V/OppoMusicWidget( 7596): creatNewString
W/OppoMusicWidget( 7596): EVENT_GET_TEXTURE ,titleBitmap = android.graphics.Bitm
W/OppoMusicWidget( 7596): on3DEvent : EVENT_GET_TEXTURE tmp != null
W/OppoMusicWidget( 7596): composeBitmap
W/OppoMusicWidget( 7596): on3DEvent : EVENT_GET_TEXTURExxxxx
D/WindowManager(& 174): Delivering pointer QueuedEvent{ MotionEvent{4733
fe90 action=1 x=250.42775 y=411.8299 pressure=0. size=0.}} to Wi
ndow{ com.android.launcher/com.android.launcher.Launcher paused=false}
D/WindowManager(& 174): Delivering pointer QueuedEvent{ MotionEvent{4733
7340 action=0 x=284.577 y=321.0759 pressure=0. size=0.}} to Wind
ow{ com.android.launcher/com.android.launcher.Launcher paused=false}
V/Watchdog(& 174): Monitor successfully
V/OppoMusicWidget( 7596): on3DEvent&&&&& eventCode=EVENT_SCROLL_START arg1=1 arg
2=0 arg3=0
V/OppoMusicWidget( 7596): calDestPosition&&&&&&& arg1=1
W/OppoMusicWidget( 7596): &!!-calDestPosition-&end. mDestPosition = 10, totalIte
W/OppoMusicWidget( 7596): preUpdateAlbumArt&&&&& do set 2D AlbumArt
V/OppoMusicWidget( 7596): preUpdateAlbumArt&&&&& dest = 10
V/OppoMusicWidget( 7596): setAlbumArt&&& queuePosition=10
V/OppoMusicWidget( 7596): setCoverTextureMapUnJustUsed
W/OppoMusicWidget( 7596): setAlbumArtByIndex(ImageView imageView, int index
W/OppoMusicWidget( 7596): findTextureInfo,mTextureInfoBuffer,i = 0
D/OppoMusicWidget( 7596): &-findTextureInfo-&END!! index=10. Bitmap = android.gr
W/OppoMusicWidget( 7596): setAlbumArtByIndex(ImageView imageView, int index
W/OppoMusicWidget( 7596): findTextureInfo,mTextureInfoBuffer,i = 1
D/OppoMusicWidget( 7596): &-findTextureInfo-&END!! index=11. Bitmap = android.gr
W/OppoMusicWidget( 7596): setAlbumArtByIndex(ImageView imageView, int index
W/OppoMusicWidget( 7596): findTextureInfo,mTextureInfoBuffer,i = 2
D/OppoMusicWidget( 7596): &-findTextureInfo-&END!! index=12. Bitmap = android.gr
V/OppoMusicWidget( 7596): setCoverTextureMapUnJustUsed
V/OppoMusicWidget( 7596): getTrackName&& audioId=88
V/OppoMusicWidget( 7596): makeTitleBitmap&&&&&&& title=James Blunt - Goodbye my
V/OppoMusicWidget( 7596): creatNewString
V/OppoMusicWidget( 7596): on3DViewTouch& arg1=1
V/OppoMusicWidget( 7596): onStopAnimation
V/OppoMusicWidget( 7596): set2DLayoutState&&&&&& viewState=0
V/OppoMusicWidget( 7596): handleMessage& msg.what=2
D/OppoMusicWidget( 7596): handleMessage what = MESSAGE_3DVIEW_DISAPPEAR
V/OppoMusicWidget( 7596): onWindowFocusChanged&&&& hasWindowFocus = false isShow
V/OppoMusicWidget( 7596): on3DEvent&&&&& eventCode=EVENT_SCROLL_ITEM_CHANGED arg
1=10 arg2=0 arg3=0
V/OppoMusicWidget( 7596): ##on3DEvent&&& isTouch=true arg1 =10
V/OppoMusicWidget( 7596): ##on3DEvent2&& isTouch=true arg1 =10
V/AudioDolby(& 385): SoundEffectEnable(100,0)
V/AudioDolbyClient( 9625): SoundEffectEnable(100,0)
V/AudioDolbyClient( 9625): setDolby(0)
V/AudioDolby(& 385): SoundEffectEnable(100,0)
V/AudioDolbyClient( 9625): SoundEffectEnable(100,0)
V/AudioDolbyClient( 9625): setDolby(0)
D/MediaPlaybackService(& 385): In opencurrent() stop time =1
D/MediaPlaybackService(& 385): In opencurrent() query time =4
D/xiaojie (& 385): filePath = /mnt/sdcard/external_sd/我的下载/James Blunt -
&Goodbye my lover.mp3
D/MediaPlaybackService(& 385): startWatching
V/MediaPlayer(& 385): uri modified? =content://media/external/audio/media/88
D/MediaPlaybackService(& 385): In opencurrent() open() time =9
D/MediaPlaybackService(& 385): settingRestored false
I/OppoMusicWidget( 7596): onReceive&&&&& strAction0803=com.android.music.metacha
nged isShown=false
V/OppoMusicWidget( 7596): isInCurrentScreen
V/OppoMusicWidget( 7596): onReceive&&&&& isShown=false. isInCurrentScreen = true
D/Launcher.DragController( 7596): scroll right
D/Launcher.DragController( 7596):& wait
D/Launcher.DragController( 7596): scroll right
D/Launcher.DragController( 7596):& wait
D/WindowManager(& 174): Delivering pointer QueuedEvent{47304ab8 MotionEvent{470d
a1d0 action=1 x=147.52472 y=443.2974 pressure=0.8117647 size=0.}} to Win
dow{ com.android.launcher/com.android.launcher.Launcher paused=false}
V/OppoMusicWidget( 7596): onWindowFocusChanged&&&& hasWindowFocus = true isShown
V/OppoMusicWidget( 7596): onResumeDoUpdate&&&&&& isDoUpdateMusicList=false
V/OppoMusicWidget( 7596): getTrackName&& audioId=92
V/OppoMusicWidget( 7596): getTrackName&& audioId=90
V/OppoMusicWidget( 7596): getTrackName&& audioId=89
V/OppoMusicWidget( 7596): getTrackName&& audioId=88
V/OppoMusicWidget( 7596): getTrackName&& audioId=88
D/OppoMusicWidget( 7596): updataUI
V/OppoMusicWidget( 7596): updataUIxxxxx& before queue.length=15
V/OppoMusicWidget( 7596): updataUIxxxxx& after queue.length=15
V/OppoMusicWidget( 7596): updataUI&&&&&& getQueuePosition=10
D/WindowManager(& 174): Delivering pointer QueuedEvent{ MotionEvent{470d
7248 action=0 x=245.4192 y=364.4007 pressure=0. size=0.}} to Win
dow{ com.android.launcher/com.android.launcher.Launcher paused=false}
W/OppoMusicWidget( 7596):& !!!!!!! ACTION_DOWN
V/OppoMusicWidget( 7596): initBeforeAnimation
V/OppoMusicWidget( 7596): on3DViewTouch& arg1=0
V/OppoMusicWidget( 7596): calDestPosition&&&&&&& arg1=0
W/OppoMusicWidget( 7596): &!!-calDestPosition-&end. mDestPosition = 11, totalIte
W/OppoMusicWidget( 7596): preUpdateAlbumArt&&&&& do set 2D AlbumArt
V/OppoMusicWidget( 7596): preUpdateAlbumArt&&&&& dest = 11
V/OppoMusicWidget( 7596): setAlbumArt&&& queuePosition=11
V/OppoMusicWidget( 7596): setCoverTextureMapUnJustUsed
W/OppoMusicWidget( 7596): setAlbumArtByIndex(ImageView imageView, int index
W/OppoMusicWidget( 7596): findTextureInfo,mTextureInfoBuffer,i = 1
D/OppoMusicWidget( 7596): &-findTextureInfo-&END!! index=11. Bitmap = android.gr
W/OppoMusicWidget( 7596): setAlbumArtByIndex(ImageView imageView, int index
W/OppoMusicWidget( 7596): findTextureInfo,mTextureInfoBuffer,i = 2
D/OppoMusicWidget( 7596): &-findTextureInfo-&END!! index=12. Bitmap = android.gr
W/OppoMusicWidget( 7596): setAlbumArtByIndex(ImageView imageView, int index
D/OppoMusicWidget( 7596): &-findTextureInfo-&END!! index=13. Bitmap = null
E/MetadataRetrieverClient( 9625): failed to extract an album art
E/MetadataRetrieverClient( 9625): failed to extract an album art
V/OppoMusicWidget( 7596): setCoverTextureMapUnJustUsed
V/OppoMusicWidget( 7596): getTrackName&& audioId=89
V/OppoMusicWidget( 7596): makeTitleBitmap&&&&&&& title=Katy Perry - Hot N Cold
D/OppoMusic3DWidgetRenderer( 7596): ------&onSurfaceChanged() width = 480 ,heigh
t = 621 ,ratio = 0. - PORTRAIT.
D/OppoMusic3DWidgetRenderer( 7596):& mvEye.z = 81.858955
D/OppoMusic3DWidgetRenderer( 7596): ------&onSurfaceChanged() width = 480 ,heigh
t = 621 ,ratio = 0. - PORTRAIT.
D/OppoMusic3DWidgetRenderer( 7596):& mvEye.z = 81.858955
V/OppoMusicWidget( 7596): set2DLayoutState&&&&&& viewState=4
D/WindowManager(& 174): Delivering pointer QueuedEvent{471ae830 MotionEvent{471a
fee0 action=1 x=204.89545 y=667.218 pressure=0. size=0.}} to Win
dow{ com.android.launcher/com.android.launcher.Launcher paused=false}
D/WindowManager(& 174): Delivering pointer QueuedEvent{46ef0b98 MotionEvent{4705
3700 action=0 x=270.9173 y=479.32535 pressure=0.6627451 size=0.}} to Win
dow{ com.android.launcher/com.android.launcher.Launcher paused=false}
V/OppoMusicWidget( 7596): on3DEvent&&&&& eventCode=EVENT_SCROLL_ITEM_CHANGED arg
1=11 arg2=0 arg3=0
V/OppoMusicWidget( 7596): ##on3DEvent&&& isTouch=true arg1 =11
V/OppoMusicWidget( 7596): ##on3DEvent2&& isTouch=true arg1 =11
V/AudioDolby(& 385): SoundEffectEnable(100,0)
V/AudioDolbyClient( 9625): SoundEffectEnable(100,0)
V/AudioDolbyClient( 9625): setDolby(0)
V/AudioDolby(& 385): SoundEffectEnable(100,0)
V/AudioDolbyClient( 9625): SoundEffectEnable(100,0)
V/AudioDolbyClient( 9625): setDolby(0)
D/MediaPlaybackService(& 385): In opencurrent() stop time =0
D/MediaPlaybackService(& 385): In opencurrent() query time =4
D/xiaojie (& 385): filePath = /mnt/sdcard/external_sd/我的下载/Katy Perry -
Hot N Cold.mp3
D/MediaPlaybackService(& 385): startWatching
V/MediaPlayer(& 385): uri modified? =content://media/external/audio/media/89
D/MediaPlaybackService(& 385): In opencurrent() open() time =8
D/MediaPlaybackService(& 385): settingRestored false
I/OppoMusicWidget( 7596): onReceive&&&&& strAction0803=com.android.music.metacha
nged isShown=true
V/OppoMusicWidget( 7596): isInCurrentScreen
V/OppoMusicWidget( 7596): onReceive&&&&& isShown=true. isInCurrentScreen = true
V/OppoMusicWidget( 7596): isInCurrentScreen
D/OppoMusicWidget( 7596): updataUI
V/OppoMusicWidget( 7596): updataUIxxxxx& before queue.length=15
V/OppoMusicWidget( 7596): updataUIxxxxx& after queue.length=15
V/OppoMusicWidget( 7596): updataUI&&&&&& getQueuePosition=11
V/OppoMusicWidget( 7596): onStopAnimation
V/OppoMusicWidget( 7596): set2DLayoutState&&&&&& viewState=0
V/OppoMusicWidget( 7596): handleMessage& msg.what=2
D/OppoMusicWidget( 7596): handleMessage what = MESSAGE_3DVIEW_DISAPPEAR
V/OppoMusicWidget( 7596): onWindowFocusChanged&&&& hasWindowFocus = false isShow
D/Launcher.DragController( 7596): scroll right
D/WindowManager(& 174): Delivering pointer QueuedEvent{46f0acd0 MotionEvent{46eb
41f8 action=1 x=479.0 y=427.33563 pressure=0. size=0.0}} to Window{4732f
940 com.android.launcher/com.android.launcher.Launcher paused=false}
D/WindowManager(& 174): Delivering pointer QueuedEvent{472f0248 MotionEvent{472f
b8b0 action=0 x=479.0 y=494.83105 pressure=0. size=0.0}} to Window{4732f
940 com.android.launcher/com.android.launcher.Launcher paused=false}
W/OppoMusicWidget( 7596):& !!!!!!! ACTION_DOWN
V/OppoMusicWidget( 7596): initBeforeAnimation
V/OppoMusicWidget( 7596): on3DViewTouch& arg1=0
V/OppoMusicWidget( 7596): calDestPosition&&&&&&& arg1=0
W/OppoMusicWidget( 7596): &!!-calDestPosition-&end. mDestPosition = 12, totalIte
W/OppoMusicWidget( 7596): preUpdateAlbumArt&&&&& do set 2D AlbumArt
V/OppoMusicWidget( 7596): preUpdateAlbumArt&&&&& dest = 12
V/OppoMusicWidget( 7596): setAlbumArt&&& queuePosition=12
V/OppoMusicWidget( 7596): setCoverTextureMapUnJustUsed
W/OppoMusicWidget( 7596): setAlbumArtByIndex(ImageView imageView, int index
W/OppoMusicWidget( 7596): findTextureInfo,mTextureInfoBuffer,i = 2
D/OppoMusicWidget( 7596): &-findTextureInfo-&END!! index=12. Bitmap = android.gr
W/OppoMusicWidget( 7596): setAlbumArtByIndex(ImageView imageView, int index
D/OppoMusicWidget( 7596): &-findTextureInfo-&END!! index=13. Bitmap = null
E/MetadataRetrieverClient( 9625): failed to extract an album art
E/MetadataRetrieverClient( 9625): failed to extract an album art
W/OppoMusicWidget( 7596): setAlbumArtByIndex(ImageView imageView, int index
D/OppoMusicWidget( 7596): &-findTextureInfo-&END!! index=14. Bitmap = null
E/MetadataRetrieverClient( 9625): failed to extract an album art
E/MetadataRetrieverClient( 9625): failed to extract an album art
V/OppoMusicWidget( 7596): setCoverTextureMapUnJustUsed
V/OppoMusicWidget( 7596): getTrackName&& audioId=90
V/OppoMusicWidget( 7596): makeTitleBitmap&&&&&&& title=Jason Mraz - I'm Yours666
V/OppoMusicWidget( 7596): creatNewString
V/OppoMusicWidget( 7596): onWindowFocusChanged&&&& hasWindowFocus = true isShown
V/OppoMusicWidget( 7596): onResumeDoUpdate&&&&&& isDoUpdateMusicList=false
V/OppoMusicWidget( 7596): getTrackName&& audioId=92
V/OppoMusicWidget( 7596): getTrackName&& audioId=90
V/OppoMusicWidget( 7596): getTrackName&& audioId=89
V/OppoMusicWidget( 7596): getTrackName&& audioId=88
V/OppoMusicWidget( 7596): getTrackName&& audioId=90
D/OppoMusicWidget( 7596): updataUI
V/OppoMusicWidget( 7596): updataUIxxxxx& before queue.length=15
V/OppoMusicWidget( 7596): updataUIxxxxx& after queue.length=15
V/OppoMusicWidget( 7596): updataUI&&&&&& getQueuePosition=11
W/OppoMusicWidget( 7596): updataUI&&&&&& do set 2D AlbumArt
V/OppoMusicWidget( 7596): makeTitleBitmap&&&&&&& title=Katy Perry - Hot N Cold
V/OppoMusicWidget( 7596): setAlbumArt&&& queuePosition=11
V/OppoMusicWidget( 7596): setCoverTextureMapUnJustUsed
W/OppoMusicWidget( 7596): setAlbumArtByIndex(ImageView imageView, int index
W/OppoMusicWidget( 7596): findTextureInfo,mTextureInfoBuffer,i = 1
D/OppoMusicWidget( 7596): &-findTextureInfo-&END!! index=11. Bitmap = android.gr
W/OppoMusicWidget( 7596): setAlbumArtByIndex(ImageView imageView, int index
W/OppoMusicWidget( 7596): findTextureInfo,mTextureInfoBuffer,i = 2
D/OppoMusicWidget( 7596): &-findTextureInfo-&END!! index=12. Bitmap = android.gr
W/OppoMusicWidget( 7596): setAlbumArtByIndex(ImageView imageView, int index
D/OppoMusicWidget( 7596): &-findTextureInfo-&END!! index=13. Bitmap = null
E/MetadataRetrieverClient( 9625): failed to extract an album art
E/MetadataRetrieverClient( 9625): failed to extract an album art
V/OppoMusicWidget( 7596): setCoverTextureMapUnJustUsed
V/OppoMusicWidget( 7596): onScreenChangedStart
D/OppoMusic3DWidgetRenderer( 7596): ------&onSurfaceChanged() width = 480 ,heigh
t = 621 ,ratio = 0. - PORTRAIT.
D/OppoMusic3DWidgetRenderer( 7596):& mvEye.z = 81.858955
V/OppoMusicWidget( 7596): on3DEvent&&&&& eventCode=EVENT_GET_TEXTURE arg1=14 arg
2=0 arg3=0
E/OppoMusicWidget( 7596): EVENT_GET_TEXTURE , arg1 = 14 queue.length= 15
D/OppoMusicWidget( 7596): &-findTextureInfo-&END!! index=14. Bitmap = null
E/MetadataRetrieverClient( 9625): failed to extract an album art
E/MetadataRetrieverClient( 9625): failed to extract an album art
W/OppoMusicWidget( 7596): EVENT_GET_TEXTURE ,tmp = null
V/OppoMusicWidget( 7596): getTrackName&& audioId=93
V/OppoMusicWidget( 7596): makeTitleBitmap&&&&&&& title=James Blunt - Goodbye my
V/OppoMusicWidget( 7596): creatNewString
W/OppoMusicWidget( 7596): EVENT_GET_TEXTURE ,titleBitmap = android.graphics.Bitm
D/OppoMusicWidget( 7596): on3DEvent : EVENT_GET_TEXTURE --& Use default cover!!!
D/OppoMusic3DWidgetRenderer( 7596): ------&onSurfaceChanged() width = 480 ,heigh
t = 621 ,ratio = 0. - PORTRAIT.
D/OppoMusic3DWidgetRenderer( 7596):& mvEye.z = 81.858955
V/OppoMusicWidget( 7596): set2DLayoutState&&&&&& viewState=4
V/OppoMusicWidget( 7596): on3DEvent&&&&& eventCode=EVENT_SCROLL_ITEM_CHANGED arg
1=12 arg2=0 arg3=0
V/OppoMusicWidget( 7596): ##on3DEvent&&& isTouch=true arg1 =12
V/OppoMusicWidget( 7596): ##on3DEvent2&& isTouch=true arg1 =12
V/AudioDolby(& 385): SoundEffectEnable(100,0)
V/AudioDolbyClient( 9625): SoundEffectEnable(100,0)
V/AudioDolbyClient( 9625): setDolby(0)
V/AudioDolby(& 385): SoundEffectEnable(100,0)
V/AudioDolbyClient( 9625): SoundEffectEnable(100,0)
V/AudioDolbyClient( 9625): setDolby(0)
D/MediaPlaybackService(& 385): In opencurrent() stop time =1
D/MediaPlaybackService(& 385): In opencurrent() query time =6
D/xiaojie (& 385): filePath = /mnt/sdcard/external_sd/我的下载/Jason Mraz -
I'm Yours6666.mp3
D/MediaPlaybackService(& 385): startWatching
V/MediaPlayer(& 385): uri modified? =content://media/external/audio/media/90
D/MediaPlaybackService(& 385): In opencurrent() open() time =10
D/MediaPlaybackService(& 385): settingRestored false
I/OppoMusicWidget( 7596): onReceive&&&&& strAction0803=com.android.music.metacha
nged isShown=true
V/OppoMusicWidget( 7596): isInCurrentScreen
V/OppoMusicWidget( 7596): onReceive&&&&& isShown=true. isInCurrentScreen = false
V/OppoMusicWidget( 7596): isInCurrentScreen
D/WindowManager(& 174): Delivering pointer QueuedEvent{472ca4b0 MotionEvent{470b
e450 action=261 x=444.85077 y=574.1838 pressure=0. size=0.}} to
Window{ com.android.launcher/com.android.launcher.Launcher paused=false}
D/WindowManager(& 174): Delivering pointer QueuedEvent{47279a08 MotionEvent{4738
6490 action=6 x=479.0 y=569.16724 pressure=0.4392157 size=0.}} to Window
{ com.android.launcher/com.android.launcher.Launcher paused=false}
D/StatusBarPolicy(& 174):& hzhupdateSignalStrength00--中国移动
I/TelephonyManager(& 174): gatewayAddr is null or empty
D/DATA&&& (& 284): [DSST] pollstate() : reason = data network state changed
D/DATA&&& (& 284): [DSST] Poll ServiceState done: oldSS=[0 home null null null
EDGE CSS not supported -1 -1RoamInd: -1DefRoamInd: -1EmergOnly: false] newSS=[0
home null null null& EDGE CSS not supported -1 -1RoamInd: -1DefRoamInd: -1EmergO
nly: false]
V/Watchdog(& 174): Monitor successfully
D/WindowManager(& 174): Delivering pointer QueuedEvent{ MotionEvent{473e
0f58 action=5 x=0.0 y=860.5834 pressure=0.1254902 size=0.0}} to Window{
com.android.launcher/com.android.launcher.Launcher paused=false}
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:186434次
积分:2720
积分:2720
排名:第11639名
原创:78篇
转载:66篇
评论:12条
(1)(2)(3)(1)(3)(3)(9)(1)(3)(4)(12)(14)(2)(1)(1)(2)(4)(1)(1)(1)(1)(1)(3)(1)(2)(6)(1)(1)(2)(5)(1)(4)(2)(1)(16)(21)(3)(2)(1)(1)

我要回帖

更多关于 五笔输入法下载 的文章

 

随机推荐