我有一套可以通过tcp / ip通过adb访问的root设备。 我试图通过从命令行播放声音来识别特定的声音(来自/ system / media / audio的.ogg文件之一)。
我知道我可能会为此构建一个应用程序,但使用APK感觉有点过分,我希望有一种更原生的方式。我已经知道如何从命令行启动意图。
我尝试过的事情:
service call media.player
调查但未找到有关语法的任何有用参考。我可以看到关于AwesomePlayer的dumpsys media.player
个引用但是没有任何进展。dalvikvm
的android.media.MediaPlayer,但我对Android和java的了解太有限了(编译类但抱怨在运行时缺少依赖项)有什么想法吗?
答案 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)
如果有一个文件,可以使用一个shell命令来完成此操作:
am start -a android.intent.action.VIEW -d /sdcard/somthing/example.wav -t audio/wav