public class

MutableTagBundle

extends TagBundle

 java.lang.Object

androidx.camera.core.impl.TagBundle

↳androidx.camera.core.impl.MutableTagBundle

Gradle dependencies

compile group: 'androidx.camera', name: 'camera-core', version: '1.2.0-alpha01'

  • groupId: androidx.camera
  • artifactId: camera-core
  • version: 1.2.0-alpha01

Artifact androidx.camera:camera-core:1.2.0-alpha01 it located at Google repository (https://maven.google.com/)

Overview

A mutable TagBundle which allows insertion/removal.

Summary

Fields
from TagBundlemTagMap
Methods
public voidaddTagBundle(TagBundle bundle)

Merges the given bundle into current bundle.

public static MutableTagBundlecreate()

Creates an empty MutableTagBundle.

public static MutableTagBundlefrom(TagBundle otherTagBundle)

Creates a MutableTagBundle from an existing TagBundle.

public voidputTag(java.lang.String key, java.lang.Object value)

Adds a tag with specified key.

from TagBundlecreate, emptyBundle, getTag, listKeys
from java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Methods

public static MutableTagBundle create()

Creates an empty MutableTagBundle.

Returns:

an empty MutableTagBundle containing no tag.

public static MutableTagBundle from(TagBundle otherTagBundle)

Creates a MutableTagBundle from an existing TagBundle.

Parameters:

otherTagBundle: TagBundle to insert.

Returns:

a MutableTagBundle prepopulated with TagBundle.

public void putTag(java.lang.String key, java.lang.Object value)

Adds a tag with specified key.

public void addTagBundle(TagBundle bundle)

Merges the given bundle into current bundle.

Source

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

package androidx.camera.core.impl;

import android.util.ArrayMap;

import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;

import java.util.Map;

/**
 * A mutable {@link TagBundle} which allows insertion/removal.
 */
@RequiresApi(21) // TODO(b/200306659): Remove and replace with annotation on package-info.java
public class MutableTagBundle extends TagBundle {

    private MutableTagBundle(Map<String, Object> source) {
        super(source);
    }

    /**
     * Creates an empty MutableTagBundle.
     *
     * @return an empty MutableTagBundle containing no tag.
     */
    @NonNull
    public static MutableTagBundle create() {
        return new MutableTagBundle(new ArrayMap<>());
    }

    /**
     * Creates a MutableTagBundle from an existing TagBundle.
     *
     * @param otherTagBundle TagBundle to insert.
     * @return a MutableTagBundle prepopulated with TagBundle.
     */
    @NonNull
    public static MutableTagBundle from(@NonNull TagBundle otherTagBundle) {
        Map<String, Object> tags = new ArrayMap<>();
        for (String key : otherTagBundle.listKeys()) {
            tags.put(key, otherTagBundle.getTag(key));
        }

        return new MutableTagBundle(tags);
    }

    /** Adds a tag with specified key. */
    public void putTag(@NonNull String key, @NonNull Object value) {
        // If the key exists, its value will be replaced.
        mTagMap.put(key, value);
    }

    /** Merges the given bundle into current bundle. */
    public void addTagBundle(@NonNull TagBundle bundle) {
        if (mTagMap != null && bundle.mTagMap != null) {
            mTagMap.putAll(bundle.mTagMap);
        }
    }
}