Android R移植获取音量的命令 media

10 篇文章 1 订阅
8 篇文章 0 订阅

media命令使用方法

adb shell media volume --get
[v] will get volume
[v] Connecting to AudioService
[v] volume is 1 in range [0..15]

添加编译 media media_cmd模块

diff --git a/alps/build/make/target/product/base_system.mk b/alps/build/make/target/product/base_system.mk
index 4569bceff92..4191c0b163b 100644
--- a/alps/build/make/target/product/base_system.mk
+++ b/alps/build/make/target/product/base_system.mk
@@ -408,4 +408,7 @@ PRODUCT_COPY_FILES += $(call add-to-product-copy-files-if-exists,\
PRODUCT_COPY_FILES += $(call add-to-product-copy-files-if-exists,\
frameworks/base/config/dirty-image-objects:system/etc/dirty-image-objects)

+PRODUCT_PACKAGES += media media_cmd

然后在 alps/frameworks/base/cmds/media/ 中添加 media 命令的代码(从其他平台上移植过来)
alps/frameworks/base/cmds/media/src/com/android/commands/media/Media.java
alps/frameworks/base/cmds/media/src/com/android/commands/media/VolumeCtrl.java

关键代码如下

public static void run(BaseCommand cmd) throws Exception {
//----------------------------------------
// Default parameters
int stream = AudioManager.STREAM_MUSIC;
int volIndex = 5;
int mode = 0;
int adjDir = AudioManager.ADJUST_RAISE;
boolean showUi = false;
boolean doGet = false;

//----------------------------------------
// read options
String option;
String adjustment = null;
while ((option = cmd.nextOption()) != null) {
switch (option) {
case "--show":
showUi = true;
break;
case "--get":
doGet = true;
log(LOG_V, "will get volume");
break;
case "--stream":
stream = Integer.decode(cmd.nextArgRequired()).intValue();
log(LOG_V, "will control stream=" + stream + " (" + streamName(stream) + ")");
break;
case "--set":
volIndex = Integer.decode(cmd.nextArgRequired()).intValue();
mode = VOLUME_CONTROL_MODE_SET;
log(LOG_V, "will set volume to index=" + volIndex);
break;
case "--adj":
mode = VOLUME_CONTROL_MODE_ADJUST;
adjustment = cmd.nextArgRequired();
log(LOG_V, "will adjust volume");
break;
default:
throw new IllegalArgumentException("Unknown argument " + option);
}
}


//------------------------------
// Read options: validation
if (mode == VOLUME_CONTROL_MODE_ADJUST) {
if (adjustment == null) {
cmd.showError("Error: no valid volume adjustment (null)");
return;
}
switch (adjustment) {
case ADJUST_RAISE: adjDir = AudioManager.ADJUST_RAISE; break;
case ADJUST_SAME: adjDir = AudioManager.ADJUST_SAME; break;
case ADJUST_LOWER: adjDir = AudioManager.ADJUST_LOWER; break;
default:
cmd.showError("Error: no valid volume adjustment, was " + adjustment
+ ", expected " + ADJUST_LOWER + "|" + ADJUST_SAME + "|"
+ ADJUST_RAISE);
return;
}
}

//----------------------------------------
// Test initialization
log(LOG_V, "Connecting to AudioService");
IAudioService audioService = IAudioService.Stub.asInterface(ServiceManager.checkService(
Context.AUDIO_SERVICE));
if (audioService == null) {
System.err.println(BaseCommand.NO_SYSTEM_ERROR_CODE);
throw new AndroidException(
"Can't connect to audio service; is the system running?");
}

if (mode == VOLUME_CONTROL_MODE_SET) {
if ((volIndex > audioService.getStreamMaxVolume(stream))
|| (volIndex < audioService.getStreamMinVolume(stream))) {
cmd.showError(String.format("Error: invalid volume index %d for stream %d "
+ "(should be in [%d..%d])", volIndex, stream,
audioService.getStreamMinVolume(stream),
audioService.getStreamMaxVolume(stream)));
return;
}
}

//----------------------------------------
// Non-interactive test
final int flag = showUi? AudioManager.FLAG_SHOW_UI : 0;
final String pack = cmd.getClass().getPackage().getName();
if (mode == VOLUME_CONTROL_MODE_SET) {
audioService.setStreamVolume(stream, volIndex, flag, pack/*callingPackage*/);
} else if (mode == VOLUME_CONTROL_MODE_ADJUST) {
audioService.adjustStreamVolume(stream, adjDir, flag, pack);
}
if (doGet) {
log(LOG_V, "volume is " + audioService.getStreamVolume(stream) +
" in range [" + audioService.getStreamMinVolume(stream) +
".." + audioService.getStreamMaxVolume(stream) + "]");
}
}

修改之后模块编译

nn media_cmd;adb push out/target/product/s9863a1h10_go_32b/system/framework/media_cmd.jar system/framework;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值