我正在运行练习猴测试我的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
答案 0 :(得分:7)
我认为这与猴子发送各种密钥代码这一事实有关,包括可能在被测设备上不存在的硬件密钥的密钥代码。
我遇到过类似的问题,使用猴子并通过提供-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。
答案 1 :(得分:0)
您的应用是否具有启动播放音乐的其他服务或应用的任何功能?例如,如果你有一个按钮启动改变铃声音量的意图,那么猴子会按下那个引起振铃声的声音。 (根据我的经验,使用默认设置的猴子不在应用程序之外,无论如何都会更改铃声设置)