Advertisement
darkera13

Untitled

Jul 23rd, 2016
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 167.59 KB | None | 0 0
  1. .class public Lcom/android/server/VibratorService;
  2. .super Landroid/os/IVibratorService$Stub;
  3. .source "VibratorService.java"
  4.  
  5. # interfaces
  6. .implements Landroid/hardware/input/InputManager$InputDeviceListener;
  7.  
  8.  
  9. # annotations
  10. .annotation system Ldalvik/annotation/MemberClasses;
  11. value = {
  12. Lcom/android/server/VibratorService$5;,
  13. Lcom/android/server/VibratorService$SecSettingsObserver;,
  14. Lcom/android/server/VibratorService$VibrateThread;,
  15. Lcom/android/server/VibratorService$SettingsObserver;,
  16. Lcom/android/server/VibratorService$VibrationInfo;,
  17. Lcom/android/server/VibratorService$Vibration;
  18. }
  19. .end annotation
  20.  
  21.  
  22. # static fields
  23. .field private static final DEBUG:Z = false
  24.  
  25. .field private static HAS_DUAL_MOTORS:I = 0x0
  26.  
  27. .field private static LEVEL_TO_MAGNITUDE:[I = null
  28.  
  29. .field private static LEVEL_TO_TOUCH_MAGNITUDE:[I = null
  30.  
  31. .field private static final SAFE_DEBUG:Z
  32.  
  33. .field private static final SET_FREQUNCY_PARAM_PATH:Ljava/lang/String; = "/dev/block/param"
  34.  
  35. .field private static final SYSTEM_UI_PACKAGE:Ljava/lang/String; = "com.android.systemui"
  36.  
  37. .field private static final TAG:Ljava/lang/String; = "VibratorService"
  38.  
  39. .field private static final TYPE_MAGNITUDE_FEEDBACK:I = 0x0
  40.  
  41. .field private static final TYPE_MAGNITUDE_NOTIFICATION:I = 0x2
  42.  
  43. .field private static final TYPE_MAGNITUDE_RECVCALL:I = 0x1
  44.  
  45. .field private static USE_SET_MAX_MAGNITUE:Z = false
  46.  
  47. .field private static final VIB_DEBUG:Z = true
  48.  
  49. .field private static mIsEnableIntensity:Z
  50.  
  51. .field private static mIsHapticSupported:Z
  52.  
  53. .field private static final mTypeURIs:[Ljava/lang/String;
  54.  
  55. .field private static mVibePatternHash:Ljava/util/Hashtable;
  56. .annotation system Ldalvik/annotation/Signature;
  57. value = {
  58. "Ljava/util/Hashtable",
  59. "<",
  60. "Ljava/lang/String;",
  61. "Ljava/lang/Long;",
  62. ">;"
  63. }
  64. .end annotation
  65. .end field
  66.  
  67.  
  68. # instance fields
  69. .field private final mAppOpsService:Lcom/android/internal/app/IAppOpsService;
  70.  
  71. .field private final mBatteryStatsService:Lcom/android/internal/app/IBatteryStats;
  72.  
  73. .field private mCallMagnitude:I
  74.  
  75. .field private mCallMagnitudeObserver:Lcom/android/server/VibratorService$SecSettingsObserver;
  76.  
  77. .field private mContentResolver:Landroid/content/ContentResolver;
  78.  
  79. .field private final mContext:Landroid/content/Context;
  80.  
  81. .field private mCurVibUid:I
  82.  
  83. .field private mCurrentVibration:Lcom/android/server/VibratorService$Vibration;
  84.  
  85. .field private mDefaultMagnitude:I
  86.  
  87. .field private final mH:Landroid/os/Handler;
  88.  
  89. .field private mHMTMount:Z
  90.  
  91. .field private mHasVibrator:Z
  92.  
  93. .field private mIm:Landroid/hardware/input/InputManager;
  94.  
  95. .field private mInputDeviceListenerRegistered:Z
  96.  
  97. .field private final mInputDeviceVibrators:Ljava/util/ArrayList;
  98. .annotation system Ldalvik/annotation/Signature;
  99. value = {
  100. "Ljava/util/ArrayList",
  101. "<",
  102. "Landroid/os/Vibrator;",
  103. ">;"
  104. }
  105. .end annotation
  106. .end field
  107.  
  108. .field mIntentReceiver:Landroid/content/BroadcastReceiver;
  109.  
  110. .field private mIsFrequencySupported:Z
  111.  
  112. .field private mLastEndWakeLock:Ljava/lang/String;
  113.  
  114. .field private mLastStartWakeLock:Ljava/lang/String;
  115.  
  116. .field private mLowPowerMode:Z
  117.  
  118. .field private mMaxMagnitudeValue:I
  119.  
  120. .field private mMinMagnitudeValue:I
  121.  
  122. .field private mMotorType:I
  123.  
  124. .field private mNotiMagnitude:I
  125.  
  126. .field private mNotiMagnitudeObserver:Lcom/android/server/VibratorService$SecSettingsObserver;
  127.  
  128. .field private mPowerManagerInternal:Landroid/os/PowerManagerInternal;
  129.  
  130. .field private final mPreviousVibrations:Ljava/util/LinkedList;
  131. .annotation system Ldalvik/annotation/Signature;
  132. value = {
  133. "Ljava/util/LinkedList",
  134. "<",
  135. "Lcom/android/server/VibratorService$VibrationInfo;",
  136. ">;"
  137. }
  138. .end annotation
  139. .end field
  140.  
  141. .field private final mPreviousVibrationsLimit:I
  142.  
  143. .field private mSettingObserver:Lcom/android/server/VibratorService$SettingsObserver;
  144.  
  145. .field private mTempMagnitude:I
  146.  
  147. .field private mTempToken:Landroid/os/IBinder;
  148.  
  149. .field volatile mThread:Lcom/android/server/VibratorService$VibrateThread;
  150.  
  151. .field private final mTmpWorkSource:Landroid/os/WorkSource;
  152.  
  153. .field private mTouchMagnitude:I
  154.  
  155. .field private mTouchMagnitudeObserver:Lcom/android/server/VibratorService$SecSettingsObserver;
  156.  
  157. .field private final mVibeConstantsPatternA:Ljava/lang/String;
  158.  
  159. .field private final mVibeConstantsPatternB:Ljava/lang/String;
  160.  
  161. .field private final mVibeConstantsPatternC:Ljava/lang/String;
  162.  
  163. .field private final mVibeConstantsPatternD:Ljava/lang/String;
  164.  
  165. .field private final mVibeConstantsPatternE:Ljava/lang/String;
  166.  
  167. .field private final mVibeConstantsPatternF:Ljava/lang/String;
  168.  
  169. .field private final mVibeConstantsPatternG:Ljava/lang/String;
  170.  
  171. .field private final mVibeConstantsPatternH:Ljava/lang/String;
  172.  
  173. .field private final mVibeConstantsPatternI:Ljava/lang/String;
  174.  
  175. .field private final mVibeConstantsPatternJ:Ljava/lang/String;
  176.  
  177. .field private final mVibeConstantsPatternK:Ljava/lang/String;
  178.  
  179. .field private final mVibeConstantsPatternL:Ljava/lang/String;
  180.  
  181. .field private final mVibeConstantsPatternM:Ljava/lang/String;
  182.  
  183. .field private mVibeFrequencyAlert:I
  184.  
  185. .field private mVibeFrequencyF0:I
  186.  
  187. .field private mVibeFrequencyHigh:I
  188.  
  189. .field private mVibeFrequencyLow:I
  190.  
  191. .field private mVibeFrequencyMid:I
  192.  
  193. .field private mVibePatternA:[J
  194.  
  195. .field private mVibePatternB:[J
  196.  
  197. .field private mVibePatternC:[J
  198.  
  199. .field private mVibePatternD:[J
  200.  
  201. .field private mVibePatternE:[J
  202.  
  203. .field private mVibePatternF:[J
  204.  
  205. .field private mVibePatternG:[J
  206.  
  207. .field private mVibePatternH:[J
  208.  
  209. .field private mVibePatternI:[J
  210.  
  211. .field private mVibePatternJ:[J
  212.  
  213. .field private mVibePatternK:[J
  214.  
  215. .field private mVibePatternL:[J
  216.  
  217. .field private mVibePatternM:[J
  218.  
  219. .field private mVibePatternMaxLength:I
  220.  
  221. .field private mVibrateInputDevicesSetting:Z
  222.  
  223. .field private final mVibrationRunnable:Ljava/lang/Runnable;
  224.  
  225. .field private final mVibrations:Ljava/util/LinkedList;
  226. .annotation system Ldalvik/annotation/Signature;
  227. value = {
  228. "Ljava/util/LinkedList",
  229. "<",
  230. "Lcom/android/server/VibratorService$Vibration;",
  231. ">;"
  232. }
  233. .end annotation
  234. .end field
  235.  
  236. .field private final mWakeLock:Landroid/os/PowerManager$WakeLock;
  237.  
  238.  
  239. # direct methods
  240. .method static constructor <clinit>()V
  241. .locals 4
  242.  
  243. const/4 v2, 0x1
  244.  
  245. const/4 v1, 0x0
  246.  
  247. invoke-static {}, Landroid/os/Debug;->isProductShip()I
  248.  
  249. move-result v0
  250.  
  251. if-ne v0, v2, :cond_0
  252.  
  253. move v0, v1
  254.  
  255. :goto_0
  256. sput-boolean v0, Lcom/android/server/VibratorService;->SAFE_DEBUG:Z
  257.  
  258. const/4 v0, 0x3
  259.  
  260. new-array v0, v0, [Ljava/lang/String;
  261.  
  262. const-string v3, "VIB_FEEDBACK_MAGNITUDE"
  263.  
  264. aput-object v3, v0, v1
  265.  
  266. const-string v3, "VIB_RECVCALL_MAGNITUDE"
  267.  
  268. aput-object v3, v0, v2
  269.  
  270. const/4 v2, 0x2
  271.  
  272. const-string v3, "VIB_NOTIFICATION_MAGNITUDE"
  273.  
  274. aput-object v3, v0, v2
  275.  
  276. sput-object v0, Lcom/android/server/VibratorService;->mTypeURIs:[Ljava/lang/String;
  277.  
  278. sput v1, Lcom/android/server/VibratorService;->HAS_DUAL_MOTORS:I
  279.  
  280. sput-boolean v1, Lcom/android/server/VibratorService;->mIsEnableIntensity:Z
  281.  
  282. sput-boolean v1, Lcom/android/server/VibratorService;->mIsHapticSupported:Z
  283.  
  284. const-string v0, "Max"
  285.  
  286. invoke-static {}, Lcom/sec/android/app/CscFeature;->getInstance()Lcom/sec/android/app/CscFeature;
  287.  
  288. move-result-object v1
  289.  
  290. const-string v2, "CscFeature_Framework_ConfigVibService"
  291.  
  292. invoke-virtual {v1, v2}, Lcom/sec/android/app/CscFeature;->getString(Ljava/lang/String;)Ljava/lang/String;
  293.  
  294. move-result-object v1
  295.  
  296. invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
  297.  
  298. move-result v0
  299.  
  300. sput-boolean v0, Lcom/android/server/VibratorService;->USE_SET_MAX_MAGNITUE:Z
  301.  
  302. new-instance v0, Ljava/util/Hashtable;
  303.  
  304. invoke-direct {v0}, Ljava/util/Hashtable;-><init>()V
  305.  
  306. sput-object v0, Lcom/android/server/VibratorService;->mVibePatternHash:Ljava/util/Hashtable;
  307.  
  308. return-void
  309.  
  310. :cond_0
  311. move v0, v2
  312.  
  313. goto :goto_0
  314. .end method
  315.  
  316. .method constructor <init>(Landroid/content/Context;)V
  317. .locals 12
  318.  
  319. const/4 v8, -0x1
  320.  
  321. const/4 v11, 0x2
  322.  
  323. const/16 v7, 0x270f
  324.  
  325. const/4 v10, 0x1
  326.  
  327. const/4 v9, 0x0
  328.  
  329. invoke-direct {p0}, Landroid/os/IVibratorService$Stub;-><init>()V
  330.  
  331. iput-boolean v9, p0, Lcom/android/server/VibratorService;->mHasVibrator:Z
  332.  
  333. const-string v6, "A"
  334.  
  335. iput-object v6, p0, Lcom/android/server/VibratorService;->mVibeConstantsPatternA:Ljava/lang/String;
  336.  
  337. const-string v6, "B"
  338.  
  339. iput-object v6, p0, Lcom/android/server/VibratorService;->mVibeConstantsPatternB:Ljava/lang/String;
  340.  
  341. const-string v6, "C"
  342.  
  343. iput-object v6, p0, Lcom/android/server/VibratorService;->mVibeConstantsPatternC:Ljava/lang/String;
  344.  
  345. const-string v6, "D"
  346.  
  347. iput-object v6, p0, Lcom/android/server/VibratorService;->mVibeConstantsPatternD:Ljava/lang/String;
  348.  
  349. const-string v6, "E"
  350.  
  351. iput-object v6, p0, Lcom/android/server/VibratorService;->mVibeConstantsPatternE:Ljava/lang/String;
  352.  
  353. const-string v6, "F"
  354.  
  355. iput-object v6, p0, Lcom/android/server/VibratorService;->mVibeConstantsPatternF:Ljava/lang/String;
  356.  
  357. const-string v6, "G"
  358.  
  359. iput-object v6, p0, Lcom/android/server/VibratorService;->mVibeConstantsPatternG:Ljava/lang/String;
  360.  
  361. const-string v6, "H"
  362.  
  363. iput-object v6, p0, Lcom/android/server/VibratorService;->mVibeConstantsPatternH:Ljava/lang/String;
  364.  
  365. const-string v6, "I"
  366.  
  367. iput-object v6, p0, Lcom/android/server/VibratorService;->mVibeConstantsPatternI:Ljava/lang/String;
  368.  
  369. const-string v6, "J"
  370.  
  371. iput-object v6, p0, Lcom/android/server/VibratorService;->mVibeConstantsPatternJ:Ljava/lang/String;
  372.  
  373. const-string v6, "K"
  374.  
  375. iput-object v6, p0, Lcom/android/server/VibratorService;->mVibeConstantsPatternK:Ljava/lang/String;
  376.  
  377. const-string v6, "L"
  378.  
  379. iput-object v6, p0, Lcom/android/server/VibratorService;->mVibeConstantsPatternL:Ljava/lang/String;
  380.  
  381. const-string v6, "M"
  382.  
  383. iput-object v6, p0, Lcom/android/server/VibratorService;->mVibeConstantsPatternM:Ljava/lang/String;
  384.  
  385. iput v9, p0, Lcom/android/server/VibratorService;->mVibeFrequencyAlert:I
  386.  
  387. iput v10, p0, Lcom/android/server/VibratorService;->mVibeFrequencyLow:I
  388.  
  389. iput v11, p0, Lcom/android/server/VibratorService;->mVibeFrequencyMid:I
  390.  
  391. const/4 v6, 0x3
  392.  
  393. iput v6, p0, Lcom/android/server/VibratorService;->mVibeFrequencyHigh:I
  394.  
  395. const/4 v6, 0x4
  396.  
  397. iput v6, p0, Lcom/android/server/VibratorService;->mVibeFrequencyF0:I
  398.  
  399. iput v8, p0, Lcom/android/server/VibratorService;->mVibePatternMaxLength:I
  400.  
  401. iput v7, p0, Lcom/android/server/VibratorService;->mTouchMagnitude:I
  402.  
  403. iput v7, p0, Lcom/android/server/VibratorService;->mCallMagnitude:I
  404.  
  405. iput v7, p0, Lcom/android/server/VibratorService;->mNotiMagnitude:I
  406.  
  407. iput v7, p0, Lcom/android/server/VibratorService;->mDefaultMagnitude:I
  408.  
  409. iput v7, p0, Lcom/android/server/VibratorService;->mMaxMagnitudeValue:I
  410.  
  411. iput v7, p0, Lcom/android/server/VibratorService;->mMinMagnitudeValue:I
  412.  
  413. iput v8, p0, Lcom/android/server/VibratorService;->mMotorType:I
  414.  
  415. iput-boolean v9, p0, Lcom/android/server/VibratorService;->mIsFrequencySupported:Z
  416.  
  417. iput-boolean v9, p0, Lcom/android/server/VibratorService;->mHMTMount:Z
  418.  
  419. new-instance v6, Landroid/os/WorkSource;
  420.  
  421. invoke-direct {v6}, Landroid/os/WorkSource;-><init>()V
  422.  
  423. iput-object v6, p0, Lcom/android/server/VibratorService;->mTmpWorkSource:Landroid/os/WorkSource;
  424.  
  425. new-instance v6, Landroid/os/Handler;
  426.  
  427. invoke-direct {v6}, Landroid/os/Handler;-><init>()V
  428.  
  429. iput-object v6, p0, Lcom/android/server/VibratorService;->mH:Landroid/os/Handler;
  430.  
  431. new-instance v6, Ljava/util/ArrayList;
  432.  
  433. invoke-direct {v6}, Ljava/util/ArrayList;-><init>()V
  434.  
  435. iput-object v6, p0, Lcom/android/server/VibratorService;->mInputDeviceVibrators:Ljava/util/ArrayList;
  436.  
  437. iput v8, p0, Lcom/android/server/VibratorService;->mCurVibUid:I
  438.  
  439. new-instance v6, Lcom/android/server/VibratorService$3;
  440.  
  441. invoke-direct {v6, p0}, Lcom/android/server/VibratorService$3;-><init>(Lcom/android/server/VibratorService;)V
  442.  
  443. iput-object v6, p0, Lcom/android/server/VibratorService;->mVibrationRunnable:Ljava/lang/Runnable;
  444.  
  445. new-instance v6, Lcom/android/server/VibratorService$4;
  446.  
  447. invoke-direct {v6, p0}, Lcom/android/server/VibratorService$4;-><init>(Lcom/android/server/VibratorService;)V
  448.  
  449. iput-object v6, p0, Lcom/android/server/VibratorService;->mIntentReceiver:Landroid/content/BroadcastReceiver;
  450.  
  451. iput v8, p0, Lcom/android/server/VibratorService;->mTempMagnitude:I
  452.  
  453. invoke-static {}, Lcom/android/server/VibratorService;->vibratorOff()V
  454.  
  455. iput-object p1, p0, Lcom/android/server/VibratorService;->mContext:Landroid/content/Context;
  456.  
  457. const-string/jumbo v6, "power"
  458.  
  459. invoke-virtual {p1, v6}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
  460.  
  461. move-result-object v3
  462.  
  463. check-cast v3, Landroid/os/PowerManager;
  464.  
  465. const-string v6, "VibratorService"
  466.  
  467. invoke-virtual {v3, v10, v6}, Landroid/os/PowerManager;->newWakeLock(ILjava/lang/String;)Landroid/os/PowerManager$WakeLock;
  468.  
  469. move-result-object v6
  470.  
  471. iput-object v6, p0, Lcom/android/server/VibratorService;->mWakeLock:Landroid/os/PowerManager$WakeLock;
  472.  
  473. iget-object v6, p0, Lcom/android/server/VibratorService;->mWakeLock:Landroid/os/PowerManager$WakeLock;
  474.  
  475. invoke-virtual {v6, v10}, Landroid/os/PowerManager$WakeLock;->setReferenceCounted(Z)V
  476.  
  477. const-string v6, "appops"
  478.  
  479. invoke-static {v6}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder;
  480.  
  481. move-result-object v6
  482.  
  483. invoke-static {v6}, Lcom/android/internal/app/IAppOpsService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IAppOpsService;
  484.  
  485. move-result-object v6
  486.  
  487. iput-object v6, p0, Lcom/android/server/VibratorService;->mAppOpsService:Lcom/android/internal/app/IAppOpsService;
  488.  
  489. const-string v6, "batterystats"
  490.  
  491. invoke-static {v6}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder;
  492.  
  493. move-result-object v6
  494.  
  495. invoke-static {v6}, Lcom/android/internal/app/IBatteryStats$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IBatteryStats;
  496.  
  497. move-result-object v6
  498.  
  499. iput-object v6, p0, Lcom/android/server/VibratorService;->mBatteryStatsService:Lcom/android/internal/app/IBatteryStats;
  500.  
  501. iget-object v6, p0, Lcom/android/server/VibratorService;->mContext:Landroid/content/Context;
  502.  
  503. invoke-virtual {v6}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
  504.  
  505. move-result-object v6
  506.  
  507. const v7, 0x10e009a
  508.  
  509. invoke-virtual {v6, v7}, Landroid/content/res/Resources;->getInteger(I)I
  510.  
  511. move-result v6
  512.  
  513. iput v6, p0, Lcom/android/server/VibratorService;->mPreviousVibrationsLimit:I
  514.  
  515. new-instance v6, Ljava/util/LinkedList;
  516.  
  517. invoke-direct {v6}, Ljava/util/LinkedList;-><init>()V
  518.  
  519. iput-object v6, p0, Lcom/android/server/VibratorService;->mVibrations:Ljava/util/LinkedList;
  520.  
  521. new-instance v6, Ljava/util/LinkedList;
  522.  
  523. invoke-direct {v6}, Ljava/util/LinkedList;-><init>()V
  524.  
  525. iput-object v6, p0, Lcom/android/server/VibratorService;->mPreviousVibrations:Ljava/util/LinkedList;
  526.  
  527. new-instance v0, Landroid/content/IntentFilter;
  528.  
  529. invoke-direct {v0}, Landroid/content/IntentFilter;-><init>()V
  530.  
  531. const-string v6, "android.intent.action.SCREEN_OFF"
  532.  
  533. invoke-virtual {v0, v6}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
  534.  
  535. const-string/jumbo v6, "com.samsung.intent.action.HMT_MOUNT"
  536.  
  537. invoke-virtual {v0, v6}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
  538.  
  539. const-string/jumbo v6, "com.samsung.intent.action.HMT_UNMOUNT"
  540.  
  541. invoke-virtual {v0, v6}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
  542.  
  543. const-string/jumbo v6, "com.samsung.intent.action.HMT_DISCONNECTED"
  544.  
  545. invoke-virtual {v0, v6}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
  546.  
  547. iget-object v6, p0, Lcom/android/server/VibratorService;->mIntentReceiver:Landroid/content/BroadcastReceiver;
  548.  
  549. invoke-virtual {p1, v6, v0}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;
  550.  
  551. iget-object v6, p0, Lcom/android/server/VibratorService;->mContext:Landroid/content/Context;
  552.  
  553. invoke-virtual {v6}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
  554.  
  555. move-result-object v4
  556.  
  557. const v6, 0x1070071
  558.  
  559. const-string v7, "A"
  560.  
  561. invoke-direct {p0, v4, v6, v7}, Lcom/android/server/VibratorService;->initPattern(Landroid/content/res/Resources;ILjava/lang/String;)[J
  562.  
  563. move-result-object v6
  564.  
  565. iput-object v6, p0, Lcom/android/server/VibratorService;->mVibePatternA:[J
  566.  
  567. const v6, 0x1070072
  568.  
  569. const-string v7, "B"
  570.  
  571. invoke-direct {p0, v4, v6, v7}, Lcom/android/server/VibratorService;->initPattern(Landroid/content/res/Resources;ILjava/lang/String;)[J
  572.  
  573. move-result-object v6
  574.  
  575. iput-object v6, p0, Lcom/android/server/VibratorService;->mVibePatternB:[J
  576.  
  577. const v6, 0x1070073
  578.  
  579. const-string v7, "C"
  580.  
  581. invoke-direct {p0, v4, v6, v7}, Lcom/android/server/VibratorService;->initPattern(Landroid/content/res/Resources;ILjava/lang/String;)[J
  582.  
  583. move-result-object v6
  584.  
  585. iput-object v6, p0, Lcom/android/server/VibratorService;->mVibePatternC:[J
  586.  
  587. const v6, 0x1070074
  588.  
  589. const-string v7, "D"
  590.  
  591. invoke-direct {p0, v4, v6, v7}, Lcom/android/server/VibratorService;->initPattern(Landroid/content/res/Resources;ILjava/lang/String;)[J
  592.  
  593. move-result-object v6
  594.  
  595. iput-object v6, p0, Lcom/android/server/VibratorService;->mVibePatternD:[J
  596.  
  597. const v6, 0x1070075
  598.  
  599. const-string v7, "E"
  600.  
  601. invoke-direct {p0, v4, v6, v7}, Lcom/android/server/VibratorService;->initPattern(Landroid/content/res/Resources;ILjava/lang/String;)[J
  602.  
  603. move-result-object v6
  604.  
  605. iput-object v6, p0, Lcom/android/server/VibratorService;->mVibePatternE:[J
  606.  
  607. const v6, 0x1070076
  608.  
  609. const-string v7, "F"
  610.  
  611. invoke-direct {p0, v4, v6, v7}, Lcom/android/server/VibratorService;->initPattern(Landroid/content/res/Resources;ILjava/lang/String;)[J
  612.  
  613. move-result-object v6
  614.  
  615. iput-object v6, p0, Lcom/android/server/VibratorService;->mVibePatternF:[J
  616.  
  617. const v6, 0x1070077
  618.  
  619. const-string v7, "G"
  620.  
  621. invoke-direct {p0, v4, v6, v7}, Lcom/android/server/VibratorService;->initPattern(Landroid/content/res/Resources;ILjava/lang/String;)[J
  622.  
  623. move-result-object v6
  624.  
  625. iput-object v6, p0, Lcom/android/server/VibratorService;->mVibePatternG:[J
  626.  
  627. const v6, 0x1070078
  628.  
  629. const-string v7, "H"
  630.  
  631. invoke-direct {p0, v4, v6, v7}, Lcom/android/server/VibratorService;->initPattern(Landroid/content/res/Resources;ILjava/lang/String;)[J
  632.  
  633. move-result-object v6
  634.  
  635. iput-object v6, p0, Lcom/android/server/VibratorService;->mVibePatternH:[J
  636.  
  637. const v6, 0x1070079
  638.  
  639. const-string v7, "I"
  640.  
  641. invoke-direct {p0, v4, v6, v7}, Lcom/android/server/VibratorService;->initPattern(Landroid/content/res/Resources;ILjava/lang/String;)[J
  642.  
  643. move-result-object v6
  644.  
  645. iput-object v6, p0, Lcom/android/server/VibratorService;->mVibePatternI:[J
  646.  
  647. const v6, 0x107007a
  648.  
  649. const-string v7, "J"
  650.  
  651. invoke-direct {p0, v4, v6, v7}, Lcom/android/server/VibratorService;->initPattern(Landroid/content/res/Resources;ILjava/lang/String;)[J
  652.  
  653. move-result-object v6
  654.  
  655. iput-object v6, p0, Lcom/android/server/VibratorService;->mVibePatternJ:[J
  656.  
  657. const v6, 0x107007b
  658.  
  659. const-string v7, "K"
  660.  
  661. invoke-direct {p0, v4, v6, v7}, Lcom/android/server/VibratorService;->initPattern(Landroid/content/res/Resources;ILjava/lang/String;)[J
  662.  
  663. move-result-object v6
  664.  
  665. iput-object v6, p0, Lcom/android/server/VibratorService;->mVibePatternK:[J
  666.  
  667. const v6, 0x107007c
  668.  
  669. const-string v7, "L"
  670.  
  671. invoke-direct {p0, v4, v6, v7}, Lcom/android/server/VibratorService;->initPattern(Landroid/content/res/Resources;ILjava/lang/String;)[J
  672.  
  673. move-result-object v6
  674.  
  675. iput-object v6, p0, Lcom/android/server/VibratorService;->mVibePatternL:[J
  676.  
  677. const v6, 0x107007d
  678.  
  679. const-string v7, "M"
  680.  
  681. invoke-direct {p0, v4, v6, v7}, Lcom/android/server/VibratorService;->initPattern(Landroid/content/res/Resources;ILjava/lang/String;)[J
  682.  
  683. move-result-object v6
  684.  
  685. iput-object v6, p0, Lcom/android/server/VibratorService;->mVibePatternM:[J
  686.  
  687. const v6, 0x2
  688.  
  689. iput v6, p0, Lcom/android/server/VibratorService;->mMotorType:I
  690.  
  691. sget-boolean v6, Lcom/android/server/VibratorService;->SAFE_DEBUG:Z
  692.  
  693. if-eqz v6, :cond_0
  694.  
  695. const-string v6, "VibratorService"
  696.  
  697. new-instance v7, Ljava/lang/StringBuilder;
  698.  
  699. invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
  700.  
  701. const-string/jumbo v8, "mMType : "
  702.  
  703. invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  704.  
  705. move-result-object v7
  706.  
  707. iget v8, p0, Lcom/android/server/VibratorService;->mMotorType:I
  708.  
  709. invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  710.  
  711. move-result-object v7
  712.  
  713. invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  714.  
  715. move-result-object v7
  716.  
  717. invoke-static {v6, v7}, Landroid/util/Slog;->v(Ljava/lang/String;Ljava/lang/String;)I
  718.  
  719. :cond_0
  720. const v6, 0x0
  721.  
  722. iput-boolean v6, p0, Lcom/android/server/VibratorService;->mIsFrequencySupported:Z
  723.  
  724. sget-boolean v6, Lcom/android/server/VibratorService;->SAFE_DEBUG:Z
  725.  
  726. if-eqz v6, :cond_1
  727.  
  728. const-string v6, "VibratorService"
  729.  
  730. new-instance v7, Ljava/lang/StringBuilder;
  731.  
  732. invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
  733.  
  734. const-string/jumbo v8, "f : "
  735.  
  736. invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  737.  
  738. move-result-object v7
  739.  
  740. iget-boolean v8, p0, Lcom/android/server/VibratorService;->mIsFrequencySupported:Z
  741.  
  742. invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
  743.  
  744. move-result-object v7
  745.  
  746. invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  747.  
  748. move-result-object v7
  749.  
  750. invoke-static {v6, v7}, Landroid/util/Slog;->v(Ljava/lang/String;Ljava/lang/String;)I
  751.  
  752. :cond_1
  753. iget v6, p0, Lcom/android/server/VibratorService;->mMotorType:I
  754.  
  755. packed-switch v6, :pswitch_data_0
  756.  
  757. sput-boolean v9, Lcom/android/server/VibratorService;->mIsEnableIntensity:Z
  758.  
  759. sput-boolean v9, Lcom/android/server/VibratorService;->mIsHapticSupported:Z
  760.  
  761. :goto_0
  762. sget-boolean v6, Lcom/android/server/VibratorService;->mIsEnableIntensity:Z
  763.  
  764. if-eqz v6, :cond_3
  765.  
  766. sget-object v6, Lcom/android/server/VibratorService;->LEVEL_TO_MAGNITUDE:[I
  767.  
  768. array-length v6, v6
  769.  
  770. add-int/lit8 v2, v6, -0x1
  771.  
  772. sget-object v6, Lcom/android/server/VibratorService;->LEVEL_TO_TOUCH_MAGNITUDE:[I
  773.  
  774. array-length v6, v6
  775.  
  776. add-int/lit8 v5, v6, -0x1
  777.  
  778. if-lt v2, v11, :cond_2
  779.  
  780. if-ge v5, v11, :cond_5
  781.  
  782. :cond_2
  783. const-string v6, "VibratorService"
  784.  
  785. new-instance v7, Ljava/lang/StringBuilder;
  786.  
  787. invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
  788.  
  789. const-string/jumbo v8, "magnitudeMaxLevel : "
  790.  
  791. invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  792.  
  793. move-result-object v7
  794.  
  795. invoke-virtual {v7, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  796.  
  797. move-result-object v7
  798.  
  799. const-string v8, ", touchMagnitudeMaxLevel : "
  800.  
  801. invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  802.  
  803. move-result-object v7
  804.  
  805. invoke-virtual {v7, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  806.  
  807. move-result-object v7
  808.  
  809. invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  810.  
  811. move-result-object v7
  812.  
  813. invoke-static {v6, v7}, Landroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;)I
  814.  
  815. :cond_3
  816. :goto_1
  817. return-void
  818.  
  819. :pswitch_0
  820. iget-boolean v6, p0, Lcom/android/server/VibratorService;->mIsFrequencySupported:Z
  821.  
  822. if-eqz v6, :cond_4
  823.  
  824. iget-object v6, p0, Lcom/android/server/VibratorService;->mContext:Landroid/content/Context;
  825.  
  826. invoke-virtual {v6}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
  827.  
  828. move-result-object v6
  829.  
  830. const v7, 0x1070080
  831.  
  832. invoke-virtual {v6, v7}, Landroid/content/res/Resources;->getIntArray(I)[I
  833.  
  834. move-result-object v6
  835.  
  836. sput-object v6, Lcom/android/server/VibratorService;->LEVEL_TO_MAGNITUDE:[I
  837.  
  838. iget-object v6, p0, Lcom/android/server/VibratorService;->mContext:Landroid/content/Context;
  839.  
  840. invoke-virtual {v6}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
  841.  
  842. move-result-object v6
  843.  
  844. const v7, 0x1070081
  845.  
  846. invoke-virtual {v6, v7}, Landroid/content/res/Resources;->getIntArray(I)[I
  847.  
  848. move-result-object v6
  849.  
  850. sput-object v6, Lcom/android/server/VibratorService;->LEVEL_TO_TOUCH_MAGNITUDE:[I
  851.  
  852. :goto_2
  853. sput-boolean v10, Lcom/android/server/VibratorService;->mIsEnableIntensity:Z
  854.  
  855. sput-boolean v10, Lcom/android/server/VibratorService;->mIsHapticSupported:Z
  856.  
  857. goto :goto_0
  858.  
  859. :cond_4
  860. iget-object v6, p0, Lcom/android/server/VibratorService;->mContext:Landroid/content/Context;
  861.  
  862. invoke-virtual {v6}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
  863.  
  864. move-result-object v6
  865.  
  866. const v7, 0x107007e
  867.  
  868. invoke-virtual {v6, v7}, Landroid/content/res/Resources;->getIntArray(I)[I
  869.  
  870. move-result-object v6
  871.  
  872. sput-object v6, Lcom/android/server/VibratorService;->LEVEL_TO_MAGNITUDE:[I
  873.  
  874. iget-object v6, p0, Lcom/android/server/VibratorService;->mContext:Landroid/content/Context;
  875.  
  876. invoke-virtual {v6}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
  877.  
  878. move-result-object v6
  879.  
  880. const v7, 0x107007f
  881.  
  882. invoke-virtual {v6, v7}, Landroid/content/res/Resources;->getIntArray(I)[I
  883.  
  884. move-result-object v6
  885.  
  886. sput-object v6, Lcom/android/server/VibratorService;->LEVEL_TO_TOUCH_MAGNITUDE:[I
  887.  
  888. goto :goto_2
  889.  
  890. :pswitch_1
  891. iget-object v6, p0, Lcom/android/server/VibratorService;->mContext:Landroid/content/Context;
  892.  
  893. invoke-virtual {v6}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
  894.  
  895. move-result-object v6
  896.  
  897. const v7, 0x1070082
  898.  
  899. invoke-virtual {v6, v7}, Landroid/content/res/Resources;->getIntArray(I)[I
  900.  
  901. move-result-object v6
  902.  
  903. sput-object v6, Lcom/android/server/VibratorService;->LEVEL_TO_MAGNITUDE:[I
  904.  
  905. iget-object v6, p0, Lcom/android/server/VibratorService;->mContext:Landroid/content/Context;
  906.  
  907. invoke-virtual {v6}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
  908.  
  909. move-result-object v6
  910.  
  911. const v7, 0x1070082
  912.  
  913. invoke-virtual {v6, v7}, Landroid/content/res/Resources;->getIntArray(I)[I
  914.  
  915. move-result-object v6
  916.  
  917. sput-object v6, Lcom/android/server/VibratorService;->LEVEL_TO_TOUCH_MAGNITUDE:[I
  918.  
  919. sput-boolean v10, Lcom/android/server/VibratorService;->mIsEnableIntensity:Z
  920.  
  921. sput-boolean v9, Lcom/android/server/VibratorService;->mIsHapticSupported:Z
  922.  
  923. goto/16 :goto_0
  924.  
  925. :cond_5
  926. sget-object v6, Lcom/android/server/VibratorService;->LEVEL_TO_TOUCH_MAGNITUDE:[I
  927.  
  928. aget v6, v6, v5
  929.  
  930. iput v6, p0, Lcom/android/server/VibratorService;->mTouchMagnitude:I
  931.  
  932. sget-object v6, Lcom/android/server/VibratorService;->LEVEL_TO_MAGNITUDE:[I
  933.  
  934. aget v6, v6, v2
  935.  
  936. iput v6, p0, Lcom/android/server/VibratorService;->mCallMagnitude:I
  937.  
  938. sget-object v6, Lcom/android/server/VibratorService;->LEVEL_TO_MAGNITUDE:[I
  939.  
  940. aget v6, v6, v2
  941.  
  942. iput v6, p0, Lcom/android/server/VibratorService;->mNotiMagnitude:I
  943.  
  944. sget-object v6, Lcom/android/server/VibratorService;->LEVEL_TO_MAGNITUDE:[I
  945.  
  946. aget v6, v6, v2
  947.  
  948. iput v6, p0, Lcom/android/server/VibratorService;->mDefaultMagnitude:I
  949.  
  950. sget-object v6, Lcom/android/server/VibratorService;->LEVEL_TO_MAGNITUDE:[I
  951.  
  952. aget v6, v6, v2
  953.  
  954. iput v6, p0, Lcom/android/server/VibratorService;->mMaxMagnitudeValue:I
  955.  
  956. sget-object v6, Lcom/android/server/VibratorService;->LEVEL_TO_MAGNITUDE:[I
  957.  
  958. aget v6, v6, v10
  959.  
  960. iput v6, p0, Lcom/android/server/VibratorService;->mMinMagnitudeValue:I
  961.  
  962. invoke-virtual {p1}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
  963.  
  964. move-result-object v6
  965.  
  966. iput-object v6, p0, Lcom/android/server/VibratorService;->mContentResolver:Landroid/content/ContentResolver;
  967.  
  968. new-instance v6, Lcom/android/server/VibratorService$SecSettingsObserver;
  969.  
  970. invoke-direct {v6, p0, v9}, Lcom/android/server/VibratorService$SecSettingsObserver;-><init>(Lcom/android/server/VibratorService;I)V
  971.  
  972. iput-object v6, p0, Lcom/android/server/VibratorService;->mTouchMagnitudeObserver:Lcom/android/server/VibratorService$SecSettingsObserver;
  973.  
  974. new-instance v6, Lcom/android/server/VibratorService$SecSettingsObserver;
  975.  
  976. invoke-direct {v6, p0, v10}, Lcom/android/server/VibratorService$SecSettingsObserver;-><init>(Lcom/android/server/VibratorService;I)V
  977.  
  978. iput-object v6, p0, Lcom/android/server/VibratorService;->mCallMagnitudeObserver:Lcom/android/server/VibratorService$SecSettingsObserver;
  979.  
  980. new-instance v6, Lcom/android/server/VibratorService$SecSettingsObserver;
  981.  
  982. invoke-direct {v6, p0, v11}, Lcom/android/server/VibratorService$SecSettingsObserver;-><init>(Lcom/android/server/VibratorService;I)V
  983.  
  984. iput-object v6, p0, Lcom/android/server/VibratorService;->mNotiMagnitudeObserver:Lcom/android/server/VibratorService$SecSettingsObserver;
  985.  
  986. iget-object v6, p0, Lcom/android/server/VibratorService;->mContentResolver:Landroid/content/ContentResolver;
  987.  
  988. sget-object v7, Lcom/android/server/VibratorService;->mTypeURIs:[Ljava/lang/String;
  989.  
  990. aget-object v7, v7, v9
  991.  
  992. const/4 v8, -0x2
  993.  
  994. invoke-static {v6, v7, v5, v8}, Landroid/provider/Settings$System;->getIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)I
  995.  
  996. move-result v1
  997.  
  998. if-le v1, v5, :cond_7
  999.  
  1000. :goto_3
  1001. iput v1, p0, Lcom/android/server/VibratorService;->mTouchMagnitude:I
  1002.  
  1003. iget-object v6, p0, Lcom/android/server/VibratorService;->mContentResolver:Landroid/content/ContentResolver;
  1004.  
  1005. sget-object v7, Lcom/android/server/VibratorService;->mTypeURIs:[Ljava/lang/String;
  1006.  
  1007. aget-object v7, v7, v10
  1008.  
  1009. const/4 v8, -0x2
  1010.  
  1011. invoke-static {v6, v7, v2, v8}, Landroid/provider/Settings$System;->getIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)I
  1012.  
  1013. move-result v1
  1014.  
  1015. if-le v1, v2, :cond_8
  1016.  
  1017. :goto_4
  1018. iput v1, p0, Lcom/android/server/VibratorService;->mCallMagnitude:I
  1019.  
  1020. iget-object v6, p0, Lcom/android/server/VibratorService;->mContentResolver:Landroid/content/ContentResolver;
  1021.  
  1022. sget-object v7, Lcom/android/server/VibratorService;->mTypeURIs:[Ljava/lang/String;
  1023.  
  1024. aget-object v7, v7, v11
  1025.  
  1026. const/4 v8, -0x2
  1027.  
  1028. invoke-static {v6, v7, v2, v8}, Landroid/provider/Settings$System;->getIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)I
  1029.  
  1030. move-result v1
  1031.  
  1032. if-le v1, v2, :cond_9
  1033.  
  1034. :goto_5
  1035. iput v1, p0, Lcom/android/server/VibratorService;->mNotiMagnitude:I
  1036.  
  1037. sget-boolean v6, Lcom/android/server/VibratorService;->USE_SET_MAX_MAGNITUE:Z
  1038.  
  1039. if-nez v6, :cond_6
  1040.  
  1041. iget v6, p0, Lcom/android/server/VibratorService;->mNotiMagnitude:I
  1042.  
  1043. iput v6, p0, Lcom/android/server/VibratorService;->mDefaultMagnitude:I
  1044.  
  1045. :cond_6
  1046. iget v6, p0, Lcom/android/server/VibratorService;->mDefaultMagnitude:I
  1047.  
  1048. invoke-direct {p0, v6}, Lcom/android/server/VibratorService;->setIntensity(I)V
  1049.  
  1050. goto/16 :goto_1
  1051.  
  1052. :cond_7
  1053. sget-object v6, Lcom/android/server/VibratorService;->LEVEL_TO_TOUCH_MAGNITUDE:[I
  1054.  
  1055. aget v1, v6, v1
  1056.  
  1057. goto :goto_3
  1058.  
  1059. :cond_8
  1060. sget-object v6, Lcom/android/server/VibratorService;->LEVEL_TO_MAGNITUDE:[I
  1061.  
  1062. aget v1, v6, v1
  1063.  
  1064. goto :goto_4
  1065.  
  1066. :cond_9
  1067. sget-object v6, Lcom/android/server/VibratorService;->LEVEL_TO_MAGNITUDE:[I
  1068.  
  1069. aget v1, v6, v1
  1070.  
  1071. goto :goto_5
  1072.  
  1073. nop
  1074.  
  1075. :pswitch_data_0
  1076. .packed-switch 0x2
  1077. :pswitch_0
  1078. :pswitch_1
  1079. .end packed-switch
  1080. .end method
  1081.  
  1082. .method static synthetic access$000(Lcom/android/server/VibratorService;)I
  1083. .locals 1
  1084.  
  1085. iget v0, p0, Lcom/android/server/VibratorService;->mVibeFrequencyAlert:I
  1086.  
  1087. return v0
  1088. .end method
  1089.  
  1090. .method static synthetic access$100(Lcom/android/server/VibratorService;)Ljava/util/LinkedList;
  1091. .locals 1
  1092.  
  1093. iget-object v0, p0, Lcom/android/server/VibratorService;->mVibrations:Ljava/util/LinkedList;
  1094.  
  1095. return-object v0
  1096. .end method
  1097.  
  1098. .method static synthetic access$1800(Lcom/android/server/VibratorService;)Landroid/os/WorkSource;
  1099. .locals 1
  1100.  
  1101. iget-object v0, p0, Lcom/android/server/VibratorService;->mTmpWorkSource:Landroid/os/WorkSource;
  1102.  
  1103. return-object v0
  1104. .end method
  1105.  
  1106. .method static synthetic access$1900(Lcom/android/server/VibratorService;)Landroid/os/PowerManager$WakeLock;
  1107. .locals 1
  1108.  
  1109. iget-object v0, p0, Lcom/android/server/VibratorService;->mWakeLock:Landroid/os/PowerManager$WakeLock;
  1110.  
  1111. return-object v0
  1112. .end method
  1113.  
  1114. .method static synthetic access$200()Z
  1115. .locals 1
  1116.  
  1117. sget-boolean v0, Lcom/android/server/VibratorService;->SAFE_DEBUG:Z
  1118.  
  1119. return v0
  1120. .end method
  1121.  
  1122. .method static synthetic access$2002(Lcom/android/server/VibratorService;Ljava/lang/String;)Ljava/lang/String;
  1123. .locals 0
  1124.  
  1125. iput-object p1, p0, Lcom/android/server/VibratorService;->mLastStartWakeLock:Ljava/lang/String;
  1126.  
  1127. return-object p1
  1128. .end method
  1129.  
  1130. .method static synthetic access$2100(Lcom/android/server/VibratorService;)I
  1131. .locals 1
  1132.  
  1133. iget v0, p0, Lcom/android/server/VibratorService;->mDefaultMagnitude:I
  1134.  
  1135. return v0
  1136. .end method
  1137.  
  1138. .method static synthetic access$2102(Lcom/android/server/VibratorService;I)I
  1139. .locals 0
  1140.  
  1141. iput p1, p0, Lcom/android/server/VibratorService;->mDefaultMagnitude:I
  1142.  
  1143. return p1
  1144. .end method
  1145.  
  1146. .method static synthetic access$2200(Lcom/android/server/VibratorService;JIIII)V
  1147. .locals 1
  1148.  
  1149. invoke-direct/range {p0 .. p6}, Lcom/android/server/VibratorService;->doVibratorOn(JIIII)V
  1150.  
  1151. return-void
  1152. .end method
  1153.  
  1154. .method static synthetic access$2302(Lcom/android/server/VibratorService;Ljava/lang/String;)Ljava/lang/String;
  1155. .locals 0
  1156.  
  1157. iput-object p1, p0, Lcom/android/server/VibratorService;->mLastEndWakeLock:Ljava/lang/String;
  1158.  
  1159. return-object p1
  1160. .end method
  1161.  
  1162. .method static synthetic access$2400(Lcom/android/server/VibratorService;Lcom/android/server/VibratorService$Vibration;)V
  1163. .locals 0
  1164.  
  1165. invoke-direct {p0, p1}, Lcom/android/server/VibratorService;->unlinkVibration(Lcom/android/server/VibratorService$Vibration;)V
  1166.  
  1167. return-void
  1168. .end method
  1169.  
  1170. .method static synthetic access$2502(Lcom/android/server/VibratorService;Z)Z
  1171. .locals 0
  1172.  
  1173. iput-boolean p1, p0, Lcom/android/server/VibratorService;->mHMTMount:Z
  1174.  
  1175. return p1
  1176. .end method
  1177.  
  1178. .method static synthetic access$2600()[Ljava/lang/String;
  1179. .locals 1
  1180.  
  1181. sget-object v0, Lcom/android/server/VibratorService;->mTypeURIs:[Ljava/lang/String;
  1182.  
  1183. return-object v0
  1184. .end method
  1185.  
  1186. .method static synthetic access$2700(Lcom/android/server/VibratorService;)Landroid/content/ContentResolver;
  1187. .locals 1
  1188.  
  1189. iget-object v0, p0, Lcom/android/server/VibratorService;->mContentResolver:Landroid/content/ContentResolver;
  1190.  
  1191. return-object v0
  1192. .end method
  1193.  
  1194. .method static synthetic access$2800()Z
  1195. .locals 1
  1196.  
  1197. sget-boolean v0, Lcom/android/server/VibratorService;->mIsEnableIntensity:Z
  1198.  
  1199. return v0
  1200. .end method
  1201.  
  1202. .method static synthetic access$2900()[I
  1203. .locals 1
  1204.  
  1205. sget-object v0, Lcom/android/server/VibratorService;->LEVEL_TO_MAGNITUDE:[I
  1206.  
  1207. return-object v0
  1208. .end method
  1209.  
  1210. .method static synthetic access$300(Lcom/android/server/VibratorService;)Lcom/android/server/VibratorService$Vibration;
  1211. .locals 1
  1212.  
  1213. iget-object v0, p0, Lcom/android/server/VibratorService;->mCurrentVibration:Lcom/android/server/VibratorService$Vibration;
  1214.  
  1215. return-object v0
  1216. .end method
  1217.  
  1218. .method static synthetic access$3000()[I
  1219. .locals 1
  1220.  
  1221. sget-object v0, Lcom/android/server/VibratorService;->LEVEL_TO_TOUCH_MAGNITUDE:[I
  1222.  
  1223. return-object v0
  1224. .end method
  1225.  
  1226. .method static synthetic access$3102(Lcom/android/server/VibratorService;I)I
  1227. .locals 0
  1228.  
  1229. iput p1, p0, Lcom/android/server/VibratorService;->mTouchMagnitude:I
  1230.  
  1231. return p1
  1232. .end method
  1233.  
  1234. .method static synthetic access$3202(Lcom/android/server/VibratorService;I)I
  1235. .locals 0
  1236.  
  1237. iput p1, p0, Lcom/android/server/VibratorService;->mCallMagnitude:I
  1238.  
  1239. return p1
  1240. .end method
  1241.  
  1242. .method static synthetic access$3300(Lcom/android/server/VibratorService;)I
  1243. .locals 1
  1244.  
  1245. iget v0, p0, Lcom/android/server/VibratorService;->mNotiMagnitude:I
  1246.  
  1247. return v0
  1248. .end method
  1249.  
  1250. .method static synthetic access$3302(Lcom/android/server/VibratorService;I)I
  1251. .locals 0
  1252.  
  1253. iput p1, p0, Lcom/android/server/VibratorService;->mNotiMagnitude:I
  1254.  
  1255. return p1
  1256. .end method
  1257.  
  1258. .method static synthetic access$3400()Z
  1259. .locals 1
  1260.  
  1261. sget-boolean v0, Lcom/android/server/VibratorService;->USE_SET_MAX_MAGNITUE:Z
  1262.  
  1263. return v0
  1264. .end method
  1265.  
  1266. .method static synthetic access$400(Lcom/android/server/VibratorService;)V
  1267. .locals 0
  1268.  
  1269. invoke-direct {p0}, Lcom/android/server/VibratorService;->doCancelVibrateLocked()V
  1270.  
  1271. return-void
  1272. .end method
  1273.  
  1274. .method static synthetic access$500(Lcom/android/server/VibratorService;)V
  1275. .locals 0
  1276.  
  1277. invoke-direct {p0}, Lcom/android/server/VibratorService;->startNextVibrationLocked()V
  1278.  
  1279. return-void
  1280. .end method
  1281.  
  1282. .method static synthetic access$600(Lcom/android/server/VibratorService;)V
  1283. .locals 0
  1284.  
  1285. invoke-direct {p0}, Lcom/android/server/VibratorService;->updateInputDeviceVibrators()V
  1286.  
  1287. return-void
  1288. .end method
  1289.  
  1290. .method private addToPreviousVibrationsLocked(Lcom/android/server/VibratorService$Vibration;)V
  1291. .locals 12
  1292.  
  1293. iget-object v0, p0, Lcom/android/server/VibratorService;->mPreviousVibrations:Ljava/util/LinkedList;
  1294.  
  1295. invoke-virtual {v0}, Ljava/util/LinkedList;->size()I
  1296.  
  1297. move-result v0
  1298.  
  1299. iget v1, p0, Lcom/android/server/VibratorService;->mPreviousVibrationsLimit:I
  1300.  
  1301. if-le v0, v1, :cond_0
  1302.  
  1303. iget-object v0, p0, Lcom/android/server/VibratorService;->mPreviousVibrations:Ljava/util/LinkedList;
  1304.  
  1305. invoke-virtual {v0}, Ljava/util/LinkedList;->removeFirst()Ljava/lang/Object;
  1306.  
  1307. :cond_0
  1308. iget-object v0, p0, Lcom/android/server/VibratorService;->mPreviousVibrations:Ljava/util/LinkedList;
  1309.  
  1310. new-instance v1, Lcom/android/server/VibratorService$VibrationInfo;
  1311.  
  1312. # getter for: Lcom/android/server/VibratorService$Vibration;->mTimeout:J
  1313. invoke-static {p1}, Lcom/android/server/VibratorService$Vibration;->access$700(Lcom/android/server/VibratorService$Vibration;)J
  1314.  
  1315. move-result-wide v2
  1316.  
  1317. # getter for: Lcom/android/server/VibratorService$Vibration;->mStartTime:J
  1318. invoke-static {p1}, Lcom/android/server/VibratorService$Vibration;->access$800(Lcom/android/server/VibratorService$Vibration;)J
  1319.  
  1320. move-result-wide v4
  1321.  
  1322. # getter for: Lcom/android/server/VibratorService$Vibration;->mPattern:[J
  1323. invoke-static {p1}, Lcom/android/server/VibratorService$Vibration;->access$900(Lcom/android/server/VibratorService$Vibration;)[J
  1324.  
  1325. move-result-object v6
  1326.  
  1327. # getter for: Lcom/android/server/VibratorService$Vibration;->mRepeat:I
  1328. invoke-static {p1}, Lcom/android/server/VibratorService$Vibration;->access$1000(Lcom/android/server/VibratorService$Vibration;)I
  1329.  
  1330. move-result v7
  1331.  
  1332. # getter for: Lcom/android/server/VibratorService$Vibration;->mUsageHint:I
  1333. invoke-static {p1}, Lcom/android/server/VibratorService$Vibration;->access$1100(Lcom/android/server/VibratorService$Vibration;)I
  1334.  
  1335. move-result v8
  1336.  
  1337. # getter for: Lcom/android/server/VibratorService$Vibration;->mUid:I
  1338. invoke-static {p1}, Lcom/android/server/VibratorService$Vibration;->access$1200(Lcom/android/server/VibratorService$Vibration;)I
  1339.  
  1340. move-result v9
  1341.  
  1342. # getter for: Lcom/android/server/VibratorService$Vibration;->mOpPkg:Ljava/lang/String;
  1343. invoke-static {p1}, Lcom/android/server/VibratorService$Vibration;->access$1300(Lcom/android/server/VibratorService$Vibration;)Ljava/lang/String;
  1344.  
  1345. move-result-object v10
  1346.  
  1347. iget-boolean v11, p0, Lcom/android/server/VibratorService;->mIsFrequencySupported:Z
  1348.  
  1349. if-eqz v11, :cond_1
  1350.  
  1351. # getter for: Lcom/android/server/VibratorService$Vibration;->mFrequency:I
  1352. invoke-static {p1}, Lcom/android/server/VibratorService$Vibration;->access$1400(Lcom/android/server/VibratorService$Vibration;)I
  1353.  
  1354. move-result v11
  1355.  
  1356. :goto_0
  1357. invoke-direct/range {v1 .. v11}, Lcom/android/server/VibratorService$VibrationInfo;-><init>(JJ[JIIILjava/lang/String;I)V
  1358.  
  1359. invoke-virtual {v0, v1}, Ljava/util/LinkedList;->addLast(Ljava/lang/Object;)V
  1360.  
  1361. return-void
  1362.  
  1363. :cond_1
  1364. const/4 v11, -0x1
  1365.  
  1366. goto :goto_0
  1367. .end method
  1368.  
  1369. .method private doCancelVibrateLocked()V
  1370. .locals 3
  1371.  
  1372. iget-object v0, p0, Lcom/android/server/VibratorService;->mThread:Lcom/android/server/VibratorService$VibrateThread;
  1373.  
  1374. if-eqz v0, :cond_0
  1375.  
  1376. iget-object v1, p0, Lcom/android/server/VibratorService;->mThread:Lcom/android/server/VibratorService$VibrateThread;
  1377.  
  1378. monitor-enter v1
  1379.  
  1380. :try_start_0
  1381. iget-object v0, p0, Lcom/android/server/VibratorService;->mThread:Lcom/android/server/VibratorService$VibrateThread;
  1382.  
  1383. const/4 v2, 0x1
  1384.  
  1385. iput-boolean v2, v0, Lcom/android/server/VibratorService$VibrateThread;->mDone:Z
  1386.  
  1387. iget-object v0, p0, Lcom/android/server/VibratorService;->mThread:Lcom/android/server/VibratorService$VibrateThread;
  1388.  
  1389. invoke-virtual {v0}, Ljava/lang/Object;->notify()V
  1390.  
  1391. monitor-exit v1
  1392. :try_end_0
  1393. .catchall {:try_start_0 .. :try_end_0} :catchall_0
  1394.  
  1395. const/4 v0, 0x0
  1396.  
  1397. iput-object v0, p0, Lcom/android/server/VibratorService;->mThread:Lcom/android/server/VibratorService$VibrateThread;
  1398.  
  1399. :cond_0
  1400. invoke-direct {p0}, Lcom/android/server/VibratorService;->doVibratorOff()V
  1401.  
  1402. iget-object v0, p0, Lcom/android/server/VibratorService;->mH:Landroid/os/Handler;
  1403.  
  1404. iget-object v1, p0, Lcom/android/server/VibratorService;->mVibrationRunnable:Ljava/lang/Runnable;
  1405.  
  1406. invoke-virtual {v0, v1}, Landroid/os/Handler;->removeCallbacks(Ljava/lang/Runnable;)V
  1407.  
  1408. invoke-direct {p0}, Lcom/android/server/VibratorService;->reportFinishVibrationLocked()V
  1409.  
  1410. return-void
  1411.  
  1412. :catchall_0
  1413. move-exception v0
  1414.  
  1415. :try_start_1
  1416. monitor-exit v1
  1417. :try_end_1
  1418. .catchall {:try_start_1 .. :try_end_1} :catchall_0
  1419.  
  1420. throw v0
  1421. .end method
  1422.  
  1423. .method private doVibratorExists()Z
  1424. .locals 1
  1425.  
  1426. invoke-static {}, Lcom/android/server/VibratorService;->vibratorExists()Z
  1427.  
  1428. move-result v0
  1429.  
  1430. return v0
  1431. .end method
  1432.  
  1433. .method private doVibratorOff()V
  1434. .locals 5
  1435.  
  1436. iget-object v3, p0, Lcom/android/server/VibratorService;->mInputDeviceVibrators:Ljava/util/ArrayList;
  1437.  
  1438. monitor-enter v3
  1439.  
  1440. :try_start_0
  1441. iget v2, p0, Lcom/android/server/VibratorService;->mCurVibUid:I
  1442. :try_end_0
  1443. .catchall {:try_start_0 .. :try_end_0} :catchall_0
  1444.  
  1445. if-ltz v2, :cond_0
  1446.  
  1447. :try_start_1
  1448. iget-object v2, p0, Lcom/android/server/VibratorService;->mBatteryStatsService:Lcom/android/internal/app/IBatteryStats;
  1449.  
  1450. iget v4, p0, Lcom/android/server/VibratorService;->mCurVibUid:I
  1451.  
  1452. invoke-interface {v2, v4}, Lcom/android/internal/app/IBatteryStats;->noteVibratorOff(I)V
  1453. :try_end_1
  1454. .catch Landroid/os/RemoteException; {:try_start_1 .. :try_end_1} :catch_0
  1455. .catchall {:try_start_1 .. :try_end_1} :catchall_0
  1456.  
  1457. :goto_0
  1458. const/4 v2, -0x1
  1459.  
  1460. :try_start_2
  1461. iput v2, p0, Lcom/android/server/VibratorService;->mCurVibUid:I
  1462.  
  1463. :cond_0
  1464. iget-object v2, p0, Lcom/android/server/VibratorService;->mInputDeviceVibrators:Ljava/util/ArrayList;
  1465.  
  1466. invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
  1467.  
  1468. move-result v1
  1469.  
  1470. if-eqz v1, :cond_1
  1471.  
  1472. const/4 v0, 0x0
  1473.  
  1474. :goto_1
  1475. if-ge v0, v1, :cond_2
  1476.  
  1477. iget-object v2, p0, Lcom/android/server/VibratorService;->mInputDeviceVibrators:Ljava/util/ArrayList;
  1478.  
  1479. invoke-virtual {v2, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
  1480.  
  1481. move-result-object v2
  1482.  
  1483. check-cast v2, Landroid/os/Vibrator;
  1484.  
  1485. invoke-virtual {v2}, Landroid/os/Vibrator;->cancel()V
  1486.  
  1487. add-int/lit8 v0, v0, 0x1
  1488.  
  1489. goto :goto_1
  1490.  
  1491. :cond_1
  1492. const-string v2, "VibratorService"
  1493.  
  1494. const-string v4, "Turning vibrator off"
  1495.  
  1496. invoke-static {v2, v4}, Landroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;)I
  1497.  
  1498. invoke-static {}, Lcom/android/server/VibratorService;->vibratorOff()V
  1499.  
  1500. :cond_2
  1501. monitor-exit v3
  1502.  
  1503. return-void
  1504.  
  1505. :catchall_0
  1506. move-exception v2
  1507.  
  1508. monitor-exit v3
  1509. :try_end_2
  1510. .catchall {:try_start_2 .. :try_end_2} :catchall_0
  1511.  
  1512. throw v2
  1513.  
  1514. :catch_0
  1515. move-exception v2
  1516.  
  1517. goto :goto_0
  1518. .end method
  1519.  
  1520. .method private doVibratorOn(JII)V
  1521. .locals 7
  1522.  
  1523. iget-object v4, p0, Lcom/android/server/VibratorService;->mInputDeviceVibrators:Ljava/util/ArrayList;
  1524.  
  1525. monitor-enter v4
  1526.  
  1527. :try_start_0
  1528. iget-object v3, p0, Lcom/android/server/VibratorService;->mBatteryStatsService:Lcom/android/internal/app/IBatteryStats;
  1529.  
  1530. invoke-interface {v3, p3, p1, p2}, Lcom/android/internal/app/IBatteryStats;->noteVibratorOn(IJ)V
  1531.  
  1532. iput p3, p0, Lcom/android/server/VibratorService;->mCurVibUid:I
  1533. :try_end_0
  1534. .catch Landroid/os/RemoteException; {:try_start_0 .. :try_end_0} :catch_0
  1535. .catchall {:try_start_0 .. :try_end_0} :catchall_0
  1536.  
  1537. :goto_0
  1538. :try_start_1
  1539. iget-object v3, p0, Lcom/android/server/VibratorService;->mInputDeviceVibrators:Ljava/util/ArrayList;
  1540.  
  1541. invoke-virtual {v3}, Ljava/util/ArrayList;->size()I
  1542.  
  1543. move-result v2
  1544.  
  1545. if-eqz v2, :cond_0
  1546.  
  1547. new-instance v3, Landroid/media/AudioAttributes$Builder;
  1548.  
  1549. invoke-direct {v3}, Landroid/media/AudioAttributes$Builder;-><init>()V
  1550.  
  1551. invoke-virtual {v3, p4}, Landroid/media/AudioAttributes$Builder;->setUsage(I)Landroid/media/AudioAttributes$Builder;
  1552.  
  1553. move-result-object v3
  1554.  
  1555. invoke-virtual {v3}, Landroid/media/AudioAttributes$Builder;->build()Landroid/media/AudioAttributes;
  1556.  
  1557. move-result-object v0
  1558.  
  1559. const/4 v1, 0x0
  1560.  
  1561. :goto_1
  1562. if-ge v1, v2, :cond_1
  1563.  
  1564. iget-object v3, p0, Lcom/android/server/VibratorService;->mInputDeviceVibrators:Ljava/util/ArrayList;
  1565.  
  1566. invoke-virtual {v3, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
  1567.  
  1568. move-result-object v3
  1569.  
  1570. check-cast v3, Landroid/os/Vibrator;
  1571.  
  1572. invoke-virtual {v3, p1, p2, v0}, Landroid/os/Vibrator;->vibrate(JLandroid/media/AudioAttributes;)V
  1573.  
  1574. add-int/lit8 v1, v1, 0x1
  1575.  
  1576. goto :goto_1
  1577.  
  1578. :cond_0
  1579. const-string v3, "VibratorService"
  1580.  
  1581. new-instance v5, Ljava/lang/StringBuilder;
  1582.  
  1583. invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
  1584.  
  1585. const-string/jumbo v6, "vibratorOn() : "
  1586.  
  1587. invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  1588.  
  1589. move-result-object v5
  1590.  
  1591. invoke-virtual {v5, p1, p2}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
  1592.  
  1593. move-result-object v5
  1594.  
  1595. const-string/jumbo v6, "ms"
  1596.  
  1597. invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  1598.  
  1599. move-result-object v5
  1600.  
  1601. invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  1602.  
  1603. move-result-object v5
  1604.  
  1605. invoke-static {v3, v5}, Landroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;)I
  1606.  
  1607. invoke-static {p1, p2}, Lcom/android/server/VibratorService;->vibratorOn(J)V
  1608.  
  1609. :cond_1
  1610. monitor-exit v4
  1611.  
  1612. return-void
  1613.  
  1614. :catchall_0
  1615. move-exception v3
  1616.  
  1617. monitor-exit v4
  1618. :try_end_1
  1619. .catchall {:try_start_1 .. :try_end_1} :catchall_0
  1620.  
  1621. throw v3
  1622.  
  1623. :catch_0
  1624. move-exception v3
  1625.  
  1626. goto :goto_0
  1627. .end method
  1628.  
  1629. .method private doVibratorOn(JIIII)V
  1630. .locals 7
  1631.  
  1632. iget-object v4, p0, Lcom/android/server/VibratorService;->mInputDeviceVibrators:Ljava/util/ArrayList;
  1633.  
  1634. monitor-enter v4
  1635.  
  1636. :try_start_0
  1637. iget-object v3, p0, Lcom/android/server/VibratorService;->mBatteryStatsService:Lcom/android/internal/app/IBatteryStats;
  1638.  
  1639. invoke-interface {v3, p3, p1, p2}, Lcom/android/internal/app/IBatteryStats;->noteVibratorOn(IJ)V
  1640.  
  1641. iput p3, p0, Lcom/android/server/VibratorService;->mCurVibUid:I
  1642. :try_end_0
  1643. .catch Landroid/os/RemoteException; {:try_start_0 .. :try_end_0} :catch_0
  1644. .catchall {:try_start_0 .. :try_end_0} :catchall_0
  1645.  
  1646. :goto_0
  1647. :try_start_1
  1648. iget-object v3, p0, Lcom/android/server/VibratorService;->mInputDeviceVibrators:Ljava/util/ArrayList;
  1649.  
  1650. invoke-virtual {v3}, Ljava/util/ArrayList;->size()I
  1651.  
  1652. move-result v2
  1653.  
  1654. if-eqz v2, :cond_0
  1655.  
  1656. new-instance v3, Landroid/media/AudioAttributes$Builder;
  1657.  
  1658. invoke-direct {v3}, Landroid/media/AudioAttributes$Builder;-><init>()V
  1659.  
  1660. invoke-virtual {v3, p4}, Landroid/media/AudioAttributes$Builder;->setUsage(I)Landroid/media/AudioAttributes$Builder;
  1661.  
  1662. move-result-object v3
  1663.  
  1664. invoke-virtual {v3}, Landroid/media/AudioAttributes$Builder;->build()Landroid/media/AudioAttributes;
  1665.  
  1666. move-result-object v0
  1667.  
  1668. const/4 v1, 0x0
  1669.  
  1670. :goto_1
  1671. if-ge v1, v2, :cond_1
  1672.  
  1673. iget-object v3, p0, Lcom/android/server/VibratorService;->mInputDeviceVibrators:Ljava/util/ArrayList;
  1674.  
  1675. invoke-virtual {v3, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
  1676.  
  1677. move-result-object v3
  1678.  
  1679. check-cast v3, Landroid/os/Vibrator;
  1680.  
  1681. invoke-virtual {v3, p1, p2, v0}, Landroid/os/Vibrator;->vibrate(JLandroid/media/AudioAttributes;)V
  1682.  
  1683. add-int/lit8 v1, v1, 0x1
  1684.  
  1685. goto :goto_1
  1686.  
  1687. :cond_0
  1688. const-string v5, "VibratorService"
  1689.  
  1690. new-instance v3, Ljava/lang/StringBuilder;
  1691.  
  1692. invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
  1693.  
  1694. const-string/jumbo v6, "vibratorOn() : "
  1695.  
  1696. invoke-virtual {v3, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  1697.  
  1698. move-result-object v3
  1699.  
  1700. invoke-virtual {v3, p1, p2}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
  1701.  
  1702. move-result-object v3
  1703.  
  1704. const-string/jumbo v6, "ms"
  1705.  
  1706. invoke-virtual {v3, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  1707.  
  1708. move-result-object v3
  1709.  
  1710. const-string v6, ", magnitude :"
  1711.  
  1712. invoke-virtual {v3, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  1713.  
  1714. move-result-object v3
  1715.  
  1716. invoke-virtual {v3, p5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  1717.  
  1718. move-result-object v3
  1719.  
  1720. const-string v6, ", f : "
  1721.  
  1722. invoke-virtual {v3, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  1723.  
  1724. move-result-object v6
  1725.  
  1726. iget-boolean v3, p0, Lcom/android/server/VibratorService;->mIsFrequencySupported:Z
  1727.  
  1728. if-eqz v3, :cond_2
  1729.  
  1730. move v3, p6
  1731.  
  1732. :goto_2
  1733. invoke-virtual {v6, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  1734.  
  1735. move-result-object v3
  1736.  
  1737. invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  1738.  
  1739. move-result-object v3
  1740.  
  1741. invoke-static {v5, v3}, Landroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;)I
  1742.  
  1743. invoke-direct {p0, p6}, Lcom/android/server/VibratorService;->setFrequency(I)V
  1744.  
  1745. invoke-direct {p0, p5}, Lcom/android/server/VibratorService;->setIntensity(I)V
  1746.  
  1747. invoke-static {p1, p2}, Lcom/android/server/VibratorService;->vibratorOn(J)V
  1748.  
  1749. :cond_1
  1750. monitor-exit v4
  1751.  
  1752. return-void
  1753.  
  1754. :cond_2
  1755. const/4 v3, -0x1
  1756.  
  1757. goto :goto_2
  1758.  
  1759. :catchall_0
  1760. move-exception v3
  1761.  
  1762. monitor-exit v4
  1763. :try_end_1
  1764. .catchall {:try_start_1 .. :try_end_1} :catchall_0
  1765.  
  1766. throw v3
  1767.  
  1768. :catch_0
  1769. move-exception v3
  1770.  
  1771. goto :goto_0
  1772. .end method
  1773.  
  1774. .method private getCommonPattern(I)[J
  1775. .locals 3
  1776.  
  1777. packed-switch p1, :pswitch_data_0
  1778.  
  1779. :pswitch_0
  1780. const/4 v2, 0x2
  1781.  
  1782. new-array v0, v2, [J
  1783.  
  1784. fill-array-data v0, :array_0
  1785.  
  1786. move-object v1, v0
  1787.  
  1788. :goto_0
  1789. return-object v1
  1790.  
  1791. :pswitch_1
  1792. iget-object v1, p0, Lcom/android/server/VibratorService;->mVibePatternA:[J
  1793.  
  1794. goto :goto_0
  1795.  
  1796. :pswitch_2
  1797. iget-object v1, p0, Lcom/android/server/VibratorService;->mVibePatternB:[J
  1798.  
  1799. goto :goto_0
  1800.  
  1801. :pswitch_3
  1802. iget-object v1, p0, Lcom/android/server/VibratorService;->mVibePatternC:[J
  1803.  
  1804. goto :goto_0
  1805.  
  1806. :pswitch_4
  1807. iget-object v1, p0, Lcom/android/server/VibratorService;->mVibePatternD:[J
  1808.  
  1809. goto :goto_0
  1810.  
  1811. :pswitch_5
  1812. iget-object v1, p0, Lcom/android/server/VibratorService;->mVibePatternE:[J
  1813.  
  1814. goto :goto_0
  1815.  
  1816. :pswitch_6
  1817. iget-object v1, p0, Lcom/android/server/VibratorService;->mVibePatternF:[J
  1818.  
  1819. goto :goto_0
  1820.  
  1821. :pswitch_7
  1822. iget-object v1, p0, Lcom/android/server/VibratorService;->mVibePatternG:[J
  1823.  
  1824. goto :goto_0
  1825.  
  1826. :pswitch_8
  1827. iget-object v1, p0, Lcom/android/server/VibratorService;->mVibePatternH:[J
  1828.  
  1829. goto :goto_0
  1830.  
  1831. :pswitch_9
  1832. iget-object v1, p0, Lcom/android/server/VibratorService;->mVibePatternI:[J
  1833.  
  1834. goto :goto_0
  1835.  
  1836. :pswitch_a
  1837. iget-object v1, p0, Lcom/android/server/VibratorService;->mVibePatternJ:[J
  1838.  
  1839. goto :goto_0
  1840.  
  1841. :pswitch_b
  1842. iget-object v1, p0, Lcom/android/server/VibratorService;->mVibePatternK:[J
  1843.  
  1844. goto :goto_0
  1845.  
  1846. :pswitch_c
  1847. iget-object v1, p0, Lcom/android/server/VibratorService;->mVibePatternL:[J
  1848.  
  1849. goto :goto_0
  1850.  
  1851. :pswitch_d
  1852. iget-object v1, p0, Lcom/android/server/VibratorService;->mVibePatternM:[J
  1853.  
  1854. goto :goto_0
  1855.  
  1856. :pswitch_data_0
  1857. .packed-switch 0xc359
  1858. :pswitch_1
  1859. :pswitch_3
  1860. :pswitch_3
  1861. :pswitch_8
  1862. :pswitch_b
  1863. :pswitch_2
  1864. :pswitch_0
  1865. :pswitch_9
  1866. :pswitch_a
  1867. :pswitch_b
  1868. :pswitch_0
  1869. :pswitch_0
  1870. :pswitch_0
  1871. :pswitch_6
  1872. :pswitch_6
  1873. :pswitch_0
  1874. :pswitch_1
  1875. :pswitch_2
  1876. :pswitch_3
  1877. :pswitch_4
  1878. :pswitch_5
  1879. :pswitch_6
  1880. :pswitch_7
  1881. :pswitch_8
  1882. :pswitch_9
  1883. :pswitch_a
  1884. :pswitch_b
  1885. :pswitch_c
  1886. :pswitch_d
  1887. .end packed-switch
  1888.  
  1889. :array_0
  1890. .array-data 8
  1891. -0x1
  1892. -0x1
  1893. .end array-data
  1894. .end method
  1895.  
  1896. .method private getCommonPatternFrequency([J)I
  1897. .locals 13
  1898.  
  1899. const/4 v11, 0x2
  1900.  
  1901. iget v1, p0, Lcom/android/server/VibratorService;->mVibeFrequencyAlert:I
  1902.  
  1903. array-length v7, p1
  1904.  
  1905. iget-boolean v10, p0, Lcom/android/server/VibratorService;->mIsFrequencySupported:Z
  1906.  
  1907. if-nez v10, :cond_0
  1908.  
  1909. move v2, v1
  1910.  
  1911. :goto_0
  1912. return v2
  1913.  
  1914. :cond_0
  1915. if-lt v7, v11, :cond_1
  1916.  
  1917. iget v10, p0, Lcom/android/server/VibratorService;->mVibePatternMaxLength:I
  1918.  
  1919. if-le v7, v10, :cond_2
  1920.  
  1921. :cond_1
  1922. move v2, v1
  1923.  
  1924. goto :goto_0
  1925.  
  1926. :cond_2
  1927. invoke-direct {p0, p1}, Lcom/android/server/VibratorService;->getHashValue([J)J
  1928.  
  1929. move-result-wide v4
  1930.  
  1931. sget-object v10, Lcom/android/server/VibratorService;->mVibePatternHash:Ljava/util/Hashtable;
  1932.  
  1933. invoke-static {v4, v5}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
  1934.  
  1935. move-result-object v12
  1936.  
  1937. invoke-virtual {v10, v12}, Ljava/util/Hashtable;->containsValue(Ljava/lang/Object;)Z
  1938.  
  1939. move-result v10
  1940.  
  1941. if-eqz v10, :cond_5
  1942.  
  1943. sget-object v10, Lcom/android/server/VibratorService;->mVibePatternHash:Ljava/util/Hashtable;
  1944.  
  1945. invoke-virtual {v10}, Ljava/util/Hashtable;->keys()Ljava/util/Enumeration;
  1946.  
  1947. move-result-object v6
  1948.  
  1949. :cond_3
  1950. invoke-interface {v6}, Ljava/util/Enumeration;->hasMoreElements()Z
  1951.  
  1952. move-result v10
  1953.  
  1954. if-eqz v10, :cond_5
  1955.  
  1956. invoke-interface {v6}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
  1957.  
  1958. move-result-object v3
  1959.  
  1960. check-cast v3, Ljava/lang/String;
  1961.  
  1962. sget-object v10, Lcom/android/server/VibratorService;->mVibePatternHash:Ljava/util/Hashtable;
  1963.  
  1964. invoke-virtual {v10, v3}, Ljava/util/Hashtable;->get(Ljava/lang/Object;)Ljava/lang/Object;
  1965.  
  1966. move-result-object v10
  1967.  
  1968. check-cast v10, Ljava/lang/Long;
  1969.  
  1970. invoke-virtual {v10}, Ljava/lang/Long;->longValue()J
  1971.  
  1972. move-result-wide v8
  1973.  
  1974. cmp-long v10, v8, v4
  1975.  
  1976. if-nez v10, :cond_3
  1977.  
  1978. const/4 v0, 0x0
  1979.  
  1980. const/4 v10, -0x1
  1981.  
  1982. invoke-virtual {v3}, Ljava/lang/String;->hashCode()I
  1983.  
  1984. move-result v12
  1985.  
  1986. packed-switch v12, :pswitch_data_0
  1987.  
  1988. :cond_4
  1989. :goto_1
  1990. packed-switch v10, :pswitch_data_1
  1991.  
  1992. :goto_2
  1993. sget-boolean v10, Lcom/android/server/VibratorService;->SAFE_DEBUG:Z
  1994.  
  1995. if-eqz v10, :cond_5
  1996.  
  1997. if-eqz v0, :cond_d
  1998.  
  1999. const-string v10, "VibratorService"
  2000.  
  2001. new-instance v11, Ljava/lang/StringBuilder;
  2002.  
  2003. invoke-direct {v11}, Ljava/lang/StringBuilder;-><init>()V
  2004.  
  2005. const-string/jumbo v12, "getCommonPatternFrequency() - common pattern : "
  2006.  
  2007. invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  2008.  
  2009. move-result-object v11
  2010.  
  2011. invoke-virtual {v11, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  2012.  
  2013. move-result-object v11
  2014.  
  2015. const-string v12, ", frequency : "
  2016.  
  2017. invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  2018.  
  2019. move-result-object v11
  2020.  
  2021. invoke-virtual {v11, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  2022.  
  2023. move-result-object v11
  2024.  
  2025. invoke-virtual {v11}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  2026.  
  2027. move-result-object v11
  2028.  
  2029. invoke-static {v10, v11}, Landroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;)I
  2030.  
  2031. :cond_5
  2032. :goto_3
  2033. move v2, v1
  2034.  
  2035. goto :goto_0
  2036.  
  2037. :pswitch_0
  2038. const-string v11, "A"
  2039.  
  2040. invoke-virtual {v3, v11}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
  2041.  
  2042. move-result v11
  2043.  
  2044. if-eqz v11, :cond_4
  2045.  
  2046. const/4 v10, 0x0
  2047.  
  2048. goto :goto_1
  2049.  
  2050. :pswitch_1
  2051. const-string v11, "B"
  2052.  
  2053. invoke-virtual {v3, v11}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
  2054.  
  2055. move-result v11
  2056.  
  2057. if-eqz v11, :cond_4
  2058.  
  2059. const/4 v10, 0x1
  2060.  
  2061. goto :goto_1
  2062.  
  2063. :pswitch_2
  2064. const-string v12, "C"
  2065.  
  2066. invoke-virtual {v3, v12}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
  2067.  
  2068. move-result v12
  2069.  
  2070. if-eqz v12, :cond_4
  2071.  
  2072. move v10, v11
  2073.  
  2074. goto :goto_1
  2075.  
  2076. :pswitch_3
  2077. const-string v11, "D"
  2078.  
  2079. invoke-virtual {v3, v11}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
  2080.  
  2081. move-result v11
  2082.  
  2083. if-eqz v11, :cond_4
  2084.  
  2085. const/4 v10, 0x3
  2086.  
  2087. goto :goto_1
  2088.  
  2089. :pswitch_4
  2090. const-string v11, "E"
  2091.  
  2092. invoke-virtual {v3, v11}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
  2093.  
  2094. move-result v11
  2095.  
  2096. if-eqz v11, :cond_4
  2097.  
  2098. const/4 v10, 0x4
  2099.  
  2100. goto :goto_1
  2101.  
  2102. :pswitch_5
  2103. const-string v11, "F"
  2104.  
  2105. invoke-virtual {v3, v11}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
  2106.  
  2107. move-result v11
  2108.  
  2109. if-eqz v11, :cond_4
  2110.  
  2111. const/4 v10, 0x5
  2112.  
  2113. goto :goto_1
  2114.  
  2115. :pswitch_6
  2116. const-string v11, "G"
  2117.  
  2118. invoke-virtual {v3, v11}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
  2119.  
  2120. move-result v11
  2121.  
  2122. if-eqz v11, :cond_4
  2123.  
  2124. const/4 v10, 0x6
  2125.  
  2126. goto :goto_1
  2127.  
  2128. :pswitch_7
  2129. iget-object v10, p0, Lcom/android/server/VibratorService;->mVibePatternA:[J
  2130.  
  2131. invoke-direct {p0, v10, p1}, Lcom/android/server/VibratorService;->isCommonPattern([J[J)Z
  2132.  
  2133. move-result v0
  2134.  
  2135. if-eqz v0, :cond_6
  2136.  
  2137. iget v1, p0, Lcom/android/server/VibratorService;->mVibeFrequencyF0:I
  2138.  
  2139. goto :goto_2
  2140.  
  2141. :cond_6
  2142. iget v1, p0, Lcom/android/server/VibratorService;->mVibeFrequencyAlert:I
  2143.  
  2144. goto :goto_2
  2145.  
  2146. :pswitch_8
  2147. iget-object v10, p0, Lcom/android/server/VibratorService;->mVibePatternB:[J
  2148.  
  2149. invoke-direct {p0, v10, p1}, Lcom/android/server/VibratorService;->isCommonPattern([J[J)Z
  2150.  
  2151. move-result v0
  2152.  
  2153. if-eqz v0, :cond_7
  2154.  
  2155. iget v1, p0, Lcom/android/server/VibratorService;->mVibeFrequencyF0:I
  2156.  
  2157. goto/16 :goto_2
  2158.  
  2159. :cond_7
  2160. iget v1, p0, Lcom/android/server/VibratorService;->mVibeFrequencyAlert:I
  2161.  
  2162. goto/16 :goto_2
  2163.  
  2164. :pswitch_9
  2165. iget-object v10, p0, Lcom/android/server/VibratorService;->mVibePatternC:[J
  2166.  
  2167. invoke-direct {p0, v10, p1}, Lcom/android/server/VibratorService;->isCommonPattern([J[J)Z
  2168.  
  2169. move-result v0
  2170.  
  2171. if-eqz v0, :cond_8
  2172.  
  2173. iget v1, p0, Lcom/android/server/VibratorService;->mVibeFrequencyMid:I
  2174.  
  2175. goto/16 :goto_2
  2176.  
  2177. :cond_8
  2178. iget v1, p0, Lcom/android/server/VibratorService;->mVibeFrequencyAlert:I
  2179.  
  2180. goto/16 :goto_2
  2181.  
  2182. :pswitch_a
  2183. iget-object v10, p0, Lcom/android/server/VibratorService;->mVibePatternD:[J
  2184.  
  2185. invoke-direct {p0, v10, p1}, Lcom/android/server/VibratorService;->isCommonPattern([J[J)Z
  2186.  
  2187. move-result v0
  2188.  
  2189. if-eqz v0, :cond_9
  2190.  
  2191. iget v1, p0, Lcom/android/server/VibratorService;->mVibeFrequencyHigh:I
  2192.  
  2193. goto/16 :goto_2
  2194.  
  2195. :cond_9
  2196. iget v1, p0, Lcom/android/server/VibratorService;->mVibeFrequencyAlert:I
  2197.  
  2198. goto/16 :goto_2
  2199.  
  2200. :pswitch_b
  2201. iget-object v10, p0, Lcom/android/server/VibratorService;->mVibePatternE:[J
  2202.  
  2203. invoke-direct {p0, v10, p1}, Lcom/android/server/VibratorService;->isCommonPattern([J[J)Z
  2204.  
  2205. move-result v0
  2206.  
  2207. if-eqz v0, :cond_a
  2208.  
  2209. iget v1, p0, Lcom/android/server/VibratorService;->mVibeFrequencyLow:I
  2210.  
  2211. goto/16 :goto_2
  2212.  
  2213. :cond_a
  2214. iget v1, p0, Lcom/android/server/VibratorService;->mVibeFrequencyAlert:I
  2215.  
  2216. goto/16 :goto_2
  2217.  
  2218. :pswitch_c
  2219. iget-object v10, p0, Lcom/android/server/VibratorService;->mVibePatternF:[J
  2220.  
  2221. invoke-direct {p0, v10, p1}, Lcom/android/server/VibratorService;->isCommonPattern([J[J)Z
  2222.  
  2223. move-result v0
  2224.  
  2225. if-eqz v0, :cond_b
  2226.  
  2227. iget v1, p0, Lcom/android/server/VibratorService;->mVibeFrequencyF0:I
  2228.  
  2229. goto/16 :goto_2
  2230.  
  2231. :cond_b
  2232. iget v1, p0, Lcom/android/server/VibratorService;->mVibeFrequencyAlert:I
  2233.  
  2234. goto/16 :goto_2
  2235.  
  2236. :pswitch_d
  2237. iget-object v10, p0, Lcom/android/server/VibratorService;->mVibePatternG:[J
  2238.  
  2239. invoke-direct {p0, v10, p1}, Lcom/android/server/VibratorService;->isCommonPattern([J[J)Z
  2240.  
  2241. move-result v0
  2242.  
  2243. if-eqz v0, :cond_c
  2244.  
  2245. iget v1, p0, Lcom/android/server/VibratorService;->mVibeFrequencyMid:I
  2246.  
  2247. goto/16 :goto_2
  2248.  
  2249. :cond_c
  2250. iget v1, p0, Lcom/android/server/VibratorService;->mVibeFrequencyAlert:I
  2251.  
  2252. goto/16 :goto_2
  2253.  
  2254. :cond_d
  2255. const-string v10, "VibratorService"
  2256.  
  2257. new-instance v11, Ljava/lang/StringBuilder;
  2258.  
  2259. invoke-direct {v11}, Ljava/lang/StringBuilder;-><init>()V
  2260.  
  2261. const-string/jumbo v12, "getCommonPatternFrequency() - common or custom pattern(confirmed) : "
  2262.  
  2263. invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  2264.  
  2265. move-result-object v11
  2266.  
  2267. invoke-virtual {v11, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  2268.  
  2269. move-result-object v11
  2270.  
  2271. const-string v12, ", frequency : "
  2272.  
  2273. invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  2274.  
  2275. move-result-object v11
  2276.  
  2277. invoke-virtual {v11, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  2278.  
  2279. move-result-object v11
  2280.  
  2281. invoke-virtual {v11}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  2282.  
  2283. move-result-object v11
  2284.  
  2285. invoke-static {v10, v11}, Landroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;)I
  2286.  
  2287. goto/16 :goto_3
  2288.  
  2289. :pswitch_data_0
  2290. .packed-switch 0x41
  2291. :pswitch_0
  2292. :pswitch_1
  2293. :pswitch_2
  2294. :pswitch_3
  2295. :pswitch_4
  2296. :pswitch_5
  2297. :pswitch_6
  2298. .end packed-switch
  2299.  
  2300. :pswitch_data_1
  2301. .packed-switch 0x0
  2302. :pswitch_7
  2303. :pswitch_8
  2304. :pswitch_9
  2305. :pswitch_a
  2306. :pswitch_b
  2307. :pswitch_c
  2308. :pswitch_d
  2309. .end packed-switch
  2310. .end method
  2311.  
  2312. .method private getHashValue([J)J
  2313. .locals 8
  2314.  
  2315. array-length v1, p1
  2316.  
  2317. const-wide/16 v2, 0x0
  2318.  
  2319. const/4 v0, 0x0
  2320.  
  2321. :goto_0
  2322. if-ge v0, v1, :cond_0
  2323.  
  2324. aget-wide v4, p1, v0
  2325.  
  2326. const-wide/16 v6, 0x1
  2327.  
  2328. add-long/2addr v4, v6
  2329.  
  2330. add-int/lit8 v6, v0, 0x1
  2331.  
  2332. int-to-long v6, v6
  2333.  
  2334. mul-long/2addr v4, v6
  2335.  
  2336. add-long/2addr v2, v4
  2337.  
  2338. add-int/lit8 v0, v0, 0x1
  2339.  
  2340. goto :goto_0
  2341.  
  2342. :cond_0
  2343. return-wide v2
  2344. .end method
  2345.  
  2346. .method static getLongIntArray(Landroid/content/res/Resources;I)[J
  2347. .locals 6
  2348.  
  2349. invoke-virtual {p0, p1}, Landroid/content/res/Resources;->getIntArray(I)[I
  2350.  
  2351. move-result-object v0
  2352.  
  2353. if-nez v0, :cond_1
  2354.  
  2355. const/4 v2, 0x0
  2356.  
  2357. :cond_0
  2358. return-object v2
  2359.  
  2360. :cond_1
  2361. array-length v3, v0
  2362.  
  2363. new-array v2, v3, [J
  2364.  
  2365. const/4 v1, 0x0
  2366.  
  2367. :goto_0
  2368. array-length v3, v0
  2369.  
  2370. if-ge v1, v3, :cond_0
  2371.  
  2372. aget v3, v0, v1
  2373.  
  2374. int-to-long v4, v3
  2375.  
  2376. aput-wide v4, v2, v1
  2377.  
  2378. add-int/lit8 v1, v1, 0x1
  2379.  
  2380. goto :goto_0
  2381. .end method
  2382.  
  2383. .method private getMinMagnitude()I
  2384. .locals 5
  2385.  
  2386. iget v1, p0, Lcom/android/server/VibratorService;->mMinMagnitudeValue:I
  2387.  
  2388. :try_start_0
  2389. sget-object v2, Lcom/android/server/VibratorService;->LEVEL_TO_MAGNITUDE:[I
  2390.  
  2391. const/4 v3, 0x1
  2392.  
  2393. aget v1, v2, v3
  2394. :try_end_0
  2395. .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
  2396.  
  2397. :goto_0
  2398. return v1
  2399.  
  2400. :catch_0
  2401. move-exception v0
  2402.  
  2403. const-string v2, "VibratorService"
  2404.  
  2405. new-instance v3, Ljava/lang/StringBuilder;
  2406.  
  2407. invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
  2408.  
  2409. const-string v4, "Min magnitude should be "
  2410.  
  2411. invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  2412.  
  2413. move-result-object v3
  2414.  
  2415. iget v4, p0, Lcom/android/server/VibratorService;->mMinMagnitudeValue:I
  2416.  
  2417. invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  2418.  
  2419. move-result-object v3
  2420.  
  2421. invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  2422.  
  2423. move-result-object v3
  2424.  
  2425. invoke-static {v2, v3}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
  2426.  
  2427. goto :goto_0
  2428. .end method
  2429.  
  2430. .method static native getVibratorMotorType()I
  2431. .end method
  2432.  
  2433. .method private initPattern(Landroid/content/res/Resources;ILjava/lang/String;)[J
  2434. .locals 6
  2435.  
  2436. invoke-static {p1, p2}, Lcom/android/server/VibratorService;->getLongIntArray(Landroid/content/res/Resources;I)[J
  2437.  
  2438. move-result-object v1
  2439.  
  2440. if-nez v1, :cond_0
  2441.  
  2442. const-string v2, "VibratorService"
  2443.  
  2444. new-instance v3, Ljava/lang/StringBuilder;
  2445.  
  2446. invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
  2447.  
  2448. const-string/jumbo v4, "initPattern() is failed by illegal resid("
  2449.  
  2450. invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  2451.  
  2452. move-result-object v3
  2453.  
  2454. invoke-virtual {v3, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  2455.  
  2456. move-result-object v3
  2457.  
  2458. const-string v4, ")"
  2459.  
  2460. invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  2461.  
  2462. move-result-object v3
  2463.  
  2464. invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  2465.  
  2466. move-result-object v3
  2467.  
  2468. invoke-static {v2, v3}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
  2469.  
  2470. const/4 v2, 0x2
  2471.  
  2472. new-array v1, v2, [J
  2473.  
  2474. fill-array-data v1, :array_0
  2475.  
  2476. :goto_0
  2477. return-object v1
  2478.  
  2479. :cond_0
  2480. array-length v0, v1
  2481.  
  2482. iget v2, p0, Lcom/android/server/VibratorService;->mVibePatternMaxLength:I
  2483.  
  2484. if-ge v2, v0, :cond_1
  2485.  
  2486. iput v0, p0, Lcom/android/server/VibratorService;->mVibePatternMaxLength:I
  2487.  
  2488. :cond_1
  2489. sget-object v2, Lcom/android/server/VibratorService;->mVibePatternHash:Ljava/util/Hashtable;
  2490.  
  2491. invoke-direct {p0, v1}, Lcom/android/server/VibratorService;->getHashValue([J)J
  2492.  
  2493. move-result-wide v4
  2494.  
  2495. invoke-static {v4, v5}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
  2496.  
  2497. move-result-object v3
  2498.  
  2499. invoke-virtual {v2, p3, v3}, Ljava/util/Hashtable;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
  2500.  
  2501. goto :goto_0
  2502.  
  2503. nop
  2504.  
  2505. :array_0
  2506. .array-data 8
  2507. -0x1
  2508. -0x1
  2509. .end array-data
  2510. .end method
  2511.  
  2512. .method private isAll0([J)Z
  2513. .locals 6
  2514.  
  2515. array-length v0, p1
  2516.  
  2517. const/4 v1, 0x0
  2518.  
  2519. :goto_0
  2520. if-ge v1, v0, :cond_1
  2521.  
  2522. aget-wide v2, p1, v1
  2523.  
  2524. const-wide/16 v4, 0x0
  2525.  
  2526. cmp-long v2, v2, v4
  2527.  
  2528. if-eqz v2, :cond_0
  2529.  
  2530. const/4 v2, 0x0
  2531.  
  2532. :goto_1
  2533. return v2
  2534.  
  2535. :cond_0
  2536. add-int/lit8 v1, v1, 0x1
  2537.  
  2538. goto :goto_0
  2539.  
  2540. :cond_1
  2541. const/4 v2, 0x1
  2542.  
  2543. goto :goto_1
  2544. .end method
  2545.  
  2546. .method private isCommonPattern([J[J)Z
  2547. .locals 8
  2548.  
  2549. const/4 v2, 0x0
  2550.  
  2551. array-length v1, p1
  2552.  
  2553. array-length v3, p2
  2554.  
  2555. if-eq v1, v3, :cond_1
  2556.  
  2557. :cond_0
  2558. :goto_0
  2559. return v2
  2560.  
  2561. :cond_1
  2562. const/4 v0, 0x0
  2563.  
  2564. :goto_1
  2565. if-ge v0, v1, :cond_2
  2566.  
  2567. aget-wide v4, p1, v0
  2568.  
  2569. aget-wide v6, p2, v0
  2570.  
  2571. cmp-long v3, v4, v6
  2572.  
  2573. if-nez v3, :cond_0
  2574.  
  2575. add-int/lit8 v0, v0, 0x1
  2576.  
  2577. goto :goto_1
  2578.  
  2579. :cond_2
  2580. const/4 v2, 0x1
  2581.  
  2582. goto :goto_0
  2583. .end method
  2584.  
  2585. .method private removeVibrationLocked(Landroid/os/IBinder;)Lcom/android/server/VibratorService$Vibration;
  2586. .locals 4
  2587.  
  2588. iget-object v2, p0, Lcom/android/server/VibratorService;->mVibrations:Ljava/util/LinkedList;
  2589.  
  2590. const/4 v3, 0x0
  2591.  
  2592. invoke-virtual {v2, v3}, Ljava/util/LinkedList;->listIterator(I)Ljava/util/ListIterator;
  2593.  
  2594. move-result-object v0
  2595.  
  2596. :cond_0
  2597. invoke-interface {v0}, Ljava/util/ListIterator;->hasNext()Z
  2598.  
  2599. move-result v2
  2600.  
  2601. if-eqz v2, :cond_1
  2602.  
  2603. invoke-interface {v0}, Ljava/util/ListIterator;->next()Ljava/lang/Object;
  2604.  
  2605. move-result-object v1
  2606.  
  2607. check-cast v1, Lcom/android/server/VibratorService$Vibration;
  2608.  
  2609. # getter for: Lcom/android/server/VibratorService$Vibration;->mToken:Landroid/os/IBinder;
  2610. invoke-static {v1}, Lcom/android/server/VibratorService$Vibration;->access$1700(Lcom/android/server/VibratorService$Vibration;)Landroid/os/IBinder;
  2611.  
  2612. move-result-object v2
  2613.  
  2614. if-ne v2, p1, :cond_0
  2615.  
  2616. invoke-interface {v0}, Ljava/util/ListIterator;->remove()V
  2617.  
  2618. invoke-direct {p0, v1}, Lcom/android/server/VibratorService;->unlinkVibration(Lcom/android/server/VibratorService$Vibration;)V
  2619.  
  2620. :goto_0
  2621. return-object v1
  2622.  
  2623. :cond_1
  2624. iget-object v2, p0, Lcom/android/server/VibratorService;->mCurrentVibration:Lcom/android/server/VibratorService$Vibration;
  2625.  
  2626. if-eqz v2, :cond_2
  2627.  
  2628. iget-object v2, p0, Lcom/android/server/VibratorService;->mCurrentVibration:Lcom/android/server/VibratorService$Vibration;
  2629.  
  2630. # getter for: Lcom/android/server/VibratorService$Vibration;->mToken:Landroid/os/IBinder;
  2631. invoke-static {v2}, Lcom/android/server/VibratorService$Vibration;->access$1700(Lcom/android/server/VibratorService$Vibration;)Landroid/os/IBinder;
  2632.  
  2633. move-result-object v2
  2634.  
  2635. if-ne v2, p1, :cond_2
  2636.  
  2637. iget-object v2, p0, Lcom/android/server/VibratorService;->mCurrentVibration:Lcom/android/server/VibratorService$Vibration;
  2638.  
  2639. invoke-direct {p0, v2}, Lcom/android/server/VibratorService;->unlinkVibration(Lcom/android/server/VibratorService$Vibration;)V
  2640.  
  2641. iget-object v1, p0, Lcom/android/server/VibratorService;->mCurrentVibration:Lcom/android/server/VibratorService$Vibration;
  2642.  
  2643. goto :goto_0
  2644.  
  2645. :cond_2
  2646. const/4 v1, 0x0
  2647.  
  2648. goto :goto_0
  2649. .end method
  2650.  
  2651. .method private reportFinishVibrationLocked()V
  2652. .locals 5
  2653.  
  2654. iget-object v0, p0, Lcom/android/server/VibratorService;->mCurrentVibration:Lcom/android/server/VibratorService$Vibration;
  2655.  
  2656. if-eqz v0, :cond_0
  2657.  
  2658. :try_start_0
  2659. iget-object v0, p0, Lcom/android/server/VibratorService;->mAppOpsService:Lcom/android/internal/app/IAppOpsService;
  2660.  
  2661. iget-object v1, p0, Lcom/android/server/VibratorService;->mAppOpsService:Lcom/android/internal/app/IAppOpsService;
  2662.  
  2663. invoke-static {v1}, Landroid/app/AppOpsManager;->getToken(Lcom/android/internal/app/IAppOpsService;)Landroid/os/IBinder;
  2664.  
  2665. move-result-object v1
  2666.  
  2667. const/4 v2, 0x3
  2668.  
  2669. iget-object v3, p0, Lcom/android/server/VibratorService;->mCurrentVibration:Lcom/android/server/VibratorService$Vibration;
  2670.  
  2671. # getter for: Lcom/android/server/VibratorService$Vibration;->mUid:I
  2672. invoke-static {v3}, Lcom/android/server/VibratorService$Vibration;->access$1200(Lcom/android/server/VibratorService$Vibration;)I
  2673.  
  2674. move-result v3
  2675.  
  2676. iget-object v4, p0, Lcom/android/server/VibratorService;->mCurrentVibration:Lcom/android/server/VibratorService$Vibration;
  2677.  
  2678. # getter for: Lcom/android/server/VibratorService$Vibration;->mOpPkg:Ljava/lang/String;
  2679. invoke-static {v4}, Lcom/android/server/VibratorService$Vibration;->access$1300(Lcom/android/server/VibratorService$Vibration;)Ljava/lang/String;
  2680.  
  2681. move-result-object v4
  2682.  
  2683. invoke-interface {v0, v1, v2, v3, v4}, Lcom/android/internal/app/IAppOpsService;->finishOperation(Landroid/os/IBinder;IILjava/lang/String;)V
  2684. :try_end_0
  2685. .catch Landroid/os/RemoteException; {:try_start_0 .. :try_end_0} :catch_0
  2686.  
  2687. :goto_0
  2688. const/4 v0, 0x0
  2689.  
  2690. iput-object v0, p0, Lcom/android/server/VibratorService;->mCurrentVibration:Lcom/android/server/VibratorService$Vibration;
  2691.  
  2692. :cond_0
  2693. return-void
  2694.  
  2695. :catch_0
  2696. move-exception v0
  2697.  
  2698. goto :goto_0
  2699. .end method
  2700.  
  2701. .method private setFrequency(I)V
  2702. .locals 2
  2703.  
  2704. iget-boolean v0, p0, Lcom/android/server/VibratorService;->mIsFrequencySupported:Z
  2705.  
  2706. if-eqz v0, :cond_0
  2707.  
  2708. int-to-long v0, p1
  2709.  
  2710. invoke-static {v0, v1}, Lcom/android/server/VibratorService;->vibratorFrequency(J)V
  2711.  
  2712. :cond_0
  2713. return-void
  2714. .end method
  2715.  
  2716. .method private setIntensity(I)V
  2717. .locals 2
  2718.  
  2719. sget-boolean v0, Lcom/android/server/VibratorService;->mIsEnableIntensity:Z
  2720.  
  2721. if-eqz v0, :cond_0
  2722.  
  2723. int-to-long v0, p1
  2724.  
  2725. invoke-static {v0, v1}, Lcom/android/server/VibratorService;->vibratorIntensity(J)V
  2726.  
  2727. :cond_0
  2728. return-void
  2729. .end method
  2730.  
  2731. .method private startNextVibrationLocked()V
  2732. .locals 1
  2733.  
  2734. iget-object v0, p0, Lcom/android/server/VibratorService;->mVibrations:Ljava/util/LinkedList;
  2735.  
  2736. invoke-virtual {v0}, Ljava/util/LinkedList;->size()I
  2737.  
  2738. move-result v0
  2739.  
  2740. if-gtz v0, :cond_0
  2741.  
  2742. invoke-direct {p0}, Lcom/android/server/VibratorService;->reportFinishVibrationLocked()V
  2743.  
  2744. const/4 v0, 0x0
  2745.  
  2746. iput-object v0, p0, Lcom/android/server/VibratorService;->mCurrentVibration:Lcom/android/server/VibratorService$Vibration;
  2747.  
  2748. :goto_0
  2749. return-void
  2750.  
  2751. :cond_0
  2752. iget-object v0, p0, Lcom/android/server/VibratorService;->mVibrations:Ljava/util/LinkedList;
  2753.  
  2754. invoke-virtual {v0}, Ljava/util/LinkedList;->getFirst()Ljava/lang/Object;
  2755.  
  2756. move-result-object v0
  2757.  
  2758. check-cast v0, Lcom/android/server/VibratorService$Vibration;
  2759.  
  2760. iput-object v0, p0, Lcom/android/server/VibratorService;->mCurrentVibration:Lcom/android/server/VibratorService$Vibration;
  2761.  
  2762. iget-object v0, p0, Lcom/android/server/VibratorService;->mCurrentVibration:Lcom/android/server/VibratorService$Vibration;
  2763.  
  2764. invoke-direct {p0, v0}, Lcom/android/server/VibratorService;->startVibrationLocked(Lcom/android/server/VibratorService$Vibration;)V
  2765.  
  2766. goto :goto_0
  2767. .end method
  2768.  
  2769. .method private startVibrationLocked(Lcom/android/server/VibratorService$Vibration;)V
  2770. .locals 8
  2771.  
  2772. :try_start_0
  2773. iget-object v1, p0, Lcom/android/server/VibratorService;->mAppOpsService:Lcom/android/internal/app/IAppOpsService;
  2774.  
  2775. const/4 v2, 0x3
  2776.  
  2777. # getter for: Lcom/android/server/VibratorService$Vibration;->mUsageHint:I
  2778. invoke-static {p1}, Lcom/android/server/VibratorService$Vibration;->access$1100(Lcom/android/server/VibratorService$Vibration;)I
  2779.  
  2780. move-result v3
  2781.  
  2782. # getter for: Lcom/android/server/VibratorService$Vibration;->mUid:I
  2783. invoke-static {p1}, Lcom/android/server/VibratorService$Vibration;->access$1200(Lcom/android/server/VibratorService$Vibration;)I
  2784.  
  2785. move-result v4
  2786.  
  2787. # getter for: Lcom/android/server/VibratorService$Vibration;->mOpPkg:Ljava/lang/String;
  2788. invoke-static {p1}, Lcom/android/server/VibratorService$Vibration;->access$1300(Lcom/android/server/VibratorService$Vibration;)Ljava/lang/String;
  2789.  
  2790. move-result-object v5
  2791.  
  2792. invoke-interface {v1, v2, v3, v4, v5}, Lcom/android/internal/app/IAppOpsService;->checkAudioOperation(IIILjava/lang/String;)I
  2793.  
  2794. move-result v0
  2795.  
  2796. if-nez v0, :cond_0
  2797.  
  2798. iget-object v1, p0, Lcom/android/server/VibratorService;->mAppOpsService:Lcom/android/internal/app/IAppOpsService;
  2799.  
  2800. iget-object v2, p0, Lcom/android/server/VibratorService;->mAppOpsService:Lcom/android/internal/app/IAppOpsService;
  2801.  
  2802. invoke-static {v2}, Landroid/app/AppOpsManager;->getToken(Lcom/android/internal/app/IAppOpsService;)Landroid/os/IBinder;
  2803.  
  2804. move-result-object v2
  2805.  
  2806. const/4 v3, 0x3
  2807.  
  2808. # getter for: Lcom/android/server/VibratorService$Vibration;->mUid:I
  2809. invoke-static {p1}, Lcom/android/server/VibratorService$Vibration;->access$1200(Lcom/android/server/VibratorService$Vibration;)I
  2810.  
  2811. move-result v4
  2812.  
  2813. # getter for: Lcom/android/server/VibratorService$Vibration;->mOpPkg:Ljava/lang/String;
  2814. invoke-static {p1}, Lcom/android/server/VibratorService$Vibration;->access$1300(Lcom/android/server/VibratorService$Vibration;)Ljava/lang/String;
  2815.  
  2816. move-result-object v5
  2817.  
  2818. invoke-interface {v1, v2, v3, v4, v5}, Lcom/android/internal/app/IAppOpsService;->startOperation(Landroid/os/IBinder;IILjava/lang/String;)I
  2819.  
  2820. move-result v0
  2821.  
  2822. :cond_0
  2823. if-eqz v0, :cond_3
  2824.  
  2825. const/4 v1, 0x2
  2826.  
  2827. if-ne v0, v1, :cond_1
  2828.  
  2829. const-string v1, "VibratorService"
  2830.  
  2831. new-instance v2, Ljava/lang/StringBuilder;
  2832.  
  2833. invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
  2834.  
  2835. const-string v3, "Would be an error: vibrate from uid "
  2836.  
  2837. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  2838.  
  2839. move-result-object v2
  2840.  
  2841. # getter for: Lcom/android/server/VibratorService$Vibration;->mUid:I
  2842. invoke-static {p1}, Lcom/android/server/VibratorService$Vibration;->access$1200(Lcom/android/server/VibratorService$Vibration;)I
  2843.  
  2844. move-result v3
  2845.  
  2846. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  2847.  
  2848. move-result-object v2
  2849.  
  2850. invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  2851.  
  2852. move-result-object v2
  2853.  
  2854. invoke-static {v1, v2}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
  2855.  
  2856. :cond_1
  2857. sget-boolean v1, Lcom/android/server/VibratorService;->SAFE_DEBUG:Z
  2858.  
  2859. if-eqz v1, :cond_2
  2860.  
  2861. const-string v1, "VibratorService"
  2862.  
  2863. new-instance v2, Ljava/lang/StringBuilder;
  2864.  
  2865. invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
  2866.  
  2867. const-string v3, "Infinite: vibrate from uid "
  2868.  
  2869. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  2870.  
  2871. move-result-object v2
  2872.  
  2873. # getter for: Lcom/android/server/VibratorService$Vibration;->mUid:I
  2874. invoke-static {p1}, Lcom/android/server/VibratorService$Vibration;->access$1200(Lcom/android/server/VibratorService$Vibration;)I
  2875.  
  2876. move-result v3
  2877.  
  2878. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  2879.  
  2880. move-result-object v2
  2881.  
  2882. invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  2883.  
  2884. move-result-object v2
  2885.  
  2886. invoke-static {v1, v2}, Landroid/util/Slog;->v(Ljava/lang/String;Ljava/lang/String;)I
  2887.  
  2888. :cond_2
  2889. iget-object v1, p0, Lcom/android/server/VibratorService;->mH:Landroid/os/Handler;
  2890.  
  2891. iget-object v2, p0, Lcom/android/server/VibratorService;->mVibrationRunnable:Ljava/lang/Runnable;
  2892.  
  2893. invoke-virtual {v1, v2}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
  2894. :try_end_0
  2895. .catch Landroid/os/RemoteException; {:try_start_0 .. :try_end_0} :catch_0
  2896.  
  2897. :goto_0
  2898. return-void
  2899.  
  2900. :catch_0
  2901. move-exception v1
  2902.  
  2903. :cond_3
  2904. # getter for: Lcom/android/server/VibratorService$Vibration;->mTimeout:J
  2905. invoke-static {p1}, Lcom/android/server/VibratorService$Vibration;->access$700(Lcom/android/server/VibratorService$Vibration;)J
  2906.  
  2907. move-result-wide v2
  2908.  
  2909. const-wide/16 v4, 0x0
  2910.  
  2911. cmp-long v1, v2, v4
  2912.  
  2913. if-eqz v1, :cond_5
  2914.  
  2915. # getter for: Lcom/android/server/VibratorService$Vibration;->mTimeout:J
  2916. invoke-static {p1}, Lcom/android/server/VibratorService$Vibration;->access$700(Lcom/android/server/VibratorService$Vibration;)J
  2917.  
  2918. move-result-wide v2
  2919.  
  2920. # getter for: Lcom/android/server/VibratorService$Vibration;->mUid:I
  2921. invoke-static {p1}, Lcom/android/server/VibratorService$Vibration;->access$1200(Lcom/android/server/VibratorService$Vibration;)I
  2922.  
  2923. move-result v4
  2924.  
  2925. # getter for: Lcom/android/server/VibratorService$Vibration;->mUsageHint:I
  2926. invoke-static {p1}, Lcom/android/server/VibratorService$Vibration;->access$1100(Lcom/android/server/VibratorService$Vibration;)I
  2927.  
  2928. move-result v5
  2929.  
  2930. # getter for: Lcom/android/server/VibratorService$Vibration;->mUseMagnitude:Z
  2931. invoke-static {p1}, Lcom/android/server/VibratorService$Vibration;->access$1500(Lcom/android/server/VibratorService$Vibration;)Z
  2932.  
  2933. move-result v1
  2934.  
  2935. if-eqz v1, :cond_4
  2936.  
  2937. # getter for: Lcom/android/server/VibratorService$Vibration;->mMagnitude:I
  2938. invoke-static {p1}, Lcom/android/server/VibratorService$Vibration;->access$1600(Lcom/android/server/VibratorService$Vibration;)I
  2939.  
  2940. move-result v6
  2941.  
  2942. :goto_1
  2943. # getter for: Lcom/android/server/VibratorService$Vibration;->mFrequency:I
  2944. invoke-static {p1}, Lcom/android/server/VibratorService$Vibration;->access$1400(Lcom/android/server/VibratorService$Vibration;)I
  2945.  
  2946. move-result v7
  2947.  
  2948. move-object v1, p0
  2949.  
  2950. invoke-direct/range {v1 .. v7}, Lcom/android/server/VibratorService;->doVibratorOn(JIIII)V
  2951.  
  2952. iget-object v1, p0, Lcom/android/server/VibratorService;->mH:Landroid/os/Handler;
  2953.  
  2954. iget-object v2, p0, Lcom/android/server/VibratorService;->mVibrationRunnable:Ljava/lang/Runnable;
  2955.  
  2956. # getter for: Lcom/android/server/VibratorService$Vibration;->mTimeout:J
  2957. invoke-static {p1}, Lcom/android/server/VibratorService$Vibration;->access$700(Lcom/android/server/VibratorService$Vibration;)J
  2958.  
  2959. move-result-wide v4
  2960.  
  2961. invoke-virtual {v1, v2, v4, v5}, Landroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z
  2962.  
  2963. goto :goto_0
  2964.  
  2965. :cond_4
  2966. iget v6, p0, Lcom/android/server/VibratorService;->mDefaultMagnitude:I
  2967.  
  2968. goto :goto_1
  2969.  
  2970. :cond_5
  2971. new-instance v1, Lcom/android/server/VibratorService$VibrateThread;
  2972.  
  2973. invoke-direct {v1, p0, p1}, Lcom/android/server/VibratorService$VibrateThread;-><init>(Lcom/android/server/VibratorService;Lcom/android/server/VibratorService$Vibration;)V
  2974.  
  2975. iput-object v1, p0, Lcom/android/server/VibratorService;->mThread:Lcom/android/server/VibratorService$VibrateThread;
  2976.  
  2977. iget-object v1, p0, Lcom/android/server/VibratorService;->mThread:Lcom/android/server/VibratorService$VibrateThread;
  2978.  
  2979. invoke-virtual {v1}, Lcom/android/server/VibratorService$VibrateThread;->start()V
  2980.  
  2981. goto :goto_0
  2982. .end method
  2983.  
  2984. .method private unlinkVibration(Lcom/android/server/VibratorService$Vibration;)V
  2985. .locals 2
  2986.  
  2987. # getter for: Lcom/android/server/VibratorService$Vibration;->mPattern:[J
  2988. invoke-static {p1}, Lcom/android/server/VibratorService$Vibration;->access$900(Lcom/android/server/VibratorService$Vibration;)[J
  2989.  
  2990. move-result-object v0
  2991.  
  2992. if-eqz v0, :cond_0
  2993.  
  2994. :try_start_0
  2995. # getter for: Lcom/android/server/VibratorService$Vibration;->mToken:Landroid/os/IBinder;
  2996. invoke-static {p1}, Lcom/android/server/VibratorService$Vibration;->access$1700(Lcom/android/server/VibratorService$Vibration;)Landroid/os/IBinder;
  2997.  
  2998. move-result-object v0
  2999.  
  3000. const/4 v1, 0x0
  3001.  
  3002. invoke-interface {v0, p1, v1}, Landroid/os/IBinder;->unlinkToDeath(Landroid/os/IBinder$DeathRecipient;I)Z
  3003. :try_end_0
  3004. .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
  3005.  
  3006. :cond_0
  3007. :goto_0
  3008. return-void
  3009.  
  3010. :catch_0
  3011. move-exception v0
  3012.  
  3013. goto :goto_0
  3014. .end method
  3015.  
  3016. .method private updateInputDeviceVibrators()V
  3017. .locals 11
  3018.  
  3019. const/4 v4, 0x1
  3020.  
  3021. const/4 v5, 0x0
  3022.  
  3023. iget-object v6, p0, Lcom/android/server/VibratorService;->mVibrations:Ljava/util/LinkedList;
  3024.  
  3025. monitor-enter v6
  3026.  
  3027. :try_start_0
  3028. invoke-direct {p0}, Lcom/android/server/VibratorService;->doCancelVibrateLocked()V
  3029.  
  3030. iget-object v7, p0, Lcom/android/server/VibratorService;->mInputDeviceVibrators:Ljava/util/ArrayList;
  3031.  
  3032. monitor-enter v7
  3033. :try_end_0
  3034. .catchall {:try_start_0 .. :try_end_0} :catchall_1
  3035.  
  3036. const/4 v8, 0x0
  3037.  
  3038. :try_start_1
  3039. iput-boolean v8, p0, Lcom/android/server/VibratorService;->mVibrateInputDevicesSetting:Z
  3040. :try_end_1
  3041. .catchall {:try_start_1 .. :try_end_1} :catchall_0
  3042.  
  3043. :try_start_2
  3044. iget-object v8, p0, Lcom/android/server/VibratorService;->mContext:Landroid/content/Context;
  3045.  
  3046. invoke-virtual {v8}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
  3047.  
  3048. move-result-object v8
  3049.  
  3050. const-string/jumbo v9, "vibrate_input_devices"
  3051.  
  3052. const/4 v10, -0x2
  3053.  
  3054. invoke-static {v8, v9, v10}, Landroid/provider/Settings$System;->getIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)I
  3055.  
  3056. move-result v8
  3057.  
  3058. if-lez v8, :cond_2
  3059.  
  3060. :goto_0
  3061. iput-boolean v4, p0, Lcom/android/server/VibratorService;->mVibrateInputDevicesSetting:Z
  3062. :try_end_2
  3063. .catch Landroid/provider/Settings$SettingNotFoundException; {:try_start_2 .. :try_end_2} :catch_0
  3064. .catchall {:try_start_2 .. :try_end_2} :catchall_0
  3065.  
  3066. :goto_1
  3067. :try_start_3
  3068. iget-object v4, p0, Lcom/android/server/VibratorService;->mPowerManagerInternal:Landroid/os/PowerManagerInternal;
  3069.  
  3070. invoke-virtual {v4}, Landroid/os/PowerManagerInternal;->getLowPowerModeEnabled()Z
  3071.  
  3072. move-result v4
  3073.  
  3074. iput-boolean v4, p0, Lcom/android/server/VibratorService;->mLowPowerMode:Z
  3075.  
  3076. iget-boolean v4, p0, Lcom/android/server/VibratorService;->mVibrateInputDevicesSetting:Z
  3077.  
  3078. if-eqz v4, :cond_3
  3079.  
  3080. iget-boolean v4, p0, Lcom/android/server/VibratorService;->mInputDeviceListenerRegistered:Z
  3081.  
  3082. if-nez v4, :cond_0
  3083.  
  3084. const/4 v4, 0x1
  3085.  
  3086. iput-boolean v4, p0, Lcom/android/server/VibratorService;->mInputDeviceListenerRegistered:Z
  3087.  
  3088. iget-object v4, p0, Lcom/android/server/VibratorService;->mIm:Landroid/hardware/input/InputManager;
  3089.  
  3090. iget-object v5, p0, Lcom/android/server/VibratorService;->mH:Landroid/os/Handler;
  3091.  
  3092. invoke-virtual {v4, p0, v5}, Landroid/hardware/input/InputManager;->registerInputDeviceListener(Landroid/hardware/input/InputManager$InputDeviceListener;Landroid/os/Handler;)V
  3093.  
  3094. :cond_0
  3095. :goto_2
  3096. iget-object v4, p0, Lcom/android/server/VibratorService;->mInputDeviceVibrators:Ljava/util/ArrayList;
  3097.  
  3098. invoke-virtual {v4}, Ljava/util/ArrayList;->clear()V
  3099.  
  3100. iget-boolean v4, p0, Lcom/android/server/VibratorService;->mVibrateInputDevicesSetting:Z
  3101.  
  3102. if-eqz v4, :cond_4
  3103.  
  3104. iget-object v4, p0, Lcom/android/server/VibratorService;->mIm:Landroid/hardware/input/InputManager;
  3105.  
  3106. invoke-virtual {v4}, Landroid/hardware/input/InputManager;->getInputDeviceIds()[I
  3107.  
  3108. move-result-object v2
  3109.  
  3110. const/4 v1, 0x0
  3111.  
  3112. :goto_3
  3113. array-length v4, v2
  3114.  
  3115. if-ge v1, v4, :cond_4
  3116.  
  3117. iget-object v4, p0, Lcom/android/server/VibratorService;->mIm:Landroid/hardware/input/InputManager;
  3118.  
  3119. aget v5, v2, v1
  3120.  
  3121. invoke-virtual {v4, v5}, Landroid/hardware/input/InputManager;->getInputDevice(I)Landroid/view/InputDevice;
  3122.  
  3123. move-result-object v0
  3124.  
  3125. invoke-virtual {v0}, Landroid/view/InputDevice;->getVibrator()Landroid/os/Vibrator;
  3126.  
  3127. move-result-object v3
  3128.  
  3129. invoke-virtual {v3}, Landroid/os/Vibrator;->hasVibrator()Z
  3130.  
  3131. move-result v4
  3132.  
  3133. if-eqz v4, :cond_1
  3134.  
  3135. iget-object v4, p0, Lcom/android/server/VibratorService;->mInputDeviceVibrators:Ljava/util/ArrayList;
  3136.  
  3137. invoke-virtual {v4, v3}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
  3138.  
  3139. :cond_1
  3140. add-int/lit8 v1, v1, 0x1
  3141.  
  3142. goto :goto_3
  3143.  
  3144. :cond_2
  3145. move v4, v5
  3146.  
  3147. goto :goto_0
  3148.  
  3149. :cond_3
  3150. iget-boolean v4, p0, Lcom/android/server/VibratorService;->mInputDeviceListenerRegistered:Z
  3151.  
  3152. if-eqz v4, :cond_0
  3153.  
  3154. const/4 v4, 0x0
  3155.  
  3156. iput-boolean v4, p0, Lcom/android/server/VibratorService;->mInputDeviceListenerRegistered:Z
  3157.  
  3158. iget-object v4, p0, Lcom/android/server/VibratorService;->mIm:Landroid/hardware/input/InputManager;
  3159.  
  3160. invoke-virtual {v4, p0}, Landroid/hardware/input/InputManager;->unregisterInputDeviceListener(Landroid/hardware/input/InputManager$InputDeviceListener;)V
  3161.  
  3162. goto :goto_2
  3163.  
  3164. :catchall_0
  3165. move-exception v4
  3166.  
  3167. monitor-exit v7
  3168. :try_end_3
  3169. .catchall {:try_start_3 .. :try_end_3} :catchall_0
  3170.  
  3171. :try_start_4
  3172. throw v4
  3173.  
  3174. :catchall_1
  3175. move-exception v4
  3176.  
  3177. monitor-exit v6
  3178. :try_end_4
  3179. .catchall {:try_start_4 .. :try_end_4} :catchall_1
  3180.  
  3181. throw v4
  3182.  
  3183. :cond_4
  3184. :try_start_5
  3185. monitor-exit v7
  3186. :try_end_5
  3187. .catchall {:try_start_5 .. :try_end_5} :catchall_0
  3188.  
  3189. :try_start_6
  3190. invoke-direct {p0}, Lcom/android/server/VibratorService;->startNextVibrationLocked()V
  3191.  
  3192. monitor-exit v6
  3193. :try_end_6
  3194. .catchall {:try_start_6 .. :try_end_6} :catchall_1
  3195.  
  3196. return-void
  3197.  
  3198. :catch_0
  3199. move-exception v4
  3200.  
  3201. goto :goto_1
  3202. .end method
  3203.  
  3204. .method private verifyIncomingUid(I)V
  3205. .locals 5
  3206.  
  3207. invoke-static {}, Landroid/os/Binder;->getCallingUid()I
  3208.  
  3209. move-result v0
  3210.  
  3211. if-ne p1, v0, :cond_1
  3212.  
  3213. :cond_0
  3214. :goto_0
  3215. return-void
  3216.  
  3217. :cond_1
  3218. invoke-static {}, Landroid/os/Binder;->getCallingPid()I
  3219.  
  3220. move-result v0
  3221.  
  3222. invoke-static {}, Landroid/os/Process;->myPid()I
  3223.  
  3224. move-result v1
  3225.  
  3226. if-eq v0, v1, :cond_0
  3227.  
  3228. iget-object v0, p0, Lcom/android/server/VibratorService;->mContext:Landroid/content/Context;
  3229.  
  3230. const-string v1, "android.permission.UPDATE_APP_OPS_STATS"
  3231.  
  3232. invoke-static {}, Landroid/os/Binder;->getCallingPid()I
  3233.  
  3234. move-result v2
  3235.  
  3236. invoke-static {}, Landroid/os/Binder;->getCallingUid()I
  3237.  
  3238. move-result v3
  3239.  
  3240. const/4 v4, 0x0
  3241.  
  3242. invoke-virtual {v0, v1, v2, v3, v4}, Landroid/content/Context;->enforcePermission(Ljava/lang/String;IILjava/lang/String;)V
  3243.  
  3244. goto :goto_0
  3245. .end method
  3246.  
  3247. .method private vibrate(ILjava/lang/String;JILandroid/os/IBinder;I)V
  3248. .locals 15
  3249.  
  3250. iget-object v2, p0, Lcom/android/server/VibratorService;->mContext:Landroid/content/Context;
  3251.  
  3252. const-string v4, "android.permission.VIBRATE"
  3253.  
  3254. invoke-virtual {v2, v4}, Landroid/content/Context;->checkCallingOrSelfPermission(Ljava/lang/String;)I
  3255.  
  3256. move-result v2
  3257.  
  3258. if-eqz v2, :cond_0
  3259.  
  3260. new-instance v2, Ljava/lang/SecurityException;
  3261.  
  3262. const-string v4, "Requires VIBRATE permission"
  3263.  
  3264. invoke-direct {v2, v4}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
  3265.  
  3266. throw v2
  3267.  
  3268. :cond_0
  3269. iget-boolean v2, p0, Lcom/android/server/VibratorService;->mHMTMount:Z
  3270.  
  3271. if-eqz v2, :cond_1
  3272.  
  3273. const-string v2, "VibratorService"
  3274.  
  3275. const-string/jumbo v4, "vibrate() : HMTMount is TRUE. "
  3276.  
  3277. invoke-static {v2, v4}, Landroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;)I
  3278.  
  3279. :goto_0
  3280. return-void
  3281.  
  3282. :cond_1
  3283. invoke-direct/range {p0 .. p1}, Lcom/android/server/VibratorService;->verifyIncomingUid(I)V
  3284.  
  3285. const-wide/16 v4, 0x0
  3286.  
  3287. cmp-long v2, p3, v4
  3288.  
  3289. if-lez v2, :cond_2
  3290.  
  3291. iget-object v2, p0, Lcom/android/server/VibratorService;->mCurrentVibration:Lcom/android/server/VibratorService$Vibration;
  3292.  
  3293. if-eqz v2, :cond_3
  3294.  
  3295. iget-object v2, p0, Lcom/android/server/VibratorService;->mCurrentVibration:Lcom/android/server/VibratorService$Vibration;
  3296.  
  3297. move-wide/from16 v0, p3
  3298.  
  3299. invoke-virtual {v2, v0, v1}, Lcom/android/server/VibratorService$Vibration;->hasLongerTimeout(J)Z
  3300.  
  3301. move-result v2
  3302.  
  3303. if-eqz v2, :cond_3
  3304.  
  3305. :cond_2
  3306. const-string v2, "VibratorService"
  3307.  
  3308. new-instance v4, Ljava/lang/StringBuilder;
  3309.  
  3310. invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
  3311.  
  3312. const-string/jumbo v5, "vibrate - package: "
  3313.  
  3314. invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  3315.  
  3316. move-result-object v4
  3317.  
  3318. move-object/from16 v0, p2
  3319.  
  3320. invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  3321.  
  3322. move-result-object v4
  3323.  
  3324. const-string v5, ", mCurrentVibration.hasLongerTimeout(milliseconds) => true"
  3325.  
  3326. invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  3327.  
  3328. move-result-object v4
  3329.  
  3330. invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  3331.  
  3332. move-result-object v4
  3333.  
  3334. invoke-static {v2, v4}, Landroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;)I
  3335.  
  3336. goto :goto_0
  3337.  
  3338. :cond_3
  3339. const-string v2, "VibratorService"
  3340.  
  3341. new-instance v4, Ljava/lang/StringBuilder;
  3342.  
  3343. invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
  3344.  
  3345. const-string/jumbo v5, "vibrate - package: "
  3346.  
  3347. invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  3348.  
  3349. move-result-object v4
  3350.  
  3351. move-object/from16 v0, p2
  3352.  
  3353. invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  3354.  
  3355. move-result-object v4
  3356.  
  3357. const-string v5, ", ms: "
  3358.  
  3359. invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  3360.  
  3361. move-result-object v4
  3362.  
  3363. move-wide/from16 v0, p3
  3364.  
  3365. invoke-virtual {v4, v0, v1}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
  3366.  
  3367. move-result-object v4
  3368.  
  3369. const-string v5, ", token: "
  3370.  
  3371. invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  3372.  
  3373. move-result-object v4
  3374.  
  3375. move-object/from16 v0, p6
  3376.  
  3377. invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
  3378.  
  3379. move-result-object v4
  3380.  
  3381. const-string v5, ", magnitude:"
  3382.  
  3383. invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  3384.  
  3385. move-result-object v4
  3386.  
  3387. move/from16 v0, p7
  3388.  
  3389. invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  3390.  
  3391. move-result-object v4
  3392.  
  3393. invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  3394.  
  3395. move-result-object v4
  3396.  
  3397. invoke-static {v2, v4}, Landroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;)I
  3398.  
  3399. new-instance v3, Lcom/android/server/VibratorService$Vibration;
  3400.  
  3401. move-object v4, p0
  3402.  
  3403. move-object/from16 v5, p6
  3404.  
  3405. move-wide/from16 v6, p3
  3406.  
  3407. move/from16 v8, p5
  3408.  
  3409. move/from16 v9, p1
  3410.  
  3411. move-object/from16 v10, p2
  3412.  
  3413. move/from16 v11, p7
  3414.  
  3415. invoke-direct/range {v3 .. v11}, Lcom/android/server/VibratorService$Vibration;-><init>(Lcom/android/server/VibratorService;Landroid/os/IBinder;JIILjava/lang/String;I)V
  3416.  
  3417. invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
  3418.  
  3419. move-result-wide v12
  3420.  
  3421. :try_start_0
  3422. iget-object v4, p0, Lcom/android/server/VibratorService;->mVibrations:Ljava/util/LinkedList;
  3423.  
  3424. monitor-enter v4
  3425. :try_end_0
  3426. .catchall {:try_start_0 .. :try_end_0} :catchall_1
  3427.  
  3428. :try_start_1
  3429. move-object/from16 v0, p6
  3430.  
  3431. invoke-direct {p0, v0}, Lcom/android/server/VibratorService;->removeVibrationLocked(Landroid/os/IBinder;)Lcom/android/server/VibratorService$Vibration;
  3432.  
  3433. invoke-direct {p0}, Lcom/android/server/VibratorService;->doCancelVibrateLocked()V
  3434.  
  3435. iput-object v3, p0, Lcom/android/server/VibratorService;->mCurrentVibration:Lcom/android/server/VibratorService$Vibration;
  3436.  
  3437. invoke-direct {p0, v3}, Lcom/android/server/VibratorService;->addToPreviousVibrationsLocked(Lcom/android/server/VibratorService$Vibration;)V
  3438.  
  3439. invoke-direct {p0, v3}, Lcom/android/server/VibratorService;->startVibrationLocked(Lcom/android/server/VibratorService$Vibration;)V
  3440.  
  3441. monitor-exit v4
  3442. :try_end_1
  3443. .catchall {:try_start_1 .. :try_end_1} :catchall_0
  3444.  
  3445. invoke-static {v12, v13}, Landroid/os/Binder;->restoreCallingIdentity(J)V
  3446.  
  3447. goto/16 :goto_0
  3448.  
  3449. :catchall_0
  3450. move-exception v2
  3451.  
  3452. :try_start_2
  3453. monitor-exit v4
  3454. :try_end_2
  3455. .catchall {:try_start_2 .. :try_end_2} :catchall_0
  3456.  
  3457. :try_start_3
  3458. throw v2
  3459. :try_end_3
  3460. .catchall {:try_start_3 .. :try_end_3} :catchall_1
  3461.  
  3462. :catchall_1
  3463. move-exception v2
  3464.  
  3465. invoke-static {v12, v13}, Landroid/os/Binder;->restoreCallingIdentity(J)V
  3466.  
  3467. throw v2
  3468. .end method
  3469.  
  3470. .method static native vibratorExists()Z
  3471. .end method
  3472.  
  3473. .method static native vibratorFrequency(J)V
  3474. .end method
  3475.  
  3476. .method static native vibratorFrequencyExist()Z
  3477. .end method
  3478.  
  3479. .method static native vibratorIntensity(J)V
  3480. .end method
  3481.  
  3482. .method static native vibratorIntensityExists()Z
  3483. .end method
  3484.  
  3485. .method static native vibratorOff()V
  3486. .end method
  3487.  
  3488. .method static native vibratorOn(J)V
  3489. .end method
  3490.  
  3491.  
  3492. # virtual methods
  3493. .method public cancelVibrate(Landroid/os/IBinder;)V
  3494. .locals 6
  3495.  
  3496. iget-object v3, p0, Lcom/android/server/VibratorService;->mContext:Landroid/content/Context;
  3497.  
  3498. const-string v4, "android.permission.VIBRATE"
  3499.  
  3500. const-string v5, "cancelVibrate"
  3501.  
  3502. invoke-virtual {v3, v4, v5}, Landroid/content/Context;->enforceCallingOrSelfPermission(Ljava/lang/String;Ljava/lang/String;)V
  3503.  
  3504. invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
  3505.  
  3506. move-result-wide v0
  3507.  
  3508. :try_start_0
  3509. iget-object v4, p0, Lcom/android/server/VibratorService;->mVibrations:Ljava/util/LinkedList;
  3510.  
  3511. monitor-enter v4
  3512. :try_end_0
  3513. .catchall {:try_start_0 .. :try_end_0} :catchall_1
  3514.  
  3515. :try_start_1
  3516. invoke-direct {p0, p1}, Lcom/android/server/VibratorService;->removeVibrationLocked(Landroid/os/IBinder;)Lcom/android/server/VibratorService$Vibration;
  3517.  
  3518. move-result-object v2
  3519.  
  3520. iget-object v3, p0, Lcom/android/server/VibratorService;->mCurrentVibration:Lcom/android/server/VibratorService$Vibration;
  3521.  
  3522. if-ne v2, v3, :cond_0
  3523.  
  3524. invoke-direct {p0}, Lcom/android/server/VibratorService;->doCancelVibrateLocked()V
  3525.  
  3526. invoke-direct {p0}, Lcom/android/server/VibratorService;->startNextVibrationLocked()V
  3527.  
  3528. :cond_0
  3529. monitor-exit v4
  3530. :try_end_1
  3531. .catchall {:try_start_1 .. :try_end_1} :catchall_0
  3532.  
  3533. invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
  3534.  
  3535. return-void
  3536.  
  3537. :catchall_0
  3538. move-exception v3
  3539.  
  3540. :try_start_2
  3541. monitor-exit v4
  3542. :try_end_2
  3543. .catchall {:try_start_2 .. :try_end_2} :catchall_0
  3544.  
  3545. :try_start_3
  3546. throw v3
  3547. :try_end_3
  3548. .catchall {:try_start_3 .. :try_end_3} :catchall_1
  3549.  
  3550. :catchall_1
  3551. move-exception v3
  3552.  
  3553. invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
  3554.  
  3555. throw v3
  3556. .end method
  3557.  
  3558. .method protected dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
  3559. .locals 4
  3560.  
  3561. iget-object v2, p0, Lcom/android/server/VibratorService;->mContext:Landroid/content/Context;
  3562.  
  3563. const-string v3, "android.permission.DUMP"
  3564.  
  3565. invoke-virtual {v2, v3}, Landroid/content/Context;->checkCallingOrSelfPermission(Ljava/lang/String;)I
  3566.  
  3567. move-result v2
  3568.  
  3569. if-eqz v2, :cond_0
  3570.  
  3571. new-instance v2, Ljava/lang/StringBuilder;
  3572.  
  3573. invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
  3574.  
  3575. const-string v3, "Permission Denial: can\'t dump vibrator service from from pid="
  3576.  
  3577. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  3578.  
  3579. move-result-object v2
  3580.  
  3581. invoke-static {}, Landroid/os/Binder;->getCallingPid()I
  3582.  
  3583. move-result v3
  3584.  
  3585. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  3586.  
  3587. move-result-object v2
  3588.  
  3589. const-string v3, ", uid="
  3590.  
  3591. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  3592.  
  3593. move-result-object v2
  3594.  
  3595. invoke-static {}, Landroid/os/Binder;->getCallingUid()I
  3596.  
  3597. move-result v3
  3598.  
  3599. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  3600.  
  3601. move-result-object v2
  3602.  
  3603. invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  3604.  
  3605. move-result-object v2
  3606.  
  3607. invoke-virtual {p2, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
  3608.  
  3609. :goto_0
  3610. return-void
  3611.  
  3612. :cond_0
  3613. const-string v2, "Previous vibrations:"
  3614.  
  3615. invoke-virtual {p2, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
  3616.  
  3617. iget-object v3, p0, Lcom/android/server/VibratorService;->mVibrations:Ljava/util/LinkedList;
  3618.  
  3619. monitor-enter v3
  3620.  
  3621. :try_start_0
  3622. iget-object v2, p0, Lcom/android/server/VibratorService;->mPreviousVibrations:Ljava/util/LinkedList;
  3623.  
  3624. invoke-virtual {v2}, Ljava/util/LinkedList;->iterator()Ljava/util/Iterator;
  3625.  
  3626. move-result-object v0
  3627.  
  3628. :goto_1
  3629. invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
  3630.  
  3631. move-result v2
  3632.  
  3633. if-eqz v2, :cond_1
  3634.  
  3635. invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
  3636.  
  3637. move-result-object v1
  3638.  
  3639. check-cast v1, Lcom/android/server/VibratorService$VibrationInfo;
  3640.  
  3641. const-string v2, " "
  3642.  
  3643. invoke-virtual {p2, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
  3644.  
  3645. invoke-virtual {v1}, Lcom/android/server/VibratorService$VibrationInfo;->toString()Ljava/lang/String;
  3646.  
  3647. move-result-object v2
  3648.  
  3649. invoke-virtual {p2, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
  3650.  
  3651. goto :goto_1
  3652.  
  3653. :catchall_0
  3654. move-exception v2
  3655.  
  3656. monitor-exit v3
  3657. :try_end_0
  3658. .catchall {:try_start_0 .. :try_end_0} :catchall_0
  3659.  
  3660. throw v2
  3661.  
  3662. :cond_1
  3663. :try_start_1
  3664. monitor-exit v3
  3665. :try_end_1
  3666. .catchall {:try_start_1 .. :try_end_1} :catchall_0
  3667.  
  3668. const-string v2, "Current Info:"
  3669.  
  3670. invoke-virtual {p2, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
  3671.  
  3672. new-instance v2, Ljava/lang/StringBuilder;
  3673.  
  3674. invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
  3675.  
  3676. const-string v3, " mLowPowerMode = "
  3677.  
  3678. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  3679.  
  3680. move-result-object v2
  3681.  
  3682. iget-boolean v3, p0, Lcom/android/server/VibratorService;->mLowPowerMode:Z
  3683.  
  3684. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
  3685.  
  3686. move-result-object v2
  3687.  
  3688. invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  3689.  
  3690. move-result-object v2
  3691.  
  3692. invoke-virtual {p2, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
  3693.  
  3694. new-instance v2, Ljava/lang/StringBuilder;
  3695.  
  3696. invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
  3697.  
  3698. const-string v3, " mTouchMagnitude = "
  3699.  
  3700. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  3701.  
  3702. move-result-object v2
  3703.  
  3704. iget v3, p0, Lcom/android/server/VibratorService;->mTouchMagnitude:I
  3705.  
  3706. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  3707.  
  3708. move-result-object v2
  3709.  
  3710. invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  3711.  
  3712. move-result-object v2
  3713.  
  3714. invoke-virtual {p2, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
  3715.  
  3716. new-instance v2, Ljava/lang/StringBuilder;
  3717.  
  3718. invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
  3719.  
  3720. const-string v3, " mCallMagnitude = "
  3721.  
  3722. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  3723.  
  3724. move-result-object v2
  3725.  
  3726. iget v3, p0, Lcom/android/server/VibratorService;->mCallMagnitude:I
  3727.  
  3728. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  3729.  
  3730. move-result-object v2
  3731.  
  3732. invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  3733.  
  3734. move-result-object v2
  3735.  
  3736. invoke-virtual {p2, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
  3737.  
  3738. new-instance v2, Ljava/lang/StringBuilder;
  3739.  
  3740. invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
  3741.  
  3742. const-string v3, " mNotiMagnitude = "
  3743.  
  3744. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  3745.  
  3746. move-result-object v2
  3747.  
  3748. iget v3, p0, Lcom/android/server/VibratorService;->mNotiMagnitude:I
  3749.  
  3750. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  3751.  
  3752. move-result-object v2
  3753.  
  3754. invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  3755.  
  3756. move-result-object v2
  3757.  
  3758. invoke-virtual {p2, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
  3759.  
  3760. new-instance v2, Ljava/lang/StringBuilder;
  3761.  
  3762. invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
  3763.  
  3764. const-string v3, " mDefaultMagnitude = "
  3765.  
  3766. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  3767.  
  3768. move-result-object v2
  3769.  
  3770. iget v3, p0, Lcom/android/server/VibratorService;->mDefaultMagnitude:I
  3771.  
  3772. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  3773.  
  3774. move-result-object v2
  3775.  
  3776. invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  3777.  
  3778. move-result-object v2
  3779.  
  3780. invoke-virtual {p2, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
  3781.  
  3782. new-instance v2, Ljava/lang/StringBuilder;
  3783.  
  3784. invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
  3785.  
  3786. const-string v3, " mMax = "
  3787.  
  3788. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  3789.  
  3790. move-result-object v2
  3791.  
  3792. iget v3, p0, Lcom/android/server/VibratorService;->mMaxMagnitudeValue:I
  3793.  
  3794. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  3795.  
  3796. move-result-object v2
  3797.  
  3798. invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  3799.  
  3800. move-result-object v2
  3801.  
  3802. invoke-virtual {p2, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
  3803.  
  3804. new-instance v2, Ljava/lang/StringBuilder;
  3805.  
  3806. invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
  3807.  
  3808. const-string v3, " mMin = "
  3809.  
  3810. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  3811.  
  3812. move-result-object v2
  3813.  
  3814. iget v3, p0, Lcom/android/server/VibratorService;->mMinMagnitudeValue:I
  3815.  
  3816. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  3817.  
  3818. move-result-object v2
  3819.  
  3820. invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  3821.  
  3822. move-result-object v2
  3823.  
  3824. invoke-virtual {p2, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
  3825.  
  3826. new-instance v2, Ljava/lang/StringBuilder;
  3827.  
  3828. invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
  3829.  
  3830. const-string v3, " mMType = "
  3831.  
  3832. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  3833.  
  3834. move-result-object v2
  3835.  
  3836. iget v3, p0, Lcom/android/server/VibratorService;->mMotorType:I
  3837.  
  3838. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  3839.  
  3840. move-result-object v2
  3841.  
  3842. invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  3843.  
  3844. move-result-object v2
  3845.  
  3846. invoke-virtual {p2, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
  3847.  
  3848. new-instance v2, Ljava/lang/StringBuilder;
  3849.  
  3850. invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
  3851.  
  3852. const-string v3, " mHMTMount = "
  3853.  
  3854. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  3855.  
  3856. move-result-object v2
  3857.  
  3858. iget-boolean v3, p0, Lcom/android/server/VibratorService;->mHMTMount:Z
  3859.  
  3860. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
  3861.  
  3862. move-result-object v2
  3863.  
  3864. invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  3865.  
  3866. move-result-object v2
  3867.  
  3868. invoke-virtual {p2, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
  3869.  
  3870. new-instance v2, Ljava/lang/StringBuilder;
  3871.  
  3872. invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
  3873.  
  3874. const-string v3, " mHasVibrator = "
  3875.  
  3876. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  3877.  
  3878. move-result-object v2
  3879.  
  3880. iget-boolean v3, p0, Lcom/android/server/VibratorService;->mHasVibrator:Z
  3881.  
  3882. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
  3883.  
  3884. move-result-object v2
  3885.  
  3886. invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  3887.  
  3888. move-result-object v2
  3889.  
  3890. invoke-virtual {p2, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
  3891.  
  3892. new-instance v2, Ljava/lang/StringBuilder;
  3893.  
  3894. invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
  3895.  
  3896. const-string v3, " mIsEnableInt = "
  3897.  
  3898. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  3899.  
  3900. move-result-object v2
  3901.  
  3902. sget-boolean v3, Lcom/android/server/VibratorService;->mIsEnableIntensity:Z
  3903.  
  3904. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
  3905.  
  3906. move-result-object v2
  3907.  
  3908. invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  3909.  
  3910. move-result-object v2
  3911.  
  3912. invoke-virtual {p2, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
  3913.  
  3914. new-instance v2, Ljava/lang/StringBuilder;
  3915.  
  3916. invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
  3917.  
  3918. const-string v3, " mIsSupportedH = "
  3919.  
  3920. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  3921.  
  3922. move-result-object v2
  3923.  
  3924. sget-boolean v3, Lcom/android/server/VibratorService;->mIsHapticSupported:Z
  3925.  
  3926. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
  3927.  
  3928. move-result-object v2
  3929.  
  3930. invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  3931.  
  3932. move-result-object v2
  3933.  
  3934. invoke-virtual {p2, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
  3935.  
  3936. new-instance v2, Ljava/lang/StringBuilder;
  3937.  
  3938. invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
  3939.  
  3940. const-string v3, " mIsSupportedF = "
  3941.  
  3942. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  3943.  
  3944. move-result-object v2
  3945.  
  3946. iget-boolean v3, p0, Lcom/android/server/VibratorService;->mIsFrequencySupported:Z
  3947.  
  3948. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
  3949.  
  3950. move-result-object v2
  3951.  
  3952. invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  3953.  
  3954. move-result-object v2
  3955.  
  3956. invoke-virtual {p2, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
  3957.  
  3958. new-instance v2, Ljava/lang/StringBuilder;
  3959.  
  3960. invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
  3961.  
  3962. const-string v3, " USE_SET_MAX_MAGNITUE = "
  3963.  
  3964. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  3965.  
  3966. move-result-object v2
  3967.  
  3968. sget-boolean v3, Lcom/android/server/VibratorService;->USE_SET_MAX_MAGNITUE:Z
  3969.  
  3970. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
  3971.  
  3972. move-result-object v2
  3973.  
  3974. invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  3975.  
  3976. move-result-object v2
  3977.  
  3978. invoke-virtual {p2, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
  3979.  
  3980. goto/16 :goto_0
  3981. .end method
  3982.  
  3983. .method public getMagnitude(Ljava/lang/String;)I
  3984. .locals 3
  3985.  
  3986. invoke-static {p1}, Landroid/os/Vibrator$MagnitudeTypes;->valueOf(Ljava/lang/String;)Landroid/os/Vibrator$MagnitudeTypes;
  3987.  
  3988. move-result-object v0
  3989.  
  3990. sget-object v1, Lcom/android/server/VibratorService$5;->$SwitchMap$android$os$Vibrator$MagnitudeTypes:[I
  3991.  
  3992. invoke-virtual {v0}, Landroid/os/Vibrator$MagnitudeTypes;->ordinal()I
  3993.  
  3994. move-result v2
  3995.  
  3996. aget v1, v1, v2
  3997.  
  3998. packed-switch v1, :pswitch_data_0
  3999.  
  4000. const/4 v1, 0x0
  4001.  
  4002. :goto_0
  4003. return v1
  4004.  
  4005. :pswitch_0
  4006. iget v1, p0, Lcom/android/server/VibratorService;->mTouchMagnitude:I
  4007.  
  4008. goto :goto_0
  4009.  
  4010. :pswitch_1
  4011. iget v1, p0, Lcom/android/server/VibratorService;->mNotiMagnitude:I
  4012.  
  4013. goto :goto_0
  4014.  
  4015. :pswitch_2
  4016. iget v1, p0, Lcom/android/server/VibratorService;->mCallMagnitude:I
  4017.  
  4018. goto :goto_0
  4019.  
  4020. :pswitch_3
  4021. invoke-virtual {p0}, Lcom/android/server/VibratorService;->getMaxMagnitude()I
  4022.  
  4023. move-result v1
  4024.  
  4025. goto :goto_0
  4026.  
  4027. :pswitch_4
  4028. invoke-direct {p0}, Lcom/android/server/VibratorService;->getMinMagnitude()I
  4029.  
  4030. move-result v1
  4031.  
  4032. goto :goto_0
  4033.  
  4034. :pswitch_data_0
  4035. .packed-switch 0x1
  4036. :pswitch_0
  4037. :pswitch_1
  4038. :pswitch_2
  4039. :pswitch_3
  4040. :pswitch_4
  4041. .end packed-switch
  4042. .end method
  4043.  
  4044. .method public getMaxMagnitude()I
  4045. .locals 5
  4046.  
  4047. iget v1, p0, Lcom/android/server/VibratorService;->mMaxMagnitudeValue:I
  4048.  
  4049. :try_start_0
  4050. sget-object v2, Lcom/android/server/VibratorService;->LEVEL_TO_MAGNITUDE:[I
  4051.  
  4052. sget-object v3, Lcom/android/server/VibratorService;->LEVEL_TO_MAGNITUDE:[I
  4053.  
  4054. array-length v3, v3
  4055.  
  4056. add-int/lit8 v3, v3, -0x1
  4057.  
  4058. aget v1, v2, v3
  4059. :try_end_0
  4060. .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
  4061.  
  4062. :goto_0
  4063. return v1
  4064.  
  4065. :catch_0
  4066. move-exception v0
  4067.  
  4068. const-string v2, "VibratorService"
  4069.  
  4070. new-instance v3, Ljava/lang/StringBuilder;
  4071.  
  4072. invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
  4073.  
  4074. const-string v4, "Default magnitude = "
  4075.  
  4076. invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  4077.  
  4078. move-result-object v3
  4079.  
  4080. iget v4, p0, Lcom/android/server/VibratorService;->mMaxMagnitudeValue:I
  4081.  
  4082. invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  4083.  
  4084. move-result-object v3
  4085.  
  4086. invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  4087.  
  4088. move-result-object v3
  4089.  
  4090. invoke-static {v2, v3}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
  4091.  
  4092. goto :goto_0
  4093. .end method
  4094.  
  4095. .method public getMotorType()I
  4096. .locals 3
  4097.  
  4098. sget-boolean v0, Lcom/android/server/VibratorService;->SAFE_DEBUG:Z
  4099.  
  4100. if-eqz v0, :cond_0
  4101.  
  4102. const-string v0, "VibratorService"
  4103.  
  4104. new-instance v1, Ljava/lang/StringBuilder;
  4105.  
  4106. invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
  4107.  
  4108. const-string/jumbo v2, "getMotorType() : "
  4109.  
  4110. invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  4111.  
  4112. move-result-object v1
  4113.  
  4114. iget v2, p0, Lcom/android/server/VibratorService;->mMotorType:I
  4115.  
  4116. invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  4117.  
  4118. move-result-object v1
  4119.  
  4120. invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  4121.  
  4122. move-result-object v1
  4123.  
  4124. invoke-static {v0, v1}, Landroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;)I
  4125.  
  4126. :cond_0
  4127. iget v0, p0, Lcom/android/server/VibratorService;->mMotorType:I
  4128.  
  4129. return v0
  4130. .end method
  4131.  
  4132. .method public hasVibrator()Z
  4133. .locals 4
  4134.  
  4135. invoke-direct {p0}, Lcom/android/server/VibratorService;->doVibratorExists()Z
  4136.  
  4137. move-result v0
  4138.  
  4139. iput-boolean v0, p0, Lcom/android/server/VibratorService;->mHasVibrator:Z
  4140.  
  4141. sget-boolean v0, Lcom/android/server/VibratorService;->SAFE_DEBUG:Z
  4142.  
  4143. if-eqz v0, :cond_0
  4144.  
  4145. const-string v0, "VibratorService"
  4146.  
  4147. new-instance v1, Ljava/lang/StringBuilder;
  4148.  
  4149. invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
  4150.  
  4151. const-string/jumbo v2, "hasVibrator : "
  4152.  
  4153. invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  4154.  
  4155. move-result-object v1
  4156.  
  4157. iget-boolean v2, p0, Lcom/android/server/VibratorService;->mHasVibrator:Z
  4158.  
  4159. invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
  4160.  
  4161. move-result-object v1
  4162.  
  4163. const-string v2, ", mIsEnableIntensity: "
  4164.  
  4165. invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  4166.  
  4167. move-result-object v1
  4168.  
  4169. sget-boolean v2, Lcom/android/server/VibratorService;->mIsEnableIntensity:Z
  4170.  
  4171. invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
  4172.  
  4173. move-result-object v1
  4174.  
  4175. const-string v2, ", mIsHSupported: "
  4176.  
  4177. invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  4178.  
  4179. move-result-object v1
  4180.  
  4181. sget-boolean v2, Lcom/android/server/VibratorService;->mIsHapticSupported:Z
  4182.  
  4183. invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
  4184.  
  4185. move-result-object v1
  4186.  
  4187. invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  4188.  
  4189. move-result-object v1
  4190.  
  4191. invoke-static {v0, v1}, Landroid/util/Slog;->v(Ljava/lang/String;Ljava/lang/String;)I
  4192.  
  4193. :cond_0
  4194. iget-object v1, p0, Lcom/android/server/VibratorService;->mVibrations:Ljava/util/LinkedList;
  4195.  
  4196. monitor-enter v1
  4197.  
  4198. :try_start_0
  4199. iget-object v0, p0, Lcom/android/server/VibratorService;->mCurrentVibration:Lcom/android/server/VibratorService$Vibration;
  4200.  
  4201. if-eqz v0, :cond_1
  4202.  
  4203. const-string v0, "VibratorService"
  4204.  
  4205. const-string v2, "***** Current vibration info *****"
  4206.  
  4207. invoke-static {v0, v2}, Landroid/util/Slog;->v(Ljava/lang/String;Ljava/lang/String;)I
  4208.  
  4209. iget-object v0, p0, Lcom/android/server/VibratorService;->mCurrentVibration:Lcom/android/server/VibratorService$Vibration;
  4210.  
  4211. invoke-virtual {v0}, Lcom/android/server/VibratorService$Vibration;->printInfo()V
  4212.  
  4213. iget-object v0, p0, Lcom/android/server/VibratorService;->mVibrations:Ljava/util/LinkedList;
  4214.  
  4215. invoke-virtual {v0}, Ljava/util/LinkedList;->isEmpty()Z
  4216.  
  4217. move-result v0
  4218.  
  4219. if-nez v0, :cond_1
  4220.  
  4221. const-string v0, "VibratorService"
  4222.  
  4223. new-instance v2, Ljava/lang/StringBuilder;
  4224.  
  4225. invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
  4226.  
  4227. const-string/jumbo v3, "mVibrations.size() : "
  4228.  
  4229. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  4230.  
  4231. move-result-object v2
  4232.  
  4233. iget-object v3, p0, Lcom/android/server/VibratorService;->mVibrations:Ljava/util/LinkedList;
  4234.  
  4235. invoke-virtual {v3}, Ljava/util/LinkedList;->size()I
  4236.  
  4237. move-result v3
  4238.  
  4239. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  4240.  
  4241. move-result-object v2
  4242.  
  4243. invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  4244.  
  4245. move-result-object v2
  4246.  
  4247. invoke-static {v0, v2}, Landroid/util/Slog;->v(Ljava/lang/String;Ljava/lang/String;)I
  4248.  
  4249. const-string v0, "VibratorService"
  4250.  
  4251. new-instance v2, Ljava/lang/StringBuilder;
  4252.  
  4253. invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
  4254.  
  4255. const-string v3, "Last package that started the wakelock : "
  4256.  
  4257. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  4258.  
  4259. move-result-object v2
  4260.  
  4261. iget-object v3, p0, Lcom/android/server/VibratorService;->mLastStartWakeLock:Ljava/lang/String;
  4262.  
  4263. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  4264.  
  4265. move-result-object v2
  4266.  
  4267. invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  4268.  
  4269. move-result-object v2
  4270.  
  4271. invoke-static {v0, v2}, Landroid/util/Slog;->v(Ljava/lang/String;Ljava/lang/String;)I
  4272.  
  4273. const-string v0, "VibratorService"
  4274.  
  4275. new-instance v2, Ljava/lang/StringBuilder;
  4276.  
  4277. invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
  4278.  
  4279. const-string v3, "Last package that ended the wakelock : "
  4280.  
  4281. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  4282.  
  4283. move-result-object v2
  4284.  
  4285. iget-object v3, p0, Lcom/android/server/VibratorService;->mLastEndWakeLock:Ljava/lang/String;
  4286.  
  4287. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  4288.  
  4289. move-result-object v2
  4290.  
  4291. invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  4292.  
  4293. move-result-object v2
  4294.  
  4295. invoke-static {v0, v2}, Landroid/util/Slog;->v(Ljava/lang/String;Ljava/lang/String;)I
  4296.  
  4297. :cond_1
  4298. monitor-exit v1
  4299. :try_end_0
  4300. .catchall {:try_start_0 .. :try_end_0} :catchall_0
  4301.  
  4302. iget-boolean v0, p0, Lcom/android/server/VibratorService;->mHasVibrator:Z
  4303.  
  4304. return v0
  4305.  
  4306. :catchall_0
  4307. move-exception v0
  4308.  
  4309. :try_start_1
  4310. monitor-exit v1
  4311. :try_end_1
  4312. .catchall {:try_start_1 .. :try_end_1} :catchall_0
  4313.  
  4314. throw v0
  4315. .end method
  4316.  
  4317. .method public isEnableIntensity()Z
  4318. .locals 3
  4319.  
  4320. sget-boolean v0, Lcom/android/server/VibratorService;->SAFE_DEBUG:Z
  4321.  
  4322. if-eqz v0, :cond_0
  4323.  
  4324. const-string v0, "VibratorService"
  4325.  
  4326. new-instance v1, Ljava/lang/StringBuilder;
  4327.  
  4328. invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
  4329.  
  4330. const-string/jumbo v2, "isEnableIntensity() : "
  4331.  
  4332. invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  4333.  
  4334. move-result-object v1
  4335.  
  4336. sget-boolean v2, Lcom/android/server/VibratorService;->mIsHapticSupported:Z
  4337.  
  4338. invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
  4339.  
  4340. move-result-object v1
  4341.  
  4342. invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  4343.  
  4344. move-result-object v1
  4345.  
  4346. invoke-static {v0, v1}, Landroid/util/Slog;->v(Ljava/lang/String;Ljava/lang/String;)I
  4347.  
  4348. :cond_0
  4349. sget-boolean v0, Lcom/android/server/VibratorService;->mIsHapticSupported:Z
  4350.  
  4351. return v0
  4352. .end method
  4353.  
  4354. .method public onInputDeviceAdded(I)V
  4355. .locals 0
  4356.  
  4357. invoke-direct {p0}, Lcom/android/server/VibratorService;->updateInputDeviceVibrators()V
  4358.  
  4359. return-void
  4360. .end method
  4361.  
  4362. .method public onInputDeviceChanged(I)V
  4363. .locals 0
  4364.  
  4365. invoke-direct {p0}, Lcom/android/server/VibratorService;->updateInputDeviceVibrators()V
  4366.  
  4367. return-void
  4368. .end method
  4369.  
  4370. .method public onInputDeviceRemoved(I)V
  4371. .locals 0
  4372.  
  4373. invoke-direct {p0}, Lcom/android/server/VibratorService;->updateInputDeviceVibrators()V
  4374.  
  4375. return-void
  4376. .end method
  4377.  
  4378. .method public readFromFile(J)I
  4379. .locals 11
  4380.  
  4381. const/4 v7, -0x1
  4382.  
  4383. const/4 v4, 0x0
  4384.  
  4385. new-instance v3, Ljava/io/File;
  4386.  
  4387. const-string v8, "/dev/block/param"
  4388.  
  4389. invoke-direct {v3, v8}, Ljava/io/File;-><init>(Ljava/lang/String;)V
  4390.  
  4391. invoke-static {}, Landroid/os/FactoryTest;->isFactoryBinary()Z
  4392.  
  4393. move-result v8
  4394.  
  4395. if-nez v8, :cond_0
  4396.  
  4397. const-string v8, "VibratorService"
  4398.  
  4399. const-string v9, "It\'s not Factory Binary"
  4400.  
  4401. invoke-static {v8, v9}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
  4402.  
  4403. move v6, v7
  4404.  
  4405. :goto_0
  4406. return v6
  4407.  
  4408. :cond_0
  4409. invoke-virtual {v3}, Ljava/io/File;->exists()Z
  4410.  
  4411. move-result v8
  4412.  
  4413. if-nez v8, :cond_1
  4414.  
  4415. const-string v8, "VibratorService"
  4416.  
  4417. const-string v9, "/dev/block/param is not found"
  4418.  
  4419. invoke-static {v8, v9}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
  4420.  
  4421. move v6, v7
  4422.  
  4423. goto :goto_0
  4424.  
  4425. :cond_1
  4426. const/4 v6, -0x1
  4427.  
  4428. :try_start_0
  4429. new-instance v5, Ljava/io/RandomAccessFile;
  4430.  
  4431. new-instance v8, Ljava/io/File;
  4432.  
  4433. const-string v9, "/dev/block/param"
  4434.  
  4435. invoke-direct {v8, v9}, Ljava/io/File;-><init>(Ljava/lang/String;)V
  4436.  
  4437. const-string/jumbo v9, "rw"
  4438.  
  4439. invoke-direct {v5, v8, v9}, Ljava/io/RandomAccessFile;-><init>(Ljava/io/File;Ljava/lang/String;)V
  4440. :try_end_0
  4441. .catch Ljava/io/FileNotFoundException; {:try_start_0 .. :try_end_0} :catch_0
  4442. .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_1
  4443.  
  4444. :try_start_1
  4445. invoke-virtual {v5, p1, p2}, Ljava/io/RandomAccessFile;->seek(J)V
  4446.  
  4447. const/4 v8, 0x4
  4448.  
  4449. new-array v0, v8, [B
  4450.  
  4451. const/4 v8, 0x0
  4452.  
  4453. const/4 v9, 0x4
  4454.  
  4455. invoke-virtual {v5, v0, v8, v9}, Ljava/io/RandomAccessFile;->read([BII)I
  4456.  
  4457. const/4 v8, 0x3
  4458.  
  4459. aget-byte v8, v0, v8
  4460.  
  4461. and-int/lit16 v8, v8, 0xff
  4462.  
  4463. shl-int/lit8 v8, v8, 0x18
  4464.  
  4465. const/4 v9, 0x2
  4466.  
  4467. aget-byte v9, v0, v9
  4468.  
  4469. and-int/lit16 v9, v9, 0xff
  4470.  
  4471. shl-int/lit8 v9, v9, 0x10
  4472.  
  4473. or-int/2addr v8, v9
  4474.  
  4475. const/4 v9, 0x1
  4476.  
  4477. aget-byte v9, v0, v9
  4478.  
  4479. and-int/lit16 v9, v9, 0xff
  4480.  
  4481. shl-int/lit8 v9, v9, 0x8
  4482.  
  4483. or-int/2addr v8, v9
  4484.  
  4485. const/4 v9, 0x0
  4486.  
  4487. aget-byte v9, v0, v9
  4488.  
  4489. and-int/lit16 v9, v9, 0xff
  4490.  
  4491. or-int v6, v8, v9
  4492.  
  4493. const-string v8, "VibratorService"
  4494.  
  4495. new-instance v9, Ljava/lang/StringBuilder;
  4496.  
  4497. invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
  4498.  
  4499. const-string/jumbo v10, "get frequency : "
  4500.  
  4501. invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  4502.  
  4503. move-result-object v9
  4504.  
  4505. invoke-virtual {v9, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  4506.  
  4507. move-result-object v9
  4508.  
  4509. invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  4510.  
  4511. move-result-object v9
  4512.  
  4513. invoke-static {v8, v9}, Landroid/util/Slog;->v(Ljava/lang/String;Ljava/lang/String;)I
  4514.  
  4515. invoke-virtual {v5}, Ljava/io/RandomAccessFile;->close()V
  4516. :try_end_1
  4517. .catch Ljava/io/IOException; {:try_start_1 .. :try_end_1} :catch_3
  4518.  
  4519. move-object v4, v5
  4520.  
  4521. goto :goto_0
  4522.  
  4523. :catch_0
  4524. move-exception v1
  4525.  
  4526. :try_start_2
  4527. invoke-virtual {v1}, Ljava/io/FileNotFoundException;->printStackTrace()V
  4528. :try_end_2
  4529. .catch Ljava/io/IOException; {:try_start_2 .. :try_end_2} :catch_1
  4530.  
  4531. move v6, v7
  4532.  
  4533. goto :goto_0
  4534.  
  4535. :catch_1
  4536. move-exception v1
  4537.  
  4538. :goto_1
  4539. invoke-virtual {v1}, Ljava/io/IOException;->printStackTrace()V
  4540.  
  4541. :try_start_3
  4542. invoke-virtual {v4}, Ljava/io/RandomAccessFile;->close()V
  4543. :try_end_3
  4544. .catch Ljava/lang/Exception; {:try_start_3 .. :try_end_3} :catch_2
  4545.  
  4546. :goto_2
  4547. move v6, v7
  4548.  
  4549. goto :goto_0
  4550.  
  4551. :catch_2
  4552. move-exception v2
  4553.  
  4554. invoke-virtual {v2}, Ljava/lang/Exception;->printStackTrace()V
  4555.  
  4556. goto :goto_2
  4557.  
  4558. :catch_3
  4559. move-exception v1
  4560.  
  4561. move-object v4, v5
  4562.  
  4563. goto :goto_1
  4564. .end method
  4565.  
  4566. .method reloadContentObserver()V
  4567. .locals 9
  4568.  
  4569. const/4 v8, 0x1
  4570.  
  4571. const/4 v7, 0x2
  4572.  
  4573. const/4 v6, -0x2
  4574.  
  4575. sget-boolean v3, Lcom/android/server/VibratorService;->mIsEnableIntensity:Z
  4576.  
  4577. if-eqz v3, :cond_1
  4578.  
  4579. iget-object v3, p0, Lcom/android/server/VibratorService;->mTouchMagnitudeObserver:Lcom/android/server/VibratorService$SecSettingsObserver;
  4580.  
  4581. invoke-virtual {v3}, Lcom/android/server/VibratorService$SecSettingsObserver;->reload()V
  4582.  
  4583. iget-object v3, p0, Lcom/android/server/VibratorService;->mCallMagnitudeObserver:Lcom/android/server/VibratorService$SecSettingsObserver;
  4584.  
  4585. invoke-virtual {v3}, Lcom/android/server/VibratorService$SecSettingsObserver;->reload()V
  4586.  
  4587. iget-object v3, p0, Lcom/android/server/VibratorService;->mNotiMagnitudeObserver:Lcom/android/server/VibratorService$SecSettingsObserver;
  4588.  
  4589. invoke-virtual {v3}, Lcom/android/server/VibratorService$SecSettingsObserver;->reload()V
  4590.  
  4591. sget-object v3, Lcom/android/server/VibratorService;->LEVEL_TO_MAGNITUDE:[I
  4592.  
  4593. array-length v3, v3
  4594.  
  4595. add-int/lit8 v1, v3, -0x1
  4596.  
  4597. sget-object v3, Lcom/android/server/VibratorService;->LEVEL_TO_TOUCH_MAGNITUDE:[I
  4598.  
  4599. array-length v3, v3
  4600.  
  4601. add-int/lit8 v2, v3, -0x1
  4602.  
  4603. if-lt v1, v7, :cond_0
  4604.  
  4605. if-ge v2, v7, :cond_2
  4606.  
  4607. :cond_0
  4608. const-string v3, "VibratorService"
  4609.  
  4610. new-instance v4, Ljava/lang/StringBuilder;
  4611.  
  4612. invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
  4613.  
  4614. const-string/jumbo v5, "magnitudeMaxLevel(reloadContentObserver) : "
  4615.  
  4616. invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  4617.  
  4618. move-result-object v4
  4619.  
  4620. invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  4621.  
  4622. move-result-object v4
  4623.  
  4624. const-string v5, ", touchMagnitudeMaxLevel(reloadContentObserver) : "
  4625.  
  4626. invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  4627.  
  4628. move-result-object v4
  4629.  
  4630. invoke-virtual {v4, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  4631.  
  4632. move-result-object v4
  4633.  
  4634. invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  4635.  
  4636. move-result-object v4
  4637.  
  4638. invoke-static {v3, v4}, Landroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;)I
  4639.  
  4640. :cond_1
  4641. :goto_0
  4642. return-void
  4643.  
  4644. :cond_2
  4645. iget-object v3, p0, Lcom/android/server/VibratorService;->mContentResolver:Landroid/content/ContentResolver;
  4646.  
  4647. sget-object v4, Lcom/android/server/VibratorService;->mTypeURIs:[Ljava/lang/String;
  4648.  
  4649. const/4 v5, 0x0
  4650.  
  4651. aget-object v4, v4, v5
  4652.  
  4653. invoke-static {v3, v4, v2, v6}, Landroid/provider/Settings$System;->getIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)I
  4654.  
  4655. move-result v0
  4656.  
  4657. if-le v0, v2, :cond_3
  4658.  
  4659. :goto_1
  4660. iput v0, p0, Lcom/android/server/VibratorService;->mTouchMagnitude:I
  4661.  
  4662. iget-object v3, p0, Lcom/android/server/VibratorService;->mContentResolver:Landroid/content/ContentResolver;
  4663.  
  4664. sget-object v4, Lcom/android/server/VibratorService;->mTypeURIs:[Ljava/lang/String;
  4665.  
  4666. aget-object v4, v4, v8
  4667.  
  4668. invoke-static {v3, v4, v1, v6}, Landroid/provider/Settings$System;->getIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)I
  4669.  
  4670. move-result v0
  4671.  
  4672. if-le v0, v1, :cond_4
  4673.  
  4674. :goto_2
  4675. iput v0, p0, Lcom/android/server/VibratorService;->mCallMagnitude:I
  4676.  
  4677. iget-object v3, p0, Lcom/android/server/VibratorService;->mContentResolver:Landroid/content/ContentResolver;
  4678.  
  4679. sget-object v4, Lcom/android/server/VibratorService;->mTypeURIs:[Ljava/lang/String;
  4680.  
  4681. aget-object v4, v4, v7
  4682.  
  4683. invoke-static {v3, v4, v1, v6}, Landroid/provider/Settings$System;->getIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)I
  4684.  
  4685. move-result v0
  4686.  
  4687. if-le v0, v1, :cond_5
  4688.  
  4689. :goto_3
  4690. iput v0, p0, Lcom/android/server/VibratorService;->mNotiMagnitude:I
  4691.  
  4692. sget-object v3, Lcom/android/server/VibratorService;->LEVEL_TO_MAGNITUDE:[I
  4693.  
  4694. aget v3, v3, v1
  4695.  
  4696. iput v3, p0, Lcom/android/server/VibratorService;->mMaxMagnitudeValue:I
  4697.  
  4698. sget-object v3, Lcom/android/server/VibratorService;->LEVEL_TO_MAGNITUDE:[I
  4699.  
  4700. aget v3, v3, v8
  4701.  
  4702. iput v3, p0, Lcom/android/server/VibratorService;->mMinMagnitudeValue:I
  4703.  
  4704. sget-boolean v3, Lcom/android/server/VibratorService;->USE_SET_MAX_MAGNITUE:Z
  4705.  
  4706. if-nez v3, :cond_1
  4707.  
  4708. iget v3, p0, Lcom/android/server/VibratorService;->mNotiMagnitude:I
  4709.  
  4710. iput v3, p0, Lcom/android/server/VibratorService;->mDefaultMagnitude:I
  4711.  
  4712. goto :goto_0
  4713.  
  4714. :cond_3
  4715. sget-object v3, Lcom/android/server/VibratorService;->LEVEL_TO_TOUCH_MAGNITUDE:[I
  4716.  
  4717. aget v0, v3, v0
  4718.  
  4719. goto :goto_1
  4720.  
  4721. :cond_4
  4722. sget-object v3, Lcom/android/server/VibratorService;->LEVEL_TO_MAGNITUDE:[I
  4723.  
  4724. aget v0, v3, v0
  4725.  
  4726. goto :goto_2
  4727.  
  4728. :cond_5
  4729. sget-object v3, Lcom/android/server/VibratorService;->LEVEL_TO_MAGNITUDE:[I
  4730.  
  4731. aget v0, v3, v0
  4732.  
  4733. goto :goto_3
  4734. .end method
  4735.  
  4736. .method public resetMagnitude()V
  4737. .locals 2
  4738.  
  4739. iget-object v0, p0, Lcom/android/server/VibratorService;->mContext:Landroid/content/Context;
  4740.  
  4741. const-string v1, "android.permission.VIBRATE"
  4742.  
  4743. invoke-virtual {v0, v1}, Landroid/content/Context;->checkCallingOrSelfPermission(Ljava/lang/String;)I
  4744.  
  4745. move-result v0
  4746.  
  4747. if-eqz v0, :cond_0
  4748.  
  4749. new-instance v0, Ljava/lang/SecurityException;
  4750.  
  4751. const-string v1, "Requires VIBRATE permission"
  4752.  
  4753. invoke-direct {v0, v1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
  4754.  
  4755. throw v0
  4756.  
  4757. :cond_0
  4758. iget v0, p0, Lcom/android/server/VibratorService;->mTempMagnitude:I
  4759.  
  4760. if-gez v0, :cond_1
  4761.  
  4762. :goto_0
  4763. return-void
  4764.  
  4765. :cond_1
  4766. iget v0, p0, Lcom/android/server/VibratorService;->mTempMagnitude:I
  4767.  
  4768. iput v0, p0, Lcom/android/server/VibratorService;->mTouchMagnitude:I
  4769.  
  4770. const/4 v0, -0x1
  4771.  
  4772. iput v0, p0, Lcom/android/server/VibratorService;->mTempMagnitude:I
  4773.  
  4774. goto :goto_0
  4775. .end method
  4776.  
  4777. .method public setMagnitude(I)V
  4778. .locals 2
  4779.  
  4780. iget-object v0, p0, Lcom/android/server/VibratorService;->mContext:Landroid/content/Context;
  4781.  
  4782. const-string v1, "android.permission.VIBRATE"
  4783.  
  4784. invoke-virtual {v0, v1}, Landroid/content/Context;->checkCallingOrSelfPermission(Ljava/lang/String;)I
  4785.  
  4786. move-result v0
  4787.  
  4788. if-eqz v0, :cond_0
  4789.  
  4790. new-instance v0, Ljava/lang/SecurityException;
  4791.  
  4792. const-string v1, "Requires VIBRATE permission"
  4793.  
  4794. invoke-direct {v0, v1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
  4795.  
  4796. throw v0
  4797.  
  4798. :cond_0
  4799. if-gez p1, :cond_2
  4800.  
  4801. const/4 p1, 0x0
  4802.  
  4803. :cond_1
  4804. :goto_0
  4805. iget v0, p0, Lcom/android/server/VibratorService;->mTouchMagnitude:I
  4806.  
  4807. iput v0, p0, Lcom/android/server/VibratorService;->mTempMagnitude:I
  4808.  
  4809. iput p1, p0, Lcom/android/server/VibratorService;->mTouchMagnitude:I
  4810.  
  4811. return-void
  4812.  
  4813. :cond_2
  4814. iget v0, p0, Lcom/android/server/VibratorService;->mMaxMagnitudeValue:I
  4815.  
  4816. if-le p1, v0, :cond_1
  4817.  
  4818. iget p1, p0, Lcom/android/server/VibratorService;->mMaxMagnitudeValue:I
  4819.  
  4820. goto :goto_0
  4821. .end method
  4822.  
  4823. .method public systemReady()V
  4824. .locals 5
  4825.  
  4826. iget-object v0, p0, Lcom/android/server/VibratorService;->mContext:Landroid/content/Context;
  4827.  
  4828. const-string/jumbo v1, "input"
  4829.  
  4830. invoke-virtual {v0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
  4831.  
  4832. move-result-object v0
  4833.  
  4834. check-cast v0, Landroid/hardware/input/InputManager;
  4835.  
  4836. iput-object v0, p0, Lcom/android/server/VibratorService;->mIm:Landroid/hardware/input/InputManager;
  4837.  
  4838. new-instance v0, Lcom/android/server/VibratorService$SettingsObserver;
  4839.  
  4840. iget-object v1, p0, Lcom/android/server/VibratorService;->mH:Landroid/os/Handler;
  4841.  
  4842. invoke-direct {v0, p0, v1}, Lcom/android/server/VibratorService$SettingsObserver;-><init>(Lcom/android/server/VibratorService;Landroid/os/Handler;)V
  4843.  
  4844. iput-object v0, p0, Lcom/android/server/VibratorService;->mSettingObserver:Lcom/android/server/VibratorService$SettingsObserver;
  4845.  
  4846. const-class v0, Landroid/os/PowerManagerInternal;
  4847.  
  4848. invoke-static {v0}, Lcom/android/server/LocalServices;->getService(Ljava/lang/Class;)Ljava/lang/Object;
  4849.  
  4850. move-result-object v0
  4851.  
  4852. check-cast v0, Landroid/os/PowerManagerInternal;
  4853.  
  4854. iput-object v0, p0, Lcom/android/server/VibratorService;->mPowerManagerInternal:Landroid/os/PowerManagerInternal;
  4855.  
  4856. iget-object v0, p0, Lcom/android/server/VibratorService;->mPowerManagerInternal:Landroid/os/PowerManagerInternal;
  4857.  
  4858. new-instance v1, Lcom/android/server/VibratorService$1;
  4859.  
  4860. invoke-direct {v1, p0}, Lcom/android/server/VibratorService$1;-><init>(Lcom/android/server/VibratorService;)V
  4861.  
  4862. invoke-virtual {v0, v1}, Landroid/os/PowerManagerInternal;->registerLowPowerModeObserver(Landroid/os/PowerManagerInternal$LowPowerModeListener;)V
  4863.  
  4864. iget-object v0, p0, Lcom/android/server/VibratorService;->mContext:Landroid/content/Context;
  4865.  
  4866. invoke-virtual {v0}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
  4867.  
  4868. move-result-object v0
  4869.  
  4870. const-string/jumbo v1, "vibrate_input_devices"
  4871.  
  4872. invoke-static {v1}, Landroid/provider/Settings$System;->getUriFor(Ljava/lang/String;)Landroid/net/Uri;
  4873.  
  4874. move-result-object v1
  4875.  
  4876. const/4 v2, 0x1
  4877.  
  4878. iget-object v3, p0, Lcom/android/server/VibratorService;->mSettingObserver:Lcom/android/server/VibratorService$SettingsObserver;
  4879.  
  4880. const/4 v4, -0x1
  4881.  
  4882. invoke-virtual {v0, v1, v2, v3, v4}, Landroid/content/ContentResolver;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;I)V
  4883.  
  4884. iget-object v0, p0, Lcom/android/server/VibratorService;->mContext:Landroid/content/Context;
  4885.  
  4886. new-instance v1, Lcom/android/server/VibratorService$2;
  4887.  
  4888. invoke-direct {v1, p0}, Lcom/android/server/VibratorService$2;-><init>(Lcom/android/server/VibratorService;)V
  4889.  
  4890. new-instance v2, Landroid/content/IntentFilter;
  4891.  
  4892. const-string v3, "android.intent.action.USER_SWITCHED"
  4893.  
  4894. invoke-direct {v2, v3}, Landroid/content/IntentFilter;-><init>(Ljava/lang/String;)V
  4895.  
  4896. const/4 v3, 0x0
  4897.  
  4898. iget-object v4, p0, Lcom/android/server/VibratorService;->mH:Landroid/os/Handler;
  4899.  
  4900. invoke-virtual {v0, v1, v2, v3, v4}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;Ljava/lang/String;Landroid/os/Handler;)Landroid/content/Intent;
  4901.  
  4902. invoke-direct {p0}, Lcom/android/server/VibratorService;->updateInputDeviceVibrators()V
  4903.  
  4904. return-void
  4905. .end method
  4906.  
  4907. .method public vibrate(ILjava/lang/String;JILandroid/os/IBinder;)V
  4908. .locals 15
  4909.  
  4910. iget-object v2, p0, Lcom/android/server/VibratorService;->mContext:Landroid/content/Context;
  4911.  
  4912. const-string v4, "android.permission.VIBRATE"
  4913.  
  4914. invoke-virtual {v2, v4}, Landroid/content/Context;->checkCallingOrSelfPermission(Ljava/lang/String;)I
  4915.  
  4916. move-result v2
  4917.  
  4918. if-eqz v2, :cond_0
  4919.  
  4920. new-instance v2, Ljava/lang/SecurityException;
  4921.  
  4922. const-string v4, "Requires VIBRATE permission"
  4923.  
  4924. invoke-direct {v2, v4}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
  4925.  
  4926. throw v2
  4927.  
  4928. :cond_0
  4929. iget-boolean v2, p0, Lcom/android/server/VibratorService;->mHMTMount:Z
  4930.  
  4931. if-eqz v2, :cond_1
  4932.  
  4933. const-string v2, "VibratorService"
  4934.  
  4935. const-string/jumbo v4, "vibrate() : HMTMount is TRUE. "
  4936.  
  4937. invoke-static {v2, v4}, Landroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;)I
  4938.  
  4939. :goto_0
  4940. return-void
  4941.  
  4942. :cond_1
  4943. invoke-direct/range {p0 .. p1}, Lcom/android/server/VibratorService;->verifyIncomingUid(I)V
  4944.  
  4945. const-wide/16 v4, 0x0
  4946.  
  4947. cmp-long v2, p3, v4
  4948.  
  4949. if-lez v2, :cond_2
  4950.  
  4951. iget-object v2, p0, Lcom/android/server/VibratorService;->mCurrentVibration:Lcom/android/server/VibratorService$Vibration;
  4952.  
  4953. if-eqz v2, :cond_3
  4954.  
  4955. iget-object v2, p0, Lcom/android/server/VibratorService;->mCurrentVibration:Lcom/android/server/VibratorService$Vibration;
  4956.  
  4957. move-wide/from16 v0, p3
  4958.  
  4959. invoke-virtual {v2, v0, v1}, Lcom/android/server/VibratorService$Vibration;->hasLongerTimeout(J)Z
  4960.  
  4961. move-result v2
  4962.  
  4963. if-eqz v2, :cond_3
  4964.  
  4965. :cond_2
  4966. const-string v2, "VibratorService"
  4967.  
  4968. new-instance v4, Ljava/lang/StringBuilder;
  4969.  
  4970. invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
  4971.  
  4972. const-string/jumbo v5, "vibrate - package: "
  4973.  
  4974. invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  4975.  
  4976. move-result-object v4
  4977.  
  4978. move-object/from16 v0, p2
  4979.  
  4980. invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  4981.  
  4982. move-result-object v4
  4983.  
  4984. const-string v5, ", mCurrentVibration.hasLongerTimeout(milliseconds) => true"
  4985.  
  4986. invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  4987.  
  4988. move-result-object v4
  4989.  
  4990. invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  4991.  
  4992. move-result-object v4
  4993.  
  4994. invoke-static {v2, v4}, Landroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;)I
  4995.  
  4996. goto :goto_0
  4997.  
  4998. :cond_3
  4999. const-string v2, "VibratorService"
  5000.  
  5001. new-instance v4, Ljava/lang/StringBuilder;
  5002.  
  5003. invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
  5004.  
  5005. const-string/jumbo v5, "vibrate - package: "
  5006.  
  5007. invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  5008.  
  5009. move-result-object v4
  5010.  
  5011. move-object/from16 v0, p2
  5012.  
  5013. invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  5014.  
  5015. move-result-object v4
  5016.  
  5017. const-string v5, ", ms: "
  5018.  
  5019. invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  5020.  
  5021. move-result-object v4
  5022.  
  5023. move-wide/from16 v0, p3
  5024.  
  5025. invoke-virtual {v4, v0, v1}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
  5026.  
  5027. move-result-object v4
  5028.  
  5029. const-string v5, ", token: "
  5030.  
  5031. invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  5032.  
  5033. move-result-object v4
  5034.  
  5035. move-object/from16 v0, p6
  5036.  
  5037. invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
  5038.  
  5039. move-result-object v4
  5040.  
  5041. invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  5042.  
  5043. move-result-object v4
  5044.  
  5045. invoke-static {v2, v4}, Landroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;)I
  5046.  
  5047. new-instance v3, Lcom/android/server/VibratorService$Vibration;
  5048.  
  5049. move-object v4, p0
  5050.  
  5051. move-object/from16 v5, p6
  5052.  
  5053. move-wide/from16 v6, p3
  5054.  
  5055. move/from16 v8, p5
  5056.  
  5057. move/from16 v9, p1
  5058.  
  5059. move-object/from16 v10, p2
  5060.  
  5061. invoke-direct/range {v3 .. v10}, Lcom/android/server/VibratorService$Vibration;-><init>(Lcom/android/server/VibratorService;Landroid/os/IBinder;JIILjava/lang/String;)V
  5062.  
  5063. invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
  5064.  
  5065. move-result-wide v12
  5066.  
  5067. :try_start_0
  5068. iget-object v4, p0, Lcom/android/server/VibratorService;->mVibrations:Ljava/util/LinkedList;
  5069.  
  5070. monitor-enter v4
  5071. :try_end_0
  5072. .catchall {:try_start_0 .. :try_end_0} :catchall_1
  5073.  
  5074. :try_start_1
  5075. move-object/from16 v0, p6
  5076.  
  5077. invoke-direct {p0, v0}, Lcom/android/server/VibratorService;->removeVibrationLocked(Landroid/os/IBinder;)Lcom/android/server/VibratorService$Vibration;
  5078.  
  5079. invoke-direct {p0}, Lcom/android/server/VibratorService;->doCancelVibrateLocked()V
  5080.  
  5081. iput-object v3, p0, Lcom/android/server/VibratorService;->mCurrentVibration:Lcom/android/server/VibratorService$Vibration;
  5082.  
  5083. invoke-direct {p0, v3}, Lcom/android/server/VibratorService;->addToPreviousVibrationsLocked(Lcom/android/server/VibratorService$Vibration;)V
  5084.  
  5085. invoke-direct {p0, v3}, Lcom/android/server/VibratorService;->startVibrationLocked(Lcom/android/server/VibratorService$Vibration;)V
  5086.  
  5087. monitor-exit v4
  5088. :try_end_1
  5089. .catchall {:try_start_1 .. :try_end_1} :catchall_0
  5090.  
  5091. invoke-static {v12, v13}, Landroid/os/Binder;->restoreCallingIdentity(J)V
  5092.  
  5093. goto/16 :goto_0
  5094.  
  5095. :catchall_0
  5096. move-exception v2
  5097.  
  5098. :try_start_2
  5099. monitor-exit v4
  5100. :try_end_2
  5101. .catchall {:try_start_2 .. :try_end_2} :catchall_0
  5102.  
  5103. :try_start_3
  5104. throw v2
  5105. :try_end_3
  5106. .catchall {:try_start_3 .. :try_end_3} :catchall_1
  5107.  
  5108. :catchall_1
  5109. move-exception v2
  5110.  
  5111. invoke-static {v12, v13}, Landroid/os/Binder;->restoreCallingIdentity(J)V
  5112.  
  5113. throw v2
  5114. .end method
  5115.  
  5116. .method public vibrateCommonPatternMagnitude(ILjava/lang/String;IILandroid/os/IBinder;II)V
  5117. .locals 8
  5118.  
  5119. iget-object v0, p0, Lcom/android/server/VibratorService;->mContext:Landroid/content/Context;
  5120.  
  5121. const-string v1, "android.permission.VIBRATE"
  5122.  
  5123. invoke-virtual {v0, v1}, Landroid/content/Context;->checkCallingOrSelfPermission(Ljava/lang/String;)I
  5124.  
  5125. move-result v0
  5126.  
  5127. if-eqz v0, :cond_0
  5128.  
  5129. new-instance v0, Ljava/lang/SecurityException;
  5130.  
  5131. const-string v1, "Requires VIBRATE permission"
  5132.  
  5133. invoke-direct {v0, v1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
  5134.  
  5135. throw v0
  5136.  
  5137. :cond_0
  5138. iget-boolean v0, p0, Lcom/android/server/VibratorService;->mHMTMount:Z
  5139.  
  5140. if-eqz v0, :cond_1
  5141.  
  5142. const-string v0, "VibratorService"
  5143.  
  5144. const-string/jumbo v1, "vibrateCommonPatternMagnitude() : HMTMount is TRUE. "
  5145.  
  5146. invoke-static {v0, v1}, Landroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;)I
  5147.  
  5148. :goto_0
  5149. return-void
  5150.  
  5151. :cond_1
  5152. invoke-direct {p0, p3}, Lcom/android/server/VibratorService;->getCommonPattern(I)[J
  5153.  
  5154. move-result-object v3
  5155.  
  5156. array-length v0, v3
  5157.  
  5158. const/4 v1, 0x2
  5159.  
  5160. if-ne v0, v1, :cond_2
  5161.  
  5162. const/4 v0, 0x0
  5163.  
  5164. aget-wide v0, v3, v0
  5165.  
  5166. const-wide/16 v4, 0x0
  5167.  
  5168. cmp-long v0, v0, v4
  5169.  
  5170. if-gez v0, :cond_2
  5171.  
  5172. const-string v0, "VibratorService"
  5173.  
  5174. new-instance v1, Ljava/lang/StringBuilder;
  5175.  
  5176. invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
  5177.  
  5178. const-string v2, "This "
  5179.  
  5180. invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  5181.  
  5182. move-result-object v1
  5183.  
  5184. invoke-virtual {v1, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  5185.  
  5186. move-result-object v1
  5187.  
  5188. const-string v2, " is not supported."
  5189.  
  5190. invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  5191.  
  5192. move-result-object v1
  5193.  
  5194. invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  5195.  
  5196. move-result-object v1
  5197.  
  5198. invoke-static {v0, v1}, Landroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;)I
  5199.  
  5200. goto :goto_0
  5201.  
  5202. :cond_2
  5203. move-object v0, p0
  5204.  
  5205. move v1, p1
  5206.  
  5207. move-object v2, p2
  5208.  
  5209. move v4, p4
  5210.  
  5211. move v5, p7
  5212.  
  5213. move-object v6, p5
  5214.  
  5215. move v7, p6
  5216.  
  5217. invoke-virtual/range {v0 .. v7}, Lcom/android/server/VibratorService;->vibratePatternMagnitude(ILjava/lang/String;[JIILandroid/os/IBinder;I)V
  5218.  
  5219. goto :goto_0
  5220. .end method
  5221.  
  5222. .method public vibrateMagnitude(ILjava/lang/String;JILandroid/os/IBinder;I)V
  5223. .locals 3
  5224.  
  5225. iget-object v0, p0, Lcom/android/server/VibratorService;->mContext:Landroid/content/Context;
  5226.  
  5227. const-string v1, "android.permission.VIBRATE"
  5228.  
  5229. invoke-virtual {v0, v1}, Landroid/content/Context;->checkCallingOrSelfPermission(Ljava/lang/String;)I
  5230.  
  5231. move-result v0
  5232.  
  5233. if-eqz v0, :cond_0
  5234.  
  5235. new-instance v0, Ljava/lang/SecurityException;
  5236.  
  5237. const-string v1, "Requires VIBRATE permission"
  5238.  
  5239. invoke-direct {v0, v1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
  5240.  
  5241. throw v0
  5242.  
  5243. :cond_0
  5244. iget-boolean v0, p0, Lcom/android/server/VibratorService;->mHMTMount:Z
  5245.  
  5246. if-eqz v0, :cond_1
  5247.  
  5248. const-string v0, "VibratorService"
  5249.  
  5250. const-string/jumbo v1, "vibrateMagnitude() : HMTMount is TRUE. "
  5251.  
  5252. invoke-static {v0, v1}, Landroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;)I
  5253.  
  5254. :goto_0
  5255. return-void
  5256.  
  5257. :cond_1
  5258. const-string v0, "VibratorService"
  5259.  
  5260. new-instance v1, Ljava/lang/StringBuilder;
  5261.  
  5262. invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
  5263.  
  5264. const-string/jumbo v2, "vibrateMagnitude - package: "
  5265.  
  5266. invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  5267.  
  5268. move-result-object v1
  5269.  
  5270. invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  5271.  
  5272. move-result-object v1
  5273.  
  5274. const-string v2, ", token: "
  5275.  
  5276. invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  5277.  
  5278. move-result-object v1
  5279.  
  5280. invoke-virtual {v1, p6}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
  5281.  
  5282. move-result-object v1
  5283.  
  5284. const-string v2, ", mag: "
  5285.  
  5286. invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  5287.  
  5288. move-result-object v1
  5289.  
  5290. invoke-virtual {v1, p7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  5291.  
  5292. move-result-object v1
  5293.  
  5294. const-string v2, ", def: "
  5295.  
  5296. invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  5297.  
  5298. move-result-object v1
  5299.  
  5300. iget v2, p0, Lcom/android/server/VibratorService;->mDefaultMagnitude:I
  5301.  
  5302. invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  5303.  
  5304. move-result-object v1
  5305.  
  5306. invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  5307.  
  5308. move-result-object v1
  5309.  
  5310. invoke-static {v0, v1}, Landroid/util/Slog;->v(Ljava/lang/String;Ljava/lang/String;)I
  5311.  
  5312. const/4 v0, -0x1
  5313.  
  5314. if-ne p7, v0, :cond_3
  5315.  
  5316. iget v0, p0, Lcom/android/server/VibratorService;->mDefaultMagnitude:I
  5317.  
  5318. if-nez v0, :cond_2
  5319.  
  5320. iget-object v1, p0, Lcom/android/server/VibratorService;->mVibrations:Ljava/util/LinkedList;
  5321.  
  5322. monitor-enter v1
  5323.  
  5324. :try_start_0
  5325. invoke-virtual {p0, p6}, Lcom/android/server/VibratorService;->cancelVibrate(Landroid/os/IBinder;)V
  5326.  
  5327. monitor-exit v1
  5328.  
  5329. goto :goto_0
  5330.  
  5331. :catchall_0
  5332. move-exception v0
  5333.  
  5334. monitor-exit v1
  5335. :try_end_0
  5336. .catchall {:try_start_0 .. :try_end_0} :catchall_0
  5337.  
  5338. throw v0
  5339.  
  5340. :cond_2
  5341. invoke-virtual/range {p0 .. p6}, Lcom/android/server/VibratorService;->vibrate(ILjava/lang/String;JILandroid/os/IBinder;)V
  5342.  
  5343. goto :goto_0
  5344.  
  5345. :cond_3
  5346. if-nez p7, :cond_4
  5347.  
  5348. iget-object v1, p0, Lcom/android/server/VibratorService;->mVibrations:Ljava/util/LinkedList;
  5349.  
  5350. monitor-enter v1
  5351.  
  5352. :try_start_1
  5353. invoke-virtual {p0, p6}, Lcom/android/server/VibratorService;->cancelVibrate(Landroid/os/IBinder;)V
  5354.  
  5355. monitor-exit v1
  5356.  
  5357. goto :goto_0
  5358.  
  5359. :catchall_1
  5360. move-exception v0
  5361.  
  5362. monitor-exit v1
  5363. :try_end_1
  5364. .catchall {:try_start_1 .. :try_end_1} :catchall_1
  5365.  
  5366. throw v0
  5367.  
  5368. :cond_4
  5369. invoke-direct/range {p0 .. p7}, Lcom/android/server/VibratorService;->vibrate(ILjava/lang/String;JILandroid/os/IBinder;I)V
  5370.  
  5371. goto :goto_0
  5372. .end method
  5373.  
  5374. .method public vibratePattern(ILjava/lang/String;[JIILandroid/os/IBinder;)V
  5375. .locals 14
  5376.  
  5377. iget-object v3, p0, Lcom/android/server/VibratorService;->mContext:Landroid/content/Context;
  5378.  
  5379. const-string v4, "android.permission.VIBRATE"
  5380.  
  5381. invoke-virtual {v3, v4}, Landroid/content/Context;->checkCallingOrSelfPermission(Ljava/lang/String;)I
  5382.  
  5383. move-result v3
  5384.  
  5385. if-eqz v3, :cond_0
  5386.  
  5387. new-instance v3, Ljava/lang/SecurityException;
  5388.  
  5389. const-string v4, "Requires VIBRATE permission"
  5390.  
  5391. invoke-direct {v3, v4}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
  5392.  
  5393. throw v3
  5394.  
  5395. :cond_0
  5396. iget-boolean v3, p0, Lcom/android/server/VibratorService;->mHMTMount:Z
  5397.  
  5398. if-eqz v3, :cond_1
  5399.  
  5400. const-string v3, "VibratorService"
  5401.  
  5402. const-string/jumbo v4, "vibratePattern() : HMTMount is TRUE. "
  5403.  
  5404. invoke-static {v3, v4}, Landroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;)I
  5405.  
  5406. :goto_0
  5407. return-void
  5408.  
  5409. :cond_1
  5410. invoke-direct {p0, p1}, Lcom/android/server/VibratorService;->verifyIncomingUid(I)V
  5411.  
  5412. invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
  5413.  
  5414. move-result-wide v12
  5415.  
  5416. if-eqz p3, :cond_2
  5417.  
  5418. :try_start_0
  5419. move-object/from16 v0, p3
  5420.  
  5421. array-length v3, v0
  5422.  
  5423. if-eqz v3, :cond_2
  5424.  
  5425. move-object/from16 v0, p3
  5426.  
  5427. invoke-direct {p0, v0}, Lcom/android/server/VibratorService;->isAll0([J)Z
  5428.  
  5429. move-result v3
  5430.  
  5431. if-nez v3, :cond_2
  5432.  
  5433. move-object/from16 v0, p3
  5434.  
  5435. array-length v3, v0
  5436. :try_end_0
  5437. .catchall {:try_start_0 .. :try_end_0} :catchall_1
  5438.  
  5439. move/from16 v0, p4
  5440.  
  5441. if-ge v0, v3, :cond_2
  5442.  
  5443. if-nez p6, :cond_3
  5444.  
  5445. :cond_2
  5446. invoke-static {v12, v13}, Landroid/os/Binder;->restoreCallingIdentity(J)V
  5447.  
  5448. goto :goto_0
  5449.  
  5450. :cond_3
  5451. :try_start_1
  5452. new-instance v2, Lcom/android/server/VibratorService$Vibration;
  5453.  
  5454. move-object v3, p0
  5455.  
  5456. move-object/from16 v4, p6
  5457.  
  5458. move-object/from16 v5, p3
  5459.  
  5460. move/from16 v6, p4
  5461.  
  5462. move/from16 v7, p5
  5463.  
  5464. move v8, p1
  5465.  
  5466. move-object/from16 v9, p2
  5467.  
  5468. invoke-direct/range {v2 .. v9}, Lcom/android/server/VibratorService$Vibration;-><init>(Lcom/android/server/VibratorService;Landroid/os/IBinder;[JIIILjava/lang/String;)V
  5469. :try_end_1
  5470. .catchall {:try_start_1 .. :try_end_1} :catchall_1
  5471.  
  5472. const/4 v3, 0x0
  5473.  
  5474. :try_start_2
  5475. move-object/from16 v0, p6
  5476.  
  5477. invoke-interface {v0, v2, v3}, Landroid/os/IBinder;->linkToDeath(Landroid/os/IBinder$DeathRecipient;I)V
  5478. :try_end_2
  5479. .catch Landroid/os/RemoteException; {:try_start_2 .. :try_end_2} :catch_0
  5480. .catchall {:try_start_2 .. :try_end_2} :catchall_1
  5481.  
  5482. :try_start_3
  5483. iget-object v4, p0, Lcom/android/server/VibratorService;->mVibrations:Ljava/util/LinkedList;
  5484.  
  5485. monitor-enter v4
  5486. :try_end_3
  5487. .catchall {:try_start_3 .. :try_end_3} :catchall_1
  5488.  
  5489. :try_start_4
  5490. move-object/from16 v0, p6
  5491.  
  5492. invoke-direct {p0, v0}, Lcom/android/server/VibratorService;->removeVibrationLocked(Landroid/os/IBinder;)Lcom/android/server/VibratorService$Vibration;
  5493.  
  5494. invoke-direct {p0}, Lcom/android/server/VibratorService;->doCancelVibrateLocked()V
  5495.  
  5496. if-ltz p4, :cond_4
  5497.  
  5498. iget-object v3, p0, Lcom/android/server/VibratorService;->mVibrations:Ljava/util/LinkedList;
  5499.  
  5500. invoke-virtual {v3, v2}, Ljava/util/LinkedList;->addFirst(Ljava/lang/Object;)V
  5501.  
  5502. invoke-direct {p0}, Lcom/android/server/VibratorService;->startNextVibrationLocked()V
  5503.  
  5504. :goto_1
  5505. invoke-direct {p0, v2}, Lcom/android/server/VibratorService;->addToPreviousVibrationsLocked(Lcom/android/server/VibratorService$Vibration;)V
  5506.  
  5507. monitor-exit v4
  5508. :try_end_4
  5509. .catchall {:try_start_4 .. :try_end_4} :catchall_0
  5510.  
  5511. invoke-static {v12, v13}, Landroid/os/Binder;->restoreCallingIdentity(J)V
  5512.  
  5513. goto :goto_0
  5514.  
  5515. :catch_0
  5516. move-exception v10
  5517.  
  5518. invoke-static {v12, v13}, Landroid/os/Binder;->restoreCallingIdentity(J)V
  5519.  
  5520. goto :goto_0
  5521.  
  5522. :cond_4
  5523. :try_start_5
  5524. iput-object v2, p0, Lcom/android/server/VibratorService;->mCurrentVibration:Lcom/android/server/VibratorService$Vibration;
  5525.  
  5526. invoke-direct {p0, v2}, Lcom/android/server/VibratorService;->startVibrationLocked(Lcom/android/server/VibratorService$Vibration;)V
  5527.  
  5528. goto :goto_1
  5529.  
  5530. :catchall_0
  5531. move-exception v3
  5532.  
  5533. monitor-exit v4
  5534. :try_end_5
  5535. .catchall {:try_start_5 .. :try_end_5} :catchall_0
  5536.  
  5537. :try_start_6
  5538. throw v3
  5539. :try_end_6
  5540. .catchall {:try_start_6 .. :try_end_6} :catchall_1
  5541.  
  5542. :catchall_1
  5543. move-exception v3
  5544.  
  5545. invoke-static {v12, v13}, Landroid/os/Binder;->restoreCallingIdentity(J)V
  5546.  
  5547. throw v3
  5548. .end method
  5549.  
  5550. .method public vibratePatternMagnitude(ILjava/lang/String;[JIILandroid/os/IBinder;I)V
  5551. .locals 16
  5552.  
  5553. move-object/from16 v0, p0
  5554.  
  5555. iget-object v3, v0, Lcom/android/server/VibratorService;->mContext:Landroid/content/Context;
  5556.  
  5557. const-string v4, "android.permission.VIBRATE"
  5558.  
  5559. invoke-virtual {v3, v4}, Landroid/content/Context;->checkCallingOrSelfPermission(Ljava/lang/String;)I
  5560.  
  5561. move-result v3
  5562.  
  5563. if-eqz v3, :cond_0
  5564.  
  5565. new-instance v3, Ljava/lang/SecurityException;
  5566.  
  5567. const-string v4, "Requires VIBRATE permission"
  5568.  
  5569. invoke-direct {v3, v4}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
  5570.  
  5571. throw v3
  5572.  
  5573. :cond_0
  5574. move-object/from16 v0, p0
  5575.  
  5576. iget-boolean v3, v0, Lcom/android/server/VibratorService;->mHMTMount:Z
  5577.  
  5578. if-eqz v3, :cond_1
  5579.  
  5580. const-string v3, "VibratorService"
  5581.  
  5582. const-string/jumbo v4, "vibratePatternMagnitude() : HMTMount is TRUE. "
  5583.  
  5584. invoke-static {v3, v4}, Landroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;)I
  5585.  
  5586. :goto_0
  5587. return-void
  5588.  
  5589. :cond_1
  5590. invoke-direct/range {p0 .. p1}, Lcom/android/server/VibratorService;->verifyIncomingUid(I)V
  5591.  
  5592. invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
  5593.  
  5594. move-result-wide v14
  5595.  
  5596. if-eqz p3, :cond_2
  5597.  
  5598. :try_start_0
  5599. move-object/from16 v0, p3
  5600.  
  5601. array-length v3, v0
  5602.  
  5603. if-eqz v3, :cond_2
  5604.  
  5605. move-object/from16 v0, p0
  5606.  
  5607. move-object/from16 v1, p3
  5608.  
  5609. invoke-direct {v0, v1}, Lcom/android/server/VibratorService;->isAll0([J)Z
  5610.  
  5611. move-result v3
  5612.  
  5613. if-nez v3, :cond_2
  5614.  
  5615. move-object/from16 v0, p3
  5616.  
  5617. array-length v3, v0
  5618.  
  5619. move/from16 v0, p4
  5620.  
  5621. if-ge v0, v3, :cond_2
  5622.  
  5623. if-nez p6, :cond_3
  5624.  
  5625. :cond_2
  5626. const-string v3, "VibratorService"
  5627.  
  5628. const-string/jumbo v4, "vibratePatternMagnitude() is failed by illegal argument."
  5629.  
  5630. invoke-static {v3, v4}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
  5631. :try_end_0
  5632. .catchall {:try_start_0 .. :try_end_0} :catchall_1
  5633.  
  5634. invoke-static {v14, v15}, Landroid/os/Binder;->restoreCallingIdentity(J)V
  5635.  
  5636. goto :goto_0
  5637.  
  5638. :cond_3
  5639. :try_start_1
  5640. const-string v3, "VibratorService"
  5641.  
  5642. new-instance v4, Ljava/lang/StringBuilder;
  5643.  
  5644. invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
  5645.  
  5646. const-string/jumbo v5, "vibratePatternMagnitude - package: "
  5647.  
  5648. invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  5649.  
  5650. move-result-object v4
  5651.  
  5652. move-object/from16 v0, p2
  5653.  
  5654. invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  5655.  
  5656. move-result-object v4
  5657.  
  5658. const-string v5, ", repeat: "
  5659.  
  5660. invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  5661.  
  5662. move-result-object v4
  5663.  
  5664. move/from16 v0, p4
  5665.  
  5666. invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  5667.  
  5668. move-result-object v4
  5669.  
  5670. const-string v5, ", token: "
  5671.  
  5672. invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  5673.  
  5674. move-result-object v4
  5675.  
  5676. move-object/from16 v0, p6
  5677.  
  5678. invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
  5679.  
  5680. move-result-object v4
  5681.  
  5682. const-string v5, ", mag: "
  5683.  
  5684. invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  5685.  
  5686. move-result-object v4
  5687.  
  5688. move/from16 v0, p7
  5689.  
  5690. invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  5691.  
  5692. move-result-object v4
  5693.  
  5694. const-string v5, ", def: "
  5695.  
  5696. invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  5697.  
  5698. move-result-object v4
  5699.  
  5700. move-object/from16 v0, p0
  5701.  
  5702. iget v5, v0, Lcom/android/server/VibratorService;->mDefaultMagnitude:I
  5703.  
  5704. invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  5705.  
  5706. move-result-object v4
  5707.  
  5708. invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  5709.  
  5710. move-result-object v4
  5711.  
  5712. invoke-static {v3, v4}, Landroid/util/Slog;->v(Ljava/lang/String;Ljava/lang/String;)I
  5713.  
  5714. const/4 v3, -0x1
  5715.  
  5716. move/from16 v0, p7
  5717.  
  5718. if-ne v0, v3, :cond_5
  5719.  
  5720. move-object/from16 v0, p0
  5721.  
  5722. iget v3, v0, Lcom/android/server/VibratorService;->mDefaultMagnitude:I
  5723.  
  5724. if-nez v3, :cond_4
  5725.  
  5726. move-object/from16 v0, p0
  5727.  
  5728. iget-object v4, v0, Lcom/android/server/VibratorService;->mVibrations:Ljava/util/LinkedList;
  5729.  
  5730. monitor-enter v4
  5731. :try_end_1
  5732. .catchall {:try_start_1 .. :try_end_1} :catchall_1
  5733.  
  5734. :try_start_2
  5735. move-object/from16 v0, p0
  5736.  
  5737. move-object/from16 v1, p6
  5738.  
  5739. invoke-virtual {v0, v1}, Lcom/android/server/VibratorService;->cancelVibrate(Landroid/os/IBinder;)V
  5740.  
  5741. monitor-exit v4
  5742. :try_end_2
  5743. .catchall {:try_start_2 .. :try_end_2} :catchall_0
  5744.  
  5745. invoke-static {v14, v15}, Landroid/os/Binder;->restoreCallingIdentity(J)V
  5746.  
  5747. goto/16 :goto_0
  5748.  
  5749. :catchall_0
  5750. move-exception v3
  5751.  
  5752. :try_start_3
  5753. monitor-exit v4
  5754. :try_end_3
  5755. .catchall {:try_start_3 .. :try_end_3} :catchall_0
  5756.  
  5757. :try_start_4
  5758. throw v3
  5759. :try_end_4
  5760. .catchall {:try_start_4 .. :try_end_4} :catchall_1
  5761.  
  5762. :catchall_1
  5763. move-exception v3
  5764.  
  5765. invoke-static {v14, v15}, Landroid/os/Binder;->restoreCallingIdentity(J)V
  5766.  
  5767. throw v3
  5768.  
  5769. :cond_4
  5770. :try_start_5
  5771. new-instance v2, Lcom/android/server/VibratorService$Vibration;
  5772.  
  5773. move-object/from16 v0, p0
  5774.  
  5775. move-object/from16 v1, p3
  5776.  
  5777. invoke-direct {v0, v1}, Lcom/android/server/VibratorService;->getCommonPatternFrequency([J)I
  5778.  
  5779. move-result v10
  5780.  
  5781. move-object/from16 v3, p0
  5782.  
  5783. move-object/from16 v4, p6
  5784.  
  5785. move-object/from16 v5, p3
  5786.  
  5787. move/from16 v6, p4
  5788.  
  5789. move/from16 v7, p5
  5790.  
  5791. move/from16 v8, p1
  5792.  
  5793. move-object/from16 v9, p2
  5794.  
  5795. invoke-direct/range {v2 .. v10}, Lcom/android/server/VibratorService$Vibration;-><init>(Lcom/android/server/VibratorService;Landroid/os/IBinder;[JIIILjava/lang/String;I)V
  5796. :try_end_5
  5797. .catchall {:try_start_5 .. :try_end_5} :catchall_1
  5798.  
  5799. :goto_1
  5800. const/4 v3, 0x0
  5801.  
  5802. :try_start_6
  5803. move-object/from16 v0, p6
  5804.  
  5805. invoke-interface {v0, v2, v3}, Landroid/os/IBinder;->linkToDeath(Landroid/os/IBinder$DeathRecipient;I)V
  5806. :try_end_6
  5807. .catch Landroid/os/RemoteException; {:try_start_6 .. :try_end_6} :catch_0
  5808. .catchall {:try_start_6 .. :try_end_6} :catchall_1
  5809.  
  5810. :try_start_7
  5811. move-object/from16 v0, p0
  5812.  
  5813. iget-object v4, v0, Lcom/android/server/VibratorService;->mVibrations:Ljava/util/LinkedList;
  5814.  
  5815. monitor-enter v4
  5816. :try_end_7
  5817. .catchall {:try_start_7 .. :try_end_7} :catchall_1
  5818.  
  5819. :try_start_8
  5820. move-object/from16 v0, p0
  5821.  
  5822. move-object/from16 v1, p6
  5823.  
  5824. invoke-direct {v0, v1}, Lcom/android/server/VibratorService;->removeVibrationLocked(Landroid/os/IBinder;)Lcom/android/server/VibratorService$Vibration;
  5825.  
  5826. invoke-direct/range {p0 .. p0}, Lcom/android/server/VibratorService;->doCancelVibrateLocked()V
  5827.  
  5828. if-ltz p4, :cond_7
  5829.  
  5830. move-object/from16 v0, p0
  5831.  
  5832. iget-object v3, v0, Lcom/android/server/VibratorService;->mVibrations:Ljava/util/LinkedList;
  5833.  
  5834. invoke-virtual {v3, v2}, Ljava/util/LinkedList;->addFirst(Ljava/lang/Object;)V
  5835.  
  5836. invoke-direct/range {p0 .. p0}, Lcom/android/server/VibratorService;->startNextVibrationLocked()V
  5837.  
  5838. :goto_2
  5839. move-object/from16 v0, p0
  5840.  
  5841. invoke-direct {v0, v2}, Lcom/android/server/VibratorService;->addToPreviousVibrationsLocked(Lcom/android/server/VibratorService$Vibration;)V
  5842.  
  5843. monitor-exit v4
  5844. :try_end_8
  5845. .catchall {:try_start_8 .. :try_end_8} :catchall_3
  5846.  
  5847. invoke-static {v14, v15}, Landroid/os/Binder;->restoreCallingIdentity(J)V
  5848.  
  5849. goto/16 :goto_0
  5850.  
  5851. :cond_5
  5852. if-nez p7, :cond_6
  5853.  
  5854. :try_start_9
  5855. move-object/from16 v0, p0
  5856.  
  5857. iget-object v4, v0, Lcom/android/server/VibratorService;->mVibrations:Ljava/util/LinkedList;
  5858.  
  5859. monitor-enter v4
  5860. :try_end_9
  5861. .catchall {:try_start_9 .. :try_end_9} :catchall_1
  5862.  
  5863. :try_start_a
  5864. move-object/from16 v0, p0
  5865.  
  5866. move-object/from16 v1, p6
  5867.  
  5868. invoke-virtual {v0, v1}, Lcom/android/server/VibratorService;->cancelVibrate(Landroid/os/IBinder;)V
  5869.  
  5870. monitor-exit v4
  5871. :try_end_a
  5872. .catchall {:try_start_a .. :try_end_a} :catchall_2
  5873.  
  5874. invoke-static {v14, v15}, Landroid/os/Binder;->restoreCallingIdentity(J)V
  5875.  
  5876. goto/16 :goto_0
  5877.  
  5878. :catchall_2
  5879. move-exception v3
  5880.  
  5881. :try_start_b
  5882. monitor-exit v4
  5883. :try_end_b
  5884. .catchall {:try_start_b .. :try_end_b} :catchall_2
  5885.  
  5886. :try_start_c
  5887. throw v3
  5888.  
  5889. :cond_6
  5890. new-instance v2, Lcom/android/server/VibratorService$Vibration;
  5891.  
  5892. move-object/from16 v0, p0
  5893.  
  5894. move-object/from16 v1, p3
  5895.  
  5896. invoke-direct {v0, v1}, Lcom/android/server/VibratorService;->getCommonPatternFrequency([J)I
  5897.  
  5898. move-result v11
  5899.  
  5900. move-object/from16 v3, p0
  5901.  
  5902. move-object/from16 v4, p6
  5903.  
  5904. move-object/from16 v5, p3
  5905.  
  5906. move/from16 v6, p4
  5907.  
  5908. move/from16 v7, p5
  5909.  
  5910. move/from16 v8, p1
  5911.  
  5912. move-object/from16 v9, p2
  5913.  
  5914. move/from16 v10, p7
  5915.  
  5916. invoke-direct/range {v2 .. v11}, Lcom/android/server/VibratorService$Vibration;-><init>(Lcom/android/server/VibratorService;Landroid/os/IBinder;[JIIILjava/lang/String;II)V
  5917. :try_end_c
  5918. .catchall {:try_start_c .. :try_end_c} :catchall_1
  5919.  
  5920. goto :goto_1
  5921.  
  5922. :catch_0
  5923. move-exception v12
  5924.  
  5925. invoke-static {v14, v15}, Landroid/os/Binder;->restoreCallingIdentity(J)V
  5926.  
  5927. goto/16 :goto_0
  5928.  
  5929. :cond_7
  5930. :try_start_d
  5931. move-object/from16 v0, p0
  5932.  
  5933. iput-object v2, v0, Lcom/android/server/VibratorService;->mCurrentVibration:Lcom/android/server/VibratorService$Vibration;
  5934.  
  5935. move-object/from16 v0, p0
  5936.  
  5937. invoke-direct {v0, v2}, Lcom/android/server/VibratorService;->startVibrationLocked(Lcom/android/server/VibratorService$Vibration;)V
  5938.  
  5939. goto :goto_2
  5940.  
  5941. :catchall_3
  5942. move-exception v3
  5943.  
  5944. monitor-exit v4
  5945. :try_end_d
  5946. .catchall {:try_start_d .. :try_end_d} :catchall_3
  5947.  
  5948. :try_start_e
  5949. throw v3
  5950. :try_end_e
  5951. .catchall {:try_start_e .. :try_end_e} :catchall_1
  5952. .end method
  5953.  
  5954. .method public writeToFile(JI)Z
  5955. .locals 11
  5956.  
  5957. const/4 v7, 0x1
  5958.  
  5959. const/4 v6, 0x0
  5960.  
  5961. const/4 v4, 0x0
  5962.  
  5963. new-instance v3, Ljava/io/File;
  5964.  
  5965. const-string v8, "/dev/block/param"
  5966.  
  5967. invoke-direct {v3, v8}, Ljava/io/File;-><init>(Ljava/lang/String;)V
  5968.  
  5969. invoke-static {}, Landroid/os/FactoryTest;->isFactoryBinary()Z
  5970.  
  5971. move-result v8
  5972.  
  5973. if-nez v8, :cond_0
  5974.  
  5975. const-string v7, "VibratorService"
  5976.  
  5977. const-string v8, "It\'s not Factory Binary"
  5978.  
  5979. invoke-static {v7, v8}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
  5980.  
  5981. :goto_0
  5982. return v6
  5983.  
  5984. :cond_0
  5985. invoke-virtual {v3}, Ljava/io/File;->exists()Z
  5986.  
  5987. move-result v8
  5988.  
  5989. if-nez v8, :cond_1
  5990.  
  5991. const-string v7, "VibratorService"
  5992.  
  5993. const-string v8, "/dev/block/param is not found"
  5994.  
  5995. invoke-static {v7, v8}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
  5996.  
  5997. goto :goto_0
  5998.  
  5999. :cond_1
  6000. :try_start_0
  6001. new-instance v5, Ljava/io/RandomAccessFile;
  6002.  
  6003. new-instance v8, Ljava/io/File;
  6004.  
  6005. const-string v9, "/dev/block/param"
  6006.  
  6007. invoke-direct {v8, v9}, Ljava/io/File;-><init>(Ljava/lang/String;)V
  6008.  
  6009. const-string/jumbo v9, "rw"
  6010.  
  6011. invoke-direct {v5, v8, v9}, Ljava/io/RandomAccessFile;-><init>(Ljava/io/File;Ljava/lang/String;)V
  6012. :try_end_0
  6013. .catch Ljava/io/FileNotFoundException; {:try_start_0 .. :try_end_0} :catch_0
  6014. .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_1
  6015.  
  6016. :try_start_1
  6017. invoke-virtual {v5, p1, p2}, Ljava/io/RandomAccessFile;->seek(J)V
  6018.  
  6019. const/4 v8, 0x4
  6020.  
  6021. new-array v0, v8, [B
  6022.  
  6023. const/4 v8, 0x0
  6024.  
  6025. and-int/lit16 v9, p3, 0xff
  6026.  
  6027. int-to-byte v9, v9
  6028.  
  6029. aput-byte v9, v0, v8
  6030.  
  6031. const/4 v8, 0x1
  6032.  
  6033. shr-int/lit8 v9, p3, 0x8
  6034.  
  6035. and-int/lit16 v9, v9, 0xff
  6036.  
  6037. int-to-byte v9, v9
  6038.  
  6039. aput-byte v9, v0, v8
  6040.  
  6041. const/4 v8, 0x2
  6042.  
  6043. shr-int/lit8 v9, p3, 0x10
  6044.  
  6045. and-int/lit16 v9, v9, 0xff
  6046.  
  6047. int-to-byte v9, v9
  6048.  
  6049. aput-byte v9, v0, v8
  6050.  
  6051. const/4 v8, 0x3
  6052.  
  6053. shr-int/lit8 v9, p3, 0x18
  6054.  
  6055. and-int/lit16 v9, v9, 0xff
  6056.  
  6057. int-to-byte v9, v9
  6058.  
  6059. aput-byte v9, v0, v8
  6060.  
  6061. const/4 v8, 0x0
  6062.  
  6063. aget-byte v8, v0, v8
  6064.  
  6065. invoke-virtual {v5, v8}, Ljava/io/RandomAccessFile;->write(I)V
  6066.  
  6067. const/4 v8, 0x1
  6068.  
  6069. aget-byte v8, v0, v8
  6070.  
  6071. invoke-virtual {v5, v8}, Ljava/io/RandomAccessFile;->write(I)V
  6072.  
  6073. const/4 v8, 0x2
  6074.  
  6075. aget-byte v8, v0, v8
  6076.  
  6077. invoke-virtual {v5, v8}, Ljava/io/RandomAccessFile;->write(I)V
  6078.  
  6079. const/4 v8, 0x3
  6080.  
  6081. aget-byte v8, v0, v8
  6082.  
  6083. invoke-virtual {v5, v8}, Ljava/io/RandomAccessFile;->write(I)V
  6084.  
  6085. invoke-virtual {v5}, Ljava/io/RandomAccessFile;->close()V
  6086. :try_end_1
  6087. .catch Ljava/io/IOException; {:try_start_1 .. :try_end_1} :catch_3
  6088.  
  6089. move-object v4, v5
  6090.  
  6091. move v6, v7
  6092.  
  6093. goto :goto_0
  6094.  
  6095. :catch_0
  6096. move-exception v1
  6097.  
  6098. :try_start_2
  6099. invoke-virtual {v1}, Ljava/io/FileNotFoundException;->printStackTrace()V
  6100. :try_end_2
  6101. .catch Ljava/io/IOException; {:try_start_2 .. :try_end_2} :catch_1
  6102.  
  6103. goto :goto_0
  6104.  
  6105. :catch_1
  6106. move-exception v1
  6107.  
  6108. :goto_1
  6109. invoke-virtual {v1}, Ljava/io/IOException;->printStackTrace()V
  6110.  
  6111. :try_start_3
  6112. invoke-virtual {v4}, Ljava/io/RandomAccessFile;->close()V
  6113. :try_end_3
  6114. .catch Ljava/lang/Exception; {:try_start_3 .. :try_end_3} :catch_2
  6115.  
  6116. goto :goto_0
  6117.  
  6118. :catch_2
  6119. move-exception v2
  6120.  
  6121. invoke-virtual {v2}, Ljava/lang/Exception;->printStackTrace()V
  6122.  
  6123. goto :goto_0
  6124.  
  6125. :catch_3
  6126. move-exception v1
  6127.  
  6128. move-object v4, v5
  6129.  
  6130. goto :goto_1
  6131. .end method
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement