【问题标题】:Android Exerciser Monkey starts playing audio files at randomAndroid Exerciser Monkey 开始随机播放音频文件
【发布时间】:2011-07-27 16:33:49
【问题描述】:

我正在运行锻炼者猴子来测试我的 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

【问题讨论】:

    标签: android android-mediaplayer audio-player monkey android-monkey android-music-player


    【解决方案1】:

    我认为这与猴子发送各种密钥代码的事实有关包括硬件密钥的密钥代码,甚至可能不存在于被测设备上

    我在使用猴子时遇到过类似的问题,并通过提供 -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.

    【讨论】:

      【解决方案2】:

      您的应用是否具有启动其他服务或播放音乐应用的功能?例如,如果您有一个按钮可以启动更改铃声音量的意图,猴子会按下该按钮会导致铃声响起。 (根据我的经验,默认设置的猴子会在应用程序之外更改铃声设置)

      【讨论】:

      • 是的,它使用 MediaPlayer。但是,即使我禁用了创建媒体播放器的播放命令,问题仍然存在。最重要的是,它永远不会到达调用媒体播放器的 Activity。
      • 你可以试着在猴子跑的时候观察logcat,看看它在声音播放时是否会给你任何额外的信息。
      • 好主意。我已将结果发布到我的问题中。
      • 好的,AudioManager 正在被调用,所以您的应用程序必须使用铃声或通知声音进行操作。
      • 不。没有。这是一个非常传统的应用程序。正如您所提到的,猴子会更改铃声音量,尽管您在应用程序中什么也不做。我的也是这样。我在想它在 UI 上抛出的任何事件都会做类似的事情,尽管我想知道如何。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多