目录

Assigning Permissions in the Manifest File

Before calling the headset awareness capability, assign required permissions in the manifest file.

  1. <!-- Bluetooth permission -->
  2. <uses-permission android:name="android.permission.BLUETOOTH" />

Importing API Classes

Import the API classes required for headset awareness.

  1. import com.huawei.hmf.tasks.OnFailureListener;
  2. import com.huawei.hmf.tasks.OnSuccessListener;
  3. import com.huawei.hms.kit.awareness.Awareness;
  4. // Import the headset capture-related classes.
  5. import com.huawei.hms.kit.awareness.capture.HeadsetStatusResponse;
  6. import com.huawei.hms.kit.awareness.status.HeadsetStatus;
  7. // Import the headset barrier-related classes.
  8. import com.huawei.hms.kit.awareness.barrier.AwarenessBarrier;
  9. import com.huawei.hms.kit.awareness.barrier.BarrierStatus;
  10. import com.huawei.hms.kit.awareness.barrier.HeadsetBarrier;
  11. import com.huawei.hms.kit.awareness.barrier.BarrierUpdateRequest;

Developing Capabilities

Developing capture capabilities

1. Obtain the Capture Client object of HUAWEI Awareness Kit.

2. Call the headset status 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.

  1. Awareness.getCaptureClient(this)
  2.        .getHeadsetStatus()
  3.        .addOnSuccessListener(new OnSuccessListener<HeadsetStatusResponse>() {
  4.            @Override
  5.            public void onSuccess(HeadsetStatusResponse headsetStatusResponse) {
  6.                HeadsetStatus headsetStatus = headsetStatusResponse.getHeadsetStatus();
  7.                int status = headsetStatus.getStatus();
  8.                String stateStr = "Headsets are " +
  9.                        (status == HeadsetStatus.CONNECTED ? "connected" : "disconnected");
  10.                Log.i(TAG, stateStr);
  11.            }
  12.        })
  13.        .addOnFailureListener(new OnFailureListener() {
  14.            @Override
  15.            public void onFailure(Exception e) {
  16.                Log.e(TAG, "get Headsets Capture failed", e);
  17.            }
  18.        });

Developing barrier capabilities

The following example illustrates how to develop a barrier triggered by the connecting condition. That is, the barrier will be triggered when the headset is connected or plugged in.

1. Define the barrier.

  1. AwarenessBarrier headsetBarrier = HeadsetBarrier.connecting();

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.

  1. final String BARRIER_RECEIVER_ACTION = getApplication().getPackageName() + "HEADSET_BARRIER_RECEIVER_ACTION";
  2. Intent intent = new Intent(BARRIER_RECEIVER_ACTION);
  3. PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
  4. HeadsetBarrierReceiver barrierReceiver = new HeadsetBarrierReceiver();
  5. registerReceiver(barrierReceiver, new IntentFilter(BARRIER_RECEIVER_ACTION));

3. Define the label for the barrier and add the barrier.

  1. String headsetBarrierLabel = "headset connecting barrier";
  2. BarrierUpdateRequest.Builder builder = new BarrierUpdateRequest.Builder();
  3. BarrierUpdateRequest request = builder.addBarrier(headsetBarrierLabel, headsetBarrier,pendingIntent).build();
  4. Awareness.getBarrierClient(context).updateBarriers(request)
  5.        .addOnSuccessListener(new OnSuccessListener<Void>() {
  6.            @Override
  7.            public void onSuccess(Void aVoid) {
  8.                Toast.makeText(getApplicationContext(), "add barrier success", Toast.LENGTH_SHORT).show();
  9.            }
  10.        })
  11.        .addOnFailureListener(new OnFailureListener() {
  12.            @Override
  13.            public void onFailure(Exception e) {
  14.                Toast.makeText(getApplicationContext(), "add barrier failed", Toast.LENGTH_SHORT).show();
  15.                Log.e(TAG, "add barrier failed", e);
  16.            }
  17.        });

4. Define the broadcast receiver to listen for the barrier event for further processing.

  1. class HeadsetBarrierReceiver extends BroadcastReceiver {
  2.    @Override
  3.    public void onReceive(Context context, Intent intent) {
  4.        BarrierStatus barrierStatus = BarrierStatus.extract(intent);
  5.        String label = barrierStatus.getBarrierLabel();
  6.        switch(barrierStatus.getPresentStatus()) {
  7.            case BarrierStatus.TRUE:
  8.                Log.i(TAG, label + " status:true");
  9.                break;
  10.            case BarrierStatus.FALSE:
  11.                Log.i(TAG, label + " status:false");
  12.                break;
  13.            case BarrierStatus.UNKNOWN:
  14.                Log.i(TAG, label + " status:unknown");
  15.                break;
  16.        }
  17.    }
  18. }