Intelligent Assistant
Chat with our virtual assistant to get answers promptly.
- <!-- Location permission. This permission is sensitive and needs to be dynamically applied for in the code after being declared. -->
- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
- <!-- Location permission. If only the IP address-based time capture function is used, you can declare only this permission. -->
- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
- import com.huawei.hmf.tasks.OnFailureListener;
- import com.huawei.hmf.tasks.OnSuccessListener;
- import com.huawei.hms.kit.awareness.Awareness;
- // Import the time capture-related classes.
- import com.huawei.hms.kit.awareness.capture.TimeCategoriesResponse;
- import com.huawei.hms.kit.awareness.status.TimeCategories;
- // Import time barrier-related classes.
- import com.huawei.hms.kit.awareness.barrier.AwarenessBarrier;
- import com.huawei.hms.kit.awareness.barrier.BarrierStatus;
- import com.huawei.hms.kit.awareness.barrier.TimeBarrier;
- import com.huawei.hms.kit.awareness.barrier.BarrierUpdateRequest;
- Awareness.getCaptureClient(this).getTimeCategories()
- // Callback listener for execution success.
- .addOnSuccessListener(new OnSuccessListener<TimeCategoriesResponse>() {
- @Override
- public void onSuccess(TimeCategoriesResponse timeCategoriesResponse) {
- TimeCategories categories = timeCategoriesResponse.getTimeCategories();
- int[] timeInfo = categories.getTimeCategories();
- }
- })
- // Callback listener for execution failure.
- .addOnFailureListener(new OnFailureListener() {
- @Override
- public void onFailure(Exception e) {
- Log.e(TAG, "get Time Categories failed", e);
- }
- });
- Awareness.getCaptureClient(this).timeCategories
- // Callback listener for execution success.
- .addOnSuccessListener { timeCategoriesResponse: TimeCategoriesResponse ->
- val categories = timeCategoriesResponse.timeCategories
- val timeInfo = categories.timeCategories
- }
- // Callback listener for execution failure.
- .addOnFailureListener { e: Exception? -> Log.e(TAG, "get Time Categories failed", e)
- }
The following example illustrates how to develop a barrier triggered by the duringPeriodOfDay condition. That is, the barrier will be triggered when a user is in a specified time frame in a specified time zone.
- long oneHourMilliSecond = 60 * 60 * 1000L;
- AwarenessBarrier periodOfDayBarrier = TimeBarrier.duringPeriodOfDay(TimeZone.getDefault(),
- 11 * oneHourMilliSecond, 12 * oneHourMilliSecond);
- val oneHourMilliSecond = 60 * 60 * 1000L
- var periodOfDayBarrier : AwarenessBarrier = TimeBarrier.duringPeriodOfDay(TimeZone.getDefault(),
- 11 * oneHourMilliSecond, 12 * oneHourMilliSecond)
- final String BARRIER_RECEIVER_ACTION = getApplication().getPackageName() + "TIME_BARRIER_RECEIVER_ACTION";
- Intent intent = new Intent(BARRIER_RECEIVER_ACTION);
- PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
- TimeBarrierReceiver barrierReceiver = new TimeBarrierReceiver();
- registerReceiver(barrierReceiver, new IntentFilter(BARRIER_RECEIVER_ACTION));
- val BARRIER_RECEIVER_ACTION = application.packageName + "TIME_BARRIER_RECEIVER_ACTION"
- val intent = Intent(BARRIER_RECEIVER_ACTION)
- val pendingIntent = PendingIntent.getBroadcast(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT)
- val barrierReceiver = TimeBarrierReceiver()
- registerReceiver(barrierReceiver, IntentFilter(BARRIER_RECEIVER_ACTION))
- String timeBarrierLabel = "period of day barrier";
- // Define a request for updating a barrier.
- BarrierUpdateRequest.Builder builder = new BarrierUpdateRequest.Builder();
- BarrierUpdateRequest request = builder.addBarrier(timeBarrierLabel, periodOfDayBarrier,pendingIntent).build();
- Awareness.getBarrierClient(context).updateBarriers(request)
- // Callback listener for execution success.
- .addOnSuccessListener(new OnSuccessListener<Void>() {
- @Override
- public void onSuccess(Void aVoid) {
- Toast.makeText(getApplicationContext(), "add barrier success", Toast.LENGTH_SHORT).show();
- }
- })
- // Callback listener for execution failure.
- .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);
- }
- });
- val timeBarrierLabel = "period of day barrier"
- // Define a request for updating a barrier.
- val builder = BarrierUpdateRequest.Builder()
- val request = builder.addBarrier(timeBarrierLabel, periodOfDayBarrier, pendingIntent).build()
- Awareness.getBarrierClient(context).updateBarriers(request)
- // Callback listener for execution success.
- .addOnSuccessListener { Toast.makeText(applicationContext, "add barrier success", Toast.LENGTH_SHORT).show()
- }
- // Callback listener for execution failure.
- .addOnFailureListener { e ->
- Toast.makeText(applicationContext, "add barrier failed", Toast.LENGTH_SHORT).show()
- Log.e(TAG, "add barrier failed", e)
- }
- // Define the broadcast receiver to listen for the barrier event.
- class TimeBarrierReceiver 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;
- }
- }
- }
- // Define the broadcast receiver to listen for the barrier event.
- internal inner class TimeBarrierReceiver : BroadcastReceiver() {
- override fun onReceive(context: Context, intent: Intent) {
- val barrierStatus = BarrierStatus.extract(intent)
- val label = barrierStatus.barrierLabel
- when (barrierStatus.presentStatus) {
- BarrierStatus.TRUE -> Log.i(TAG, "$label status:true")
- BarrierStatus.FALSE -> Log.i(TAG, "$label status:false")
- BarrierStatus.UNKNOWN -> Log.i(TAG, "$label status:unknown")
- }
- }
- }
- String timeBarrierLabel = "period of day barrier";
- // Define a request for updating a barrier.
- BarrierUpdateRequest.Builder builder = new BarrierUpdateRequest.Builder();
- BarrierUpdateRequest request = builder.deleteBarrier(timeBarrierLabel).build();
- Awareness.getBarrierClient(context).updateBarriers(request)
- // Callback listener for execution success.
- .addOnSuccessListener(new OnSuccessListener<Void>() {
- @Override
- public void onSuccess(Void aVoid) {
- Toast.makeText(getApplicationContext(), "delete barrier success", Toast.LENGTH_SHORT).show();
- }
- })
- // Callback listener for execution failure.
- .addOnFailureListener(new OnFailureListener() {
- @Override
- public void onFailure(Exception e) {
- Toast.makeText(getApplicationContext(), "delete barrier failed", Toast.LENGTH_SHORT).show();
- Log.e(TAG, "delete barrier failed", e);
- }
- });
- val timeBarrierLabel = "period of day barrier"
- // Define a request for updating a barrier.
- val builder = BarrierUpdateRequest.Builder()
- val request = builder.deleteBarrier(timeBarrierLabel).build()
- Awareness.getBarrierClient(context).updateBarriers(request)
- // Callback listener for execution success.
- .addOnSuccessListener { Toast.makeText(applicationContext, "delete barrier success", Toast.LENGTH_SHORT).show()
- }
- // Callback listener for execution failure.
- .addOnFailureListener { e ->
- Toast.makeText(applicationContext, "delete barrier failed", Toast.LENGTH_SHORT).show()
- Log.e(TAG, "delete barrier failed", e)
- }