Android声音焦点----从音乐回到Luncher调节音量显示的是Music的音量
来源:互联网 发布:华海大厦3楼桑拿js 编辑:程序博客网 时间:2024/04/29 19:21
声音的类型有:定义在AudioSystem.java文件中
/* The default audio stream */public static final int STREAM_DEFAULT = -1;/* The audio stream for phone calls */public static final int STREAM_VOICE_CALL = 0;/* The audio stream for system sounds */public static final int STREAM_SYSTEM = 1;/* The audio stream for the phone ring and message alerts */public static final int STREAM_RING = 2;/* The audio stream for music playback */public static final int STREAM_MUSIC = 3;/* The audio stream for alarms */public static final int STREAM_ALARM = 4;/* The audio stream for notifications */public static final int STREAM_NOTIFICATION = 5;/* @hide The audio stream for phone calls when connected on bluetooth */public static final int STREAM_BLUETOOTH_SCO = 6;/* @hide The audio stream for enforced system sounds in certain countries (e.g camera in Japan) */public static final int STREAM_SYSTEM_ENFORCED = 7;/* @hide The audio stream for DTMF tones */public static final int STREAM_DTMF = 8;/* @hide The audio stream for text to speech (TTS) */public static final int STREAM_TTS = 9;正常情况下在音、视频界面调节音量调节的Stream是STREAM_MUSIC,回到Luncher调节的是STREAM_VOICE_CALL,但这个切换有点延迟StreamOverride.sDelayMs,导致退出音、视频界面后马上调节,改变的还是STREAM_MUSIC的大小,如图所示:
可以修改/frameworks/base/media/java/android/media/AudioService.java文件
/** * For code clarity for getActiveStreamType(int) * @param delay_ms max time since last STREAM_MUSIC activity to consider * @return true if STREAM_MUSIC is active in streams handled by AudioFlinger now or * in the last "delay_ms" ms. */ private boolean isAfMusicActiveRecently(int delay_ms) { return AudioSystem.isStreamActive(AudioSystem.STREAM_MUSIC, delay_ms) || AudioSystem.isStreamActiveRemotely(AudioSystem.STREAM_MUSIC, delay_ms); } private int getActiveStreamType(int suggestedStreamType) { switch (mPlatformType) { case PLATFORM_VOICE: if (isInCommunication()) { if (AudioSystem.getForceUse(AudioSystem.FOR_COMMUNICATION) == AudioSystem.FORCE_BT_SCO) { // Log.v(TAG, "getActiveStreamType: Forcing STREAM_BLUETOOTH_SCO..."); return AudioSystem.STREAM_BLUETOOTH_SCO; } else { // Log.v(TAG, "getActiveStreamType: Forcing STREAM_VOICE_CALL..."); return AudioSystem.STREAM_VOICE_CALL; } } else if (suggestedStreamType == AudioManager.USE_DEFAULT_STREAM_TYPE) { if (isAfMusicActiveRecently(StreamOverride.sDelayMs)) { if (DEBUG_VOL) Log.v(TAG, "getActiveStreamType: Forcing STREAM_MUSIC stream active"); return AudioSystem.STREAM_MUSIC; } else { if (DEBUG_VOL) Log.v(TAG, "getActiveStreamType: Forcing STREAM_RING b/c default"); return AudioSystem.STREAM_RING; } } else if (isAfMusicActiveRecently(0)) { if (DEBUG_VOL) Log.v(TAG, "getActiveStreamType: Forcing STREAM_MUSIC stream active"); return AudioSystem.STREAM_MUSIC; } break; case PLATFORM_TELEVISION: if (suggestedStreamType == AudioManager.USE_DEFAULT_STREAM_TYPE) { // TV always defaults to STREAM_MUSIC return AudioSystem.STREAM_MUSIC; } break; default: if (isInCommunication()) { if (AudioSystem.getForceUse(AudioSystem.FOR_COMMUNICATION) == AudioSystem.FORCE_BT_SCO) { if (DEBUG_VOL) Log.v(TAG, "getActiveStreamType: Forcing STREAM_BLUETOOTH_SCO"); return AudioSystem.STREAM_BLUETOOTH_SCO; } else { if (DEBUG_VOL) Log.v(TAG, "getActiveStreamType: Forcing STREAM_VOICE_CALL"); return AudioSystem.STREAM_VOICE_CALL; } } else if (AudioSystem.isStreamActive(AudioSystem.STREAM_NOTIFICATION, StreamOverride.sDelayMs) || AudioSystem.isStreamActive(AudioSystem.STREAM_RING, StreamOverride.sDelayMs)) { if (DEBUG_VOL) Log.v(TAG, "getActiveStreamType: Forcing STREAM_NOTIFICATION"); return AudioSystem.STREAM_NOTIFICATION; } else if (suggestedStreamType == AudioManager.USE_DEFAULT_STREAM_TYPE) { if (isAfMusicActiveRecently(StreamOverride.sDelayMs)) { if (DEBUG_VOL) Log.v(TAG, "getActiveStreamType: forcing STREAM_MUSIC"); return AudioSystem.STREAM_MUSIC; } else { if (DEBUG_VOL) Log.v(TAG, "getActiveStreamType: using STREAM_NOTIFICATION as default"); return AudioSystem.STREAM_NOTIFICATION; } } break; } if (DEBUG_VOL) Log.v(TAG, "getActiveStreamType: Returning suggested type " + suggestedStreamType); return suggestedStreamType; }把isAfMusicActiveRecently(StreamOverride.sDelayMs) 改为: isAfMusicActiveRecently(0) 或一个小的值。
0 0
- Android声音焦点----从音乐回到Luncher调节音量显示的是Music的音量
- android 的 c层 实现 音乐播放与音量调节
- Android里的音量调节
- Android音量调节的实现
- 封装好的vc音量调节类, 可用于声音和麦克风音量调节的编程
- 调节ubuntu的音量
- android音量键调节听筒音量的大小
- Android实现音量调节的方法
- mt6735 为什么停止播放歌曲后去调节音量,调节的仍是媒体音量
- WINCE音量调节的实现
- 多媒体音量调节的方法
- WINCE音量调节的实现
- WINCE音量调节的实现
- 调节IOS系统的音量
- WINCE音量调节的实现
- 如何调节系统声音音量
- 播放音乐并调节音量
- 音乐播放器的歌曲进度调节和音量大小调节实现
- Google Android性能优化课程资源
- (10)mysql中的变量
- 数字上变频 数字下变频
- Ubuntu下Hadoop单机部署及分布式集群部署
- sql复杂查询语句总结
- Android声音焦点----从音乐回到Luncher调节音量显示的是Music的音量
- android的shader渲染器
- 关于inflate,获取布局xml
- Render的mode可以设为两种模式
- iOS正则表达式简介
- Android 操作系统中的内存回收策略
- Http :超文本传输协议 HyperText Transfer Protocol
- Android安全机制--四大组件安全
- Longest Valid Parentheses Java