Articles of android audiomanager

Android:如何生成频率?

Android中是否有一种很好的方式来生成然后播放频率(例如1000hz,245hz)?

振铃模式改变监听器广播接收器?

AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE); switch (am.getRingerMode()) { case AudioManager.RINGER_MODE_SILENT: Log.i(“MyApp”,”Silent mode”); break; case AudioManager.RINGER_MODE_VIBRATE: Log.i(“MyApp”,”Vibrate mode”); break; case AudioManager.RINGER_MODE_NORMAL: Log.i(“MyApp”,”Normal mode”); break; } 从上面的代码我可以获得振铃模式。 我要做的就是听铃声模式改变并调用一个函数。 我被告知的是我可以注册AudioManager。 RINGER_MODE_CHANGED_ACTION并在broadcastreceiver onReceive方法中监听更改意图。 听起来很清楚。 但我是android的新手,真的不知道如何写它。 有没有人可以写一段代码并显示它是如何工作而不是说使用这个或那个:)谢谢

如何从我的代码中播放或恢复其他音乐播放器的音乐?

在我的Android应用程序中,我希望在暂停后播放或恢复播放的音乐。 我的应用程序通过发送广播暂停音乐 ,但我无法播放或恢复音乐。 这是暂停的代码 Intent i = new Intent(“com.android.music.musicservicecommand”); i.putExtra(“command”, “pause”); sendBroadcast(i); 如何做呢? 编辑:对不起,我写了“简历”而不是“暂停”

获取连接音频设备列表的android api是什么?

我使用下面添加的代码来获取Android设备的连接音频设备。 使用了AudioManager api方法getDevices()并通过耳机,扬声器,耳机等连接设备获得了结果。 但是这个getDevices()方法仅在android api level 23(Marshmallow)之后可用。 但我的应用程序应该支持api level 21(Lollipop)。 请任何人都可以告诉我替代api获取Android设备的可用音频设备。 与api级别23一起使用的代码。 AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { AudioDeviceInfo[] adi = audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS); } 请帮助我为Marshmallow(api level 23)下的Android OS版本运行的设备提供连接的音频设备。

Android 5.0中的AudioManager.setRingerMode()替代方案(API 21)

我使用AudioManager.setRingerMode()来处理我的应用程序中的设备卷: AudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT)关闭振动和声音。 AudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE)关闭声音并打开振动。 AudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL)打开声音并打开振动。 换句话说,我能够控制设备音量并达到所有“模式”。 但是,仅使用AudioManager.setRingerMode无法在Android 5.0中处理所有设备音量模式。 根据文件 : 将设备设置为RINGER_MODE_SILENT会导致设备进入新的优先级模式。 如果将设置设置为RINGER_MODE_NORMAL或RINGER_MODE_VIBRATE,设备将保留优先模式。 如何处理Android 5.0中的所有模式(无,优先级振动,优先级声音,所有振动,所有声音)设备音量?

寻找新的Android API setMediaButtonReceiver的示例

目前我正在使用 mAudioManager.registerMediaButtonEventReceiver(mRemoteControlResponder); 但现在在5.0中已弃用,并由setMediaButtonReceiver取代。 谷歌有5个链接都指向developer.android.com。 还有人用过这个吗? 如果是这样,你能提供一个例子吗?

Android – 如何获取AudioManager / AudioSystem参数列表

AudioManager有一个setParameters方法,它接受字符串表示中的键值对(“parameter_name = parameter_value”)。 在内部,它调用本机AudioSystem.setParameters 。 获取参数值的唯一方法是,如果您知道它的名称,可以通过调用AudioManager.getParameters方法来调用`AudioSystem’中相应的本机方法。 有没有办法(使用reflection或其他技术)获得支持的参数列表(当然结果将取决于它被调用的设备,因为它是特定于平台的)?

从服务调用setVolumeControlStream

我需要从一个通过STREAM_SYSTEM播放声音的服务调用setVolumeControlStream 。 显然在一个没有问题的Activity中,但是如何使用服务呢?

如何为特定来电提供定制振动

该程序的function如下:用户有一个电话号码列表,只有当没有其他系统范围的应用程序提供振动时(例如静音模式),手机才能在来电时振动。 我知道这是违反规则的,因为应用程序应该尊重用户的设置,但应用程序仅限于某些具有此需求的用户。 我尝试了两种方法,但它们都不令人满意: 收听电话状态并使用我自己的模式直接触发振动服务(使用Vibrator.vibrate() )。 当手机处于CALL_STATE_RINGING状态时,此方法有效,没有来电但随机有效,我猜这是因为与系统范围的应用程序实际处理来电时的振动冲突。 判断手机是否在来电时振动(使用AudioManager.shouldVibrate() ),并决定是否更改振动设置(使用AudioManager.setRingerMode()和AudioManager.setVibrateSetting() )。 如果我的应用程序更改了振动设置,则一旦手机返回CALL_STATE_IDLE状态,它们将被恢复。 然而,这种方法有时仍然不起作用,没有任何迹象。 我希望有人可以就这个问题提出一些建议。 欢迎对这两种方式或其他建议的评论。

SoundPool中的流量与AudioManager中的音量

我感到很困惑… SoundPool.play(int soundID, float leftVolume,float rightVolume ,int priority,int loop,float rate) 这里的体积是0.0到1.0 我见过的教程建议将流量计算为: AudioManager mgr = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE); int streamVolume = mgr.getStreamVolume(AudioManager.STREAM_MUSIC); streamVolume = streamVolume / AudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); mSoundPool.play(mSoundPoolMap.get(index), streamVolume, streamVolume, 1, 0, 1f); 这是有道理的。 我假设这个卷会覆盖用户在手机中设置的全局媒体音量,我可以通过改变soundPool中的流量来独立改变我的应用程序的音量。 但实际上它就像乘数一样 – 如果我在soundpool中设置0.5音量,实际音量将始终是全局音量的一半。 很容易重现: 将手机设置中的全局媒体音量设置为最大值 使用soundpool.play将活动中的音量设置为0.5 – 播放声音 将soundpool.play中的音量设置为1 – 播放声音,它会大两倍 有人可以解释为什么它会这样吗? 是传递给SoundPool.play方法的音量真的是全球音量的乘数吗?