实现循环调用系统的震动或者单次调用

来源:互联网 发布:新闻网站数据采集系统 编辑:程序博客网 时间:2024/04/28 09:28

// 震动

- (void)playVibration

{

    // Register the sound completion callback.

    AudioServicesAddSystemSoundCompletion(kSystemSoundID_Vibrate,

                                         NULL, // uses the main run loop

                                         NULL, // uses kCFRunLoopDefaultMode

                                         SystemSoundFinishedPlayingCallback, // the name of our custom callback function

                                          NULL// for user data, but we don't need to do that in this case, so we just pass NULL

                                          );

    

    AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);

}

SystemSoundFinishedPlayingCallback在这里实现震动后的回调
如果是只震动一次。例如聊天消息来了,震动提醒一下

/**

 *  系统铃声播放完成后的回调

 */

void SystemSoundFinishedPlayingCallback(SystemSoundID sound_id,void* user_data)

{

   

 AudioServicesDisposeSystemSoundID(sound_id);

    

}

但如果是循环震动,例如电话响了,一直震动到接为止

/**

 *  系统铃声播放完成后的回调

 */

void SystemSoundFinishedPlayingCallback(SystemSoundID sound_id,void* user_data)

{

    AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);


}


但此时也必须添加一个额外的结束振动的方法,需在结束的时候自己调用

//结束震动

- (void)endSystemSoundPlaying

{

    AudioServicesRemoveSystemSoundCompletion(kSystemSoundID_Vibrate);

}





0 0
原创粉丝点击