首页 > 解决方案 > Android 上的声音(MediaPlayer)不能与振动同时工作

问题描述

我正在尝试同时创建带有声音和振动的警报。当应用程序在前台运行时,一切正常,声音和振动同时工作。但是当应用程序最小化时,只有声音有效。

通知从服务启动:

startSoundForNotif(STATE_TIMER_FINISHED);
startVibrator();

...

private void startSoundForNotif(int State) {
        if (sPrefSettings.getBoolean("switch_notif",true)) {
            int mSoundRes;
            if (State == STATE_TIMER_FINISHED) {
                mSoundRes = sPrefSettings.getInt(KEY_PREF_SOUND_RES, 0);
            } else {
                mSoundRes = sPrefSettings.getInt(KEY_PREF_SOUND_BREAK_RES, 0);
            }

            if (mSoundRes == 0) {
               
                Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
                MediaPlayer mPlayer = MediaPlayer.create(getApplication(), defaultSoundUri);
                mPlayer.start();
            } else {
                MediaPlayer mPlayer = MediaPlayer.create(getApplication(), mSoundRes);
                mPlayer.start();
            }
        }
    }

    private void startVibrator() {
        int mVibroNum = sPrefSettings.getInt(KEY_PREF_VIBRO_NUM,0);
        if (mVibroNum!=0){
        Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
        ListSounds mListSounds = new ListSounds();
        long [][] ListVibro = mListSounds.getListVibro();
        if (vibrator.hasVibrator()) {
            vibrator.vibrate(ListVibro[mVibroNum], -1);}
        }
    }

LogCat 中的错误:

2070-2224/? E/VibratorServiceInjector:  notification vibrate too often, skip
699-699/? E/VibratorService: zjl vibrator on 30ms

有人可以帮忙解决吗?

标签: androidandroid-mediaplayerandroid-vibration

解决方案


推荐阅读