Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9f713db8 authored by Chien-Yu Chen's avatar Chien-Yu Chen
Browse files

settings: Add Camera HAL HDR+ preference

Add an option for camera HAL HDR+ preference to developer options.

Test: System settings, RunSettingsRoboTests
Bug: 62108454
Change-Id: Ide053e8cc3fd7ad6add0493939a27af5bfb65e42
parent 478eb023
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -41,6 +41,9 @@
    <!-- Whether to show TelphonyMonitor switch in Developer Options -->
    <bool name="config_show_telephony_monitor">false</bool>

    <!-- Whether to show Camera HAL HDR+ switch in Developer Options -->
    <bool name="config_show_camera_hal_hdrplus">false</bool>

    <!-- Fully-qualified class name for the implementation of the FeatureFactory to be instantiated. -->
    <string name="config_featureFactory" translatable="false">com.android.settings.overlay.FeatureFactoryImpl</string>

+6 −0
Original line number Diff line number Diff line
@@ -8150,6 +8150,12 @@
    <!-- Toast message letting the user know the how to trigger telephony monitor -->
    <string name="telephony_monitor_toast">To apply telephony monitor change, reboot device</string>
    <!-- Title for Camera HAL HDR+ switch [CHAR LIMIT=50] -->
    <string name="camera_hal_hdrplus_switch">Camera HAL HDR+</string>
    <!-- Toast message letting the user know how to enable Camera HAL HDR+ -->
    <string name="camera_hal_hdrplus_toast">To apply Camera HAL HDR+ change, reboot device</string>
    <!-- Name of the setting to disable the automatic update -->
    <string name="ota_disable_automatic_update">Automatic system updates</string>
+4 −0
Original line number Diff line number Diff line
@@ -163,6 +163,10 @@
            android:title="@string/telephony_monitor_switch"
            android:summary="@string/telephony_monitor_switch_summary"/>

        <SwitchPreference
            android:key="camera_hal_hdrplus_switch"
            android:title="@string/camera_hal_hdrplus_switch" />

    </PreferenceCategory>

    <PreferenceCategory android:key="debug_networking_category"
+105 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2017 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.settings.development;

import android.content.Context;
import android.os.SystemProperties;
import android.support.v14.preference.SwitchPreference;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;
import android.widget.Toast;

import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.core.PreferenceController;
import com.android.settings.R;

public class CameraHalHdrplusPreferenceController extends PreferenceController {

    private static final String KEY_CAMERA_HAL_HDRPLUS_SWITCH = "camera_hal_hdrplus_switch";
    @VisibleForTesting
    static final String BUILD_TYPE = "ro.build.type";
    @VisibleForTesting
    static final String PROPERTY_CAMERA_HAL_HDRPLUS = "persist.camera.hdrplus.enable";
    @VisibleForTesting
    static final String ENABLED = "1";
    @VisibleForTesting
    static final String DISABLED = "0";

    private SwitchPreference mPreference;

    public CameraHalHdrplusPreferenceController(Context context) {
        super(context);
    }

    @Override
    public void displayPreference(PreferenceScreen screen) {
        super.displayPreference(screen);
        if (isAvailable()) {
            mPreference = (SwitchPreference) screen.findPreference(KEY_CAMERA_HAL_HDRPLUS_SWITCH);
            mPreference.setChecked(isHalHdrplusEnabled());
        }
    }

    @Override
    public String getPreferenceKey() {
        return KEY_CAMERA_HAL_HDRPLUS_SWITCH;
    }

    @Override
    public boolean isAvailable() {
        return mContext.getResources().getBoolean(R.bool.config_show_camera_hal_hdrplus) &&
               (SystemProperties.get(BUILD_TYPE).equals("userdebug") ||
                SystemProperties.get(BUILD_TYPE).equals("eng"));
    }

    @Override
    public void updateState(Preference preference) {
        updatePreference();
    }

