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