MediaPlayer - 在耳机和手机上播放闹钟

时间:2015-02-06 08:38:03

标签: android android-mediaplayer android-audiomanager

我在附加代码中创建了一个MediaPlayer。一切正常,但我遇到了一个问题:每当播放闹钟并且我连接到耳机时,声音就会在手机和耳机上播放。在这种情况下,我希望手机能够安静。

实际上,如果我使用相同的功能创建另一个音乐播放器来播放音乐并将流类型设置为AudioManager.STREAM_MUSIC,那么一切正常。

我在Android 4.4.4手机上得到这种行为,我知道,这段代码在我的旧手机上按预期工作了...用android 4.3我认为...

    int streamVolume = ((AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE)).getStreamVolume(AudioManager.STREAM_ALARM);
    if (streamVolume != 0)
    {
        mAlarmPlayer = createMediaPlayerIfNeeded(mAlarmPlayer, true, true, false);
        try
        {
            mAlarmPlayer.setDataSource(this, Uri.parse(sound));
            mAlarmPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
            mAlarmPlayer.setVolume(streamVolume, streamVolume);
            mAlarmPlayer.prepareAsync();
        }
        catch (IOException e)
        {
            Log.e("MusicService", "IOException playing alarm: " + e.getMessage());
            e.printStackTrace();
        }
    }

这是创建功能:

private MediaPlayer createMediaPlayerIfNeeded(MediaPlayer player, boolean setListenerOnPrepared, boolean setListenerOnCompletion, boolean setListenerOnError)
{
    if (player == null)
    {
        player = new MediaPlayer();
        player.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);

        if (setListenerOnPrepared)
            player.setOnPreparedListener(this);
        if (setListenerOnCompletion)
            player.setOnCompletionListener(this);
        if (setListenerOnError)
            player.setOnErrorListener(this);
    }
    else
        player.reset();

    return player;
}

0 个答案:

没有答案