19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.os;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
19c2346134bb519a54d50655cbef940fc3fdec60a9Jeff Brownimport android.content.Context;
20e331644cb570e74a8739cb21ffcc5875663ffa58Brad Fitzpatrick
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Class that operates the vibrator on the device.
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If your process exits, any vibration you started with will stop.
25d10bfe185c336d813845c9beb1f4041c5daa1669Jeff Brown * </p>
26c2346134bb519a54d50655cbef940fc3fdec60a9Jeff Brown *
27c2346134bb519a54d50655cbef940fc3fdec60a9Jeff Brown * To obtain an instance of the system vibrator, call
28c2346134bb519a54d50655cbef940fc3fdec60a9Jeff Brown * {@link Context#getSystemService} with {@link Context#VIBRATOR_SERVICE} as argument.
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
30c2346134bb519a54d50655cbef940fc3fdec60a9Jeff Brownpublic abstract class Vibrator {
31c2346134bb519a54d50655cbef940fc3fdec60a9Jeff Brown    /**
32c2346134bb519a54d50655cbef940fc3fdec60a9Jeff Brown     * @hide to prevent subclassing from outside of the framework
33c2346134bb519a54d50655cbef940fc3fdec60a9Jeff Brown     */
34c2346134bb519a54d50655cbef940fc3fdec60a9Jeff Brown    public Vibrator() {
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
38c2346134bb519a54d50655cbef940fc3fdec60a9Jeff Brown     * Check whether the hardware has a vibrator.
39c2346134bb519a54d50655cbef940fc3fdec60a9Jeff Brown     *
40c2346134bb519a54d50655cbef940fc3fdec60a9Jeff Brown     * @return True if the hardware has a vibrator, else false.
41ea9020e0854427d47e566a1394df6749f3265410Dianne Hackborn     */
42c2346134bb519a54d50655cbef940fc3fdec60a9Jeff Brown    public abstract boolean hasVibrator();
43ea9020e0854427d47e566a1394df6749f3265410Dianne Hackborn
44ea9020e0854427d47e566a1394df6749f3265410Dianne Hackborn    /**
45c2346134bb519a54d50655cbef940fc3fdec60a9Jeff Brown     * Vibrate constantly for the specified period of time.
469530e3a22d5ffa2019d1a5177b6a441d4d6d048bNicolas Falliere     * <p>This method requires the caller to hold the permission
479530e3a22d5ffa2019d1a5177b6a441d4d6d048bNicolas Falliere     * {@link android.Manifest.permission#VIBRATE}.
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
49d10bfe185c336d813845c9beb1f4041c5daa1669Jeff Brown     * @param milliseconds The number of milliseconds to vibrate.
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
51c2346134bb519a54d50655cbef940fc3fdec60a9Jeff Brown    public abstract void vibrate(long milliseconds);
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Vibrate with a given pattern.
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>
57d10bfe185c336d813845c9beb1f4041c5daa1669Jeff Brown     * Pass in an array of ints that are the durations for which to turn on or off
58d10bfe185c336d813845c9beb1f4041c5daa1669Jeff Brown     * the vibrator in milliseconds.  The first value indicates the number of milliseconds
59d10bfe185c336d813845c9beb1f4041c5daa1669Jeff Brown     * to wait before turning the vibrator on.  The next value indicates the number of milliseconds
60d10bfe185c336d813845c9beb1f4041c5daa1669Jeff Brown     * for which to keep the vibrator on before turning it off.  Subsequent values alternate
61d10bfe185c336d813845c9beb1f4041c5daa1669Jeff Brown     * between durations in milliseconds to turn the vibrator off or to turn the vibrator on.
62d10bfe185c336d813845c9beb1f4041c5daa1669Jeff Brown     * </p><p>
63d10bfe185c336d813845c9beb1f4041c5daa1669Jeff Brown     * To cause the pattern to repeat, pass the index into the pattern array at which
64d10bfe185c336d813845c9beb1f4041c5daa1669Jeff Brown     * to start the repeat, or -1 to disable repeating.
65d10bfe185c336d813845c9beb1f4041c5daa1669Jeff Brown     * </p>
669530e3a22d5ffa2019d1a5177b6a441d4d6d048bNicolas Falliere     * <p>This method requires the caller to hold the permission
679530e3a22d5ffa2019d1a5177b6a441d4d6d048bNicolas Falliere     * {@link android.Manifest.permission#VIBRATE}.
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
69d10bfe185c336d813845c9beb1f4041c5daa1669Jeff Brown     * @param pattern an array of longs of times for which to turn the vibrator on or off.
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param repeat the index into pattern at which to repeat, or -1 if
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        you don't want to repeat.
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
73c2346134bb519a54d50655cbef940fc3fdec60a9Jeff Brown    public abstract void vibrate(long[] pattern, int repeat);
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Turn the vibrator off.
779530e3a22d5ffa2019d1a5177b6a441d4d6d048bNicolas Falliere     * <p>This method requires the caller to hold the permission
789530e3a22d5ffa2019d1a5177b6a441d4d6d048bNicolas Falliere     * {@link android.Manifest.permission#VIBRATE}.
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
80c2346134bb519a54d50655cbef940fc3fdec60a9Jeff Brown    public abstract void cancel();
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
82