我的应用程序检查GPS,而我的应用程序不是活动应用程序,我也在后台使用AVAudioplayer。
它工作正常,并在后台停留,但ios7显示这个红色顶部横幅,当它不是活动应用程序时,我的应用程序名称闪烁。
如何禁用此横幅,使用其他被压扁1行的应用程序会很烦人?
我知道这可以完成,因为我有其他基于GPS的后台应用程序,不会显示这个闪烁的横幅。
编辑 - 所以我们很快找到答案,但解决方案避开了我: 如果我在程序处于活动状态时使用一个调用此方法的按钮停止OpenEars pocketsphinxController的监听,那么当应用程序失去焦点时横幅就会消失:
-(void) mystopListening{
NSLog(@"Tried to stop listening");
[pocketsphinxController stopListening];
}
但是如果我从我的app委托调用相同的方法(我必须在我的app delegate.h中导入我的视图controller.h文件并添加 - (void)nystopListening;在我的视图controller.h中进行以下操作正确执行):
- (void)applicationWillResignActive:(UIApplication *)application{
myViewController * vc = [[myViewController alloc]init];
[vc mystopListening];
}
横幅仍然存在!这有点像ios7已经决定我是一个录音罪魁祸首之前我甚至有机会关掉它。或者,我甚至把它关掉了吗? 我如何有效地做到这一点以及在什么情况下?
编辑 - 事实证明,当mystopListening' mystopListening'时,我并没有真正关闭pocketphinxController。从app delegate调用。我知道这是因为它记录了“试图停止聆听”。当从app delegate调用但pocketphinxController没有回应它的' pocketsphinxDidStopListening'方法。 PocketsphinxController确实调用了它的' pocketsphinxDidStopListening'当我打电话给mystopListening'应用程序处于活动状态时,从按钮开始。
为什么在从app委托调用时,获得了pocketphinxController的响应,我一定是做错了?
谢谢,卡门
答案 0 :(得分:1)
事实证明我并没有真正从我的app delegate调用原始的pockectsphinxcontroller实例。
作为问题的解决方法,我这样做了:
我的应用程序总是有一个计时器运行,所以在我的应用程序委托中,我注意到当应用程序进入非活动状态并返回活动时,我只是设置全局标志,以便我的计时器可以知道应用程序活动状态。然后我的计时器只是使用pockecsphinxcontroller方法来停止并开始收听和瞧,当应用程序不活动时横幅不再。