标签: in-call

In-Call状态栏如何影响UIViewController的视图大小?

我试图理解__CODE__与a关联的方式__CODE__,__CODE__或者__CODE__在切换通话状态栏时做出反应.
我的麻烦是它们看起来表现不同,这会引起我的副作用.

我做了一个项目,改变了上面3种类型的窗口的根视图控制器,我转储__CODE____CODE__以获取框架坐标.


  • __CODE__

在此输入图像描述

inCall状态OFF:

__PRE__
__PRE__

我理解这一点:当出现在通话状态栏时,UIViewController的视图宽度收缩并且松散20,其y坐标从20移动到40.

那很完美 !更换一个经典的时候我会想到同__CODE__一个__CODE__或一个__CODE__,但事实并非如此!


  • __CODE__

    在此输入图像描述

InCall状态栏OFF

__PRE__
__PRE__

在这种情况下,当切换通话中状态栏时,UINavigationController处理的视图没有更改其帧属性?!(为什么?:()


  • __CODE__

在此输入图像描述 关闭

__PRE__
__PRE__

相同的__CODE__:对__CODE____CODE__似乎并没有受到影响,当门店状态栏切换.


有人可以解释一下,当显示incall状态栏时,此调整大小是如何工作的吗?
我的最终目标是显示__CODE__所显示高于整体__CODE__并显示在通话状态时适当调整大小.不过,我真的不知道该往哪里放这样的观点在视图层次结构:如果我将其添加为的UITabBarController的视图的孩子,因为这一个不向门店状态显示的反应,我的没有反应,以及: (

iphone statusbar uitabbarcontroller in-call

21
推荐指数
1
解决办法
1万
查看次数

在呼叫中的上行链路上发送DTMF音调

我正在开展一个项目,要求我的应用程序能够在活动呼叫期间在语音的上行链路频率上发送DTMF音调.

我的两个条件是:

  • 我们不使用定制的Android平台
  • 我们不需要根电话

我花了几天时间做作业,并且我知道当前的SDK /标准API不支持通话中的DTMF发送.但是,通过使用相关的类com.android.internal.telephony我希望模仿本机Phone应用程序如何做到这一点.我在网站上关注如何使用标准第三方应用程序的内部API.

我还设置了Android OS开发环境,并且能够在模拟器上以调试模式运行Phone应用程序以确定其内部工作方式.

我在股票标准模拟器上尝试了各种方法,但我得到的错误是:

  1. 尝试使用android.uid.phone的sharedUserId基于Phone.apk的源安装重命名的应用程序后,我得到:

    安装错误:INSTALL_FAILED_SHARED_USER_INCOMPATIBLE

    毫无疑问,由于我没有系统证书来签署它.

  2. 在尝试根据Phone.apk来源的相关DTMF音调发送代码编写自定义应用程序后,在设置PhoneFactory时出现以下错误;

    java.lang.SecurityException:Permission Denial:不允许发送广播android.provider.Telephony.SPN_STRINGS_UPDATED.

    毫无疑问,由于Android应用程序没有正确的权限,尽管AndroidManifest.xml设置的权限与Phone.apk相同.

我不知道还能尝试什么.有没有人有什么建议?

先谢谢,西蒙.

android telephony internal dtmf in-call

21
推荐指数
2
解决办法
3万
查看次数

检测用户是否处于通话状态栏

如何检测用户是在通话还是网络共享?我有这样的iAd子视图:

_UIiAD = [[self appdelegate] UIiAD];
_UIiAD.delegate = self;

[_UIiAD setFrame:CGRectMake(0,470,320,50)];
[self.view addSubview:_UIiAD];\
Run Code Online (Sandbox Code Playgroud)

当用户通话时,它设置错误了吗?我怎么检测到这个?

statusbar ios in-call

18
推荐指数
1
解决办法
1万
查看次数

UIViewController In-Call状态栏问题

问题:

在调用状态栏消失后,模态呈现的视图控制器不会向上移动,在顶部留下20px空/透明空间.


正常:没有问题

在此输入图像描述


在电话:没有问题

在此输入图像描述


在呼叫消失后:

在顶部留下20px高的空/透明空间,露出下面的橙色视图.但是,状态栏仍然存在于透明区域上方.导航栏还为状态栏留出空间,它的位置只有20px太低.

在此输入图像描述

在此输入图像描述


  • 基于iOS 10
  • 模态呈现的视图控制器
  • 自定义模态演示
  • 后面的主视图控制器是橙色
  • 不使用Autolayout
  • 当旋转到横向时,20px In-Call Bar离开并仍然留下20px的间隙.
  • 我选择退出在横向方向显示状态栏.(即大多数股票应用程序)

我试着听App代表:

willChangeStatusBarFrame
didChangeStatusBarFrame
Run Code Online (Sandbox Code Playgroud)

还可以查看基于控制器的通知:

UIApplicationWillChangeStatusBarFrame
UIApplicationDidChangeStatusBarFrame
Run Code Online (Sandbox Code Playgroud)

当我为所有上述四种方法记录呈现视图的帧时,帧始终位于(y:0)原点.


更新

查看控制器自定义模式演示

    let storyboard = UIStoryboard(name: "StoryBoard1", bundle: nil)
    self.modalVC = storyboard.instantiateViewController(withIdentifier: "My Modal View Controller") as? MyModalViewController
    self.modalVC!.transitioningDelegate = self
    self.modalVC.modalPresentationStyle = .custom
    self.modalVC.modalPresentationCapturesStatusBarAppearance = true;
    self.present(self.modalVC!, animated: true, completion: nil)


    func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
        let containerView = transitionContext.containerView
        let fromViewController = transitionContext.viewController(forKey: UITransitionContextViewControllerKey.from)
        let toViewController = transitionContext.viewController(forKey: UITransitionContextViewControllerKey.to)
        toViewController!.view.transform = CGAffineTransform(scaleX: 0.001, …
Run Code Online (Sandbox Code Playgroud)

statusbar modalviewcontroller ios in-call swift

17
推荐指数
2
解决办法
7415
查看次数

当调用栏处于活动状态时,自定义UIViewController转换设置错误的topLayoutGuide和bottomLayoutGuide

我有一个UIViewController呈现另一个UIViewController.两个视图控制器都使用topLayoutGuidebottomLayoutGuide使用自动布局.

一切都很好,有和没有通话栏.或者有或没有自定义过渡...

但是,当存在调用栏自定义转换时,我呈现的视图控制器的子视图错误地放下了20px(导致底部的剪切视图).

我查了一下topLayoutGuide,bottomLayoutGuide这是错误的......

这是过渡的代码:

#pragma mark - GETTER
- (CGFloat)presentationTopProgressValue {
    return __fromViewControllerView.y / __containerView.height;
}

#pragma mark - SETTER
- (void)set_context:(id<UIViewControllerContextTransitioning>)_context {
    __context = _context;
    __containerView = [__context containerView];

    __fromViewController = [__context viewControllerForKey:UITransitionContextFromViewControllerKey];
    __fromViewControllerView = [__fromViewController view];
    __toViewController = [__context viewControllerForKey:UITransitionContextToViewControllerKey];
    __toViewControllerView = [__toViewController view];
}

#pragma mark - TRANSITION
- (id<UIViewControllerAnimatedTransitioning>)animationControllerForPresentedController:(UIViewController *)presented presentingController:(UIViewController *)presenting sourceController:(UIViewController *)source {
    return self;
}

#pragma mark …
Run Code Online (Sandbox Code Playgroud)

transitions uiviewcontroller ios in-call autolayout

9
推荐指数
1
解决办法
487
查看次数

如何在设备上的前台app中显示双倍高度绿色状态栏(In-Call)?

这里有很多问题要求在后台显示红色记录条.很明显我应该使用AVAudioSession类别AVAudioSessionCategoryPlayAndRecord.我的问题是,在我的应用程序中进行有效的VOIP呼叫时,如何在前台应用程序中显示绿色的通话栏(或至少红色条)?所以我可以回到调用UI点击状态栏区域,就像Whatsapp或Skype一样.

我已经尝试过的:

  • voip在这个SO答案中建议的Info.plist + + audio中的UIBackgroundModes键和模式(在进行背景时给我一个红色状态栏,但在前景时没有任何内容)setCategory:AVAudioSessionCategoryPlayAndRecordsetActive
  • 以前的+ AVAudioSession+ setMode:AVAudioSessionModeVoiceChat- 没有用
  • kCFStreamNetworkServiceTypeVoIP在pjsip源中将标志设置为套接字并重新编译它 - 没有帮助.此外,自iOS 8以来已弃用.
  • 创建一个单独的套接字,为inputStream/outputStream设置voip标志:( [self.inputStream setProperty:NSStreamNetworkServiceTypeVoIP forKey:NSStreamNetworkServiceType]这里获取示例代码)

使用pjsip进行通话.还有什么可以尝试增加状态栏高度,将所有UI移动?有没有任何标准方法可以做到这一点,或者我应该通过调整根UIWindow并在状态栏下设置另一个绿色UIWindow来自行破解它?


编辑:由于没有找到标准方法的答案,接受@ roman-ermolov答案.对于那些会寻找答案的人,我可以建议您自己做几个选择:

  1. 将根视图控制器包装在容器中,就像Apple的iAdSuite with Storyboards示例一样.以我的示例项目为例.可能是制作那个酒吧的最佳方式.
  2. Hack UINavigationBar height(参见方法) - 尚未用于横向,但可能已经解决
  3. 自己控制主UIWindow的框架,在状态栏下放置另一个UIWindow,其中包含所需的内容.

voip pjsip ios uistatusbar in-call

8
推荐指数
1
解决办法
1227
查看次数

iOS in-call状态栏更新viewcontroller在屏幕上呈现modaly

我有能力提出这个问题,因为经过大量的研究,几乎2天的谷歌搜索,Stack Overflowing等......

我的问题是:我从我的主ViewController呈现ViewController,如下所示:

UINavigationController *navigation = [[UINavigationController alloc] initWithRootViewController:VController];
navigation.transitioningDelegate = self;
navigation.modalPresentationStyle = UIModalPresentationCustom;

[self presentViewController:navigation
                   animated:YES
                 completion:nil];
Run Code Online (Sandbox Code Playgroud)

无论何时iPhone用户正在通话,或者正在使用他或她的手机作为热点,状态栏都会被放大,将我的模拟显示VC推到底部,但原点设置为(0; 0)问题是用户在完成呼叫期间他在我的应用程序状态栏调整到正常大小,但Modal VC没有向上移动.

在此输入图像描述

感谢此通知,我在代码中发现了解这一点:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(statuBarChange:) name:UIApplicationDidChangeStatusBarFrameNotification object:nil];
Run Code Online (Sandbox Code Playgroud)

最糟糕的是框架是核心,原点仍然是(0,0)

有没有办法反映模态提出的vc?没有解雇并再次提出它?

statusbar presentmodalviewcontroller ios in-call autolayout

8
推荐指数
1
解决办法
807
查看次数