2017-08-07 6 views
0

私たちは現在、デバイスロックを無効にしてシングルアプリケーションモードで実行する必要のあるiOSアプリケーションを開発中です。私たちが望むことは、画面が完全に暗くなり、ソケット/ mqttイベントまたはタッチイベントがあるとすぐにディスプレイが明るくなることです。iOSデバイスの表示を完全にオフにするにはどうすればよいですか?

UIScreen.main.brightness = CGFloat(0.0) 

は、我々はそれを達成できるかの方法があります:

すべてが完璧ではない唯一のものは、ディスプレイが使用してオフ完全に電源を入れないということであるこれまでの作品?

+1

これは、最低輝度です。私の心には、黒い背景を持つモーダルビューを設定し、ソケットイベントから情報を取得したら、背景を白に設定し、明るさを希望の定数に設定するだけです。 – Stefan

+0

または、完了ブロックで新しい明るさを設定するアニメーションで消えるUIViewをオーバーレイに設定します。 – Stefan

+0

ちょうどメモとして、私はこれを行い、バックライトはほとんどオフであり、何もそれは非常に長い時間実行されているプロセッサを釘付けしないアプリのモードを持っています。私はしかし、バッテリーの通知を購読することをお勧めしますので、それがプラグインされていないと特定のしきい値未満で終了することができます。 – solenoid

答えて

2

残念ながら、現在の方法はありません。

脱獄せずに実際の画面の切り替え方法はありません。あなたが今やっているようにスクリーンをミミックにしても、あなたのアプリが拒否されるようになるでしょう。

なぜなら、ピクセルが黒であっても、LEDバックライトではまだ画面のバックライトが点灯しているからです。

PS:新しいiPhone 8は、OLEDディスプレイを搭載していると言われています。 oledスクリーンは、現在のスクリーンとは異なり、黒のときにピクセルの光をシャットダウンします(LEDはLEDと異なり、各ピクセルに独立したライトを持っています)。したがって、あなたのコードはiphone 8上で完璧に動作します。これはハードウェアの変更ではなくソフトウェアの変更であり、あなたのコードでそれを変更することはできません。

希望すると便利です。

0

「ロックされた」画面効果を実現したい場合は、画面全体を表示するUIViewControllerのサブビューとしてUIViewを追加することをおすすめします。そのUIViewは、背景が黒で、最低輝度が設定されている必要があります。ソケットからイベントを取得するときは、希望の定数に明るさを設定してUIViewをアニメーション表示するだけです。あなたがイベントを取得

例:

overlayView.frame = CGRect(x: 0, y: 0, width: SCREEN_WIDTH, height: SCREEN_HEIGHT) 
vc.addSubview(overlayView) 

UIView.animate(withDuration: 0.25, delay: 0.0, options: [], animations: { 
    self.overlayView?.removeFromSuperview 

}, completion: { (finished: Bool) in 
    UIScreen.main.brightness = CGFloat(0.8) 
}) 

私はいくつかの構文エラーがありますので、もし、私を気にしないでください、コンパイラの助けなしにこの答えを書いています。これは唯一のドラフトです。

+0

こんにちはステファン アイデアありがとう。それは私が今朝実施したものです。しかし、ディスプレイがオフになっている場合よりもバッテリーを使い切ってしまうことは間違いありません。ユーザーがそれに気付かないのはそれだけですか?電源を切って電池を節約することができるものはありますか? – mooonli

+0

はい、そうです。私はあなただけのインターフェイス指向のソリューションが必要だと思った。私はこのための最適化ソリューションを調査しませんでした。 – Stefan

関連する問題