Intelligent Assistant
Chat with our virtual assistant to get answers promptly.
Documents from this version have been archived, and will not continue to be maintained. Please use the latest version.
To use the ambient light awareness capability, you need to import the public capability classes of HUAWEI Awareness Kit, and also the ambient light-related classes.
- import com.huawei.hmf.tasks.OnFailureListener;
- import com.huawei.hmf.tasks.OnSuccessListener;
- import com.huawei.hms.kit.awareness.Awareness;
- // Import the ambient light capture-related classes.
- import com.huawei.hms.kit.awareness.capture.AmbientLightResponse;
- import com.huawei.hms.kit.awareness.status.AmbientLightStatus;
- // Import the ambient light barrier-related classes.
- import com.huawei.hms.kit.awareness.barrier.AmbientLightBarrier;
- import com.huawei.hms.kit.awareness.barrier.AwarenessBarrier;
- import com.huawei.hms.kit.awareness.barrier.BarrierStatus;
- import com.huawei.hms.kit.awareness.barrier.BarrierUpdateRequest;
1. Obtain the Capture Client object of HUAWEI Awareness Kit.
2. Call the ambient light intensity query capability API through the Capture Client object to obtain the user's context.
3. Enable your app to listen for the result returned by HUAWEI Awareness Kit for further processing.
- Awareness.getCaptureClient(this).getLightIntensity()
- .addOnSuccessListener(new OnSuccessListener<AmbientLightResponse>() {
- @Override
- public void onSuccess(AmbientLightResponse ambientLightResponse) {
- AmbientLightStatus ambientLightStatus = ambientLightResponse.getAmbientLightStatus();
- Log.i(TAG, "Light intensity is " + ambientLightStatus.getLightIntensity() + " lux");
- }
- })
- .addOnFailureListener(new OnFailureListener() {
- @Override
- public void onFailure(Exception e) {
- Log.e(TAG, "get light intensity failed", e);
- }
- });
The following example illustrates how to develop a barrier triggered by the above condition. That is, the barrier will be triggered when the ambient light intensity exceeds the preset value.
1. Define the barrier.
- final float luxValue = 2500.0f;
- AwarenessBarrier lightAboveBarrier = AmbientLightBarrier.above(luxValue);
2. Define PendingIntent that will be triggered upon a barrier status change, for example, to send a broadcast, and create a broadcast receiver to receive the broadcast.
- final String BARRIER_RECEIVER_ACTION = getApplication().getPackageName() + "LIGHT_BARRIER_RECEIVER_ACTION";
- Intent intent = new Intent(BARRIER_RECEIVER_ACTION);
- PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
- LightBarrierReceiver barrierReceiver = new LightBarrierReceiver();
- registerReceiver(barrierReceiver, new IntentFilter(BARRIER_RECEIVER_ACTION));
3. Define the label for the barrier and add the barrier.
- String lightBarrierLabel = "light above barrier";
- BarrierUpdateRequest.Builder builder = new BarrierUpdateRequest.Builder();
- BarrierUpdateRequest request = builder.addBarrier(lightBarrierLabel, lightAboveBarrier,pendingIntent).build();
- Awareness.getBarrierClient(context).updateBarriers(request)
- .addOnSuccessListener(new OnSuccessListener<Void>() {
- @Override
- public void onSuccess(Void aVoid) {
- Toast.makeText(getApplicationContext(), "add barrier success", Toast.LENGTH_SHORT).show();
- }
- })
- .addOnFailureListener(new OnFailureListener() {
- @Override
- public void onFailure(Exception e) {
- Toast.makeText(getApplicationContext(), "add barrier failed", Toast.LENGTH_SHORT).show();
- Log.e(TAG, "add barrier failed", e);
- }
- });
4. Define the broadcast receiver to listen for the barrier event for further processing.
- class LightBarrierReceiver extends BroadcastReceiver {
- @Override
- public void onReceive(Context context, Intent intent) {
- BarrierStatus barrierStatus = BarrierStatus.extract(intent);
- String label = barrierStatus.getBarrierLabel();
- switch(barrierStatus.getPresentStatus()) {
- case BarrierStatus.TRUE:
- Log.i(TAG, label + " status:true");
- break;
- case BarrierStatus.FALSE:
- Log.i(TAG, label + " status:false");
- break;
- case BarrierStatus.UNKNOWN:
- Log.i(TAG, label + " status:unknown");
- break;
- }
- }
- }