【问题标题】:android sound to speakerandroid声音到扬声器
【发布时间】:2012-08-27 10:12:27
【问题描述】:

在我的虚拟安卓应用上,我尝试复制音频播放器的功能。我必须处理的文件是一些不太长的 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 文件的代码。欢迎任何反馈。

【问题讨论】:

标签: android audio volume speaker


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:
    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;
    
    
         }
    }
    

    试试这个..

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        @dole

        我想把音量调大到语音通话时的音量 使用扬声器模式。

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

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

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

        您可以参考以下链接了解音频管理器的工作原理here

        【讨论】:

          【解决方案5】:

          对于非常短的音频使用媒体播放器不是一个好主意。相反,您将获得另一种选择。使用SoundPool 播放此类文件。

          1. 我建议的原因是几乎所有游戏都使用它来播放效果。而且我们知道它有多简单。

          2. 您可以使用 FX 来播放您的媒体。

          这是一个很好的例子。 Just use it.

          我相信你会得到一个很好的结果。

          如果您仍想使用MediaPlayer,请尝试从RAW 文件夹播放媒体。它不会压缩文件。 我没有测试过

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-04-08
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多