3

在我的虚拟 android 应用程序上,我尝试复制音频播放器的功能。我必须处理的文件是一些不太长的 ogg 文件:2-3 秒。

问题是文件的体积太小。我想增加音量,但我不知道如何。在我的应用程序中,声音的播放音量与通话音量相同。当我使用扬声器模式时,我想将音量增大到来自语音通话的音量。

    AssetFileDescriptor afd;

    try {
        afd = getAssets().openFd(strPlayFileName);
        mPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());

        mPlayer.prepare();
        afd.close();
        mPlayer.start();
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

那是播放我的 ogg 文件的代码。欢迎任何反馈。

4

5 回答 5

1
private AudioManager audio;

audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 


@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        switch (keyCode) {
        case KeyEvent.KEYCODE_VOLUME_UP:
            audio.adjustStreamVolume(AudioManager.STREAM_MUSIC,
                    AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
            return true;
        case KeyEvent.KEYCODE_VOLUME_DOWN:
            audio.adjustStreamVolume(AudioManager.STREAM_MUSIC,
                    AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);
            return true;
        default:
            return false;


     }
}

尝试这个..

于 2012-09-15T09:12:09.773 回答
1

MediaPleyer 允许音量操作。您可以尝试该setVolume()方法以查看它是否提供了所需的结果。您可以在此处获取有关此方法的更多信息。

如果这不能给您想要的结果,我建议您使用一些免费的音频编辑器(例如 audacity)来放大源的声音输出。

于 2012-09-10T13:02:10.940 回答
0

It's not a good idea to use media player for very short audios. Rather you will get another option to do so. Use SoundPool to play such files.

  1. Reasons why I'm suggesting is Almost all game uses this to play there effects. And we know how simple it is.

  2. You can use FX to play around your media.

Here is a great example. Just use it.

I'm sure you will get a great result.

If you still want to use MediaPlayer try playing media from RAW folder. It wont compress the files. I did not tested it.

于 2012-09-16T06:32:43.703 回答
0

如果我正确理解您的问题,您想增加媒体的增益,即以超过 100% 的音量播放它们。一种方法是使用 JB 中的新功能。我自己没有玩过这个,但它肯定可以从解码器中获取一个缓冲区,并将缓冲区中的值乘以你的增益,然后将其传递给播放。您可以在此处找到更多信息。

于 2012-09-11T12:18:42.070 回答
0

@多尔

当我使用扬声器模式时,我想将音量增大到来自语音通话的音量。

您想获得完整的音量,这是解决方案

AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
                audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, audioManager.getStreamMaxVolume(audioManager.STREAM_MUSIC), 0);

这会将音量设置为最大音量。

您可以在此处参考以下链接了解音频管理器的工作原理。

于 2012-09-14T10:27:54.540 回答