2017-06-19 13 views
3

は戻るのAndroid 7.0が発表されたとき、彼らはどのように伝統的なウィンドウのデスクトップOSの作業とほぼ類似した自由形式のマルチウィンドウモードオプション、(複数の重複サイズ変更ウィンドウが)があったことを言った:より大きなデバイスのAndroidデバイスが公式のAndroid 7.0+フリーフォームマルチウィンドウモードを実行しているかどうかを確認するにはどうすればよいですか?

メーカーが選択することができますユーザが自由に各アクティビティのサイズを変更できるフリーフォームモードを有効にします。製造元がこの機能を有効にしている場合、デバイスは分割画面モードに加えてフリーフォームモードを提供します。

しかし、このモードでは公式な環境は提供されませんでした。

私は今日は自由形式のマルチウィンドウモードになるものを持っている少なくとも二つのアンドロイド7.0以降の環境を知っている:

  • 一部のChrome OSのデバイス(例えば、AcerのChromebookのC738T)
  • サムスンDEXを、 (スクリーン・ミラーリング・モードではなく)DeXモードで動作している場合(スクリーン・ミラーリング・モードではない場合)

両方とも、サイズ変更可能なウィンドウが重複しています。しかし、彼らの行動は同じではありません。例えば、DeXはサイズ変更が可能であると宣伝されていないアクティビティをホストしているウィンドウのタイトルバーを "回転"させ、ウィンドウを縦向きから横向きに反転させます。 Chrome OSフリーフォームのマルチウィンドウ実装ではこれが欠けています。

Android 7.0以降のデバイス(Nexus 9など)で正式なフリーフォームのマルチウィンドウモードを取得する非公式の方法は、adb shell settings put global enable_freeform_support 1経由です。しかし、Chrome OSまたはDeX環境でsettings get global enable_freeform_supportを実行すると、nullが返され、この設定が設定されていないことが示唆されます。

問題は、Android-on-Chrome-OSとDeXの両方が、十分に「奇妙な」ものであることです。どちらも、Android 7.0の上に独自のsemi-proprietaryフリーフォームマルチウィンドウモードを実装している可能性があります。結局のところ、Android-on-Chrome-OSには元のAndroid 6.0ベースのディストリビューションが搭載されていたため、SamsungはAndroid 7.0より前のいくつかのデバイスで分割画面のマルチウィンドウモードを提供していました。

フリーフォームのマルチウィンドウUIを使用する特定のAndroid環境が、公式のAndroid 7.0+フリーフォームマルチウィンドウ実装を使用しているかどうかを判断するための決定的な方法はありますか?

答えて

2

SystemUIは、自由形式のマルチウィンドウモードが利用可能かどうかを決定するために、次を使用します。

mHasFreeformWorkspaceSupport = 
    mPm.hasSystemFeature(PackageManager.FEATURE_FREEFORM_WINDOW_MANAGEMENT) || 
      Settings.Global.getInt(context.getContentResolver(), 
        DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT, 0) != 0; 

を参照してください:あなたは"enable_freeform_support"とそれを交換する必要がありますので、https://github.com/android/platform_frameworks_base/blob/nougat-release/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java#L213-216


DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORTが、隠されています:

boolean hasFreeFormWorkspaceSupport = 
    getPackageManager().hasSystemFeature(PackageManager.FEATURE_FREEFORM_WINDOW_MANAGEMENT) || 
     Settings.Global.getInt(getContentResolver(), "enable_freeform_support", 0) != 0; 

これをテストするAndroid-on-Chrome-OSまたはDeXはありませんが、これはSystemUIがフリーフォームのマルチウィンドウサポートが有効になっているかどうかを確認する方法です。おそらく、DeXやChromeから設定やSystemuiアプリを逆コンパイルして、ここで変更が加えられているかどうかを確認することができます。

+1

ありがとう!私は彼らが実際にこれのための機能コードを定義したことを忘れています。私はおそらくちょうどあなたの後者のコードスニペットを実行するために解決するだろう、私の関心が* decompilingで大騒ぎしたい*強い*ではないので。私は次の日に両方の環境でこれを試してみると、私の発見と一緒に報告します。 – CommonsWare

+1

Android端末7.1.1搭載のNexus 5Xは、「getPackageManager()。hasSystemFeature(PackageManager.FEATURE_FREEFORM_WINDOW_MANAGEMENT)」からDeXと適切なChromebookで「真」と報告されます。したがって、私は両方の環境が「公式」なフリーフォームであると仮定します。どうもありがとう! – CommonsWare

関連する問題