18dd5f0d25
There are 2 types of vibrations: simple and repeated. Simple vibrations run for a given length of time while repeated patterns run until canceled or the calling process dies. If a vibration is currently running and another request is issued, the newer request always takes precedence unless the current vibration is a simple one and the time left is longer than the new request. If a repeating vibration is running and a new request overrides that vibration, the current vibration is pushed onto a stack. Once the new vibration completes, the previous vibration resumes. IBinder tokens are used to identify Vibration requests which means that multiple calls to Vibrator.vibrate with the same Vibrator object will override previous vibrations on that object.