带铃声的振动手机,直到铃声停止

时间:2013-09-16 09:24:25

标签: android

在我的应用中,我正在播放服务中的铃声。

protected boolean playRingtone() {      
    Uri ringtoneUri = _savedValues.loadRingtoneUri();
    _audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
    _maxVolume = _audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
    _oldVolume = _audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
    _audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, _maxVolume,AudioManager.FLAG_SHOW_UI);




    _mp = new MediaPlayer();
     try {
         _mp.setDataSource(this, ringtoneUri);
    } catch (Exception e) {
        return false;
    }

    _mp.setVolume(_maxVolume, _maxVolume);
    _mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
    _mp.setLooping(true);
     try {
         _mp.prepare();
    } catch (Exception e) {
        return false;
    }

    _mp.start();         
     return true;
}

当服务停止时

public void Stop() {
    //cancel ringtone playback if it's going on
    if (_ringAloud) {
        if (_audioManager != null) {
            _audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,_oldVolume, AudioManager.FLAG_SHOW_UI);
        }
        if (_mp != null) {
            if (_mp.isPlaying()) {
                _mp.stop();
            }
            _mp.release();
        }
    }

现在,我希望它能够振动,直到服务停止。 但振动器类除了振动(时间)和振动(模式,重复)之外不提供任何方法。 那么,有没有办法让手机与铃声同步振动。

1 个答案:

答案 0 :(得分:1)

您可以使用此方法启动&停止振动。

public static void onClickStartVibrate(Context c)
    {

        //Set the pattern for vibration  
        long pattern[]={0,200,100,300,400};

        //Start the vibration
        vibrator = (Vibrator)c.getSystemService(Context.VIBRATOR_SERVICE);
        //start vibration with repeated count, use -1 if you don't want to repeat the vibration
        vibrator.vibrate(pattern, 0);   

    }

停止振动

public static void onClickStopVibrate()
    {
        try{
            vibrator.cancel();
        }
        catch(NullPointerException e)
        {}
    }