Cordova应用程序 - 在Android中使用铃声音量而不是媒体

时间:2015-06-21 13:10:14

标签: java android node.js cordova ant

我使用的是Cordova v4.1.2。该应用程序默认使用媒体音量,我希望它使用铃声音量来播放它的声音。 (比如在WhatsApp中)

我在onCreate()函数中使用了setVolumeControlStream(AudioManager.STREAM_VOICE_CALL);。但它给出了一个错误。

这是我的CordovaApp.java。 (在platforms \ android \ src \ com \ XX \ XX中)

import android.os.Bundle;
import org.apache.cordova.*;

public class CordovaApp extends CordovaActivity
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        super.init();
        // Set by <content src="index.html" /> in config.xml
        loadUrl(launchUrl);
        setVolumeControlStream(AudioManager.STREAM_VOICE_CALL);
    }
}

在运行时显示以下错误:

enter image description here

从java文件中删除行setVolumeControlStream(AudioManager.STREAM_VOICE_CALL);时没有错误,应用程序运行完美。关于如何解决这个问题的任何看法?

1 个答案:

答案 0 :(得分:1)

我自己修好了。如果你是一个Android极客真的很容易,但无论如何这样的问题从来没有被问过,所以我会为遇到同样麻烦的其他人发布答案。

我在更改音频流时是对的,但我在错误的文件中更改了它!卫生署!

这是你应该改变它的地方..

\platforms\android\CordovaLib\src\org\apache\cordova\CordovaActivity.java
第351行

将其更改为setVolumeControlStream(AudioManager.STREAM_RING);

如果你想使用铃声音量。

如果您构建并按下硬件音量键,它将会更改并显示当然使用铃声音量。但我的情况有点不同。

我使用的是cordova Media插件org.apache.cordova.media。因此,当我使用此插件播放音频时,它会将流重新连接回媒体流(STREAM_MUSIC)。我回到了零点。我们的想法是重新连接插件本身以使用您选择的音频流。没有火箭科学,只需更改2个文件中的2行。

文件:

\platforms\android\src\org\apache\cordova\media\AndroidHandler.java

第383行:

setVolumeControlStream(AudioManager.STREAM_RING);

文件:

\platforms\android\src\org\apache\cordova\media\AudioPlayer.java

第526行:

setVolumeControlStream(AudioManager.STREAM_RING);

你很高兴去。请记住将STREAM_RING替换为您想要的音频流。