Add Volume panel

Volume panel hosts each volume stream, including:
- Media volume
- Call Volume
- Ring volume
- Alarm volume

Change-Id: I1801d10d2304c57615e9499386c638c74ffcd7c3
Screenshot: https://screenshot.googleplex.com/m764j65ECto
Bug: 117804161
Test: Manual app
Test: robolectric
This commit is contained in:
Matthew Fritze
2018-11-30 14:29:45 -08:00
parent c14316c4a9
commit c999b088d2
12 changed files with 197 additions and 12 deletions

View File

@@ -47,8 +47,8 @@ public class InternetConnectivityPanel implements PanelContent {
}
@Override
public String getTitle() {
return (String) mContext.getText(R.string.internet_connectivity_panel_title);
public CharSequence getTitle() {
return mContext.getText(R.string.internet_connectivity_panel_title);
}
@Override

View File

@@ -25,6 +25,8 @@ public class PanelFeatureProviderImpl implements PanelFeatureProvider {
switch (panelType) {
case SettingsPanelActivity.PANEL_TYPE_WIFI:
return InternetConnectivityPanel.create(context);
case SettingsPanelActivity.PANEL_TYPE_VOLUME:
return VolumePanel.create(context);
}
throw new IllegalStateException("No matching panel for: " + panelType);

View File

@@ -54,6 +54,9 @@ public class SettingsPanelActivity extends FragmentActivity {
// TODO (b/117804442) move to framework
public static final String PANEL_TYPE_WIFI = "wifi_panel";
// TODO (b/117804442) move to framework
public static final String PANEL_TYPE_VOLUME = "volume_panel";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

View File

@@ -0,0 +1,64 @@
/*
* Copyright (C) 2018 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 com.android.settings.panel;
import static com.android.settings.slices.CustomSliceRegistry.VOLUME_ALARM_URI;
import static com.android.settings.slices.CustomSliceRegistry.VOLUME_CALL_URI;
import static com.android.settings.slices.CustomSliceRegistry.VOLUME_MEDIA_URI;
import static com.android.settings.slices.CustomSliceRegistry.VOLUME_RINGER_URI;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.provider.Settings;
import com.android.settings.R;
import java.util.ArrayList;
import java.util.List;
public class VolumePanel implements PanelContent {
private final Context mContext;
public static VolumePanel create(Context context) {
return new VolumePanel(context);
}
private VolumePanel(Context context) {
mContext = context.getApplicationContext();
}
@Override
public CharSequence getTitle() {
return mContext.getText(R.string.volume_connectivity_panel_title);
}
@Override
public List<Uri> getSlices() {
final List<Uri> uris = new ArrayList<>();
uris.add(VOLUME_MEDIA_URI);
uris.add(VOLUME_CALL_URI);
uris.add(VOLUME_RINGER_URI);
uris.add(VOLUME_ALARM_URI);
return uris;
}
@Override
public Intent getSeeMoreIntent() {
return new Intent(Settings.ACTION_SOUND_SETTINGS);
}
}