我正试图通过最大音量的警报通道通过扬声器发出警报声.为此,我正在使用AudioManager和MediaPlayer.如果我插入耳机,仍然会通过扬声器播放闹钟,但是通过扬声器播放的闹钟音量会急剧下降,因此无法满足我的需要.

有没有办法防止音量下降?

我正在使用的代码是这样的:

public void startAlarmSound() {

audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

audioManager.setSpeakerphoneOn(false);

audioManager.setStreamVolume(AudioManager.STREAM_ALARM, audioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM), 0);

if (!alreadyPlaying)

playAlarmSound();

alreadyPlaying = true;

}

private void playAlarmSound() {

mediaPlayer = new MediaPlayer();

mediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);

mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

@Override

public void onPrepared(MediaPlayer mp) {

mediaPlayer.start();

}

});

try {

mediaPlayer.setDataSource(this, Uri.parse("android.resource://com.mystuff.mine/" + R.raw.alarm_sound));

mediaPlayer.prepare();

} catch (IOException e) {

e.printStackTrace();

}

}

为了确保音量没有降低,我每5秒调用一次以下音量.

audioManager.setStreamVolume(AudioManager.STREAM_ALARM, audioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM), 0);

我位于欧盟内部,所以它可能是由插入耳机时处理最大音量的规则引起的.由于我只关心扬声器输出,我需要一个解决方法,即使是这种情况.

编辑:

我的应用程序以及系统应用程序(如闹钟)以及Nexus 5和6都会出现此问题.因为我还阅读过其他手机制造商的问题报告,所以我不认为问题是nexus系列手机所独有的.我需要一个解决方法.

我刚检查了getStreamMaxVolume(AudioManager.STREAM_ALARM)和getStreamVolume(AudioManager.STREAM_ALARM)的结果.两者都显示7,无论耳机是否插入.

我注意到耳机已插入,而音量指示器设置为最大,如果我减小并快速再次增加,它将增加到没有耳机时的音量.然而,由于这需要用户互动,因此它不是我正在寻找的解决方案.

android连接耳机时音量控制,android – 扬声器音量(闹钟)在插入耳机时会降低相关推荐

  1. android 声卡 音量控制,android audio 音量调节

    这次的分析是从setting设置开始,进入声音设置,然后进入音量设置! 先上传上来,后期进行整理吧 调用流程: -------------------------------------------- ...

  2. android 连接ble键盘,如何在Android上以编程方式配对和连接HID蓝牙设备(蓝牙键盘)...

    它表示Android蓝牙API提供以下蓝牙配置文件的实现,但您可以实现接口BluetoothProfile编写自己的类以支持特定的蓝牙配置文件 . 耳机 A2DP Health 设备 没有关于如何为H ...

  3. android驱动例子(led灯控制),android驱动例子(LED灯控制)

    --作者:赖玉平(Peter Lai)aulyp@163.com 本例子,讲述在android2.1上完全自已开发一个驱动去控制硬件口并写应用测试该驱动,通过这样一个例子,解析android下的驱动开 ...

  4. android 运行apk时崩溃,从Android Studio运行时安装APK时应用程序崩溃完美无缺

    我最近将 Android Studio更新为2.3,将SDK更新为25.现在,当我在我的手机或模拟器上运行Android Studio应用程序时,它运行正常但是当我生成APK或从应用程序获取APK并在 ...

  5. 使用Vitamio打造自己的Android万能播放器—— 手势控制亮度、音量、缩放

    使用Vitamio打造自己的Android万能播放器(1)--准备 一.实现目标 1.1亮度控制 模仿VPlayer界面: 1.2声音控制 模仿VPlayer界面: 1.3画面缩放 根据下面API ...

  6. android连接usb后默认app,android – 记住USB连接,但不要启动应用程序

    我正在处理的应用程序通过USB连接成功连接设备. 但是,这会在连接USB设备时始终启动活动时产生不良影响.没有启动应用程序,我无法记住默认值.在连接上启动应用程序不是一个理想的效果.下面的小代码示例是 ...

  7. android连接蓝牙耳机,蓝牙耳机厂家:Android蓝牙连接的一些心得

    蓝牙耳机厂家最近做一个项目,主要是给蓝牙发送指令的,boss要求能够最快速度的搜索到蓝牙,并且发送数据. 刚开始也遇到很多133,各种断开连接的问题.android蓝牙搜索有两种方式,一种startL ...

  8. android获取年月日时分秒毫秒,Android获取两个日期其间间隔的天数

    /** * 获取两个日期之间的间隔天数 * @return */ public static int getGapCount(Date startDate, Date endDate) { Calen ...

  9. android程序退出时回调,关于android:通过刷卡杀死App时的回调

    我有一个涉及导航的应用程序. 如果用户启动导航,则会创建一种"navigationLifecycleManager".它存储在应用程序实例中,以便在配置更改,活动等之间切换时幸免于 ...

最新文章

  1. 4 三元表达式 列表解析 生成器表达式
  2. OC对象 vs CF对象
  3. Python中fnmatch模块的使用
  4. mysql当前时间减一分钟_MySQL数据库事务的机制【总结】
  5. linux 0x00,linux 学习笔记0x00
  6. 神策数据创始人桑文锋:AARRR模型如何应用到产品各个阶段
  7. 为什么不能在子类的初始化列表里初始化父类的成员
  8. CRMEB知识付费系统v1.4.4源码
  9. leetcode题解108-将有序数组转换为二叉排序树
  10. Hbase新API以及Hbase增删改差
  11. 【动态规划】最大子段和问题,最大子矩阵和问题,最大m子段和问题
  12. paip.wscript.shell.run路径空格与VBs转义符 作者Attilax , EMAIL:1466519819@qq.com ,112237553@qq.com 来源:attilax
  13. apizza开发工具
  14. 2023年辽宁大学原子与分子物理考研上岸前辈备考经验指导
  15. 客群洞察-大数据技术驱动互联网金融进阶之路
  16. 通过概率规划归纳的人类水平概念学习
  17. 记录一次Tx_LCN连接失败的问题( There is no normal TM )
  18. 逻辑回归分类——信用卡诈骗
  19. JS学习之路系列总结四象阵(此文犹如武林之中的易筋经,是你驰骋IT界的武功心法,学会JS五大阵法就学会了JS,博主建议先学三才阵)
  20. 关于笔记本电脑蓝牙设置开关消失的处理方法

热门文章

  1. SAP CRM WebClient UI element id generation logic
  2. How is HashMap return type handled to be converted to a json string
  3. 一个前端开发人员多年苦心搜集的Chrome开发者工具使用技巧
  4. SAP Cloud for Customer里如何根据产品ID拿到其UUID
  5. 安装python3.7.0的步骤_CentOS7下简单安装python3.7.0步骤
  6. Android学习笔记篇1. 从按钮的点击事件开始
  7. leetcode60.第k个排列java题解
  8. 好玩的php函数,几个实用的PHP函数
  9. kgtemp文件转换mp3_amr转换mp3格式文件
  10. python 嵌套数组_兴趣是最好的老师,快速入门:十分钟学会python