ADB命令设置音量?

时间:2014-01-10 22:52:35

标签: android adb

是否有任何Adb命令将音量设置为特定值?我知道我们可以做到

adb shell input keyevent 
音量增大和减小

但我想将其设置为特定值。如果我更改它,那么我必须重启设备才能反映更改,所以我不想走那条路。是否有任何API我可以更改值而无需重新启动它并且必须依赖于音量增大和减小?

4 个答案:

答案 0 :(得分:3)

在有根电话上,您可以使用setMasterVolume()致电service call audio <code> i32 <volume>。代码是特定于版本的。假设您想在KitKat设备上将音量设置为50%。命令将是:

service call audio 9 i32 50

答案 1 :(得分:3)

我使用了服务调用音频测试来设置android 2.3设备上的音量。为了更通用,您需要研究IBinder和交易号。

找出你想要的东西:

Adb shell服务列表包

  • 这将告诉您需要查看服务的包文件(即蓝牙 - com.Bluetooth.IBluetooth)

搜索服务类和&#39;交易&#39;在线(&#34; com.Bluetooth.Ibluetooth transaction&#34;)

找到源文件并找到Ibinder交易详情。接下来是输入参数的详细信息。

即蓝牙上的第一笔交易是.is enabled()。没有输入参数

使用它发送:

Adb shell服务呼叫蓝牙1

它应该返回一个包含答案的包裹。

记住:    - 我认为这只适用于有根设备    - 您找到的交易号码的偏移量为1(通过服务电话调用交易0&#39;服务&#39; 1)    - 有两种类型的输入:i32表示整数,s16表示字符串

要设置音频,设置音量有三个输入整数(事务6)

使用它发送:

Adb shell服务电话7 i32 3 i32 15 i32 0 这会将媒体音量设置为15(媒体音频的默认级别数为15)

答案 2 :(得分:3)

media shell命令也可以使用:

media volume:  the options are as follows: 
    --stream STREAM selects the stream to control, see AudioManager.STREAM_*
                    controls AudioManager.STREAM_MUSIC if no stream is specified
    --set INDEX     sets the volume index value
    --adj DIRECTION adjusts the volume, use raise|same|lower for the direction
    --get           outputs the current volume
    --show          shows the UI during the volume change
examples:
    adb shell media volume --show --stream 3 --set 11
    adb shell media volume --stream 0 --adj lower
    adb shell media volume --stream 3 --get

第一个示例可能是您要查找的示例(但在询问时可能不存在)

答案 3 :(得分:2)

这是对谁的Android版本太旧而无法在volume命令中使用media子命令的人的答案。

由于Alex P的链接,我从这个人的博客中得到了启发: http://ktnr74.blogspot.com/2014/09/calling-android-services-from-adb-shell.html

您可以使用service命令在Android设备上调用诸如void setStreamVolume(int streamType, int index, int flags, String callingPackage)之类的函数。我已经尝试使用无根的Android 5.1设备,并且可以正常工作。

Usage: service [-h|-?]
       service list
       service check SERVICE
       service call SERVICE CODE [i32 INT | s16 STR] ...
Options:
   i32: Write the integer INT into the send parcel.
   s16: Write the UTF-16 string STR into the send parcel.

但是CODE在Android版本之间有所不同。要查找setStreamVolume()的代码,请首先在此gist之前保存Bash脚本,更改其执行权限,通过ADB连接设备,并以audio作为参数运行脚本:

$ ./get_android_service_call_numbers.sh audio

该脚本从Google提取信息,并向您显示诸如this之类的列表。

所以我们知道setStreamVolume()的代码是4,因为我们知道the number for STREAM_MUSIC is 3,所以可以通过以下命令将音乐音量设置为7:

$ adb shell service call audio 4 i32 3 i32 7

我的设备上的最大音乐音量为0xF,您可以使用int getStreamMaxVolume(int streamType)函数进行查询:

$ adb shell service call audio 15 i32 3