Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 通话时请关注背景音乐_Android_Call_Android Audiomanager - Fatal编程技术网

Android 通话时请关注背景音乐

Android 通话时请关注背景音乐,android,call,android-audiomanager,Android,Call,Android Audiomanager,我正在开发一个应用程序。我打电话时需要放音乐。但我面临的问题是,每当我尝试在通话中播放音乐时,声音并不像没有通话时那么大。 在通话中有没有办法控制背景音乐。通话时,我的音乐音量会变小,但通话一结束,音量就会变大 final AudioManager mAudioManager = (AudioManager) ctx .getSystemService(AUDIO_SERVICE); final int originalVolume

我正在开发一个应用程序。我打电话时需要放音乐。但我面临的问题是,每当我尝试在通话中播放音乐时,声音并不像没有通话时那么大。 在通话中有没有办法控制背景音乐。通话时,我的音乐音量会变小,但通话一结束,音量就会变大

final AudioManager mAudioManager = (AudioManager) ctx
                    .getSystemService(AUDIO_SERVICE);
            final int originalVolume = mAudioManager
                    .getStreamVolume(AudioManager.STREAM_MUSIC);
            mAudioManager
                    .setStreamVolume(
                            AudioManager.STREAM_MUSIC,
                            mAudioManager
                                    .getStreamMaxVolume(AudioManager.STREAM_MUSIC),
                            0);
            mp = new MediaPlayer();


            mp.setAudioStreamType(AudioManager.STREAM_MUSIC);

            mAudioManager.setMode(AudioManager.MODE_NORMAL);

            Class audioSystemClass = Class
                    .forName("android.media.AudioSystem");
            Method setForceUse = audioSystemClass.getMethod(
                    "setForceUse", int.class, int.class);
            // First 1 == FOR_MEDIA, second 1 == FORCE_SPEAKER. To go
            // back to the default
            // behavior, use FORCE_NONE (0).
            setForceUse.invoke(null, 1, 1);

这是我的代码。

我看到您正在尝试使用“将音乐流强制传送到扬声器”——我在回答中发布的方法

问题在于,在语音通话过程中,音乐流将遵循语音通话的路由,并忽略
FOR_MEDIA
强制标志。因此,您认为较低的音量很可能是通过耳机而不是扬声器播放音乐的结果


据我所知,在正在进行的通话中,如果不将语音通话转接至扬声器(即使用),则无法将音乐转接至扬声器

根据您的手机制造商/运营商实施Android AudioPolicyService的方式,当通话中的MODE_/通话中的MODE_通信处于会话状态时,某些实施会降低流式音乐音量

我还没有尝试过这个方法,但一个可行的解决方案是使用流式语音呼叫而不是流式音乐。然后,您的音频流应该与通话中的音频流一起正常播放