簡體   English   中英

在iOS 7上內部稱為振動(它已經改變了!)?

[英]What is called internally on iOS 7 for vibration (it has changed!)?

根據iOS中的自定義振動API嗎? (從iOS 5/6開始),AudioServicesPlaySystemSoundWithVibration()在內部用於iOS上的振動。

但是我嘗試使用MobileSubstrate掛接到iOS 7 ... AudioServicesPlaySystemSoundWithVibration < - 似乎永遠不會被稱為AudioServicesPlaySystemSound < - 在切換靜音開關時調用,但沒有其他振動AudioServicesPlayAlertSound < - 似乎從來沒有叫做

所以問題是,從iOS 7開始,內部使用了什么功能(可能仍在AudioToolkit.framework中,但可能沒有)用於振動?

我最近看了一下當你切換靜音開關或連接電源時SpringBoard如何播放振動。 它只使用具有相同參數的AudioServicesPlaySystemSound (用於充電的0x452,用於靜默切換的0x453)靜音開關的方框。 只有在我看到AudioServicesPlaySystemSoundWithVibration調用的地方才會添加公告。

這適用於iOS 5-7。 唯一不同的是iOS 5公告使用AudioServicesPlaySoundWithBehavior因為AudioServicesPlaySystemSoundWithVibration僅在iOS 6開始提供。

UPDATE

Preferences應用程序使用帶有0x547或0x546的AudioServicesPlaySystemSound作為參數。 使用MobileSubstrate無法看到的原因是,Preferences應用程序在運行時使用dlopen加載AudioToolbox框架,然后使用dlsym獲取指向AudioServicesPlaySystemSound指針。 要在這種情況下掛鈎函數,您需要等到Preferences應用程序獲得指針然后才掛鈎它。

更新2

SpringBoard還使用CoreMedia.framework API來發揮振動。 這里的所有參數只是從反匯編看到的猜測。 我對C結構參數和浮點指令沒有多少經驗。

  • FigVibratorPlayVibrationWithDictionary(CFDictionaryRef pattern, BOOL, float) 最后兩個參數對我來說是未知的 - 它們被設置為NO和1.0f。
  • FigVibratorPlayVibration(float, CMTime, CMTime, CTime)

上面的函數最有可能被iOS使用,但還有其他一些值得掛鈎的函數:

  • FigVibratorStartOneShot(float, CMTime)
  • FigVibratorStartRepeating 第一個參數可能是一個浮點數,但不知道其他的 - 它是一些CMTime參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM