将初始音量设置为手机铃声音量

2024-01-08

我试图做到这一点,以便当用户打开应用程序时,它将音乐的音量设置为手机铃声的音量。到目前为止,这是我的代码,但我不太确定 setVolume(float, float) 上的参数是什么。 android 文档没有很好地解释它。我的代码在这里做错了什么?

  AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
  int currentVolume = audio.getStreamVolume(AudioManager.STREAM_RING);

   mPlayer = MediaPlayer.create(this, R.raw.song);
   mPlayer.setOnErrorListener(this);

   if(mPlayer!= null)
    {         
    mPlayer.setLooping(true);
    mPlayer.setVolume(currentVolume,1);
}

好像音频.setStreamVolume http://developer.android.com/reference/android/media/AudioManager.html#setStreamVolume%28int,%20int,%20int%29是你想要的,但传入 STREAM_MUSIC 而不是 STREAM_RING。

注意:音乐音量和铃声音量可能有不同的最大值,因此您需要对它们进行标准化。为此,请使用 getStreamMaxVolume。

我以前没有这样做过,也没有编译过这个,但是代码应该看起来像这样

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

// Get the current ringer volume as a percentage of the max ringer volume.
int currentVolume = audio.getStreamVolume(AudioManager.STREAM_RING);
int maxRingerVolume = audio.getStreamMaxVolume(AudioManager.STREAM_RING);
double proportion = currentVolume/(double)maxRingerVolume;

// Calculate a desired music volume as that same percentage of the max music volume.
int maxMusicVolume = audio.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
int desiredMusicVolume = (int)(proportion * maxMusicVolume);

// Set the music stream volume.
audio.setStreamVolume(AudioManager.STREAM_MUSIC, desiredMusicVolume, 0 /*flags*/);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将初始音量设置为手机铃声音量 的相关文章

随机推荐

  • 单击按钮后如何关闭弹出模式

    选中复选框然后单击按钮后如何关闭弹出模式 如果未选中复选框 则不关闭模式 复选框和按钮放置在模态内 当我检查复选框并单击按钮时 模式不会关闭 document ready function one checked on click clos
  • 8086 汇编语言中的换行符:我的文本打印为阶梯式

    I m getting stair step output like this 我的程序工作正常 除了当我打印一个新行 然后打印当前行中的某些内容时 它会显示在下一行上 但前面有一些空格 程序是这样的 打印0到9的多个数字的表格 data
  • localhost 和 0.0.0.0 的 IPV6 是什么?

    众所周知 IPv4 地址localhost is 127 0 0 1 环回地址 IPv6 地址有什么用途localhost并为0 0 0 0因为我需要阻止一些广告主机 众所周知 IPv4 地址localhost is 127 0 0 1 环
  • 列表中的每个孩子都应该有唯一的“key”道具

    我不断收到此警告 列表中的每个孩子都应该具有唯一的 key 道具 即使我有具有不同键的独特项目 每当我创建一个新的 植物 对象时 我都会给它一个新的 uuid setPlants prevItems gt return name newPl
  • hadoop 集群应该在相同的硬件上运行吗?

    我记得在某处读到过 如果运行 Hadoop 的机器彼此之间差异很大 那么 Hadoop 的性能会显着下降 但我似乎找不到该评论了 我正在考虑在不由我的团队直接管理的虚拟机阵列上运行 Hadoop 集群 我需要知道这是否是我应该在请求中提出的
  • 如何在 Xcode 10 中打开 Xcode 11 Beta 4 项目?

    我在 Xcode 11 Beta 4 中开发了一个项目 然后降级到 Xcode 10 并且无法打开该项目 我想将我的应用程序提交到应用程序商店 但我在 Xcode 11 beta 4 中不断收到错误消息 我是初学者 我知道我篡改了构建设置
  • 在 Unity3D 中,“设置”网格的边界会做什么或实现什么?

    在 Unity 代码库中 我看到了这个 the game object currently has no mesh attached MeshFilter mFilter gameObject AddComponent
  • 我们可以使用 for-each 循环遍历传递给函数的数组吗?

    我知道我们可以通过这种方式迭代作为参数传递的数组 NO ERROR void fun int a int n for int i 0 i
  • 如何在 NetBeans 中显示/显示隐藏或不可见的字符?

    如何在 NetBeans 中显示 显示隐藏字符 在其他编辑器中 如果打开此功能 空格可能会显示为小中心点 制表符可能会显示为右箭头 此功能对于查看文件是否使用制表符或空格进行缩进等很有用 这个功能已经缺失很长一段时间了 功能要求 https
  • Apache Camel 中的忽略消息

    希望这听起来并不荒谬 但我怎样才能丢弃消息在骆驼故意 到目前为止 我将它们发送到日志组件 但同时我什至不想记录提款 有没有 dev 空骆驼的端点 您可以使用消息过滤器 eip 来过滤掉不需要的消息 http camel apache org
  • xml 中的额外右括号

    我使用此示例将一些变量保存到 xml 文件 如何将当前类设置为返回类型结果 https stackoverflow com questions 14639554 how do i set the current class to the r
  • Groupby 总和、索引与列结果

    对于以下数据框 df pd DataFrame group a a b b data 5 10 100 30 columns group data print df group data 0 a 5 1 a 10 2 b 100 3 b 3
  • 如何在 ASP.NET MVC 中的多个视图上正确填充控制器中 ViewData 的下拉列表

    我已经说过这一点大约一百万次了 但我对 ASP Net MVC 以及一般的 ASP NET 仍然是新手 所以很抱歉 如果这有点明显 好的 我有一个控制器将数据发送到两个视图 一个视图仅列出数据库中的数据 而另一个视图允许您分别编辑和添加记录
  • MySQL中如何设计类别和子类别?

    我有一个类别列表以及与每个类别关联的子类别数量 假设类别表称为 Cat 那么其中有热类别和冷类别 我有另一个名为 subcats 的表 然后我有以下内容 Cat ID Name 1 Hot 2 Cold SubCats SubCatID C
  • 计算用户给出的字符串中的唯一字符

    我必须编写一个程序来计算用户给出的字符串中的唯一字符 例如 abc 返回3 aabbccd 返回4 我不允许使用高级Java类 如Map Set等 我只能使用数组 字符串 for循环 while循环 if语句 我正在尝试使用嵌套循环 但对如
  • MQTT 客户端订阅 PostgreSQL 数据库更改

    我有一个定期更新的 PostgreSQL 数据库 并且想要将最新更改发布到 mosquitto 代理 执行此方法最优雅的方法是什么 好吧 这个想法很有趣 我正在使用 PostgreSQL 9 5 如果我在控制台中输入 CREATE LANG
  • 如何删除 NodeReference 字段中的节点 ID [nid:n]

    这是此链接的同一问题 删除节点引用自动完成中的 nid n https stackoverflow com questions 1515722 removing nidn in nodereference autocomplete 根据第一
  • 一个变量仅由一个线程读取,由另一个线程读取和写入,是否需要同步?

    Motive 我刚刚学习多线程的基础知识 还没有完成它们 但我想在学习之旅的早期提出一个问题 以引导我了解与我正在从事的项目最相关的主题 Main A 如果一个进程有两个线程 一个编辑一组变量 另一个只读取所述变量 从不编辑它们的值 那么我
  • azure 删除从我的应用程序服务返回的 Access-Control-Allow-Origin 标头

    我有两个服务在 Azure 上运行 a 网络服务 角度应用程序 expressjs an 应用服务 ASPNET核心应用程序 All the 网络服务所做的是查询应用服务对于以下端点 my app service azurewebsites
  • 将初始音量设置为手机铃声音量

    我试图做到这一点 以便当用户打开应用程序时 它将音乐的音量设置为手机铃声的音量 到目前为止 这是我的代码 但我不太确定 setVolume float float 上的参数是什么 android 文档没有很好地解释它 我的代码在这里做错了什