    @Override
    public boolean handlePreferenceTreeClick(Preference preference) {
        if (KEY_CAMERA_HAL_HDRPLUS_SWITCH.equals(preference.getKey())) {
            final SwitchPreference switchPreference = (SwitchPreference)preference;
            SystemProperties.set(PROPERTY_CAMERA_HAL_HDRPLUS,
                    switchPreference.isChecked() ? ENABLED : DISABLED);
            Toast.makeText(mContext, R.string.camera_hal_hdrplus_toast,
                    Toast.LENGTH_LONG).show();
            return true;
        }
        return false;
    }

    public void enablePreference(boolean enabled) {
        if (isAvailable()) {
            mPreference.setEnabled(enabled);
        }
    }

    public boolean updatePreference() {
        if (!isAvailable()) {
            return false;
        }
        final boolean enabled = isHalHdrplusEnabled();
        mPreference.setChecked(enabled);
        return enabled;
    }

    private boolean isHalHdrplusEnabled() {
        return SystemProperties.getBoolean(PROPERTY_CAMERA_HAL_HDRPLUS, false);
    }
}
+9 −0
Original line number Diff line number Diff line
@@ -355,6 +355,7 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
    private BugReportPreferenceController mBugReportController;
    private BugReportInPowerPreferenceController mBugReportInPowerController;
    private TelephonyMonitorPreferenceController mTelephonyMonitorController;
    private CameraHalHdrplusPreferenceController mCameraHalHdrplusController;

    public DevelopmentSettings() {
        super(UserManager.DISALLOW_DEBUGGING_FEATURES);
@@ -393,6 +394,7 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
        mTelephonyMonitorController = new TelephonyMonitorPreferenceController(getActivity());
        mWebViewAppPrefController = new WebViewAppPreferenceController(getActivity());
        mVerifyAppsOverUsbController = new VerifyAppsOverUsbPreferenceController(getActivity());
        mCameraHalHdrplusController = new CameraHalHdrplusPreferenceController(getActivity());

        setIfOnlyAvailableForAdmins(true);
        if (isUiRestricted() || !Utils.isDeviceProvisioned(getActivity())) {
@@ -425,6 +427,7 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
        mBugReportInPowerController.displayPreference(getPreferenceScreen());
        mTelephonyMonitorController.displayPreference(getPreferenceScreen());
        mWebViewAppPrefController.displayPreference(getPreferenceScreen());
        mCameraHalHdrplusController.displayPreference(getPreferenceScreen());

        mKeepScreenOn = (RestrictedSwitchPreference) findAndInitSwitchPref(KEEP_SCREEN_ON);
        mBtHciSnoopLog = findAndInitSwitchPref(BT_HCI_SNOOP_LOG);
@@ -647,6 +650,7 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
        mBugReportInPowerController.enablePreference(enabled);
        mTelephonyMonitorController.enablePreference(enabled);
        mWebViewAppPrefController.enablePreference(enabled);
        mCameraHalHdrplusController.enablePreference(enabled);
        updateAllOptions();
    }

@@ -765,6 +769,7 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
        }
        mHaveDebugSettings |= mBugReportInPowerController.updatePreference();
        mHaveDebugSettings |= mTelephonyMonitorController.updatePreference();
        mHaveDebugSettings |= mCameraHalHdrplusController.updatePreference();
        updateSwitchPreference(mKeepScreenOn, Settings.Global.getInt(cr,
                Settings.Global.STAY_ON_WHILE_PLUGGED_IN, 0) != 0);
        updateSwitchPreference(mBtHciSnoopLog, SystemProperties.getBoolean(
@@ -2394,6 +2399,10 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
            return true;
        }

        if (mCameraHalHdrplusController.handlePreferenceTreeClick(preference)) {
            return true;
        }

        if (preference == mEnableAdb) {
            if (mEnableAdb.isChecked()) {
                mDialogClicked = false;
Loading