Android adb shell命令用于从命令行播放声音

时间:2014-10-10 11:25:32

标签: android adb

我有一套可以通过tcp / ip通过adb访问的root设备。 我试图通过从命令行播放声音来识别特定的声音(来自/ system / media / audio的.ogg文件之一)。

我知道我可能会为此构建一个应用程序,但使用APK感觉有点过分,我希望有一种更原生的方式。我已经知道如何从命令行启动意图。

我尝试过的事情:

  • 使用service call media.player调查但未找到有关语法的任何有用参考。我可以看到关于AwesomePlayer的dumpsys media.player个引用但是没有任何进展。
  • 试图从android源代码中找到“/system/bin/media”的编译版本,因为它在设备中缺失,但到目前为止没有运气。
  • 尝试构建一个命令行java app来调用带有dalvikvm的android.media.MediaPlayer,但我对Android和java的了解太有限了(编译类但抱怨在运行时缺少依赖项)

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

经过一些反复试验,我会回答现在正在为我工​​作的事情。

基于other threads,我发现以下java代码是通过扬声器播放声音的最低限度。 MediaPlayer类似乎是唯一一个没有用户交互的人,因为其他人需要真正的活动背景...

public class Beep {

    public static void main(String[] a) {

        MediaPlayer mp = new MediaPlayer();

        try {
            mp.setDataSource("/system/media/audio/alarms/Ticktac.ogg");
            mp.prepare();
            mp.start();
        }
        catch (IOException e) {
            Log.w("Beep", "IOException", e);
        }
}

actual working example is here

这必须是compiled as a dex file,链接到android.jar,
最后可以使用app_process(而不是dalvikvm)从adb shell命令行运行:

export CLASSPATH=./Beep.dex
app_process /system/bin Beep /system/media/audio/ringtones/Beep-beep.ogg

这不是我希望的单线,而是做我需要的......

答案 1 :(得分:0)

As seen in this other thread

如果有一个文件,可以使用一个shell命令来完成此操作:

am start -a android.intent.action.VIEW -d /sdcard/somthing/example.wav -t audio/wav