WO2025129684A1 - 显示屏亮度的调节方法、电子设备、存储介质及程序产品 - Google Patents
显示屏亮度的调节方法、电子设备、存储介质及程序产品 Download PDFInfo
- Publication number
- WO2025129684A1 WO2025129684A1 PCT/CN2023/141226 CN2023141226W WO2025129684A1 WO 2025129684 A1 WO2025129684 A1 WO 2025129684A1 CN 2023141226 W CN2023141226 W CN 2023141226W WO 2025129684 A1 WO2025129684 A1 WO 2025129684A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- camera
- ambient light
- control module
- electronic device
- brightness
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M1/00—Substation equipment, e.g. for use by subscribers
- H04M1/72—Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
- H04M1/724—User interfaces specially adapted for cordless or mobile telephones
- H04M1/72448—User interfaces specially adapted for cordless or mobile telephones with means for adapting the functionality of the device according to specific conditions
- H04M1/72454—User interfaces specially adapted for cordless or mobile telephones with means for adapting the functionality of the device according to specific conditions according to context-related or environment-related conditions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/70—Circuitry for compensating brightness variation in the scene
Definitions
- the present application relates to the technical field of electronic equipment, and in particular to a method for adjusting the brightness of a display screen, an electronic device, a storage medium, and a program product.
- the display screens of many electronic devices such as smartphones, tablets, desktop computers, wearable devices, etc. all have the function of automatic brightness adjustment.
- the automatic brightness adjustment function can automatically adjust the brightness of the display screen according to the ambient light brightness to adapt to the light intensity in different environments, thereby improving the user experience and reducing the power consumption of electronic devices.
- an ambient light detection device is usually configured on an electronic device.
- the electronic device turns on the screen, the ambient light brightness is detected by the ambient light detection device, and then the brightness of the display screen of the electronic device is adjusted based on the detected ambient light brightness.
- the embodiments of the present application provide a method for adjusting the brightness of a display screen, an electronic device, a storage medium and a program product.
- the method does not require additional configuration of an ambient light detection device, and detects the ambient light brightness through a target camera, thereby reducing the cost of the electronic device.
- a method for adjusting the brightness of a display screen comprising:
- the electronic device detects the brightness of the ambient light through the target camera
- the electronic device Based on the ambient light brightness detected by the target camera, the electronic device adjusts the display brightness, and during the process of the electronic device adjusting the display brightness, the target camera does not capture images and the camera application is not started;
- the electronic device In response to a user operation, the electronic device starts the camera application
- the electronic device After starting the camera application, the electronic device captures images through the target camera and displays the interface of the camera application, where the interface of the camera application includes the images captured by the target camera.
- powering on the target camera includes:
- the target camera is powered on to initialize the target camera.
- the electronic device collects an image through the target camera, including:
- the electronic device powers off the target camera and then powers on the target camera;
- the electronic device obtains the image captured by the target camera.
- the method further includes:
- the electronic device After starting the camera application, the electronic device does not adjust the display brightness.
- the target camera is powered on. Before, it also includes:
- the electronic device collects an image through the target camera, and after the display screen is unlocked, the face unlocking application is closed;
- the electronic device powers off the target camera.
- the method further includes:
- the electronic device closes the camera application
- the electronic device After closing the camera application, the electronic device detects the brightness of the ambient light through the target camera;
- the electronic device Based on the ambient light brightness detected by the target camera, the electronic device adjusts the brightness of the display screen. During the process of the electronic device adjusting the brightness of the display screen, the target camera does not capture images.
- the electronic device detects the ambient light brightness through the target camera, including:
- the electronic device powers off the target camera and then powers on the target camera
- the electronic device obtains the brightness of the ambient light detected by the target camera.
- the software system of the electronic device includes a framework layer, a hardware abstraction layer, and a kernel layer
- the framework layer includes a camera service module and a sensor service module
- the hardware abstraction layer includes a camera control module and a sensor control module
- the kernel layer includes a camera driver
- the sensor service module Based on the electronic device turning on the screen, the sensor service module sends a brightness monitoring instruction to the sensor control module;
- the sensor control module After receiving the brightness monitoring instruction, the sensor control module calls a first interface based on AIDL service, and then calls a second interface based on HIDL (HAL interface definition language) service to send a first instruction to the camera service module, where the first instruction includes a first identifier, and the first identifier corresponds to the ambient light detection function of the target camera;
- HIDL HAL interface definition language
- the camera service module After receiving the first instruction, the camera service module calls the first function in the camera control module, and executes the first function according to the first identifier to control the camera driver to power on the target camera, initialize the camera register and create a reading thread for the ambient light brightness.
- the method before the camera service module calls the first function in the camera control module, the method further includes:
- the camera service module After receiving the first instruction, the camera service module queries a camera list, where the camera list is used to store identifiers of enabled cameras;
- the camera service module executes and calls the first function in the camera control module.
- enabling in the application embodiment may mean turning on and working normally.
- the method further includes:
- the camera service module calls the camera control module
- the method further comprises:
- the camera service module calls the first sub-function in the first function to determine whether the target camera supports the ambient light detection function corresponding to the first identifier;
- the electronic device before the electronic device detects the brightness of the ambient light through the target camera, the electronic device further includes:
- the camera control module obtains the target number from the camera register, where the target number is used to represent the number of times the ambient light brightness detected by the target camera is read after the screen of the electronic device is turned on;
- the camera control module When the target number is 0, the camera control module writes the first frequency into the camera register, and controls the target camera to detect the ambient light brightness according to the first frequency;
- the electronic device adjusting the brightness of a display screen based on the brightness of the ambient light detected by the target camera includes:
- the camera control module obtains a first ambient light brightness output by the target camera, and sends a second ambient light brightness to the sensor control module through a data callback function, where the second ambient light brightness is generated based on the first ambient light brightness;
- the sensor control module sends the second ambient light brightness to the sensor service module
- the sensor service module adjusts the display screen brightness of the electronic device based on the second ambient light brightness.
- the first ambient light brightness and the second ambient light brightness are not a brightness value, but a type of brightness value.
- the first ambient light brightness is the ambient light brightness output by the front camera at different times
- the second ambient light brightness is the ambient light brightness sent by the camera control module to the sensor control module at different times.
- the method before the camera control module obtains the first ambient light brightness output by the target camera and sends the second ambient light brightness to the sensor control module through a data callback function, the method further includes:
- the sensor control module calls the first interface and registers the data callback function in the camera control module.
- the method before the sensor control module calls the first interface and registers the data callback function in the camera control module, the method further includes:
- the method further includes:
- the sensor control module calls a third interface based on the AIDL service, and then calls the second interface to send a second instruction to the camera service module, where the second instruction includes the first identifier;
- the camera service module After receiving the second instruction, the camera service module calls the second function in the camera control module, and executes the second function according to the first identifier to control the camera driver to close the reading thread, and Power off the target camera.
- the method further includes:
- the camera control module In the process of adjusting the brightness of the display screen by the electronic device, when the camera control module is detected to be non-responsive through the first death monitoring object, the camera control module sends a first death notification message to the sensor control module;
- the sensor control module After receiving the first death notification message, the sensor control module calls the first interface and then calls the second interface to send the first instruction to the camera service module to enable the ambient light detection function of the target camera.
- the non-response of the camera control module may be that after the ambient light detection function is turned on, the camera control module does not respond to the operation of sending the ambient light brightness detected by the front camera to the sensor control module.
- the sensor control module calls the first interface, then calls the second interface, and before sending the first instruction to the camera service module, further includes:
- the sensor control module determines whether the AIDL service is started
- the method further includes:
- the camera control module After the screen of the electronic device is turned off, when the first death monitoring object monitors that the camera control module does not respond, the camera control module sends a second death notification message to the sensor control module;
- the camera service module receives a third instruction, the third instruction including a second identifier and a second package name, the second identifier corresponds to the camera function of the target camera, and the second package name is the package name of the camera application;
- the camera service module determines that there is a first identifier, and determines the priority of the first identifier and the second identifier according to a first package name and the second package name, wherein the first identifier corresponds to an ambient light detection function of the target camera, and the first package name is a package name of an ambient light detection application;
- the camera service module determines that the priority of the first identifier is lower than the priority of the second identifier, controls the camera driver to power off the target camera to turn off the ambient light detection function of the target camera, and then controls the camera driver to power on the target camera to turn on the photo taking function of the target camera.
- an electronic device comprising a processor and a memory; the memory stores at least one program code; the at least one program code is used to be called and executed by the processor to implement the method for adjusting the brightness of the display screen described in the first aspect.
- a computer-readable storage medium wherein at least one computer program is stored in the computer-readable storage medium, and when the at least one computer program is executed by a processor, the method for adjusting the brightness of a display screen described in the first aspect can be implemented.
- a computer program product comprising a computer program, and when the computer program is executed by a processor, the method for adjusting the brightness of a display screen described in the first aspect can be implemented.
- the target camera has image acquisition function and ambient light detection function, which makes it possible for the target camera to be used as an ambient light detection device.
- the target camera is powered on, and the ambient light brightness is detected by the target camera, and then the brightness of the display screen is adjusted based on the detected ambient light brightness, so there is no need to configure an additional ambient light detection device, that is, the automatic adjustment of the display screen brightness is achieved, reducing the cost of the electronic device.
- the target camera only detects the ambient light brightness, but does not collect images, and will not produce pictures, which greatly reduces the power consumption of the target camera, saves electricity, and improves the performance of the electronic device.
- the camera application is not started.
- the electronic device collects images through the target camera and displays the images on the interface of the camera application, thereby satisfying the user's photography needs.
- FIG1 is a schematic diagram of the structure of an electronic device provided in an embodiment of the present application.
- FIG2 is a software structure block diagram of an electronic device provided in an embodiment of the present application.
- FIG3 is a flow chart of a method for adjusting display screen brightness provided in an embodiment of the present application.
- FIG4 is a flow chart of another method for adjusting display screen brightness provided in an embodiment of the present application.
- FIG6 is a flow chart of a method for turning off the screen and disabling the ambient light detection function of a front camera provided in an embodiment of the present application;
- FIG7 is a flowchart of another embodiment of the present application to turn off the screen to turn off the ambient light detection function of the front camera;
- FIG8 is a flow chart of a method for managing camera enabling priority provided in an embodiment of the present application.
- FIG. 9 is a flowchart of another method for managing camera enabling priority provided in an embodiment of the present application.
- FIG. 10 is a flowchart of another method for managing camera enabling priority provided in an embodiment of the present application.
- FIG. 11 is a flowchart of another method for managing camera enabling priority provided in an embodiment of the present application.
- FIG. 12 is a flowchart of another method for managing camera enabling priority provided in an embodiment of the present application.
- FIG. 13 is a flowchart of another method for managing camera enabling priority provided in an embodiment of the present application.
- FIG. 14 is a flow chart of a method for managing an ambient light detection function provided in an embodiment of the present application.
- 15 is a flow chart of another method for managing an ambient light detection function provided in an embodiment of the present application.
- 16 is a flow chart of another method for managing an ambient light detection function provided in an embodiment of the present application.
- 17 is a flow chart of another method for managing an ambient light detection function provided in an embodiment of the present application.
- 19 is a flow chart of another method for managing an ambient light detection function provided in an embodiment of the present application.
- FIG. 20 is a logic block diagram of performance optimization of an electronic device provided in an embodiment of the present application.
- electronic devices In modern life, electronic devices such as smartphones, tablets, and laptops have become indispensable items in people's lives. In order to meet the needs of users in different lighting scenarios, electronic devices provide automatic brightness adjustment functions. After the screen of an electronic device is turned on, the built-in ambient light detection device can detect the ambient light brightness, and then adjust the brightness based on the environment. The light detection device detects the brightness of the ambient light and adjusts the brightness of the display screen of the electronic device, so that the user has a good viewing experience under different lighting conditions.
- the above method can adjust the brightness of the display screen, it requires an additional ambient light detection device, which increases the cost of the electronic device.
- a camera that supports normal mode i.e., photo mode
- the power consumption of the camera that supports normal mode is high, which reduces the performance of the electronic device.
- cameras can support multiple modes, including normal mode, ALS (Ambient Light Sensor mode), ULP (Ultra Low Power) mode, etc., which makes it possible to use cameras as ambient light detection devices.
- the display panel can use a liquid crystal display (LCD), an organic light-emitting diode (OLED), an active matrix organic light-emitting diode or an active matrix organic light-emitting diode (AMOLED), a flexible light-emitting diode (FLED), Miniled, MicroLed, Micro-oLed, a quantum dot light-emitting diode (QLED), etc.
- the electronic device 100 may include 1 or N display screens 194 , where N is a positive integer greater than 1.
- the camera control module Based on the electronic device being turned on, the camera control module initializes the AIDL service.
- the camera control module i.e., Camera HAL
- the camera control module can be used as an independent process, which can be defined as a camera control process
- the submodules included in the camera control module such as CHK-CDK, CAMX, CamxLightCustom, etc.
- AIDL service initialization can be the process of pulling up the AIDL service. By initializing the AIDL service, communication between the client and the server based on the AIDL service can be achieved. AIDL service initialization can be performed in the camera control module, specifically, it can be performed in the CHK-CDK of the camera control module.
- the AIDL service can be initialized during the startup of the electronic device, or it can be initialized after the startup when the client and the server based on the AIDL service need to communicate.
- the embodiment of the present application does not limit the timing of the initialization of the AIDL service.
- the process of initializing the AIDL service can correspond to step 1 in Figure 5. Referring to Figure 5, when the electronic device is turned on, the AIDL service in the CHI-CDK of the Camera HAL is initialized, which can be to pull up the AIDL service.
- AIDL service initialization process can be implemented using the following code:
- the sensor service module sends a brightness monitoring instruction to the sensor control module.
- the ambient light detection application in the application layer sends a screen-lighting message to the sensor service module.
- the screen-lighting message may include the package name of the ambient light detection application.
- the screen-lighting message is used to instruct the sensor service module to adjust the brightness of the electronic device display screen.
- the sensor service module sends a brightness monitoring instruction to the sensor control module.
- the brightness monitoring instruction is used to instruct the sensor control module to obtain the ambient light brightness.
- the brightness monitoring instruction can be in the form of a callback function, so that after the sensor control module obtains the ambient light brightness, it can return the obtained ambient light brightness to the sensor service module.
- the sensor service module sends the brightness monitoring instruction to the sensor control module as follows: the sensor service process sends the brightness monitoring instruction to the sensor control process.
- the sensor service module sends the brightness monitoring instruction to the sensor control module as follows: the SensorManager in the FWK layer generates the brightness monitoring instruction based on the screen light message sent by the ambient light detection application in the application layer, and sends the brightness monitoring instruction to the Sensor HAL in the HAL layer through the SensorService.
- AIDL services are used to implement communication between different processes. For two processes that communicate based on AIDL services, one process is used to generate data and can be used as an AIDL server; the other process is used to issue control
- the camera control module (Camera HAL) is used to provide the ambient light brightness and can be used as an independent process. Therefore, it can be regarded as the AIDL server (referred to as the server in subsequent embodiments); the sensor control module (Sensor HAL) is used to receive the ambient light brightness, so it can be regarded as the AIDL client (referred to as the client in subsequent embodiments).
- the sensor control module and the camera control module can register callback interfaces on this end respectively.
- the callback interface registration in the sensor control module and the camera control module is completed, the registration of the data callback function in the camera control module is completed.
- the sensor control module can register the callback interface in CamLightManager, and the camera control module can register the callback interface in CamxLightCustom.
- the following code can be used when registering the callback interface in the camera control module:
- the sensor control module calls the first interface based on the AIDL service
- the step of registering the data callback function in the camera control module may correspond to steps 2 and 3 in Figure 5, specifically including: after the Sensor HAL receives the brightness monitoring instruction, it calls the Active interface in CamLightManager, and based on the declaration content of the Active interface, registers the callback interface in CamLightManager, and registers the callback interface in CamxLightCustom; when the callback interface registration in CamLightManager and CamxLightCustom is completed, the registration of the data callback function is completed.
- the data callback function can not only return the ambient light brightness detected by the front camera to the sensor control module when the ambient light detection function of the front camera is enabled; After the camera that fails or is turned off, causing the ambient light detection function to fail to be enabled or is turned off, sends a notification message to the sensor control module to enable the sensor control module to enable the ambient light detection function of the front camera.
- a process of an electronic device may suddenly crash during operation, and crashes may also occur for the server and client involved in AIDL.
- the sensor control module and the camera control module may also register death monitoring objects on this end respectively.
- the camera control module may register a first death monitoring object on this end when registering a callback interface. By registering the first death monitoring object, the crash of the camera control module in the screen-on scene and the screen-off scene can be monitored.
- the sensor control module may register a second death monitoring object on this end when registering the callback interface.
- the crash of the sensor control module in the screen-on scene and the screen-off scene can be monitored.
- it may correspond to step 1 in FIG. 15 , specifically including: in the process of SensorHAL registering a callback interface in CamLightManager, a second death monitoring object may be registered in CamLightManager, so that when a crash event of SensorHAL is monitored, a death notification message is generated to notify Camera HAL; in the process of Camera HAL registering a callback interface in CamxLightCustom, a first death monitoring object may be registered in CamxLightCustom, so that when a crash event of Camera HAL is monitored, a death notification message is generated to notify SensorHAL.
- the front camera on some electronic devices may support the ambient light detection function, and the front camera on some electronic devices may not support the ambient light detection function.
- the sensor control module may obtain the value on the preset identification position before calling the first interface to turn on the ambient light detection function of the front camera, specifically before executing step 403, such as when the electronic device is turned on, or when a brightness monitoring instruction is received, and then based on the value on the preset identification position, determine whether the front camera of the electronic device supports the ambient light detection function. If the front camera supports the ambient light detection function, the first interface is called to turn on the ambient light detection function of the front camera.
- the data callback function registered in this step can be directly used when the front camera is subsequently called to detect the ambient light brightness without re-registration; when the electronic device is turned off, the data callback function registered in this step will be destroyed, and when the electronic device is turned on again, the above steps 401 to 403 need to be executed to register the data callback function.
- the sensor control module calls the second interface based on the HIDL service and sends a first instruction to the camera service module.
- cameras include front cameras and rear cameras, and the number of front cameras and rear cameras is at least one.
- the front camera and rear camera have multiple functions, including photo taking, face recognition, etc. At least one of an unlocking function, an ambient light detection function, etc.
- the embodiment of the present application abstracts multiple logical cameras according to the type of camera and its function, and each logical camera corresponds to an identifier. For example, based on the photo-taking function of the front camera, a logical camera A can be abstracted, and based on the ambient light detection function of the front camera, a logical camera B can be abstracted.
- Logical camera A and logical camera B can correspond to the same front camera or to different front cameras.
- the sensor control module may call the first interface to generate a first instruction, and then the second interface sends the first instruction to the camera service module.
- the second interface belongs to the interface of the HIDL service, which may be libcamera2ndk_vendor in Figure 5, etc.
- the camera service module can be an independent process, and the independent process can be defined as a camera service process.
- the first instruction may be an Open Camera instruction.
- the first instruction may also include a first package name, which is the package name of the ambient light detection application.
- the sensor service module calls the second interface to send the first instruction to the camera service module, which may correspond to step 4 in Figure 5, specifically including: calling the Active interface of CamLightManager in the Sensor HAL, generating a first instruction, and sending the first instruction to the ICameraService in the FWK layer through the libcamera2ndk_vendor interface based on the HIDL service.
- the camera service module calls the first function in the camera control module, and executes the first function according to the first identifier to control the camera driver to power on the front camera, initialize the camera register and create a reading thread for the ambient light brightness.
- the operations of powering on the front camera, initializing the camera register, etc. in this step may be a specific process of turning on the front camera, or may be a process of powering on and initializing the front camera.
- the first function is used to open any function of any camera in the electronic device, and the first function can be an Open Camera function.
- the camera service module can call the first function in the camera control module and execute the first function according to the first identifier. According to the first identifier, it can be determined that the ambient light detection function of the front camera needs to be turned on. At this time, the front camera will replace the ambient light detection device. When the front camera replaces the ambient light detection device, the front camera needs to detect the ambient light brightness without collecting images.
- the camera service module executes the necessary processes in the first function for turning on the ambient light detection function of the front camera according to the first identifier, such as applying for CSL resource cache, powering on the front camera, initializing camera registers, creating a reading thread for ambient light brightness, etc., and jumps out of the processes unrelated to turning on the ambient light detection function of the front camera, such as the process of configuring image output resources, etc.
- the first function a corresponding control instruction can be generated, and the control instruction is sent to the camera driver, thereby controlling the camera driver to apply for CSL resource cache for the front camera, power on the front camera, initialize camera registers, create a reading thread, etc.
- the created reading thread is used to read and calculate the ambient light brightness detected by the front camera.
- the reading thread can be an asynchronous reading thread.
- the reading thread can periodically read the ambient light brightness detected by the front camera. Based on the initialization of the camera register, the period of the front camera detecting the ambient light brightness, the frequency of the front camera detecting the ambient light brightness, etc. can be written into the front register to control the operation of the front camera.
- this step may correspond to step 5 in FIG. 5 , and specifically includes: when receiving the first instruction, calling the Open Camera function in CAMX of the Camera HAL through the CameraService, and executing the Open Camera function,
- the CamxLightCustom interface sends control instructions to the camera driver, so that the camera driver applies for CSL resource cache for the ambient light detection function of the front camera, powers on the front camera, initializes the camera registers, creates an asynchronous read thread, etc.
- the camera control module obtains the first ambient light brightness output by the front camera, and sends the second ambient light brightness to the sensor control module through a data callback function.
- the second ambient light brightness is generated based on the first ambient light brightness, and the second ambient light brightness can be equal to the first ambient light brightness, or the second ambient light brightness may not be equal to the first ambient light brightness.
- the second ambient light brightness can be generated based on the first ambient light brightness and the third ambient light brightness
- the third ambient light brightness is the calibration coefficient provided by the data calibration function
- the first ambient light brightness is calibrated to obtain the calibrated ambient light brightness.
- the second ambient light brightness can also be generated based on the first ambient light brightness, the third ambient light brightness and the state parameters of the front camera, and the state parameters include available and unavailable, etc.
- the first ambient light brightness and the second ambient light brightness in the embodiment of the present application are not a brightness value, but represent a type of brightness value.
- the first ambient light brightness represents the brightness value output by the front camera at different times
- the second ambient light brightness represents the brightness value sent by the camera control module to the sensor control module at different times.
- the sensor service module can receive a screen turning off message of the electronic device. After receiving the screen turning off message, the sensor service module can send a stop brightness monitoring instruction to the sensor control module. After receiving the stop brightness monitoring instruction, the sensor control module can call the third interface, generate a second instruction, and then call the second interface to send the second instruction to the camera service module.
- the third interface can be a DeActive interface, which is used to turn off the ambient light detection function of the front camera.
- the second instruction can be a Close Camera instruction, including a first identifier, a first package name, etc.
- the simplified execution process of the OpenCamera function is described by taking the process of adjusting the brightness of the display screen during the startup process shown in FIG4 as an example. Since the embodiment of the present application needs to turn on the ambient light detection function of the front camera, if the front camera does not support turning on the ambient light detection function of the front camera, it is impossible to enable the ambient light detection function of the front camera by calling the first function. Therefore, after calling the first function, the first sub-function in the first function is also called to determine whether the front camera supports the ambient light detection function. If the front camera supports the ambient light detection function, the second sub-function is called. The second sub-function in the first function further controls the camera driver to power on the front camera, initialize the camera registers, and create an asynchronous reading thread. By executing this streamlined OpenCamera function, the image output and streaming process can be skipped, the opening time of the ambient light detection function can be shortened, and the performance of the electronic device can be improved.
- the above logic code for determining whether the front camera supports ambient light detection is:
- the front camera does not support ambient light detection, you can interact with the camera driver in the kernel layer to control the camera driver to apply for CSL resource cache for the ambient light detection function of the front camera, power on the front camera, initialize the camera registers, and allocate streams for the front camera, so that the front camera can output images.
- a higher priority can be set for the asynchronous thread, so that the execution of the reading thread can be prioritized when resources are limited.
- Electronic devices have strict requirements for the first frame data of ambient light brightness (the one frame data mentioned here is not the image frame), and generally require reporting within 300ms. There are no strict requirements for the second frame data and subsequent frames, and the reporting time of the first frame data depends on the frame rate of the front camera. When the frequency of the front camera is set to a lower frequency to reduce power consumption, the data may not be reported within 300 mm because the ambient light brightness requires integration time.
- an embodiment of the present application provides an adaptive frequency switching method, which records the target number and writes the target number into the camera register.
- the target number can be the number of times the camera control module of the electronic device reads the ambient light brightness from the front camera after the screen is turned on this time, or it can be the number of times the camera control module of the electronic device reads the ambient light brightness from the front camera after the screen is turned on for the last time. After the electronic device turns off the screen, the target number recorded in the camera register will be cleared. After the front camera is powered on, the camera control module obtains the target number of times from the camera register. When the target number of times is 0, the camera control module writes the first frequency into the camera register and controls the front camera to detect the ambient light brightness according to the first frequency.
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Multimedia (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
本申请公开了一种显示屏亮度的调节方法、电子设备、存储介质及程序产品,属于电子设备技术领域。所述方法包括:电子设备亮屏后,将目标摄像头上电;电子设备通过目标摄像头检测环境光亮度;基于目标摄像头检测的环境光亮度,电子设备调节显示屏亮度,在电子设备调节显示屏亮度的过程中,目标摄像头不采集图像,且相机应用未启动;响应于用户的操作,电子设备启动相机应用;在启动相机应用后,电子设备通过目标摄像头采集图像,显示相机应用的界面,相机应用的界面包含目标摄像头采集的图像。本申请无需配置环境光检测器件,基于目标摄像头检测环境光亮度,降低了电子设备的成本,且不采集图像,降低了目标摄像头的功耗,提升了电子设备的性能。
Description
本申请涉及电子设备技术领域,特别涉及一种显示屏亮度的调节方法、电子设备、存储介质及程序产品。
目前,智能手机、平板电脑、台式电脑、可穿戴设备等诸多电子设备的显示屏均具有自动调节亮度功能。自动调节亮度功能可根据环境光亮度,自动调节显示屏亮度,以适应不同环境下的光线强度,从而提高用户的使用体验,降低电子设备的电力消耗。
相关技术中,通常在电子设备上配置环境光检测器件,当电子设备亮屏后,通过环境光检测器件检测环境光亮度,进而基于检测的环境光亮度,调节电子设备的显示屏亮度。
然而,该种方法需要额外配置环境光检测器件,增加了电子设备的成本。
发明内容
为了解决相关技术的问题,本申请实施例提供了一种显示屏亮度的调节方法、电子设备、存储介质及程序产品,该方法无需额外配置环境光检测器件,通过目标摄像头检测环境光亮度,降低了电子设备的成本。所述技术方案如下:
第一方面,提供了一种显示屏亮度的调节方法,所述方法包括:
电子设备亮屏后,将目标摄像头上电;
所述电子设备通过所述目标摄像头检测环境光亮度;
基于所述目标摄像头检测的环境光亮度,所述电子设备调节显示屏亮度,在所述电子设备调节所述显示屏亮度的过程中,所述目标摄像头不采集图像,且相机应用未启动;
响应于用户的操作,所述电子设备启动所述相机应用;
在启动所述相机应用后,所述电子设备通过所述目标摄像头采集图像,显示所述相机应用的界面,所述相机应用的界面包含所述目标摄像头采集的图像。
在第一方面的第一种可能的实现方式中,所述电子设备亮屏后,将目标摄像头上电,包括:
基于所述电子设备亮屏,将所述目标摄像头上电,以对所述目标摄像头进行初始化。
在第一方面的第二种可能的实现方式中,所述电子设备通过所述目标摄像头采集图像,包括:
基于所述相机应用被启动,所述电子设备将所述目标摄像头下电,然后将所述目标摄像头上电;
所述电子设备获取所述目标摄像头采集的图像。
在第一方面的第三种可能的实现方式中,所述方法还包括:
在启动所述相机应用后,所述电子设备不调节显示屏亮度。
在第一方面的第三种可能的实现方式中,所述电子设备亮屏后,将目标摄像头上电之
前,还包括:
所述电子设备亮屏后,启动人脸解锁应用;
在启动所述人脸解锁应用后,所述电子设备通过所述目标摄像头采集图像,所述显示屏解锁后,所述人脸解锁应用被关闭;
在所述人脸应用被关闭后,所述电子设备将所述目标摄像头下电。
在第一方面的第四种可能的实现方式中,所述方法还包括:
响应于所述用户的操作,所述电子设备关闭所述相机应用;
在关闭所述相机应用后,所述电子设备通过所述目标摄像头检测环境光亮度;
基于所述目标摄像头检测的环境光亮度,所述电子设备调节显示屏亮度,在所述电子设备调节所述显示屏亮度的过程中,所述目标摄像头不采集图像。
在第一方面的第五种可能的实现方式中,所述电子设备通过所述目标摄像头检测环境光亮度,包括:
基于所述相机应用被关闭,所述电子设备将所述目标摄像头下电,然后将所述目标摄像头上电;
所述电子设备获取所述目标摄像头检测的环境光亮度。
在第一方面的第六种可能的实现方式中,所述电子设备的软件系统包括框架层、硬件抽象层及内核层,所述框架层包括相机服务模块和传感器服务模块,所述硬件抽象层包括相机控制模块和传感器控制模块,所述内核层包括摄像头驱动,所述电子设备亮屏后,将目标摄像头上电,包括:
基于所述电子设备亮屏,所述传感器服务模块向所述传感器控制模块发送亮度监听指令;
在接收到所述亮度监听指令后,所述传感器控制模块调用基于AIDL服务的第一接口,然后调用基于HIDL(HAL interface definition language,硬件抽象层接口定义语言)服务的第二接口,向所述相机服务模块发送第一指令,所述第一指令包括第一标识,所述第一标识对应所述目标摄像头的环境光检测功能;
在接收到所述第一指令后,所述相机服务模块调用所述相机控制模块中的第一函数,并根据所述第一标识,执行所述第一函数,以控制所述摄像头驱动将所述目标摄像头上电、初始化摄像头寄存器及创建环境光亮度的读取线程。
在第一方面的第七种可能的实现方式中,所述相机服务模块调用所述相机控制模块中的第一函数之前,还包括:
在接收到所述第一指令后,所述相机服务模块查询摄像头列表,所述摄像头列表用于存储已使能的摄像头的标识;
当确定所述摄像头列表为空,所述相机服务模块执行调用所述相机控制模块中的第一函数。
其中,使能在申请实施例中的含义可以为打开且正常工作。
在第一方面的第八种可能的实现方式中,所述相机服务模块调用所述相机控制模块中的第一函数之后,还包括:
所述相机服务模块将所述第一标识存储到所述摄像头列表中。
在第一方面的第九种可能的实现方式中,所述相机服务模块调用所述相机控制模块中
的第一函数,并根据所述第一标识,执行所述第一函数,包括:
所述相机服务模块调用所述第一函数中的第一子函数,判断所述目标摄像头是否支持所述第一标识对应的环境光检测功能;
当确定所述目标摄像头支持所述第一标识对应的环境光检测功能,调用所述第一函数中的第二子函数,通过执行所述第二子函数,控制所述摄像头驱动将所述目标摄像头上电、初始化摄像头寄存器及创建环境光亮度的读取线程,且不为所述目标摄像头配置出图资源。
在第一方面的第十种可能的实现方式中,所述电子设备通过所述目标摄像头检测环境光亮度之前,还包括:
所述目标摄像头上电后,所述相机控制模块从所述摄像头寄存器中获取目标次数,所述目标次数用于表征所述电子设备亮屏后对所述目标摄像头检测的环境光亮度的读取次数;
当所述目标次数为0次,所述相机控制模块将第一频率写入所述摄像头寄存器中,并控制所述目标摄像头按照所述第一频率检测环境光亮度;
当所述目标次数大于0次,所述相机控制模块将第二频率写入所述摄像头寄存器中,并控制所述目标摄像头按照所述第二频率检测环境光亮度,所述第一频率大于所述第二频率。
在第一方面的第十一种可能的实现方式中,所述基于所述目标摄像头检测的环境光亮度,所述电子设备调节显示屏亮度,包括:
所述相机控制模块获取所述目标摄像头输出的第一环境光亮度,并通过数据回调函数,将第二环境光亮度发送至所述传感器控制模块,所述第二环境光亮度基于所述第一环境光亮度生成;
所述传感器控制模块将所述第二环境光亮度发送至所述传感器服务模块;
所述传感器服务模块基于所述第二环境光亮度,调节所述电子设备的显示屏亮度。
其中,第一环境光亮度和第二环境光亮度并不是一个亮度值,而是一类亮度值,第一环境光亮度为前置摄像头在不同时刻输出的环境光亮度,第二环境光亮度为相机控制模块在不同时刻向传感器控制模块发送的环境光亮度。
在第一方面的第十二种可能的实现方式中,所述相机控制模块获取所述目标摄像头输出的第一环境光亮度,并通过数据回调函数,将第二环境光亮度发送至所述传感器控制模块之前,还包括:
基于所述电子设备开机,在接收到所述亮度监听指令后,所述传感器控制模块调用所述第一接口,在所述相机控制模块中注册所述数据回调函数。
在第一方面的第十三种可能的实现方式中,所述传感器控制模块调用所述第一接口,在所述相机控制模块中注册所述数据回调函数之前,还包括:
基于所述电子设备开机,所述相机控制模块将AIDL服务初始化。
在第一方面的第十四种可能的实现方式中,所述方法还包括:
所述电子设备灭屏后,所述传感器控制模块调用基于AIDL服务的第三接口,然后调用所述第二接口,向所述相机服务模块发送第二指令,所述第二指令包括所述第一标识;
在接收到所述第二指令后,所述相机服务模块调用所述相机控制模块中的第二函数,并根据所述第一标识,执行所述第二函数,以控制所述摄像头驱动关闭所述读取线程,并
将所述目标摄像头下电。
在第一方面的第十五种可能的实现方式中,所述方法还包括:
在所述电子设备调节所述显示屏亮度的过程中,当通过第一死亡监听对象监听到所述相机控制模块不响应,所述相机控制模块向所述传感器控制模块发送第一死亡通知消息;
在接收到所述第一死亡通知消息后,所述传感器控制模块调用所述第一接口,然后调用所述第二接口,向所述相机服务模块发送所述第一指令,以使能所述目标摄像头的环境光检测功能。
其中,相机控制模块的不响应可以为环境光检测功能打开后,相机控制模块对将前置摄像头检测的环境光亮度发送至传感器控制模块的操作不响应。
在第一方面的第十六种可能的实现方式中,所述传感器控制模块调用所述第一接口,然后调用所述第二接口,向所述相机服务模块发送所述第一指令之前,还包括:
所述传感器控制模块判断AIDL服务是否被拉起;
当确定所述AIDL服务被拉起,所述传感器控制模块执行所述调用所述第一接口,然后调用所述第二接口,向所述相机服务模块发送第三指令的操作。
在第一方面的第十七种可能的实现方式中,所述方法还包括:
所述电子设备灭屏后,当通过第一死亡监听对象监听到所述相机控制模块不响应,所述相机控制模块向所述传感器控制模块发送第二死亡通知消息;
在接收到所述第二死亡通知消息后,所述传感器控制模块调用所述第一接口,向所述相机控制模块发送初始化指令;
在接收到所述初始化指令后,所述相机控制模块对所述目标摄像头和数据回调函数进行初始化,所述数据回调函数用于将所述目标摄像头检测的环境光亮度发送至所述传感器控制模块。
其中,相机控制模块的不响应可以为电子设备灭屏后相机控制模块对关闭环境光检测功能的操作不响应。
在第一方面的第十八种可能的实现方式中,所述传感器控制模块调用所述第一接口,向所述相机控制模块发送初始化指令之前,还包括:
所述传感器控制模块判断所述电子设备是否灭屏;
当确定所述电子设备灭屏,所述传感器控制模块执行调用所述第一接口,向所述相机控制模块发送初始化指令的操作。
在第一方面的第十九种可能的实现方式中,所述方法还包括:
电子设备亮屏后,当通过第二死亡监听对象监听到所述传感器控制模块不响应,所述传感器控制模块向所述相机控制模块发送第三死亡通知消息;
在接收到所述第三死亡通知消息后,所述相机控制模块将所述读取线程关闭,并将数据回调函数销毁,所述数据回调函数用于将所述目标摄像头检测的环境光亮度发送至所述传感器控制模块;
所述传感器控制模块调用基于AIDL服务的第三接口,然后调用所述第二接口,向所述相机服务模块发送第二指令,所述第二指令包括所述第一标识;
在接收到所述第二指令后,所述相机服务模块调用所述相机控制模块中的第二函数,并根据所述第一标识,执行所述第二函数,以控制所述摄像头驱动关闭所述读取线程,并
将所述目标摄像头下电;
所述传感器控制模块重启后,调用所述第一接口,在所述相机控制模块中注册所述数据回调函数,并调用所述第二接口,向所述相机服务模块发送所述第一指令,以使能所述目标摄像头的环境光检测功能。
其中,传感器控制模块的不响应于可以为电子设备亮屏后相机控制模块对前置摄像头的环境光检测功能的打开操作不响应。
在第一方面的第二十种可能的实现方式中,所述电子设备的软件系统包括框架层、硬件抽象层及内核层,所述框架层包括相机服务模块和传感器服务模块,所述硬件抽象层包括相机控制模块和传感器控制模块,所述内核层包括摄像头驱动,所述基于所述相机应用被启动,所述电子设备将所述目标摄像头下电,然后将所述目标摄像头上电,包括:
基于所述相机应用被启动,所述相机服务模块接收第三指令,所述第三指令包括第二标识和第二包名,所述第二标识对应所述目标摄像头的拍照功能,所述第二包名为所述相机应用的包名;
所述相机服务模块确定存在第一标识,根据第一包名和所述第二包名,确定所述第一标识和所述第二标识的优先级,所述第一标识对应所述目标摄像头的环境光检测功能,所述第一包名为环境光检测应用的包名;
所述相机服务模块确定所述第一标识的优先级低于所述第二标识的优先级,控制所述摄像头驱动将所述目标摄像头下电,以关闭所述目标摄像头的环境光检测功能,然后控制所述摄像头驱动将所述目标摄像头上电,以打开所述目标摄像头的拍照功能。
第二方面,提供了一种电子设备,包括处理器以及存储器;所述存储器存储至少一条程序代码;所述至少一条程序代码用于被所述处理器调用并执行,以实现第一方面所述的显示屏亮度的调节方法。
第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条计算机程序,所述至少一条计算机程序被处理器执行时能够实现第一方面所述的显示屏亮度的调节方法。
第四方面,提供了一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时能够实现第一方面所述的显示屏亮度的调节方法。
本申请实施例提供的技术方案带来的有益效果是:
本申请中目标摄像头具有图像采集功能和环境光检测功能,从而使得目标摄像头作为环境光检测器件成为可能。电子设备亮屏后,将目标摄像头上电,并通过目标摄像头检测环境光亮度,进而基于检测的环境光亮度对显示屏亮度进行调节,从而无需额外配置环境光检测器件,即实现了对显示屏亮度的自动调节,降低了电子设备的成本。且,在对显示屏亮度的调节过程中,目标摄像头只检测环境光亮度,而不采集图像,更不会出图,大大降低了目标摄像头的功耗,节省了电能,提升了电子设备的性能。
进一步地,在显示屏亮度调节过程中,相机应用未启动,当基于用户的操作启动相机
应用后,电子设备通过目标摄像头采集图像,并在相机应用的界面上显示该图像,从而满足了用户的拍照需求。
图1是本申请实施例提供的一种电子设备的结构示意图;
图2是本申请实施例提供的一种电子设备的软件结构框图;
图3是本申请实施例提供的一种显示屏亮度的调节方法的流程图;
图4是本申请实施例提供的另一种显示屏亮度的调节方法的流程图;
图5是本申请实施例提供的另一种显示屏亮度的调节方法的流程图;
图6是本申请实施例提供的一种灭屏关闭前置摄像头环境光检测功能的方法的流程图;
图7是本申请实施例提供的另一种灭屏关闭前置摄像头环境光检测功能的流程图;
图8是本申请实施例提供的一种摄像头使能优先级的管理方法的流程图;
图9是本申请实施例提供的另一种摄像头使能优先级的管理方法的流程图;
图10是本申请实施例提供的另一种摄像头使能优先级的管理方法的流程图;
图11是本申请实施例提供的另一种摄像头使能优先级的管理方法的流程图;
图12是本申请实施例提供的另一种摄像头使能优先级的管理方法的流程图;
图13是本申请实施例提供的另一种摄像头使能优先级的管理方法的流程图;
图14是本申请实施例提供的一种环境光检测功能的管理方法的流程图;
图15是本申请实施例提供的另一种环境光检测功能的管理方法的流程图;
图16是本申请实施例提供的另一种环境光检测功能的管理方法的流程图;
图17是本申请实施例提供的另一种环境光检测功能的管理方法的流程图;
图18是本申请实施例提供的另一种环境光检测功能的管理方法的流程图;
图19是本申请实施例提供的另一种环境光检测功能的管理方法的流程图;
图20是本申请实施例提供的一种电子设备的性能优化逻辑框图。
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
在现代生活中,智能手机、平板电脑、笔记本电脑等电子设备已成为人们生活中必不可少的物品,为满足用户在不同光线场景下的使用需求,电子设备提供了自动调节亮度功能。电子设备亮屏后,可以通过内置的环境光检测器件,检测环境光亮度,进而基于环境
光检测器件检测的环境光亮度,调节电子设备的显示屏亮度,从而在不同的照明条件下使用户具有良好的观看体验。
上述方式虽然能够调节显示屏亮度,但是需要额外配置一个环境光检测器件,增加了电子设备的成本。考虑到目前电子设备都配置有摄像头,而摄像头大都具有光源检测功能,当将支持普通模式(即拍照模式)的摄像头作为环境光检测器件使用时,支持普通模式的摄像头功耗较高,降低了电子设备的性能。随着科技的发展,摄像头可以支持多种模式,包括普通模式、ALS(Ambient Light Sensor mode,环境光传感器)模式、ULP(Ultra Low Power,超低功耗)模式等,这使得摄像头作为环境光检测器件使用成为可能。
鉴于此,本申请实施例提出将目标摄像头替代环境光检测器件检测环境光亮度,进而基于目标摄像头检测的环境光亮度,调节显示屏亮度的方法。该目标摄像头具有环境光检测功能和图像采集功能,可以为电子设备的前置摄像头,也可以电子设备的后置摄像头。考虑到显示屏设置于电子设备的上表面,前置摄像头也设置电子设备的上表面,与显示屏位于同一侧,而电子设备不同侧的环境光亮度是有一定的差异的,为使调节后的显示屏亮度更符合当前环境,本申请以目标摄像头为前置摄像头为例进行说明。
采用本申请实施例的方法调节电子设备的显示屏亮度,不仅能够降低电子设备的成本,而且功耗较低,电子设备性能较高。
图1示出了电子设备100的结构示意图。该电子设备100可以为手机、个人电脑(Personal Computer,PC)、平板电脑、AR(Augmented Reality,增强现实)设备、VR(Virtual Reality,虚拟现实)设备、车载电脑、可穿戴设备、智能家居设备等。电子设备100可以包括处理器110、内部存储器121、摄像头193、显示屏194等。
处理器110可以包括一个或多个处理单元,例如,处理器110可以包括应用处理器(Application Processor,AP)、调制解调处理器、图形处理器(Graphics Processing Unit,GPU)、图像信号处理器(Image Signal Processor,ISP)、控制器、视频编解码器、数字信号处理器(Digital Signal Processor,DSP)、基带处理器、和/或神经网络处理器(Neural-network Processing Unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。当处理器110需要再次使用该指令或数据,可从该存储器中直接调用,避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(Inter-Integrated Circuit,I2C)接口、集成电路内置音频(Inter-Integrated Circuit Sound,I2S)接口、脉冲编码调制(Pulse Code Modulation,PCM)接口、通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,UART)接口、移动产业处理器接口(Mobile Industry Processor Interface,MIPI)、通用输入输出(General-Purpose Input/Output,GPIO)接口、用户标识模块(Subscriber Identity Module,SIM接口)、和/或通用串行总线(Universal Serial Bus,USB)接口等。
内部存储器121可以用于存储计算机可执行程序代码,该可执行程序代码包括指令。
内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据、电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、通用闪存存储器(Universal Flash Storage,UFS)等。处理器110通过运行存储在内部存储器121的指令和/或存储在设置于处理器中的存储器的指令,执行电子设备100的各种功能应用以及数据处理。
电子设备100可以通过GPU、显示屏194以及应用处理器等实现显示功能。其中,GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。显示屏194用于显示图像、视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)、有源矩阵有机发光二极体或主动矩阵有机发光二极体(Active-Matrix Organic Light Emitting Diode,AMOLED)、柔性发光二极管(Flex Light-Emitting Diode,FLED)、Miniled、MicroLed,Micro-oLed、量子点发光二极管(Quantum Dot Light Emitting Diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
电子设备100可以通过ISP、摄像头193、视频编解码器、GPU、显示屏194以及应用处理器等实现拍摄功能。其中,ISP用于处理摄像头193反馈的数据。例如,拍照时打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点、亮度、肤色进行算法优化。ISP还可以对拍摄场景的曝光、色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(Charge Coupled Device,CCD)或互补金属氧化物半导体(Complementary Metal-Oxide-Semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB、YUV等格式的图像信号。在一些实施例中,电子设备100可以包括1个或N个摄像头193,N为大于1的正整数。
可选地,电子设备100还可以包括外部存储器接口120、通用串行总线(Universal Serial Bus,USB)接口130、充电管理模块140、电源管理模块141、电池142、天线1、天线2、移动通信模块150、无线通信模块160、音频模块170、扬声器170A、受话器170B、麦克风170C、耳机接口170D、传感器模块180、按键190、马达191、指示器192以及用户标识模块卡接口195。其中,传感器模块180可以包括压力传感器180A、陀螺仪传感器180B、气压传感器180C、磁传感器180D、加速度传感器180E、距离传感器180F、接近光传感器180G、指纹传感器180H、温度传感器180J、触摸传感器180K、骨传导传感器180M等。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如,将音乐、视频等文件保存在外部存储卡中。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口、Micro USB
接口、USB Type C接口等。USB接口130可以用于连接充电器为电子设备100充电;也可以用于电子设备100与外围设备之间传输数据;也可以用于连接耳机,通过耳机播放音频;还可以用于连接其他电子设备,例如AR设备等。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
电源管理模块141用于连接电池142、充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110、内部存储器121、显示屏194、摄像头193、无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
电子设备100的无线通信功能可以通过天线1、天线2、移动通信模块150、无线通信模块160、调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如,可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器、开关、功率放大器、低噪声放大器(Low Noise Amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波、放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
无线通信模块160可以提供应用在电子设备100上的包括无线局域网(Wireless Local Area Networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi网络)、蓝牙(Bluetooth,BT)、全球导航卫星系统(Global Navigation Satellite System,GNSS)、调频(Frequency Modulation,FM)、近距离无线通信技术(Near Field Communication,NFC)、红外技术(Infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(Global System for Mobile communications,GSM)、通用分组无线服务(General Packet Radio Dervice,GPRS)、码分多址接入(Code
Division Multiple Access,CDMA)、宽带码分多址(Wideband Code Division Multiple Access,WCDMA)、时分码分多址(Time-Division Code Division Multiple Access,TD-SCDMA)、长期演进(Long Term Evolution,LTE)、BT、GNSS、WLAN、NFC、FM和/或IR技术等。所述GNSS可以包括全球卫星定位系统(Global Positioning System,GPS)、全球导航卫星系统(Global Navigation Satellite System,GLONASS)、北斗卫星导航系统(Beidou Navigation Satellite System,BDS)、准天顶卫星系统(Quasi-Zenith Satellite System,QZSS)和/或星基增强系统(Satellite Based Augmentation Systems,SBAS)。
电子设备100可以通过音频模块170、扬声器170A、受话器170B、麦克风170C、耳机接口170D以及应用处理器等实现音频功能。例如音乐播放,录音等。
可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件、软件或软件和硬件的组合实现。另外,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
电子设备100中安装有软件系统,该软件系统可以运行在处理器110上。该软件系统可以为Android系统、Windows系统、IOS系统、鸿蒙系统等,软件系统所采用的架构可以为分层架构、事件驱动架构、微核架构、微服务架构,或云架构。本申请实施例以分层架构的Android系统为例,示例性说明电子设备100的软件结构。参见图2,Android系统可以分为四层,从上至下分别为应用程序层、框架层(Framework,FWK)、硬件抽象层(Hardware Abstraction Layer,HAL)以及内核层。
其中,应用程序层可以包括一系列应用程序,例如,相机、日历、地图、WLAN、音乐、短信息、图库、通话、环境光检测、人脸解锁等应用,用于与用户直接进行交互。这些应用可以是系统内置的应用,也可以是非系统级的应用。且这些应用可以具有图标和应用界面,也可以不具有图标而具有应用界面,还可以不具有图标和应用应用界面。
框架层包括一些预先定义的函数,可为应用程序层的应用提供应用编程接口(Application Programming Interface,API)和编程框架。框架层提供的应用编程接口可以包括相机服务相关的接口、传感器服务相关的接口,以及其他服务相关的接口。不同服务相关的接口可以定义为不同的服务模块,例如,传感器服务相关的接口可以定义为传感器服务模块、相机服务相关的接口可以定义为相机服务模块、其他服务相关的接口可以定义为其他服务模块(图中并未示出)等。其中,传感器服务模块可以包括SensorManager、SensorSerivce等子模块。SensorManager用于根据检测的环境光亮度,调节电子设备的显示屏亮度。SensorSerivce用于实现应用程序层中需要调用传感器的相关应用与Sensor HAL间的通信。可选地,传感器服务模块可以作为一个独立的进程,SensorManager和SensorSerivce可以是该进程中的两个线程。相机服务模块包括ICameraSerivce、CameraSerivce等子模块。CameraService可用于实现应用程序层中需要调用摄像头的应用(例如,相机应用、人脸解锁应用、环境光检测应用等)与Camera HAL间的通信。可选地,相机服务模块可以作为一个独立的进程,ICameraSerivce和CameraSerivce可以是该进程中的两个线程。电子设备设
置有包括多个摄像头,多个摄像头无法同时使能,且同一摄像头的不同功能间也无法同时使能。在将前置摄像头替代环境光检测器件使用时,为解决多个摄像头不同功能的使能优先级问题,本申请实施例对相机服务模块中的CameraSerivce进行了修改,增加了摄像头的不同功能的使能优先级的判断逻辑,从而在两种及两种以上摄像头功能需要同时使能时,能够根据该判断逻辑择一进行使能。
硬件抽象层位于框架层和内核层之间,其目的在于将硬件抽象化。硬件抽象层隐藏了特定平台的硬件接口细节,为软件系统提供虚拟硬件平台,使其具有硬件无关性,可在多种平台上进行移植。根据所实现的功能,硬件抽象层可以进一步细化为相机相关的硬件抽象层(即后续实施例中所述的Camera HAL)、传感器相关的硬件抽象层(即后续实施例所述的Sensor HAL)等。相机相关的硬件抽象层可以定义为相机控制模块,传感器相关的硬件抽象层可以定义为传感器控制模块。可选地,相机控制模块可以作为一个独立的进程,传感器控制模块也可以作为一个独立的进程。为实现前置摄像头的环境光检测功能,本申请实施例对传感器控制模块(Sensor HAL)进行了修改。具体来说,在传感器控制模块中增加了环境光业务控制子模块(即后续实施例中所述的CameraLightManager),该环境光业务控制子模块提供了多个接口,包括Active接口、DeActive接口等。其中,Active接口用于打开前置摄像头的环境光检测功能。DeActive接口用于关闭前置摄像头的环境光检测功能。本申请实施例还对相机控制模块(Camera HAL)进行了修改。具体来说,在相机控制模块中增加了相机功能定制子模块(即后续实施例中所述的CamxLightCustom),并对相机控制模块中已有的功能子模块(例如CHI-CDK、CAMX等)进行修改。其中,相机功能定制子模块用于在前置摄像头作为环境光检测器件使用时,获取前置摄像头检测的环境光亮度,并将前置摄像头检测的环境光亮度发送给传感器控制模块,以便于传感器控制模块将环境光亮度上报给传感器服务模块,从而调节电子设备的显示屏亮度。CHI-CDK为可定制化的代码实现集合,本申请实施例在CHI-CDK原有的代码实现集合基础上,增加了AIDL(Android Interface Definition Language,安卓接口定义语言)服务初始化相关的代码,使得电子设备内的不同进程(例如Sensor HAL和Camera HAL)之间可进行通信。其中,AIDL用于定义Android系统基于Binder通信的客户端与服务端之间的接口。Binder是Android系统的一种跨进程通信机制,它允许不同进程间进行通信,甚至可以跨设备进行通信。CAMX为通用功能性接口的代码实现集合,本申请实施例在CAMX中原有的代码实现集合基础上,对其中的第一函数(即Open Camera函数)进行修改,增加了可以跳过为前置摄像头配置出图资源的逻辑分支,从而在将前置摄像头作为环境光检测器件使用时,可以跳过为前置摄像头配置出图资源的流程,降低前置摄像头的功耗,提升电子设备的性能。
内核层是硬件和软件之间的层。内核层可以包括显示驱动、摄像头驱动、音频驱动、传感器驱动等,通过这些驱动可以驱动显示屏、前/后置摄像头、音频播放器、传感器等。
本申请实施例提供了一种显示屏亮度的调节方法,以具有图2所示的软件系统的电子设备100执行本申请实施例为例,参见图3,本申请实施例提供的方法流程包括:
301、电子设备亮屏后,将前置摄像头上电。
电子设备亮屏后,启动环境光检测功能,电子设备将前置摄像头上电,打开前置摄像头的环境光检测功能。其中,电子设备亮屏可以是开机首次亮屏,也可以是开机后的非首
次亮屏。如果电子设备处于关机状态,可通过长按电源键,将电子设备开机,从而将显示屏点亮。如果电子设备处于开机状态,可通过触控电源键、采用预设手势(例如双击等)触控显示屏、抬起电子设备等方式,将电子设备的显示屏点亮。电子设备亮屏后,将前置摄像头上电,可以为基于电子设备亮屏,将前置摄像头上电,以对前置摄像头进行初始化,从而打开前置摄像头检测环境光亮度。
302、电子设备通过前置摄像头检测环境光亮度。
前置摄像头上电后,前置摄像头的环境光检测功能被打开,电子设备通过该前置摄像头可以检测电子设备所在环境的环境光亮度,从而实现对显示屏亮度的自动调节。
303、基于前置摄像头检测的环境光亮度,电子设备调节显示屏亮度。
在一种可能的实现方式中,前置摄像头检测的环境光亮度可以为前置摄像头输出的第一环境光亮度,电子设备可以基于前置摄像头输出的第一环境光亮度,对显示屏亮度进行调节。例如,电子设备可以将第一环境光亮度作为调节后的显示屏亮度;也可以获取电子设备的显示屏的默认亮度,并基于第一环境光亮度,对默认亮度进行调节,得到调节后的显示屏亮度。
在另一种可能的实现方式中,前置摄像头检测的环境光亮度可以为基于前置摄像头输出的第一环境光亮度,生成的第二环境光亮度,电子设备可以基于第二环境光亮度,对显示屏亮度进行调节。例如,电子设备可以将第二环境光亮度作为调节后的显示屏亮度;也可以获取电子设备的显示屏的默认亮度,并基于第二环境光亮度,对默认亮度进行调节,得到调节后的显示屏亮度。
考虑到电子设备调节显示屏亮度时,如果相机应用未启动,电子设备无需显示图像,为降低前置摄像头的功耗,提升电子设备的性能,在电子设备调节显示屏亮度的过程中,前置摄像头不采集图像。
304、响应于用户的操作,电子设备启动相机应用。
电子设备亮屏后,电子设备可以检测用户对相机应用的触控操作,当检测到用户对相机应用的图标的触控操作,电子设备启动相机应用;电子设备还可以检测第三方应用对相机应用的调用操作,当检测到第三方应用调用相机应用,电子设备可以启动相机应用。
305、在启动相机应用后,电子设备通过前置摄像头采集图像,显示相机应用的界面。
在相机应用启动前,前置摄像头已上电,电子设备通过前置摄像头检测的环境光亮度,对显示屏亮度进行调节。在相机应用启动后,基于相机应用被启动,需要打开前置摄像头的拍照功能。由于此时前置摄像头的环境光检测功能使能,拍照功能未使能,而通常每个摄像头通常使能一种功能,为实现前置摄像头的拍照功能,电子设备将前置摄像头下电,关闭前置摄像头的环境光检测功能,然后将前置摄像头上电,打开前置摄像头的拍照功能。前置摄像头的拍照功能打开后,电子设备可以获取前置摄像头采集的图像,进而在相机应用的界面上显示该前置摄像头采集的图像,从而满足用户的拍照需求。
可选地,在启动相机应用后,电子设备可以不调节显示屏亮度,从而减低电子设备的功耗,提升电子设备的性能。
在本申请的另一个实施例中,相机应用启动后,响应于用户的操作,电子设备关闭相机应用,在关闭相机应用后,电子设备通过前置摄像头检测环境光亮度,进而基于前置摄像头检测的环境光亮度,电子设备调节显示屏亮度。在电子设备调节显示屏亮度的过程中,
前置摄像头不采集图像。具体地,电子设备通过前置摄像头检测环境光亮度时,可以基于相机应用被关闭,电子设备将前置摄像头下电,关闭前置摄像头的拍照功能,然后将前置摄像头上电,打开前置摄像头的环境光检测功能,进而获取前置摄像头检测的环境光亮度。
在本申请的另一个实施例中,为保护用户的信息安全,电子设备的显示屏可以设置锁屏密码,电子设备可以通过获取用户输入的锁屏密码进行解锁,还可以通过启动人脸解锁应用,通过前置摄像头采集的人脸图像,对显示屏进行解锁。这样,电子设备亮屏后,不仅会启动人脸解锁应用,执行人脸解锁操作,而且会启动环境光检测应用,执行显示屏亮度的调节操作。如果电子设备亮屏后,电子设备先接收到人脸解锁应用对前置摄像头的打开指令,后接收到环境光检测应用对前置摄像头的打开指令,电子设备将先打开前置摄像头的人脸解锁功能,屏幕解锁后,打开前置摄像头的环境光检测功能。
具体地,电子设备亮屏后,启动人脸解锁应用,在启动人脸解锁应用后,电子设备通过前置摄像头采集图像,显示屏解锁后,人脸解锁应用被关闭,在人脸应用被关闭后,电子设备将前置摄像头下电,关闭前置摄像头的人脸解锁功能,然后将前置摄像头上电,打开前置摄像头的环境光检测功能,从而通过前置摄像头检测的环境光亮度,对显示屏亮度进行调节。
当然,如果电子设备先接收到环境光检测应用对前置摄像头的打开指令,后接收到人脸解锁应用对前置摄像头的打开指令,电子设备将先打开前置摄像头的环境光检测功能,对显示屏亮度进行调节,后打开前置摄像头的人脸解锁功能,对显示屏进行解锁。电子设备亮屏后,对于前置摄像头的环境光检测功能和人脸解锁功能不同使能顺序下,电子设备底层的处理逻辑,具体可以参见后续图11和图12的流程图,此处暂不详述。
对于具有上述图2所示的软件系统的电子设备来说,相机服务模块通过向相机控制模块下发指令可以控制前置摄像头的打开和关闭,传感器服务模块通过向传感器控制模块下发指令可以控制环境光检测器件的打开和关闭。当将前置摄像头替代环境光检测器件使用时,前置摄像头的打开和关闭则需要由传感器服务模块下发的指令控制。由于传感器控制模块无法将传感器服务模块下发的指令传递给前置摄像头,而相机控制模块可以将相机服务模块下发的指令传递给前置摄像头,为实现前置摄像头替代环境光检测器件,需要建立传感器控制模块与相机服务模块之间的控制通路,从而借助相机服务模块实现对前置摄像头的控制。本申请实施例HAL层的传感器控制模块可以作为一个独立的进程,FWK层的相机服务模块也可以作为一个独立的进程,因此,在建立HAL层的传感器控制模块与FWK层的相机服务模块之间的控制通路时,可基于HIDL服务进行建立。其中,HIDL用于定义安卓系统基于Binder通信的HAL层与FWK层之间的接口。
在打通传感器控制模块与相机服务模块的控制通路后,还需要建立传感器控制模块和相机控制模块之间的数据通路,从而在打开前置摄像头的环境光检测功能后,相机控制模块可以将前置摄像头检测的环境光亮度传发送给传感器控制模块,再由传感器控制模块发送给传感器服务模块,从而实现对显示屏亮度的调节。
对于传感器控制模块和相机控制模块之间数据通路的建立过程,参见图4,本申请实施例提供了一种显示屏亮度的调节方法,该方法可由具有图2所示的软件系统的电子设备100
执行,本申请实施例提供的方法流程包括:
401、基于电子设备开机,相机控制模块将AIDL服务初始化。
在本申请实施例中,相机控制模块(即Camera HAL)可以作为一个独立的进程,该独立进程可以定义为相机控制进程,相机控制模块包括的子模块(比如CHK-CDK、CAMX、CamxLightCustom等)可以是相机控制进程中的不同线程。AIDL服务初始化可以是将AIDL服务拉起的过程。通过将AIDL服务初始化,可以实现基于AIDL服务的客户端和服务端之间的通信。AIDL服务初始化可以在相机控制模块中执行,具体地,可以在相机控制模块的CHK-CDK中执行。AIDL服务可以在电子设备开机过程中进行初始化,也可以在开机后基于AIDL服务的客户端和服务端需要通信时进行初始化,本申请实施例不对AIDL服务初始化的时机进行限定。AIDL服务初始化的过程可以对应图5中的步骤①,参见图5,电子设备开机时,将Camera HAL的CHI-CDK中的AIDL服务初始化,可以是将AIDL服务拉起。
可选地,AIDL服务初始化过程可以采用如下代码实现:
CamLightAidlImpl::GetInstance()->Init(…)。
402、传感器服务模块向传感器控制模块发送亮度监听指令。
在本申请实施例中,传感器服务模块(即SensorService)可以作为一个独立的进程,该独立的进程可以定义为传感器服务进程,传感器服务模块包括的子模块(比如SensorManager、SensorService等)可以是该传感器服务进程中的线程。传感器控制模块(即Sensor HAL)也可以作为一个独立的进程,该独立的进程可以定义为传感器控制进程,传感器控制模块包括的子模块(比如CameraLightManager等)可以是该传感器控制进程中的线程。
电子设备开机后,应用程序层中环境光检测应用向传感器服务模块发送亮屏消息,该亮屏消息可以包括环境光检测应用的包名,该亮屏消息用于指示传感器服务模块调节电子设备显示屏亮度。当接收到该亮屏消息后,传感器服务模块向传感器控制模块发送亮度监听指令。该亮度监听指令用于指示传感器控制模块获取环境光亮度。亮度监听指令可以为回调函数形式,从而在传感器控制模块获取到环境光亮度后,能够将获取的环境光亮度返回给传感器服务模块。
可选地,传感器服务模块向传感器控制模块发送亮度监听指令可以为:传感器服务进程向传感器控制进程发送亮度监听指令。参见图5,传感器服务模块向传感器控制模块发送亮度监听指令具体可以是,FWK层中的SensorManager基于应用程序层中环境光检测应用发送的亮屏消息,生成亮度监听指令,并通过SensorService将该亮度监听指令发送给HAL层中的Sensor HAL。
403、在接收到亮度监听指令后,传感器控制模块调用基于AIDL服务的第一接口,在相机控制模块中注册数据回调函数。
在接收到亮度监听指令后,传感器控制模块调用基于AIDL服务的第一接口,在相机控制模块中注册数据回调函数,可以是基于亮度监听指令,传感器控制模块调用第一接口,在相机控制模块中注册数据回调函数,还可以是响应于亮度监听指令,传感器控制模块调用第一接口,在相机控制模块中注册数据回调函数。
在计算机领域,AIDL服务用于实现不同进程之间的通信。对于基于AIDL服务通信的两个进程来说,一个进程用于产生数据,可以作为AIDL服务端;另一个进程用于发出控制
指令和接收数据,可以作为AIDL客户端。在本申请实施例中,当将前置摄像头替代环境光检测器件使用时,相机控制模块(Camera HAL)用于提供环境光亮度,且可以作为一个独立进程,因此,可以看作AIDL服务端(后续实施例中简称为服务端);传感器控制模块(Sensor HAL)用于接收环境光亮度,因此,可以看作AIDL客户端(后续实施例中简称为客户端)。
其中,第一接口可以为Active接口。Active接口用于打开前置摄像头的环境光检测功能。当传感器控制模块调用Active接口打开前置摄像头的环境光检测功能后,传感器控制模块可以调用Active接口,在相机控制模块中注册数据回调函数,相机控制模块通过该数据回调函数,可以将前置摄像头检测的环境光亮度发送给传感器控制模块,从而打通了相机控制模块和传感器控制模块之间的数据通路,使得前置摄像头替代环境光器件成为可能。
在本申请实施例中,传感器控制模块调用Active接口,在相机控制模块中注册数据回调函数之前,Active接口需要先进行声明。由于Active接口属于AIDL接口,因此,其声明中通常会包含两个参数,一个可以是客户端的进程号(Process Identifier,PID),也即是作为客户端的传感器控制模块(Sensor HAL)对应进程的进程号;另一个可以是客户端的回调对象(CallBack),也即是传感器控制模块中用于接收环境光亮度的对象,可选地,该回调对象对应图5中的ReportLusStatus。
其中,Active接口的声明时可采用如下代码:
进一步地,基于Active接口的声明内容,传感器控制模块和相机控制模块可以分别在本端注册回调接口,当传感器控制模块和相机控制模块中的回调接口注册完成后,即完成相机控制模块中数据回调函数的注册。可选地,传感器控制模块可以在CamLightManager中注册回调接口,相机控制模块可以在CamxLightCustom中注册回调接口。
其中,传感器控制模块中回调接口注册时可采用如下代码:
CamLightManager::RegisterLuxCb(){
mCamLightService->RegisterLuxCallback(callingPid,mLuxCallback);
}
CamLightManager::RegisterLuxCb(){
mCamLightService->RegisterLuxCallback(callingPid,mLuxCallback);
}
相机控制模块中回调接口注册时可采用如下代码:
void CamxLightCustom::RegisterLightLuxStatusCb(Callback callback)
可选地,传感器控制模块调用基于AIDL服务的第一接口,在相机控制模块中注册数据回调函数的步骤可以对应图5中的步骤②和③,具体包括:Sensor HAL接收到亮度监听指令后,调用CamLightManager中的Active接口,基于Active接口的声明内容,在CamLightManager中注册回调接口,并在CamxLightCustom中注册回调接口,当CamLightManager和CamxLightCustom中的回调接口注册完成后,即完成数据回调函数的注册。
可选地,数据回调函数不仅可以在前置摄像头的环境光检测功能使能时,将前置摄像头检测的环境光亮度返回给传感器控制模块;还可以在前置摄像头的环境光检测功能使能
失败或被关闭,导致环境光检测功能使能失败或被关闭的摄像头关闭后,向传感器控制模块发送通知消息,以使传感器控制模块使能前置摄像头的环境光检测功能。
可选地,受限于前置摄像头本身的感光精度,导致前置摄像头检测的环境光亮度和实际环境中的环境光亮度存在一定的误差,为提高显示屏亮度调节的准确性,本申请实施例中相机控制模块在注册回调接口时,还可以在回调接口中注册数据校准接口函数,该数据校准函数用于提供前置摄像头检测的环境光亮度和实际环境中的环境光亮度的校准系数,可以在基于回调接口返回前置摄像头环境光亮度时,对前置摄像头检测的环境光亮度进行校准,该数据校准函数可以为LuxValueConvert()。
可选地,电子设备在运行过程中可能会存在进程突然崩溃的情况,对于AIDL所涉及的服务端和客户端来说,也可能会发生崩溃。在本申请实施例中,为了能够及时监听到相机控制模块(服务端)和传感器控制模块(客户端)的崩溃,传感器控制模块和相机控制模块还可以分别在本端注册死亡监听对象。在一种可能的实现方式中,相机控制模块可以在注册回调接口时,在本端注册第一死亡监听对象。通过注册该第一死亡监听对象,可以监听到相机控制模块在亮屏场景和灭屏场景下的崩溃。传感器控制模块可以在注册回调接口时,在本端注册第二死监听对象。通过注册该第二死亡监听对象,可以监听到传感器控制模块在亮屏场景和灭屏场景下的崩溃。可选地,可以对应图15中的步骤①,具体包括:SensorHAL在CamLightManager中注册回调接口的过程中,可以在CamLightManager中注册第二死亡监听对象,从而在监听到SensorHAL的崩溃事件时,生成死亡通知消息,以通知Camera HAL;Camera HAL在CamxLightCustom中注册回调接口的过程中,可以在CamxLightCustom中注册第一死亡监听对象,从而在监听到Camera HAL的崩溃事件时,生成死亡通知消息,以通知SensorHAL。
可选地,对于电子设备来说,有的电子设备上的前置摄像头可能支持环境光检测功能,有的电子设备上的前置摄像头可能并不支持环境光检测功能,为避免对不支持环境光检测功能的前置摄像头执行使能操作,降低电子设备的资源消耗,传感器控制模块在调用第一接口打开前置摄像头的环境光检测功能之前,具体可在执行步骤403之前,比如在电子设备开机时,或者接收到亮度监听指令时,获取预设标识位上的数值,进而基于该预设标识位上的数值,判断电子设备的前置摄像头是否支持环境光检测功能,当前置摄像头支持环境光检测功能,则调用第一接口打开前置摄像头的环境光检测功能,当前置摄像头不支持环境光检测功能,则不再调用第一接口。其中,预设标识位可以为is_ambient_light,用于指示前置摄像头是否支持环境光检测功能,预设标识位上的数值可以为ture或flase。当预设标识位上的数值为ture,则可以确定前置摄像头支持环境光检测功能;当预设标识位上的数值为flase,则可以确定前置摄像头不支持环境光检测功能。
需要说明的是,当电子设备未关机,则本步骤中注册的数据回调函数,可在后续调用前置摄像头检测环境光亮度时直接使用,而无需重新注册;当电子设备关机,则本步骤中注册的数据回调函数将被销毁,后续电子设备再次开机时,需要执行上述步骤401至403注册数据回调函数。
404、传感器控制模块调用基于HIDL服务的第二接口,向相机服务模块发送第一指令。
通常摄像头包括前置摄像头和后置摄像头两种类型,前置摄像头和后置摄像头的数量分别为至少一个。且,前置摄像头和后置摄像头分别具有多种功能,包括拍照功能、人脸
解锁功能、环境光检测功能等中至少一种。为将不同类型的摄像头及同一种类型的摄像头的不同功能区分开来,本申请实施例根据摄像头的类型及其功能,抽象出多个逻辑摄像头,每个逻辑摄像头对应一个标识。例如,根据前置摄像头的拍照功能,可以抽象出逻辑摄像头A,根据前置摄像头的环境光检测功能,可以抽象出逻辑摄像头B,逻辑摄像头A和逻辑摄像头B可以对应同一前置摄像头,也可以对应不同的前置摄像头。为逻辑摄像头A即前置摄像头的拍照功能,设置的标识为Camera ID=1,为逻辑摄像头B即前置摄像头的环境光检测功能,设置的标识为Camera ID=4。
在本申请实施例中,传感器控制模块可以调用第一接口生成第一指令,然后第二接口将该第一指令发送至相机服务模块。其中,第二接口属于HIDL服务的接口,可以是图5中的libcamera2ndk_vendor等。相机服务模块可以作为一个独立的进程,该独立进程可以定义为相机服务进程。第一指令可以是Open Camera指令。该第一指令中可以包括第一标识,该第一标识对应前置摄像头的环境光检测功能,可以为Camera ID=4。该第一指令还可以包括第一包名,该第一包名为环境光检测应用的包名。
可选地,传感器服务模块调用第二接口向相机服务模块发送第一指令可以对应图5中的步骤④,具体包括:调用Sensor HAL中CamLightManager的Active接口,生成第一指令,并通过基于HIDL服务的libcamera2ndk_vendor接口将该第一指令发送至FWK层中的ICameraService。
405、在接收到第一指令后,相机服务模块调用相机控制模块中的第一函数,并根据第一标识,执行第一函数,以控制摄像头驱动将前置摄像头上电、初始化摄像头寄存器及创建环境光亮度的读取线程。
可选地,本步骤中对前置摄像头的上电、初始化摄像头寄存器等操作可以是打开前置摄像头的具体过程,或者,可以是对前置摄像头进行上电初始化的过程。
其中,第一函数用于打开电子设备内任一摄像头的任一种功能,第一函数可以为Open Camera函数。在接收到第一指令后,相机服务模块可以调用相机控制模块中的第一函数,并根据第一标识,执行第一函数。根据第一标识,可以确定需要打开的前置摄像头的环境光检测功能,此时前置摄像头将替代环境光检测器件使用。在前置摄像头替代环境光检测器件使用时,前置摄像头需要检测环境光亮度,而无需采集图像。为降低前置摄像头的功耗,相机服务模块根据第一标识,执行第一函数中与打开前置摄像头的环境光检测功能必要的流程,比如申请CSL资源缓存、将前置摄像头上电、初始化摄像头寄存器、创建环境光亮度的读取线程等,而跳出与打开前置摄像头的环境光检测功能无关的流程,比如配置出图资源的流程等。通过执行该第一函数可以生成相应的控制指令,该控制指令被下发给摄像头驱动,从而控制摄像头驱动为前置摄像头申请CSL资源缓存、将前置摄像头上电、初始化摄像头寄存器、创建读取线程等。其中,所创建的读取线程用于读取和计算前置摄像头检测的环境光亮度。可选地,该读取线程可以为异步读取线程。可选地,该读取线程可以周期性读取前置摄像头检测的环境光亮度。基于对摄像头寄存器的初始化,可以在前置寄存器中写入前置摄像头检测环境光亮度的周期、前置摄像头检测环境光亮度的频率等,从而控制前置摄像头工作。
可选地,该步骤可以对应图5中的⑤,具体包括:当接收到第一指令,通过CameraService调用Camera HAL的CAMX中的Open Camera函数,并执行该Open Camera函数,通过
CamxLightCustom的接口,向摄像头驱动发送控制指令,使得摄像头驱动为前置摄像头的环境光检测功能申请CSL资源缓存、将前置摄像头上电、初始化摄像头寄存器、创建异步读取线程等。
采用本申请实施例的方法,当前置摄像头替代环境光检测器件使用时,不会为前置摄像头配置出图资源,前置摄像头不会采集图像,降低了前置摄像头的资源消耗,提升了电子设备的性能。
406、相机控制模块获取前置摄像头输出的第一环境光亮度,并通过数据回调函数,将第二环境光亮度发送至传感器控制模块。
其中,第二环境光亮度是基于第一环境光亮度生成的,第二环境光亮度可以等于第一环境光亮度,第二环境光亮度也可以不等于第一环境光亮度。当第二环境光亮度不等于第一环境光亮度时,第二环境光亮度可以基于第一环境光亮度及第三环境光亮度生成,该第三环境光亮度为采用数据校准函数提供的校准系数,对第一环境光亮度校准,得到的校准后的环境光亮度。第二环境光亮度还可以基于第一环境光亮度、第三环境光亮度及前置摄像头的状态参数生成,该状态参数包括可用和不可用等,可用是指前置摄像头的环境光检测功能可用,不可用是指前置摄像头的环境光检测功能不可用。需要说明的是,本申请实施例中的第一环境光亮度和第二环境光亮度并不是一个亮度值,而是表示一类亮度值,比如,第一环境光亮度表示的前置摄像头在不同时刻输出的亮度值;第二环境光亮度表示的是相机控制模块在不同时刻向传感器控制模块发送的亮度值。
在一种可能的实现方式中,摄像头驱动可以通过读取线程周期性读取前置摄像头检测的第一环境光亮度,并将读取的第一环境光亮度发送至相机控制模块,使得相机控制模块可以获取前置摄像头输出的第一环境光亮度,该读取周期可以为200ms。摄像头驱动还可以通过读取线程周期性读取前置摄像头检测的第一环境光亮度,并将读取的第一环境光亮度存储到缓存中,相机控制模块可以周期性读取摄像头驱动的缓存中存储的第一环境光亮度,从而获取前置摄像头输出的第一环境光亮度。可选地,摄像头驱动的读取周期与相机控制模块的读取周期可以相同,也可以不同。
可选地,相机控制模块可以通过预先注册的数据回调函数,将第二环境光亮度发送至传感器控制模块。具体地,相机控制模块可将第二环境光亮度填充到预先注册的数据回调函数中,通过该数据回调函数,将第二环境光亮度发送至传感器控制模块。
结合第二环境光亮度的不同内容,相机控制模块通过预先注册的数据回调函数,将第二环境光亮度发送至传感器控制模块,具体包括以下几种方式:
第一种方式、相机控制模块将前置摄像头输出的第一环境光亮度填充到数据回调函数中,通过该数据回调函数,将第一环境光亮度发送至传感器控制模块。
第二种方式、相机控制模块将前置摄像头检测的第一环境光亮度和校准后得到的第三环境光亮度填充到数据回调函数中,通过该数据回调函数,将第一环境光亮度和第二环境光亮度发送至传感器控制模块。
第三种方式、相机控制模块将前置摄像头检测的第一环境光亮度、校准后得到的第三环境光亮度及前置摄像头的状态参数填充到数据回调函数中,通过该数据回调函数,将第一环境光亮度、第二环境光亮度及状态参数发送至传感器控制模块。
针对第三种方式,填充后的数据回调函数的形式可以为:
pCamxLightCustom->mStatusCb(static_cast<float>(luxValue),luxValueFinal,status);
pCamxLightCustom->mStatusCb(static_cast<float>(luxValue),luxValueFinal,status);
其中,luxValue为第一环境光亮度,即前置摄像头检测的环境光亮度,luxValueFinal为第三环境光亮度,即校准后的环境光亮度,status为前置摄像头的状态参数。
可选地,此处列举三种具体的实现方式,可以只选用其中一种方式返回第二环境光亮度,也可以选用多种方式返回第二环境光亮度。每次返回第二环境光亮度时可以采用相同的方式,也采用不同的方式。例如,可以第一次采用第一种实现方式返回第二环境光亮度,第二次采用第二种实现方式返回第二环境光亮度,第三次采用第三种实现方式返回第二环境光亮度,以此类推;也可以每次均采用多种方式返回一次第二环境光亮度,然后将多种方式返回的第二环境光亮度进行融合。
407、传感器控制模块将第二环境光亮度发送至传感器服务模块。
可选地,传感器控制模块中的ReportLuxStatus对象可以接收相机控制模块发送的第二环境光亮度,进而将该第二环境光亮度发送至传感器服务模块。
在一种可能的实现方式中,传感器服务模块向传感器控制模块发送亮度监听指令时,会在传感器控制模块中注册回调函数,通过该回调函数,传感器控制模块可以将第二环境光亮度发送至传感器服务模块。可选地,传感器控制模块可以将第二环境光亮度填充到回调函数中,通过该回调函数,将第二环境光亮度发送至传感器控制模块。
在另一种可能的实现方式中,传感器服务模块可以周期性读取传感器控制模块的第二环境光亮度。
对于传感器控制模块对第二环境光亮度的处理逻辑,可参见下述代码:
::ndk::ScopedAStatus ReportLuxStatus(const LuxStatus&out_data){
//客户端数据处理逻辑
}
::ndk::ScopedAStatus ReportLuxStatus(const LuxStatus&out_data){
//客户端数据处理逻辑
}
可选地,步骤406至步骤407可以对应图5中的⑤和⑥,具体包括:Camera HAL的CamxLightCustom获取前置摄像头输出的第一环境光亮度,通过预先注册的数据回调函数,将第二环境光亮度返回给Sensor HAL的CamLightManager中的ReportLuxStatus对象,ReportLuxStatus对象通过SensorSerivce将第二环境光亮度上报给SensorManager。
408、传感器服务模块基于第二环境光亮度,调节电子设备的显示屏亮度。
在一种可能的实现方式中,调节显示屏的亮度可以是设置显示屏的亮度。具体地,传感器服务模块可以基于第二环境光亮度,确定出显示屏的亮度,进而将显示屏的亮度设置为确定的亮度;传感器服务模块还可以基于历史环境光亮度和第二环境光亮度,确定出显示屏的亮度,进而将显示屏的亮度设置为确定的亮度。
在另一种可能的实现方式中,调节显示屏的亮度可以是在显示屏的初始亮度基础上,对初始亮度进行调节。该初始亮度可以是技术人员预先设置的亮度值。具体地,传感器服务模块可以基于第二环境光亮度,确定出显示屏的亮度,然后将显示屏的亮度由初始亮度调节为确定的亮度;传感器服务模块还可以基于历史环境光亮度和第二环境光亮度,确定出显示屏的亮度,然后将显示屏的亮度由初始亮度调节为确定的亮度。可选地,将显示屏的亮度由初始亮度调节为确定的亮度时,可以逐步调节,避免亮度变化过大影响用户体验。
可选地,传感器服务在调节显示屏亮度时,可生成亮度调节指令,进而将该亮度调节指令发送给传感器控制模块,传感器控制模块将亮度调节指令发送给显示屏驱动,使得显
示屏驱动执行该亮度调节指令,对显示屏亮度进行调节。
上述以电子设备的亮屏为开机首次亮屏为例进行说明,当电子设备的亮屏为非首次亮屏,电子设备可以不执行步骤401中的AIDL服务的初始化过程和步骤403中数据回调函数的注册过程,而执行其他步骤,具体参见图4或图5所示的流程,此处不再赘述。
参见图6,本申请实施例提供了一种灭屏关闭前置摄像头环境光检测功能的方法,该方法在电子设备灭屏,可以关闭前置摄像头的环境光检测功能,以降低电子设备的电力消耗。以具有图2所示的软件系统的电子设备100执行本申请实施例为例,该方法可以与图4所示显示屏亮度调节流程是独立的,没有时序关系,也可以在图4中步骤405之后的任一时间执行。参见图6,本申请实施例提供的方法流程包括:
601、电子设备灭屏后,传感器控制模块调用基于AIDL服务的第三接口,然后调用第二接口,向相机服务模块发送第二指令。
可选地,基于电子设备灭屏,传感器服务模块可以接收到电子设备的灭屏消息,在接收到该灭屏消息后,传感器服务模块可以向传感器控制模块发送停止亮度监听指令。在接收到该停止亮度监听指令,传感器控制模块可以调用第三接口,生成第二指令,然后调用第二接口,向相机服务模块发送第二指令。其中,第三接口可以为DeActive接口,该DeActive接口用于关闭前置摄像头的环境光检测功能。第二指令可以是Close Camera指令,包括第一标识、第一包名等。
可选地,本步骤可以对应图7中的①②③④,具体包括:SensorManager接收到电子设备的灭屏消息,生成停止亮度监听指令,并调用SensorSerivce将停止亮度监听指令发送至Sensor HAL,Sensor HAL调用CameraLightManager的DeActive接口,生成Close Camera指令,该Close Camera指令包括Camera Id=4和环境光检测应用的包名,然后,调用libcamera2ndk_vendor向FWK层的CameraSerivce发送该Close Camera指令。
602、在接收到第二指令后,相机服务模块调用相机控制模块中的第二函数,并根据第一标识,执行第二函数,以控制摄像头驱动关闭读取线程,并将前置摄像头下电。
在接收到第二指令后,相机服务模块调用相机控制模块中的第二函数,并根据第一标识,执行第二函数,通过执行第二函数,可以生成相应的关闭指令,将所生成的关闭指令发送给摄像头驱动,摄像头驱动基于该关闭指令,关闭读取线程,停止读取环境光亮度,并将前置摄像头下电,然后释放为前置摄像头所申请的CSL缓存资源。进一步地,摄像头驱动关闭读取线程后,相机控制进程将停止通过数据回调函数,向传感器控制模块发送第二环境光亮度。
上述关闭前置摄像头的环境光检测功能的逻辑代码可以为:
CloseCamLightSensor(const struct camera3_device*pCamera3Device,bool&isCamLightId)(关
闭Camera light id封装函数)
CloseCamLightSensor(const struct camera3_device*pCamera3Device,bool&isCamLightId)(关
闭Camera light id封装函数)
可选地,本步骤可以对应图7中的⑤,具体包括:基于Close Camera指令,CameraSerivce调用Camera HAL的CAMX中的Close Camera函数,通过执行该Close Camera函数,控制摄像头驱动关闭异步读取线程,停止读取环境光亮度,将前置摄像头下电,释放为前置摄像头所申请的CSL缓存资源。
通常电子设备配置有前置摄像头和后置摄像头。前置摄像头支持出图模式和环境光检测模式。出图模式对应前置摄像头的拍照功能、人脸解锁功能等。在出图模式下,前置摄像头需要采集图像,以满足用户的使用需求。与出图模式不同,环境光检测模式下,基于前置摄像头输出的环境光亮度,调节显示屏亮度是为了改善用户的使用需求,且与出图模式相比,用户需求程度较低。在实际应用时,前置摄像头和后置摄像头无法同时使能,且前置摄像头的出图模式和环境光检测模式也无法同时使能。为解决摄像头的使能优先级问题,本申请实施例为电子设备内的各个摄像头设置对应的标识,每个标识对应摄像头的一种逻辑功能,并设置摄像头的标识的冲突判断逻辑,同时为不同包名配置不同的优先级,从而可以基于包名优先级,确定不同标识的优先级。
具体地,为电子设备内的摄像头配置对应标识的过程可以包括:在电子设备开机过程中,相机控制模块通过与摄像头驱动进行交互,获取电子设备内摄像头的类型和功能,然后基于摄像头的类型和功能,抽象出多个逻辑摄像头,并为每个逻辑摄像头设置对应的标识。例如,为前置摄像头的拍照功能设置的标识为CameraID=1;为前置摄像头的环境光检测功能设置的标识为CameraID=4。
上述为前置摄像头的环境光检测功能设置标识的过程,可参见如下代码:
以CameraID=1和CameraID=4为例,相机控制模块中配置的冲突判断逻辑为:
为保证用户的正常使用,本申请实施例可以为环境光检测应用的包名配置最低优先级,从而在用户想要打开相机应用拍照时,能够为用户提供拍照服务。为便于后续应用,相机控制模块可存储所设置的摄像头的标识以及不同包名的优先级。进一步地,相机控制模块可将所设置的摄像头的标识以及不同包名的优先级发送至相机服务模块进行存储,使得相机服务模块能够对摄像头的使能优先级进行管理。
本申请实施例中相机服务模块对摄像头使能优先级的管理逻辑可以为:接收目标指令,该目标指令包括目标标识和目标包名,在接收到该目标指令后,相机服务模块查询摄像头列表,该摄像头列表用于存储当前使能的摄像头对应的标识,当该摄像头列表为空,则可
以确定摄像头不存在使能冲突,进而基于该目标指令,打开目标标识对应的摄像头的功能;当该摄像头列表为非空,则可以确定摄像头存在使能冲突,也即是当前存在正使能的摄像头,进而可以基于目标包名和当前使能的摄像头的包名,确定目标标识与当前使能的摄像头对应标识的优先级,当目标标识的优先级低于当前使能的摄像头的优先级,则不再打开目标标识对应的摄像头的功能;当目标标识的优先级高于当前使能的摄像头的优先级,则关闭当前使能的摄像头,然后打开目标标识对应的摄像头的功能。
上述判断逻辑,可参见如下代码为:
TagName:"com.xxx.device.capabilities.camLightSupported";//静态能力name。
int CamLightManager::CamLightCheck(ACameraManager*manager,ACameraIdList
*cameraIdList)
ret=ACameraManager_openCamera(mCameraManager,(const char*)buff,&mDeviceCb,
&mDevice);
TagName:"com.xxx.device.capabilities.camLightSupported";//静态能力name。
int CamLightManager::CamLightCheck(ACameraManager*manager,ACameraIdList
*cameraIdList)
ret=ACameraManager_openCamera(mCameraManager,(const char*)buff,&mDeviceCb,
&mDevice);
其中,ACameraManager_openCamera为Open Camera的接口函数,buff为PackageName。
基于上述判断逻辑,图4中步骤405在执行之前,相机服务模块可以查询摄像头列表,在摄像头列表为空时,执行步骤405。
参见图8,本申请实施例提供了一种摄像头使能优先级管理方法,以具有图2所示的软件系统的电子设备100执行为例,该方法与图4所示的显示屏亮度的调节方法具有时序关系,可在图4中步骤405之后执行。参见图8,本申请实施例提供的方法流程包括:
801、基于相机应用被启动,相机服务模块接收第三指令。
其中,第三指令包括第二标识和第二包名。第二标识对应前置摄像头的拍照功能,第二包名为相机应用的包名。
802、相机服务模块确定存在第一标识,根据第一包名和第二包名,确定第一标识和第二标识的优先级。
通过图4所示的实施例可知,在接收到第三指令时,电子设备通过前置摄像头检测的环境光亮度调节显示屏亮度,此时前置摄像头的环境光检测功能使能。接收到第三指令后,相机服务模块查询摄像头列表,获取到第一标识,进而根据第一包名和第二包名,确定第一标识和第二标识的优先级。
803、相机服务模块确定第一标识的优先级低于第二标识的优先级,控制摄像头驱动将前置摄像头下电,以关闭前置摄像头的环境光检测功能,然后控制摄像头驱动将前置摄像头上电,以打开前置摄像头的拍照功能。
在本申请实施例中,第一包名的优先级低于第二包名的优先级,因此,可以确定第一标识的优先级低于第二标识的优先级。基于第一标识的优先级低于第二标识的优先级,相机服务模块控制摄像头驱动将前置摄像头下电,以关闭前置摄像头的环境光检测功能。具体地,相机服务模块调用相机控制模块中的第二函数,根据第一标识,执行第二函数,从而控制摄像头驱动关闭读取线程,停止读取环境光亮度,并将前置摄像头下电,然后释放为前置摄像头所申请的CSL缓存资源。当执行完上述操作后,前置摄像头的环境光检测功能被关闭。
可选地,前置摄像头的环境光检测功能被关闭后,相机服务模块还向传感器控制模块
发送通知消息,以通知传感器控制模块前置摄像头的环境光检测功能已关闭。当接收到该通知消息后,传感器控制模块不会再尝试打开前置摄像头的环境光检测功能,直至接收到相机控制模块发送前置摄像头关闭的通知消息。
可选地,前置摄像头的环境光检测功能被关闭后,传感器控制模块可以根据前置摄像头的环境光检测功能已关闭时是否接收到数据回调函数返回的第二环境光亮度执行后续操作。在一种可能的实现方式中,前置摄像头的环境光检测功能关闭时,如果传感器控制模块接收到数据回调函数返回的第二环境光亮度,则将接收到的第二环境光亮度上报给传感器服务模块,使得传感器服务模块能够根据该第二环境光亮度,对显示屏的亮度进行调节,直至电子设备灭屏,或再次接收到数据回调函数返回的第二环境光亮度。可选地,如果电子设备灭屏,则将接收到的第二环境光亮度清除。在另一种可能的实现方式中,前置摄像头的环境光检测功能关闭时,如果传感器控制模块未接收到数据回调函数返回的第二环境光亮度,则将预设环境光亮度上报给传感器服务模块,直至电子设备灭屏,或接收到数据回调函数返回的第二环境光亮度。
进一步地,前置摄像头的环境光检测功能被关闭后,相机服务模块调用相机控制模块中的第一函数,根据第二标识,执行该第一函数,从而控制摄像头驱动为前置摄像头申请CSL资源、将前置摄像头上电、初始化摄像头寄存器、为前置摄像头配置出图资源等等。当执行完上述操作后,前置摄像头的拍照功能被打开,电子设备通过前置摄像头采集图像,并显示相机应用的界面,进而将前置摄像头采集的图像显示在相机应用的界面上。
采用本申请实施例提供的方法,可在前置摄像头的环境光检测功能打开后,在用户需要前置摄像头拍照时,能够关闭前置摄像头的环境光检测功能,显示前置摄像头拍摄的图像,满足用户的拍照需求。
此处需要说明两点,第一点,图8所示的实施例以用户打开相机应用,基于前置摄像头拍照为例进行说明,如果用户打开相机应用,通过后置摄像头拍照,也可按照图8所示的流程执行,所不同的是,将前置摄像头的环境光检测功能关闭后,打开的是后置摄像头的拍照功能。
第二点,上述图8所示的实施例以用户打开相机应用为例,如果用户打开的是其他需要调用摄像头的应用,也可以采用图8所示的流程执行,此处不再一一说明。
相机应用启动后,因前置摄像头的环境光检测功能对应的第一标识的优先级较低,前置摄像头的环境光检测功能被关闭,前置摄像头的拍照功能被打开。当相机应用被关闭后,可以打开前置摄像头的环境光检测功能,对显示屏亮度进行调节。针对该种场景,本申请实施例提供了一种摄像头使能优先级的管理方法,该方法与图8所示的实施例具有一定的时序关系,可在步骤803之后执行。以具有图2所示的软件系统的电子设备100执行为例,参见图9,本申请实施例提供的方法流程包括:
901、基于相机应用被关闭,相机服务模块接收第四指令。
其中,第四指令用于关闭前置摄像头的拍照功能,该第四指令包括第二标识和第二包名。
902、在接收到第四指令后,相机服务模块控制摄像头驱动将前置摄像头下电,以关闭前置摄像头的拍照功能,然后控制摄像头驱动将前置摄像头上电,以打开前置摄像头的环
境光检测功能。
在接收到第四指令后,相机服务模块调用相机控制模块中的第二函数,根据第二标识,执行第二函数,从而控制摄像头驱动将前置摄像头下电,然后释放为前置摄像头所申请的CSL缓存资源及出图资源等。当执行完上述操作后,前置摄像头的拍照功能被关闭。
可选地,当前置摄像头的拍照功能被关闭后,相机控制模块还可以向传感器控制模块发送通知消息,该通知消息用于通知传感器控制模块前置摄像头已关闭,可以打开该前置摄像头的环境光检测功能。该通知消息可以包括前置摄像头的状态字段等,状态字段可以为CAMERA_FRONT_CLOSE。
进一步地,前置摄像头的拍照功能被关闭后,相机服务模块调用相机控制模块中的第一函数,根据第一标识,执行该第一函数,从而控制摄像头驱动为前置摄像头申请CSL资源、将前置摄像头上电、初始化摄像头寄存器、创建环境光亮度的读取线程等等。当执行完上述操作后,前置摄像头的环境光检测功能被打开,电子设备通过前置摄像头检测环境光亮度,进而基于前置摄像头检测的环境光亮度,调节电子设备的显示屏亮度。
针对该场景可以参见图10,相机应用关闭后,CameraSerivce接收第四指令,在接收到第四指令后,CameraSerivce调用Camera HAL的CAMX中的Close Camera函数,执行关闭CameraID=1的流程。当执行完CameraID=1的流程,Camera HAL通过数据回调函数向SensorHAL发送通知消息,该通知消息中携带CAMERA_FRONT_CLOSE等,该通知消息用于通知SensorHAL前置摄像头已关闭。当接收到该通知消息,SensorHAL创建一个读取线程,调用Active接口,通过libcamera2ndk_vendor接口向FWK层的CameraSerivce发送第一指令,以打开前置摄像头的环境光检测功能,使得亮屏下前置摄像头关闭后能够自动打开环境光检测功能。
采用本申请实施例提供的方法,可在前置摄像头的环境光检测功能关闭后,自动打开前置摄像头的环境光检测功能,从而实现对显示屏亮度的自动调节。
需要说明的是,9所示的实施例以用户打开相机应用,基于前置摄像头拍照,再关闭相应应用为例进行说明,如果用户打开相机应用,通过后置摄像头拍照,关闭后置摄像头,也可按照图9所示的流程执行,所不同的是,将后置摄像头的拍照功能关闭后,打开前置摄像头的环境光检测功能。或者,调用前置摄像头的其他应用(例如人脸解锁应用)关闭后,也可按照图9所示的流程执行,所不同的是,将前置摄像头的其他功能关闭后,前置摄像头的环境光检测功能。
通过图3所示的实施例可知,电子设备亮屏后,环境光检测应用和人脸解锁应用(或相机应用)可能会同时启动,环境光检测流程和人脸解锁(或拍照)流程可以同时执行,这样,环境光检测流程可能会先于人脸解锁(或拍照)流程走到相机服务模块,也可能晚于人脸解锁(或拍照)流程走到相机服务模块,针对这两种情况,结合图8和图9所示的流程可知,环境光检测流程和人脸解锁(或拍照)流程的执行顺序不同,后续的处理流程也是不同。下面将分两个场景分别进行说明。
场景一、环境光检测流程先于人脸解锁(或拍照)流程执行
在该场景下,前置摄像头的环境光检测功能先于人脸解锁(或拍照)流程执行。相机服务模块先打开前置摄像头的环境光检测功能,然后关闭该前置摄像头的环境光检测功能,
接着打开前置摄像头的人脸解锁(或拍照)功能。该过程具体执行时,可结合图11进行说明。参见图11,电子设备亮屏后,SensorService向SensorHAL发送亮度监听指令,接收到该亮度监听指令后,Sensor HAL调用Active接口,然后调用libcamera2ndk_vendor接口向FWK层的CameraSerivce发送第一指令,该第一指令包括CameraID=4和环境光检测应用的包名,当确定摄像头列表中不存在标识,CameraSerivce可以调用Camera HAL的CAMX中的Open Camera函数,根据CameraID=4执行该Open Camera函数,以控制摄像头驱动为CameraID=4对应的前置摄像头的环境光检测功能申请CLS缓存资源,将前置摄像头上电,初始化摄像头寄存器,并创建异步读取线程等,从而打开前置摄像头的环境光检测功能。在打开前置摄像头的环境光检测功能过程中,CameraService接收到第三指令,该第三指令指令包括CameraID=1和人脸解锁(或拍照)应用的包名,CameraService确定存在CameraID=4,由于人脸解锁(或拍照)应用的包名比环境光检测应用的包名的优先级高,可以确定出CameraID=4的优先级低于CameraID=1的优先级。因此,需要关闭前置摄像头的环境光检测功能。CameraService等待前置摄像头的环境光检测功能使能后,关闭前置摄像头的环境光检测功能。具体地,CameraSerivce可以调用Camera HAL的CAMX中的Close Camera函数,根据CameraID=4执行该Close Camera函数,控制摄像头驱动停止读取环境光亮度,将前置摄像头下电,释放为CameraID=4的前置摄像头的环境光检测功能分配的CLS缓存资源等。当前置摄像头的环境光检测功能关闭之后,CameraService向SensorHAL发送通知消息,该通知消息中携带OnDeviceDisconnected字段,该OnDeviceDisconnected用于指示SensorHAL已将前置摄像头的环境光检测功能已关闭。当接收到该通知消息后,SensorHAL调用Active接口,然后调用libcamera2ndk_vendor接口向FWK层的CameraSerivce发送第一指令,接收到第一打开指令后,CameraSerivce可以调用Camera HAL的CAMX中的Open Camera函数,根据CameraID=1执行该Open Camera函数,以控制摄像头驱动为CameraID=1对应的前置摄像头的人脸解锁(或拍照)功能申请CLS缓存资源,将前置摄像头上电,初始化摄像头寄存器,配置出图资源等,从而打开前置摄像头的人脸解锁(或拍照)功能,进而执行人脸解锁(或拍照)操作。
场景二、环境光检测流程先于人脸解锁(或拍照)流程执行
在该场景下,前置摄像头的环境光检测功能晚于人脸解锁(或拍照)流程执行。相机服务模块先打开前置摄像头的人脸解锁(或拍照)功能,关闭人脸解锁(或拍照)功能后,打开前置摄像头的环境光检测功能。该过程具体执行时,可结合图12进行说明。参见图12,电子设备亮屏后,CameraService接收到第三指令,该第三指令包括CameraID=1和人脸解锁(或拍照)应用的包名,当确定摄像头列表中不存在标识,CameraSerivce可以调用Camera HAL的CAMX中的Open Camera函数,根据CameraID=1,执行Open Camera函数,以控制摄像头驱动为CameraID=1对应的前置摄像头的人脸解锁(或拍照)功能申请CLS缓存资源,将前置摄像头上电,初始化摄像头寄存器,配置出图资源等,从而打开前置摄像头的人脸解锁(或拍照)功能。在打开前置摄像头的环境光检测功能过程中,CameraService接收到第一指令,该第一指令包括CameraID=4和环境光检测应用的包名,CameraService确定存在CameraID=1,由于人脸解锁(或拍照)应用的包名比环境光检测应用的包名的优先级高,可以确定出CameraID=4的优先级低于CameraID=1的优先级。因此,CameraService不打开前置摄像头的环境光检测功能,然后向SensorHAL返回环境光检测功能打开失败的
通知消息,该通知消息中携带CAMERA_IN_USE字段,基于该通知消息,SensorHAL确定其他优先级高的功能正在使能,不再重复打开CameraID=4,以降低电子设备的资源消耗。由于环境光检测功能打开失败,SensorHAL并未接收到数据回调函数返回的环境光亮度,因而将预设环境光亮度上报给SensorService,使得SensorService能够根据预设环境光亮度,对显示屏的亮度进行调节。当人脸解锁(或拍照)功能关闭后,CameraService打开前置摄像头的环境光检测功能。对于该过程可参见图10所示的流程,此处不再赘述。
本申请实施例中,电子设备处于亮屏状态时,相机应用启动后,前置摄像头的环境光检测功能不使能,相机应用关闭后,前置摄像头的环境光检测功能可以使能。电子设备出于灭屏状态时,前置摄像头的环境光检测功能关闭。一种典型的应用场景,在相机应用启动后,通过关闭显示屏关闭相机应用,由于前置摄像头的拍照功能关闭,因此,前置摄像头的环境光检测功能可以使能,而显示屏关闭,前置摄像头的环境光检测功能也应该关闭。在灭屏关闭相机应用的场景下,环境光检测功能的打开流程和环境光检测功能的关闭流程可能同时指令,这样,环境光检测功能的打开流程可能会先于环境光检测功能关闭流程走到传感器控制模块,也可能晚于环境光检测功能关闭流程走到传感器控制模块。本申请实施例可以细化为两个场景进行说明,一个场景为环境光检测功能打开流程先于环境光检测功能关闭流程执行,另一个场景为环境光检测功能打开流程晚于环境光检测功能关闭流程执行。而在此之前,为了更好地管理环境光检测功能打开流程和环境光检测功能关闭流程,可在传感器控制模块中增加一个状态锁State machine,该状态锁用于记录当前传感器控制模块的状态机,该状态机包括无状态、Active(用于打开环境光检测功能)及DeActive(用于关闭环境光检测功能)。
第一种场景、环境光检测功能打开流程先于环境光检测功能关闭流程执行
该场景下,可以通过执行步骤901至902先打开前置摄像头的环境光检测功能,然后执行步骤601-步骤602关闭前置摄像头的环境光检测功能。针对该场景可以参见图13,相机应用启动后,当检测到对电源键的触控操作,电子设备灭屏,且前置摄像头关闭。当FWK层的CameraSerivce接收到第四指令,在接到第四指令后,CameraSerivce调用Camera HAL的CAMX中的Close Camera函数,执行关闭CameraID=1对应功能的流程。当执行完CameraID=1对应功能的关闭流程,Camera HAL通过数据回调函数向SensorHAL发送通知消息,该通知消息中携带CAMERA_FRONT_CLOSE状态的字段,以通知SensorHAL前置摄像头已关闭,当接收到该通知消息,Sensor HAL创建一个异步线程,调用Active接口,查询State machine中SensorHAL的状态机,当查询结果为无状态,记录SensorHAL的状态机为Active,然后调用libcamera2ndk_vendor接口向FWK层的CameraSerivce发送第一指令,以打开前置摄像头的环境光检测功能。而在Sensor HAL调用Active打开CameraID=4的功能时,Sensor HAL也接收到SensorSerivce发送的停止亮度监听指令,在接收到停止亮度监听指令后,Sensor HAL等待打开前置摄像头的环境光检测功能后,调用DeActive接口,查询State machine中SensorHAL的状态机,当查询结果为Active,调用libcamera2ndk_vendor接口向FWK层的CameraSerivce发送第二指令,以关闭前置摄像头的环境光检测功能。
第二种场景、环境光检测功能打开流程晚于环境光检测功能关闭流程执行
该场景下,前置摄像头的环境光检测功能关闭后,无需再打开前置摄像头的环境光检
测功能,也即是,执行完步骤902中相机服务模块控制摄像头驱动将前置摄像头下电,以关闭前置摄像头的拍照功能后,流程结束。针对该场景可以参见图13,相机应用启动后,当检测到对电源键的触控操作,电子设备灭屏,且前置摄像头关闭。当Sensor HAL接收到SensorSerivce发送的停止亮度监听指令,基于停止亮度监听指令,Sensor HAL调用DeActive接口,将State machine中记录SensorHAL的状态机为DeActive,然后调用libcamera2ndk_vendor接口向FWK层的CameraSerivce发送第二指令,以关闭前置摄像头的环境光检测功能。在Sensor HAL执行对CameraID=4对应功能的DeActive操作过程中,SensorHAL接收到Camera HAL通过数据回调函数发送的通知消息,该通知消息中携带CAMERA_FRONT_CLOSE状态的字段,基于该通知消息,Sensor HAL创建一个异步线程,调用Active接口,查询State machine中SensorHAL的状态机,当查询结果为DeActive,Sensor HAL将停止Active操作,不再打开前置摄像头的环境光检测功能。
在本申请实施例中,对于基于AIDL服务的客户端(传感器控制模块)和服务端(相机控制模块)来说,服务端异常可以包括两个场景,一个是亮屏环境光检测功能使能时服务端进程崩溃,另一个是灭屏环境光检测功能不使能时服务端进程崩溃;客户端异常主要为亮屏环境光检测功能使能时客户端崩溃。针对这三种场景,可基于步骤401中预先注册的第一死亡监听对象和第二死亡监听对象进行监听,下面将分别进行介绍。
当通过执行上述步骤401至步骤405打开前置摄像头的环境光检测功能后,在基于步骤406至步骤408对显示屏幕的亮度调节过程中,当相机控制模块不响应,无法将前置摄像头输出的第一环境光亮度发送给传感器控制模块,针对在电子设备调节显示屏亮度的过程中服务端的异常的情况,本申请实施例提供了一种环境光检测功能的管理方法,以具有图2所示的软件结构的电子设备100执行本申请实施例为例,参见图14,该方法可在步骤405之后执行,本申请实施例提供的方法流程包括:
1401、在电子设备调节显示屏亮度的过程中,当通过第一死亡监听对象监听到相机控制模块不响应,相机控制模块向传感器控制模块发送第一死亡通知消息。
可选地,本步骤可以对应图15中的步骤②,具体包括:在电子设备调节显示屏亮度的过程中,第一死亡监听对象对Camera HAL进行实时监听,当监听到Camera HAL无法将无法将前置摄像头输出的第一环境光亮度发送给传感器控制模块发送给SensorHAL,Camera HAL可以调用数据回调函数,向SensorHAL发送第一死亡通知消息。该数据回调函数可以为步骤401中注册的数据回调函数。
1402、传感器控制模块判断AIDL服务是否被拉起。
1403、当确定AIDL服务被拉起,传感器控制模块执行调用第一接口,然后调用第二接口,向相机服务模块发送第一指令,以使能前置摄像头的环境光检测功能。
由于此时相机服务模块无法返回前置摄像头输出的环境光亮度,因而需要重新注册数据回调函数,保证相机控制模块和传感器控制模块之间数据通路能够传输数据。使能前置摄像头的环境光检测功能包括:相机服务模块调用相机控制模块中的第一函数,根据第一标识,执行该第一函数,控制摄像头驱动为前置摄像头申请用于环境光检测CSL资源缓存,将前置摄像头上电,初始化摄像头寄存器,并创建异步读取线程。
可选地,该步骤可以对应图15中的步骤②-⑥,具体包括:当接收到第一死亡通知消息,
SensorHAL判断AIDL服务是否被拉起,当AIDL服务被拉起,则调用Active接口,注册数据回调函数,然后调用libcamera2ndk_vendor接口向CameraSerivce发送第一指令,该第一指令包括CameraID=4和环境光检测应用的包名,在接收到第一指令后,CameraSerivce调用Camera HAL中的OpenCamera函数,根据CameraID=4执行该OpenCamera函数,进而控制摄像头驱动为CameraID=4申请CLS资源缓存,并将前置摄像头上电,初始化摄像头寄存器,创建异步读取线程。当读取到前置摄像头输出的第一环境光亮度,Camera HAL将第二环境光亮度填充到数据回调函数中,通过数据回调函数将第二环境光亮度发送给SensorHAL,由SensorHAL上报给SensorSerivce。
在本申请的另一个实施例中,当AIDL服务未被拉起,则需要等待预设时长后再次判断AIDL服务是否被拉起。
电子设备灭屏后,通过执行上述步骤601至步骤602后,如果前置摄像头的环境光检测功能无法正常关闭,针对电子设备灭屏后服务端不响应的情况,本申请实施例提供了一种环境光检测功能的管理方法,以具有图2所示的软件结构的电子设备100执行本申请实施例为例,参见图16,该方法可在步骤602之后执行,本申请实施例提供的方法流程包括:
1601、电子设备灭屏后,当通过第一死亡监听对象监听到相机控制模块不响应,相机控制模块向传感器控制模块发送第二死亡通知消息。
可选地,该步骤对应图16中的步骤①,具体包括:电子设备灭屏后,第一死亡监听对象监听到Camera HAL崩溃,无法正常关闭前置摄像头的环境光检测功能,可以调用数据回调函数,向SensorHAL发送第二死亡通知消息。
1602、在接收到第二死亡通知消息后,传感器控制模块判断电子设备是否灭屏。
1603、当确定电子设备灭屏,传感器控制模块调用第一接口,向相机控制模块发送初始化指令。
1604、在接收到初始化指令后,相机控制模块对前置摄像头和数据回调函数进行初始化。
可选地,该步骤对应图17中的步骤②和③,具体包括:接收到第二死亡通知消息后,Sensor HAL可以调用Active接口,将Camera HAL中摄像头寄存器和数据回调函数进行初始化。
该种场景下,由于显示屏已经熄灭,无需调节环境光亮度,此时传感器控制模块不再使能前置摄像头。
当通过执行上述步骤401至步骤405前置摄像头的环境光检测功能使能后,在基于步骤406至步骤408对显示屏亮度调节过程中,当传感器控制模块无法打开前置摄像头的环境光检测功能,针对在电子设备调节显示屏亮度的过程中服务端不响应的情况,本申请实施例提供了一种环境光检测功能的管理方法,以具有图2所示的软件结构的电子设备执行本申请实施例为例,参见图18,本申请实施例提供的方法流程包括:
1801、电子设备亮屏后,当通过第二死亡监听对象监听到传感器控制模块不响应,传感器控制模块向相机控制模块发送第三死亡通知消息。
可选地,该步骤对应图19中的步骤①,具体包括:电子设备亮屏后,第二死亡监听对
象对SensorHAL进行实时监听,当监听到SensorHAL的崩溃事件,调用数据回调函数,向Camera HAL发送第三死亡通知消息。
1802、在接收到第三死亡通知消息后,相机控制模块将读取线程关闭,并将数据回调函数销毁。
可选地,该步骤对应图19中的步骤②,具体包括:在接收到第三死亡通知消息后,Camera HAL控制摄像头驱动关闭异步读取线程,停止读取环境光亮度,并将数据回调函数销毁。
1803、传感器控制模块调用基于AIDL服务的第三接口,然后调用第二接口,向相机服务模块发送第二指令。
可选地,该步骤对应图19中的步骤③和④,具体包括:SensorHAL调用DeActive接口,然后调用libcamera2ndk_vendor接口向CameraSerivce发送第二指令,该第二指令包括CameraID=4和环境光检测应用的包名。
1804、在接收到第二指令后,相机服务模块调用相机控制模块中的第二函数,并根据第一标识,执行第二函数,以控制摄像头驱动关闭读取线程,并将前置摄像头下电。
可选地,该步骤对应图19中的步骤⑤,具体包括:在接收到第二指令后,CameraSerivce调用Camera HAL,控制摄像头驱动释放为CameraID=4的功能申请的CSL资源,并将前置摄像头的下电。
1805、传感器控制模块重启后,调用第一接口,在相机控制模块中注册数据回调函数,并调用第二接口,向相机服务模块发送第一指令,以使能前置摄像头的环境光检测功能。
可选地,该步骤对应图19中的步骤⑥,具体包括:SensorHAL调用Active接口,然后调用libcamera2ndk_vendor接口向CameraSerivce发送第一指令,该第一指令包括CameraID=4和环境光检测应用的包名,以使能前置摄像头的环境光检测功能。
通常,相机软件流程相对实体环境光软件流程更加复杂,且功耗上消耗更大,满足性能要求不能满足功耗要求,满足功耗要求又不能满足性能要求。为此,本申请实施例还将对上述实施例中显示屏亮度的调节方法进行优化,从而在降低功能的前提下,保证第一帧数据能够及时有效地上报。结合图20,该方法在降功耗优化性能方面,主要涉及以下三方面:
第一方面,精简CAMX中OpenCamera函数的流程
针对第一方面,本申请实施例对原有的Open Camera函数的流程进行定制化处理,增加了跳出出图配流的分支,在调用CameraSerivce调用Camera HAL中的Open Camera函数时,当原有的Open Camera函数支持打开前置摄像头的环境光检测功能时,则调用封装函数OpenCamLightSensor跳过出图配流流程,节省了前置摄像头作为环境光检测器件使用时资源的消耗,提升了电子设备的性能。
对于精简的OpenCamera函数的执行过程,以上述图4所示的开机过程中显示屏亮度的调节过程为例进行说明。由于本申请实施例需要打开前置摄像头的环境光检测功能,当前置摄像头不支持打开前置摄像头的环境光检测功能,则无法通过调用第一函数将前置摄像头的环境光检测功能使能,因此,在调用第一函数后,还将调用第一函数中的第一子函数,判断前置摄像头是否支持环境光检测功能,当前置摄像头支持环境光检测功能,再调用第
一函数中的第二子函数,进而控制摄像头驱动将前置摄像头上电、初始化摄像头寄存器及创建异步读取线程。通过执行该精简的OpenCamera函数,可以跳过出图配流流程,缩短环境光检测功能的打开时长,提升电子设备的性能。
其中,环境光检测判断函数可以为IsSupportCamLightSensor(),环境光检测传感器函数可以为OpenCamLightSensor()。
上述判断前置摄像头是否支持环境光检测的逻辑的代码为:
当然,当前置摄像头不支持环境光检测,则可以通过与内核层中的摄像头驱动进行交互,控制摄像头驱动为前置摄像头的环境光检测功能申请CSL资源缓存,将前置摄像头上电、初始化摄像头寄存器及为前置摄像头配流,使得前置摄像头可以出图。
第二方面,为读取线程设置较高的优先级
考虑到摄像头驱动内同时可能会执行多个线程,为保证环境光亮度的及时上报,可为异步线程设置较高的优先级,从而在资源有限的情况下,能够优先保证读取线程的执行。
第三方面,自适应切换频率
电子设备对环境光亮度的第一帧数据(这里说的一帧数据并非图像帧)要求比较严苛,一般要求300ms以内需要上报,对应第二帧数据及以后帧的数据没有严苛要求,而第一帧数据的上报时长取决于前置摄像头的帧率。当为降低功耗,将前置摄像头的频率设置为较低的频率,由于环境光亮度需要积分时间,则在300毫米内可能无法上报数据。为保证首帧数据能够及时上报,本申请实施例提供了一种自适应的频率切换方法,该方法会记录目标次数,并将该目标次数写入到摄像头寄存器中。该目标次数可以为电子设备本次亮屏后相机控制模块从前置摄像头读取环境光亮度的次数,也可以为电子设备最近一次亮屏后相机控制模块从前置摄像头读取环境光亮度的次数。电子设备灭屏后,摄像头寄存器中所记录的目标次数将随之清零。前置摄像头上电后,相机控制模块从摄像头寄存器中获取目标次数,当目标次数为0次,相机控制模块将第一频率写入摄像头寄存器中,并控制前置摄像头按照第一频率检测环境光亮度;当目标次数大于0次,相机控制模块将第二频率写入摄像头寄存器中,并控制前置摄像头按照第二频率检测环境光亮度,第一频率大于第二频率。其中,第一预设帧率高于第二预设帧率,第一预设帧率可以为30fps,第二预设帧率可以为5fps或者3fps。
该优化方法可在步骤405之后、406之前执行。通过对前置摄像头采集环境光亮度的频率进行自适应调节,不仅保证了首帧数据及时上报,而且降低了电子设备的功耗。
本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条计算机程序,所述至少一条计算机程序被处理器执行时能够实现上述显示屏亮度的调节方法。
本申请实施例提供了一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时能够实现上述显示屏亮度的调节方法。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (19)
- 一种显示屏亮度的调节方法,其特征在于,所述方法包括:电子设备亮屏后,将目标摄像头上电;所述电子设备通过所述目标摄像头检测环境光亮度;基于所述目标摄像头检测的环境光亮度,所述电子设备调节显示屏亮度,在所述电子设备调节所述显示屏亮度的过程中,所述目标摄像头不采集图像,且相机应用未启动;响应于用户的操作,所述电子设备启动所述相机应用;在启动所述相机应用后,所述电子设备通过所述目标摄像头采集图像,显示所述相机应用的界面,所述相机应用的界面包含所述目标摄像头采集的图像。
- 根据权利要求1所述的方法,其特征在于,所述电子设备通过所述目标摄像头采集图像,包括:基于所述相机应用被启动,所述电子设备将所述目标摄像头下电,然后将所述目标摄像头上电;所述电子设备获取所述目标摄像头采集的图像。
- 根据权利要求1所述的方法,其特征在于,所述方法还包括:在启动所述相机应用后,所述电子设备不调节显示屏亮度。
- 根据权利要求1所述的方法,其特征在于,所述方法还包括:响应于所述用户的操作,所述电子设备关闭所述相机应用;在关闭所述相机应用后,所述电子设备通过所述目标摄像头检测环境光亮度;基于所述目标摄像头检测的环境光亮度,所述电子设备调节显示屏亮度,在所述电子设备调节所述显示屏亮度的过程中,所述目标摄像头不采集图像。
- 根据权利要求4所述的方法,其特征在于,所述电子设备通过所述目标摄像头检测环境光亮度,包括:基于所述相机应用被关闭,所述电子设备将所述目标摄像头下电,然后将所述目标摄像头上电;所述电子设备获取所述目标摄像头检测的环境光亮度。
- 根据权利要求1所述的方法,其特征在于,所述电子设备的软件系统包括框架层、硬件抽象层及内核层,所述框架层包括相机服务模块和传感器服务模块,所述硬件抽象层包括相机控制模块和传感器控制模块,所述内核层包括摄像头驱动,所述电子设备亮屏后,将目标摄像头上电,包括:基于所述电子设备亮屏,所述传感器服务模块向所述传感器控制模块发送亮度监听指令;在接收到所述亮度监听指令后,所述传感器控制模块调用基于AIDL服务的第一接口,然后调用基于HIDL服务的第二接口,向所述相机服务模块发送第一指令,所述第一指令包 括第一标识,所述第一标识对应所述目标摄像头的环境光检测功能;在接收到所述第一指令后,所述相机服务模块调用所述相机控制模块中的第一函数,并根据所述第一标识,执行所述第一函数,以控制所述摄像头驱动将所述目标摄像头上电、初始化摄像头寄存器及创建环境光亮度的读取线程。
- 根据权利要求6所述的方法,其特征在于,所述电子设备通过所述目标摄像头检测环境光亮度之前,还包括:所述目标摄像头上电后,所述相机控制模块从所述摄像头寄存器中获取目标次数,所述目标次数用于表征所述电子设备亮屏后对所述目标摄像头检测的环境光亮度的读取次数;当所述目标次数为0次,所述相机控制模块将第一频率写入所述摄像头寄存器中,并控制所述目标摄像头按照所述第一频率检测环境光亮度;当所述目标次数大于0次,所述相机控制模块将第二频率写入所述摄像头寄存器中,并控制所述目标摄像头按照所述第二频率检测环境光亮度,所述第一频率大于所述第二频率。
- 根据权利要求6所述的方法,其特征在于,所述基于所述目标摄像头检测的环境光亮度,所述电子设备调节显示屏亮度,包括:所述相机控制模块获取所述目标摄像头输出的第一环境光亮度,并通过数据回调函数,将第二环境光亮度发送至所述传感器控制模块,所述第二环境光亮度基于所述第一环境光亮度生成;所述传感器控制模块将所述第二环境光亮度发送至所述传感器服务模块;所述传感器服务模块基于所述第二环境光亮度,调节所述电子设备的显示屏亮度。
- 根据权利要求8所述的方法,其特征在于,所述相机控制模块获取所述目标摄像头输出的第一环境光亮度,并通过数据回调函数,将第二环境光亮度发送至所述传感器控制模块之前,还包括:基于所述电子设备开机,在接收到所述亮度监听指令后,所述传感器控制模块调用所述第一接口,在所述相机控制模块中注册所述数据回调函数。
- 根据权利要求6所述的方法,其特征在于,所述方法还包括:所述电子设备灭屏后,所述传感器控制模块调用基于AIDL服务的第三接口,然后调用所述第二接口,向所述相机服务模块发送第二指令,所述第二指令包括所述第一标识;在接收到所述第二指令后,所述相机服务模块调用所述相机控制模块中的第二函数,并根据所述第一标识,执行所述第二函数,以控制所述摄像头驱动关闭所述读取线程,并将所述目标摄像头下电。
- 根据权利要求6所述的方法,其特征在于,所述方法还包括:在所述电子设备调节所述显示屏亮度的过程中,当通过第一死亡监听对象监听到所述相机控制模块不响应,所述相机控制模块向所述传感器控制模块发送第一死亡通知消息;在接收到所述第一死亡通知消息后,所述传感器控制模块调用所述第一接口,然后调用 所述第二接口,向所述相机服务模块发送所述第一指令,以使能所述目标摄像头的环境光检测功能。
- 根据权利要求11所述的方法,其特征在于,所述传感器控制模块调用所述第一接口,然后调用所述第二接口,向所述相机服务模块发送所述第一指令之前,还包括:所述传感器控制模块判断AIDL服务是否被拉起;当确定所述AIDL服务被拉起,所述传感器控制模块执行所述调用所述第一接口,然后调用所述第二接口,向所述相机服务模块发送第三指令的操作。
- 根据权利要求6所述的方法,其特征在于,所述方法还包括:所述电子设备灭屏后,当通过第一死亡监听对象监听到所述相机控制模块不响应,所述相机控制模块向所述传感器控制模块发送第二死亡通知消息;在接收到所述第二死亡通知消息后,所述传感器控制模块调用所述第一接口,向所述相机控制模块发送初始化指令;在接收到所述初始化指令后,所述相机控制模块对所述目标摄像头和数据回调函数进行初始化,所述数据回调函数用于将所述目标摄像头检测的环境光亮度发送至所述传感器控制模块。
- 根据权利要求13所述的方法,其特征在于,所述传感器控制模块调用所述第一接口,向所述相机控制模块发送初始化指令之前,还包括:所述传感器控制模块判断所述电子设备是否灭屏;当确定所述电子设备灭屏,所述传感器控制模块执行调用所述第一接口,向所述相机控制模块发送初始化指令的操作。
- 根据权利要求6所述的方法,其特征在于,所述方法还包括:所述电子设备亮屏后,当通过第二死亡监听对象监听到所述传感器控制模块不响应,所述传感器控制模块向所述相机控制模块发送第三死亡通知消息;在接收到所述第三死亡通知消息后,所述相机控制模块将所述读取线程关闭,并将数据回调函数销毁,所述数据回调函数用于将所述目标摄像头检测的环境光亮度发送至所述传感器控制模块;所述传感器控制模块调用基于AIDL服务的第三接口,然后调用所述第二接口,向所述相机服务模块发送第二指令,所述第二指令包括所述第一标识;在接收到所述第二指令后,所述相机服务模块调用所述相机控制模块中的第二函数,并根据所述第一标识,执行所述第二函数,以控制所述摄像头驱动关闭所述读取线程,并将所述目标摄像头下电;所述传感器控制模块重启后,调用所述第一接口,在所述相机控制模块中注册所述数据回调函数,并调用所述第二接口,向所述相机服务模块发送所述第一指令,以使能所述目标摄像头的环境光检测功能。
- 根据权利要求2所述的方法,其特征在于,所述电子设备的软件系统包括框架层、硬件抽象层及内核层,所述框架层包括相机服务模块和传感器服务模块,所述硬件抽象层包括相机控制模块和传感器控制模块,所述内核层包括摄像头驱动,所述基于所述相机应用被启动,所述电子设备将所述目标摄像头下电,然后将所述目标摄像头上电,包括:基于所述相机应用被启动,所述相机服务模块接收第三指令,所述第三指令包括第二标识和第二包名,所述第二标识对应所述目标摄像头的拍照功能,所述第二包名为所述相机应用的包名;所述相机服务模块确定存在第一标识,根据第一包名和所述第二包名,确定所述第一标识和所述第二标识的优先级,所述第一标识对应所述目标摄像头的环境光检测功能,所述第一包名为环境光检测应用的包名;所述相机服务模块确定所述第一标识的优先级低于所述第二标识的优先级,控制所述摄像头驱动将所述目标摄像头下电,以关闭所述目标摄像头的环境光检测功能,然后控制所述摄像头驱动将所述目标摄像头上电,以打开所述目标摄像头的拍照功能。
- 一种电子设备,其特征在于,包括处理器以及存储器;所述存储器存储至少一条程序代码;所述至少一条程序代码用于被所述处理器调用并执行,以实现如权利要求1至16中任一项所述的显示屏亮度的调节方法。
- 一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条计算机程序,所述至少一条计算机程序被处理器执行时能够实现如权利要求1至16中任一项所述的显示屏亮度的调节方法。
- 一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时能够实现如权利要求1至16中任一项所述的显示屏亮度的调节方法。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202380096122.2A CN120917762A (zh) | 2023-12-22 | 2023-12-22 | 显示屏亮度的调节方法、电子设备、存储介质及程序产品 |
| PCT/CN2023/141226 WO2025129684A1 (zh) | 2023-12-22 | 2023-12-22 | 显示屏亮度的调节方法、电子设备、存储介质及程序产品 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/CN2023/141226 WO2025129684A1 (zh) | 2023-12-22 | 2023-12-22 | 显示屏亮度的调节方法、电子设备、存储介质及程序产品 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2025129684A1 true WO2025129684A1 (zh) | 2025-06-26 |
Family
ID=96136331
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/CN2023/141226 Pending WO2025129684A1 (zh) | 2023-12-22 | 2023-12-22 | 显示屏亮度的调节方法、电子设备、存储介质及程序产品 |
Country Status (2)
| Country | Link |
|---|---|
| CN (1) | CN120917762A (zh) |
| WO (1) | WO2025129684A1 (zh) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN121409399A (zh) * | 2025-10-20 | 2026-01-27 | 成都市元视芯智能科技有限公司 | 基于cmos传感器实现光感的方法、存储介质及电子设备 |
Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN105306806A (zh) * | 2014-12-22 | 2016-02-03 | 维沃移动通信有限公司 | 一种移动终端及其拍照的方法 |
| CN105718194A (zh) * | 2016-01-15 | 2016-06-29 | 深圳市金立通信设备有限公司 | 一种摄像装置控制方法及终端 |
| CN108764056A (zh) * | 2018-05-03 | 2018-11-06 | Oppo广东移动通信有限公司 | 亮度调节方法及相关产品 |
| CN112153272A (zh) * | 2019-06-28 | 2020-12-29 | 华为技术有限公司 | 一种图像拍摄方法与电子设备 |
| US20210096611A1 (en) * | 2019-10-01 | 2021-04-01 | Microsoft Technology Licensing, Llc | Camera and flashlight operation in hinged device |
| CN113783999A (zh) * | 2020-07-03 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 控制终端显示的方法、装置以及计算机可读介质 |
| CN115016628A (zh) * | 2021-12-09 | 2022-09-06 | 荣耀终端有限公司 | 一种电子设备的控制方法及电子设备 |
-
2023
- 2023-12-22 CN CN202380096122.2A patent/CN120917762A/zh active Pending
- 2023-12-22 WO PCT/CN2023/141226 patent/WO2025129684A1/zh active Pending
Patent Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN105306806A (zh) * | 2014-12-22 | 2016-02-03 | 维沃移动通信有限公司 | 一种移动终端及其拍照的方法 |
| CN105718194A (zh) * | 2016-01-15 | 2016-06-29 | 深圳市金立通信设备有限公司 | 一种摄像装置控制方法及终端 |
| CN108764056A (zh) * | 2018-05-03 | 2018-11-06 | Oppo广东移动通信有限公司 | 亮度调节方法及相关产品 |
| CN112153272A (zh) * | 2019-06-28 | 2020-12-29 | 华为技术有限公司 | 一种图像拍摄方法与电子设备 |
| US20210096611A1 (en) * | 2019-10-01 | 2021-04-01 | Microsoft Technology Licensing, Llc | Camera and flashlight operation in hinged device |
| CN113783999A (zh) * | 2020-07-03 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 控制终端显示的方法、装置以及计算机可读介质 |
| CN115016628A (zh) * | 2021-12-09 | 2022-09-06 | 荣耀终端有限公司 | 一种电子设备的控制方法及电子设备 |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN121409399A (zh) * | 2025-10-20 | 2026-01-27 | 成都市元视芯智能科技有限公司 | 基于cmos传感器实现光感的方法、存储介质及电子设备 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN120917762A (zh) | 2025-11-07 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN114006625B (zh) | 一种分屏显示方法与电子设备 | |
| EP4280056A1 (en) | Method for application performing drawing operation, and electronic device | |
| US20230262065A1 (en) | Atomic Ability Invoking Method and Terminal Device | |
| US12149754B2 (en) | Method for sharing camera by plurality of applications and electronic device | |
| US20220350602A1 (en) | Multi-Thread Synchronization Method and Electronic Device | |
| CN113778641B (zh) | 控制摄像头的方法、电子设备及计算机可读存储介质 | |
| EP4024837A1 (en) | Device capability scheduling method and electronic device | |
| EP4216524A1 (en) | Interface display method and electronic device | |
| WO2023030168A1 (zh) | 界面显示方法和电子设备 | |
| CN115016628B (zh) | 一种电子设备的控制方法及电子设备 | |
| WO2023226612A1 (zh) | 一种曝光参数确定方法和装置 | |
| CN117130773A (zh) | 资源分配方法、装置和设备 | |
| WO2023160205A1 (zh) | 进程的控制方法、电子设备及可读存储介质 | |
| US12333288B2 (en) | Application installation method and electronic device | |
| WO2023160224A1 (zh) | 一种拍摄方法及相关设备 | |
| CN118450251B (zh) | 摄像头使能优先级的管理方法、电子设备及存储介质 | |
| CN120917762A (zh) | 显示屏亮度的调节方法、电子设备、存储介质及程序产品 | |
| CN117995137B (zh) | 一种调节显示屏色温的方法、电子设备及相关介质 | |
| EP4693036A1 (en) | Method and apparatus for starting application program, and electronic device | |
| US20250365365A1 (en) | Display method, electronic device, and storage medium | |
| WO2024124972A1 (zh) | 一种环境光传感器数据获取方法、装置和电子设备 | |
| CN116700944A (zh) | 一种内存回收方法、装置及电子设备 | |
| CN119252210B (zh) | 一种显示屏亮度的调节方法、电子设备及存储介质 | |
| CN116723390B (zh) | 一种控制摄像头模组的方法和装置 | |
| WO2024159996A1 (zh) | 一种查找网络设备管理方法及电子设备 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 23962006 Country of ref document: EP Kind code of ref document: A1 |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 202380096122.2 Country of ref document: CN |
|
| WWP | Wipo information: published in national office |
Ref document number: 202380096122.2 Country of ref document: CN |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 2023962006 Country of ref document: EP |