2016-11-29 21 views
1

アプリがバックグラウンドのときに画面の明るさを制御しようとしていますが、これが可能かどうかわかりません。デバイスがロックされるまでアプリ製iOS:アプリがバックグラウンドの間に画面の明るさを設定する

明るさ変化に関係なく、アプリケーションが閉じているかどうか、有効のまま

this UIScreen brightness documentationノート。次回のディスプレイの電源をオンにすると、システムの明るさ(ユーザーが[設定]または[コントロールセンター]で設定できる)が復元されます。

これはバックグラウンドで、アプリケーションのメインスレッドなどで画面の明るさを設定できないとは言えません。明るさはロック/アンロックのサイクルでリセットされるだけであることを示しています。

は以下のスニペットを考えてみます。

backgroundTask = UIApplication.shared().beginBackgroundTask(withName: "something", expirationHandler: handler) // handler ends the background task 
registerCallbackForSomeEvent(callback: changeScreenBrightness) 

イベントは無関係です。私はアプリケーションが中断されている間に印刷することができ、すべて正常に動作します。

changeSCreenBrightness()の実装には、次のようなものです:

func changeScreenBrightness() { 
    let newBrightness = getNewBrightnessSomehow() 
    // main or global, it doesn't seem to be happening... 
    DispatchQueue.main.async(execute: { 
     // this works in the foreground?! but not the background.. 
     UIScreen.main().brightness = newBrightness 
     // a print() will be executed however.. 
    }) 
} 

..だから誰もが決定的にこれが不可能であると言うことができますか?誰かが私が勉強できる作業コードを持っていますか?

ありがとうございました!

答えて

0

私は同様のことをやろうとしています。私は仮にアプリケーションがフォアグラウンドにないときにこの機能が無効になっていると結論づけている(私はこれをサポートするための文書をまだ探しているが)。

ただし、デバイスがロックされると、ユーザーの元の輝度は復元されます。

最小化または終了時にユーザーを元のUI輝度に戻したいとします。私は現在、次のコードを使用しています:

func _onApplicationLoad(){ 
    NotificationCenter.default.addObserver(self, selector: #selector(_onApplicationMinimise), name: Notification.Name.UIApplicationWillResignActive, object: nil) 
} 

func _onApplicationMinimise(){ // This function IS called on minimise 
    // commands here run ok 
    UIScreen.main.brightness = CGFloat(1.0) // this doesn't run 
    // commands here run ok too 
} 
  • _onApplicationMinimise()関数が呼び出された作品です。
  • 輝度ラインが実行される前のコマンド。明るラインの実行
  • UIScreen.main.brightness = 1.0後
  • コマンドは実行されません
関連する問題