【问题标题】:Set AudioStreamType for an audio file played from Resource (raw folder)为从资源(原始文件夹)播放的音频文件设置 AudioStreamType
【发布时间】:2014-11-07 23:23:30
【问题描述】:

[第一个应用程序] 我正在创建一种警报应用程序,它允许用户从 sd 卡或应用程序提供的声音中选择警报声音。由于该应用程序本质上会播放警报,因此我希望音量为设备的“警报音量”。我能够为 SD 卡声音实现这一点。但是,我无法 setAudioStreamType 获取原始资源声音。

我正在使用以下代码:

 MediaPlayer m_player = new MediaPlayer();
 m_player.setAudioStreamType(AudioManager.STREAM_ALARM);
 switch (bin_name) { //bin_name = various user selectable music files
     default:
        m_player = MediaPlayer.create(context, R.raw.blu);
        break;
 }
 m_player.setLooping(true);
 m_player.start();

我的blu.mp3 仅以媒体音量播放。在检查documentation 中的MediaPlayer.create(Context context, int resid) 后,我发现了这个:

请注意,由于在此方法中会自动调用 prepare(),因此您无法更改音频流类型(请参阅 setAudioStreamType(int))、音频会话 ID(请参阅 setAudioSessionId(int))或音频属性(请参阅 setAudioAttributes(AudioAttributes)新的 MediaPlayer。

我也尝试查找上述方法的代码示例,但没有一个显示如何将AudioStreamType 设置为AudioManager.STEAM_ALARM。我将接受以无限循环播放声音的替代方式的答案。如何做到这一点?

【问题讨论】:

    标签: android android-mediaplayer android-audiomanager


    【解决方案1】:

    正如您所指的文档所述,您必须自己创建和准备 MediaPlayer。没有尝试使用 STREAM_ALARM,但我正在使用以下 sn-p 在 STREAM_VOICE_CALL 上播放

    Uri uri = Uri.parse("android.resource://com.example.app/" + R.raw.hdsweep);
    MediaPlayer mMediaPlayer = new MediaPlayer();
    mMediaPlayer.setAudioStreamType(AudioManager.STREAM_VOICE_CALL);
    mMediaPlayer.setDataSource(context, uri);
    mMediaPlayer.prepare();
    mMediaPlayer.start()
    

    【讨论】:

    • 效果很好..!..抱歉回复晚了,我是一名学生,独自工作...正在研究不同的模块..
    • setAudioStreamType 已弃用。
    猜你喜欢
    • 1970-01-01
    • 2014-03-04
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-03
    • 1970-01-01
    相关资源
    最近更新 更多