我正在运行运动猴子来测试我的
Android应用程序.作为我的应用程序的一部分,我播放给一个单词发音的媒体文件.我把文件放在Android音乐播放器无法读取的目录中.然而,训练者猴子会抛出一些似乎激活音乐播放器的事件序列,然后音乐播放器在测试期间重复播放另一个mp3文件(这不是我的应用程序)的开始.这是怎么做到的,这是我应该关心的吗?
附加信息:即使我在我的应用程序中禁用MediaPlayer,仍然会出现问题. FWIW,这是来自运动员猴子的一系列输出,直到产生声音的命令(最后一个):
// Rejecting start of Intent { act=android.intent.action.VIEW dat=http://www.myurl.com/ cmp=com.android.browser/.BrowserActivity } in package com.android.browser :Sending Pointer ACTION_DOWN x=437.0 y=183.0 :Sending Pointer ACTION_UP x=450.0 y=158.0 :Sending Pointer ACTION_DOWN x=5.0 y=58.0 :Sending Pointer ACTION_UP x=-4.0 y=58.0 :Sending Pointer ACTION_MOVE x=2.0 y=-2.0 <=== sound generated from this one
这是logcat在问题点的输出:
I/AudioService( 101): AudioFocus requestAudioFocus() from android.media.AudioManager@40518af0com.android.music.MediaPlaybackService$3@405218f8 I/AudioService( 101): Remote Control registerMediaButtonEventReceiver() for ComponentInfo{com.google.android.music/com.android.music.MediaButtonIntentReceiver} W/AudioFlinger( 68): write blocked for 159 msecs,26 delayed writes,thread 0xea00 D/AudioHardwareQSD( 68): AudioHardware pcm playback is going to standby. D/dalvikvm( 319): GC_EXPLICIT freed 7K,51% free 2839K/5767K,external 1625K/2137K,paused 74ms
解决方法
我认为这与猴子发送各种关键码的事实有关,包括可能甚至不存在于被测设备上的硬件密钥的密钥代码.
我使用猴子经历了类似的问题,并通过提供-v -v选项(重复-v增加调试级别)并使用-throttle选项降低速率来调查它,我也尝试找到一个小数字的行为使其发生.
我的命令行结束了阅读:
adb shell monkey -p package.undertest.com -s 214765 --throttle 500 -v -v 130
这显示在媒体播放器开始之前,我得到以下记录:
Sleeping for 500 milliseconds :SendKey (ACTION_DOWN): 90 // KEYCODE_FORWARD :SendKey (ACTION_UP): 90 // KEYCODE_FORWARD
当我停止媒体播放器时,我可以通过发出以下命令,确认KEYCODE_FORWARD在Galaxy S上启动了我的媒体播放器(doubleTwist):
adb shell input keyevent 90
请注意,90是上述日志中列出的键码.
通过将命令行更改为猴子,添加成功停止的“–pct-nav 0”启动媒体播放器.
我不知道你的情况可能是一个不同的关键代码,所以您可能需要进行实验,并且可能不适合您使用猴子通过设置–pct-nav 0来关闭所有基本导航事件的目的.