From 33707a9d6e5beb03c5ae010e661035f820cc4bb8 Mon Sep 17 00:00:00 2001 From: Hongwei Wang Date: Mon, 12 Feb 2018 10:29:08 -0800 Subject: Switches volume control to groupId based New APIs added - getVolumeGroupForUsage(int) - getGroup{Min,Max,}Volume(int) - setGroupVolume(int) Old APIs removed - getUsage{Min,Max,}Volume - setUsageVolume Known issue - No volume sliders in Mojave board since there is no volume group configured Adds also the validation pass for volume groups configuration Bug: 72555604 Test: run Car Settings in emulator Change-Id: I2507a45f2771e26fedc5cfbdb017023fa3d67d46 --- .../src/com/android/car/CarVolumeGroupsHelper.java | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) (limited to 'service/src/com/android/car/CarVolumeGroupsHelper.java') diff --git a/service/src/com/android/car/CarVolumeGroupsHelper.java b/service/src/com/android/car/CarVolumeGroupsHelper.java index 86e0a8944a..af2c6ddb93 100644 --- a/service/src/com/android/car/CarVolumeGroupsHelper.java +++ b/service/src/com/android/car/CarVolumeGroupsHelper.java @@ -16,9 +16,7 @@ package com.android.car; import android.annotation.XmlRes; -import android.car.media.CarVolumeGroup; import android.content.Context; -import android.content.res.Resources; import android.content.res.TypedArray; import android.content.res.XmlResourceParser; import android.util.AttributeSet; @@ -37,17 +35,17 @@ import java.util.List; private static final String TAG_GROUP = "group"; private static final String TAG_CONTEXT = "context"; - private final Resources mResources; + private final Context mContext; private final @XmlRes int mXmlConfiguration; CarVolumeGroupsHelper(Context context, @XmlRes int xmlConfiguration) { - mResources = context.getResources(); + mContext = context; mXmlConfiguration = xmlConfiguration; } CarVolumeGroup[] loadVolumeGroups() { List carVolumeGroups = new ArrayList<>(); - try (XmlResourceParser parser = mResources.getXml(mXmlConfiguration)) { + try (XmlResourceParser parser = mContext.getResources().getXml(mXmlConfiguration)) { AttributeSet attrs = Xml.asAttributeSet(parser); int type; // Traverse to the first start tag @@ -59,13 +57,15 @@ import java.util.List; throw new RuntimeException("Meta-data does not start with volumeGroups tag"); } int outerDepth = parser.getDepth(); + int id = 0; while ((type=parser.next()) != XmlResourceParser.END_DOCUMENT && (type != XmlResourceParser.END_TAG || parser.getDepth() > outerDepth)) { if (type == XmlResourceParser.END_TAG) { continue; } if (TAG_GROUP.equals(parser.getName())) { - carVolumeGroups.add(parseVolumeGroup(attrs, parser)); + carVolumeGroups.add(parseVolumeGroup(id, attrs, parser)); + id++; } } } catch (Exception e) { @@ -74,12 +74,9 @@ import java.util.List; return carVolumeGroups.toArray(new CarVolumeGroup[carVolumeGroups.size()]); } - private CarVolumeGroup parseVolumeGroup(AttributeSet attrs, XmlResourceParser parser) + private CarVolumeGroup parseVolumeGroup(int id, AttributeSet attrs, XmlResourceParser parser) throws XmlPullParserException, IOException { int type; - TypedArray a = mResources.obtainAttributes(attrs, R.styleable.volumeGroups_group); - String title = a.getString(R.styleable.volumeGroups_group_name); - a.recycle(); List contexts = new ArrayList<>(); int innerDepth = parser.getDepth(); @@ -89,14 +86,14 @@ import java.util.List; continue; } if (TAG_CONTEXT.equals(parser.getName())) { - TypedArray c = mResources.obtainAttributes( + TypedArray c = mContext.getResources().obtainAttributes( attrs, R.styleable.volumeGroups_context); contexts.add(c.getInt(R.styleable.volumeGroups_context_context, -1)); c.recycle(); } } - return new CarVolumeGroup(title, + return new CarVolumeGroup(mContext, id, contexts.stream().mapToInt(i -> i).filter(i -> i >= 0).toArray()); } } -- cgit v1.2.3