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 替换为您想要的音频流。
我正在使用 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 替换为您想要的音频流。