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

Cordova app - Use ringer volume instead of media in Android

我正在使用 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);
    }
}

它在 运行 上显示以下错误:

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

我自己修好了。如果您是 Android 极客,那真的很容易,但是无论如何,以前从未有人问过这样的问题,所以我会 post 为其他人 运行 解决同样的问题。

我更改音频流是正确的,但我在错误的文件中更改了它!呸!

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

\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 替换为您想要的音频流。