am feebaf35: Merge "Don\'t crash on null Vibrator during reboot." into gingerbread

Merge commit 'feebaf35c0edaed87edc6eb33a33ad9df1a209d6' into gingerbread-plus-aosp

* commit 'feebaf35c0edaed87edc6eb33a33ad9df1a209d6':
  Don't crash on null Vibrator during reboot.
This commit is contained in:
Brad Fitzpatrick
2010-10-15 08:51:01 -07:00
committed by Android Git Automerger
2 changed files with 21 additions and 3 deletions

View File

@@ -16,6 +16,8 @@
package android.os; package android.os;
import android.util.Log;
/** /**
* Class that operates the vibrator on the device. * Class that operates the vibrator on the device.
* <p> * <p>
@@ -23,6 +25,8 @@ package android.os;
*/ */
public class Vibrator public class Vibrator
{ {
private static final String TAG = "Vibrator";
IVibratorService mService; IVibratorService mService;
private final Binder mToken = new Binder(); private final Binder mToken = new Binder();
@@ -40,9 +44,14 @@ public class Vibrator
*/ */
public void vibrate(long milliseconds) public void vibrate(long milliseconds)
{ {
if (mService == null) {
Log.w(TAG, "Failed to vibrate; no vibrator service.");
return;
}
try { try {
mService.vibrate(milliseconds, mToken); mService.vibrate(milliseconds, mToken);
} catch (RemoteException e) { } catch (Exception e) {
Log.w(TAG, "Failed to vibrate.", e);
} }
} }
@@ -61,13 +70,18 @@ public class Vibrator
*/ */
public void vibrate(long[] pattern, int repeat) public void vibrate(long[] pattern, int repeat)
{ {
if (mService == null) {
Log.w(TAG, "Failed to vibrate; no vibrator service.");
return;
}
// catch this here because the server will do nothing. pattern may // catch this here because the server will do nothing. pattern may
// not be null, let that be checked, because the server will drop it // not be null, let that be checked, because the server will drop it
// anyway // anyway
if (repeat < pattern.length) { if (repeat < pattern.length) {
try { try {
mService.vibratePattern(pattern, repeat, mToken); mService.vibratePattern(pattern, repeat, mToken);
} catch (RemoteException e) { } catch (Exception e) {
Log.w(TAG, "Failed to vibrate.", e);
} }
} else { } else {
throw new ArrayIndexOutOfBoundsException(); throw new ArrayIndexOutOfBoundsException();
@@ -79,9 +93,13 @@ public class Vibrator
*/ */
public void cancel() public void cancel()
{ {
if (mService == null) {
return;
}
try { try {
mService.cancelVibrate(mToken); mService.cancelVibrate(mToken);
} catch (RemoteException e) { } catch (RemoteException e) {
Log.w(TAG, "Failed to cancel vibration.", e);
} }
} }
} }

View File

@@ -381,7 +381,7 @@ public final class ShutdownThread extends Thread {
// vibrator is asynchronous so we need to wait to avoid shutting down too soon. // vibrator is asynchronous so we need to wait to avoid shutting down too soon.
try { try {
Thread.sleep(SHUTDOWN_VIBRATE_MS); Thread.sleep(SHUTDOWN_VIBRATE_MS);
} catch (InterruptedException e) { } catch (InterruptedException unused) {
} }
} }