rog2: Add Tile Sound Mode
Change-Id: I7c0b146590f92f1166b1683f1032ccb9545142d3
diff --git a/DeviceParts/AndroidManifest.xml b/DeviceParts/AndroidManifest.xml
index ef43823..1bb93e1 100644
--- a/DeviceParts/AndroidManifest.xml
+++ b/DeviceParts/AndroidManifest.xml
@@ -86,5 +86,14 @@
android:name="android.service.quicksettings.action.QS_TILE"/>
</intent-filter>
</service>
+ <service
+ android:name="org.omnirom.device.VolumeTile"
+ android:icon="@drawable/ic_volume_ringer"
+ android:label="@string/volume_mode"
+ android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
+ <intent-filter>
+ <action android:name="android.service.quicksettings.action.QS_TILE" />
+ </intent-filter>
+ </service>
</application>
</manifest>
diff --git a/DeviceParts/res/drawable/ic_volume_ringer.xml b/DeviceParts/res/drawable/ic_volume_ringer.xml
new file mode 100644
index 0000000..11d8428
--- /dev/null
+++ b/DeviceParts/res/drawable/ic_volume_ringer.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:sysui="http://schemas.android.com/apk/res-auto" xmlns:aapt="http://schemas.android.com/aapt" android:tint="?android:attr/colorControlNormal" android:height="24dp" android:width="24dp" android:viewportWidth="24" android:viewportHeight="24">
+ <path android:fillColor="#ffffffff" android:pathData="M18,17v-6c0,-3.07 -1.63,-5.64 -4.5,-6.32V4c0,-0.83 -0.67,-1.5 -1.5,-1.5S10.5,3.17 10.5,4v0.68C7.64,5.36 6,7.92 6,11v6H4v2h10h0.38H20v-2H18zM16,17H8v-6c0,-2.48 1.51,-4.5 4,-4.5s4,2.02 4,4.5V17z"/>
+ <path android:fillColor="#ffffffff" android:pathData="M12,22c1.1,0 2,-0.9 2,-2h-4C10,21.1 10.9,22 12,22z"/>
+</vector>
diff --git a/DeviceParts/res/drawable/ic_volume_ringer_mute.xml b/DeviceParts/res/drawable/ic_volume_ringer_mute.xml
new file mode 100644
index 0000000..f6f486f
--- /dev/null
+++ b/DeviceParts/res/drawable/ic_volume_ringer_mute.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:sysui="http://schemas.android.com/apk/res-auto" xmlns:aapt="http://schemas.android.com/aapt" android:tint="?android:attr/colorControlNormal" android:height="24dp" android:width="24dp" android:viewportWidth="24" android:viewportHeight="24">
+ <path android:fillColor="#ffffffff" android:pathData="M12,22c1.1,0 2,-0.9 2,-2h-4C10,21.1 10.9,22 12,22z"/>
+ <path android:fillColor="#ffffffff" android:pathData="M16,16L2.81,2.81L1.39,4.22l4.85,4.85C6.09,9.68 6,10.33 6,11v6H4v2h12.17l3.61,3.61l1.41,-1.41L16,16zM8,17c0,0 0.01,-6.11 0.01,-6.16L14.17,17H8z"/>
+ <path android:fillColor="#ffffffff" android:pathData="M12,6.5c2.49,0 4,2.02 4,4.5v2.17l2,2V11c0,-3.07 -1.63,-5.64 -4.5,-6.32V4c0,-0.83 -0.67,-1.5 -1.5,-1.5S10.5,3.17 10.5,4v0.68C9.72,4.86 9.05,5.2 8.46,5.63L9.93,7.1C10.51,6.73 11.2,6.5 12,6.5z"/>
+</vector>
diff --git a/DeviceParts/res/drawable/ic_volume_ringer_vibrate.xml b/DeviceParts/res/drawable/ic_volume_ringer_vibrate.xml
new file mode 100644
index 0000000..9010c53
--- /dev/null
+++ b/DeviceParts/res/drawable/ic_volume_ringer_vibrate.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:sysui="http://schemas.android.com/apk/res-auto" xmlns:aapt="http://schemas.android.com/aapt" android:height="19dp" android:width="19dp" android:viewportWidth="24" android:viewportHeight="24">
+ <path android:fillColor="#ffffffff" android:pathData="M1,9h2v6H1V9zM4,17h2V7H4V17zM21,9v6h2V9H21zM18,17h2V7h-2V17zM17,5.5v13c0,0.83 -0.67,1.5 -1.5,1.5h-7C7.67,20 7,19.33 7,18.5v-13C7,4.67 7.67,4 8.5,4h7C16.33,4 17,4.67 17,5.5zM15,6H9v12h6V6z"/>
+</vector>
diff --git a/DeviceParts/res/values/strings.xml b/DeviceParts/res/values/strings.xml
index 8284a21..0d50ce8 100644
--- a/DeviceParts/res/values/strings.xml
+++ b/DeviceParts/res/values/strings.xml
@@ -77,4 +77,9 @@
<string name="category_frame_rate">FPS of the screen</string>
<string name="refresh_rate_title">Refresh rate</string>
<string name="summary_placeholder"> </string>
+
+ <!-- Volume panel QS tile -->
+ <string name="volume_mode">Sound</string>
+ <string name="vibrate_mode">Vibrate</string>
+ <string name="mute_mode">Mute</string>
</resources>
diff --git a/DeviceParts/src/org/omnirom/device/VolumeTile.java b/DeviceParts/src/org/omnirom/device/VolumeTile.java
new file mode 100644
index 0000000..c2126eb
--- /dev/null
+++ b/DeviceParts/src/org/omnirom/device/VolumeTile.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2020 The OmniROM 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 org.omnirom.device;
+
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.drawable.Icon;
+import android.media.AudioManager;
+import android.service.quicksettings.Tile;
+import android.service.quicksettings.TileService;
+
+public class VolumeTile extends TileService {
+ private AudioManager mAudioManager;
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ }
+
+ @Override
+ public void onTileAdded() {
+ super.onTileAdded();
+ }
+
+ @Override
+ public void onTileRemoved() {
+ super.onTileRemoved();
+ }
+
+ @Override
+ public void onStartListening() {
+ super.onStartListening();
+ mAudioManager = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
+
+ switch (mAudioManager.getRingerModeInternal()) {
+ case AudioManager.RINGER_MODE_SILENT:
+ getQsTile().setIcon(Icon.createWithResource(this, R.drawable.ic_volume_ringer_mute));
+ getQsTile().setLabel(getString(R.string.mute_mode));
+ break;
+ case AudioManager.RINGER_MODE_VIBRATE:
+ getQsTile().setIcon(Icon.createWithResource(this, R.drawable.ic_volume_ringer_vibrate));
+ getQsTile().setLabel(getString(R.string.vibrate_mode));
+ break;
+ case AudioManager.RINGER_MODE_NORMAL:
+ getQsTile().setIcon(Icon.createWithResource(this, R.drawable.ic_volume_ringer));
+ getQsTile().setLabel(getString(R.string.volume_mode));
+ break;
+ }
+ getQsTile().setState(Tile.STATE_ACTIVE);
+ getQsTile().updateTile();
+ }
+
+ @Override
+ public void onStopListening() {
+ super.onStopListening();
+ }
+
+ @Override
+ public void onClick() {
+ super.onClick();
+ mAudioManager = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
+
+ switch (mAudioManager.getRingerModeInternal()) {
+ case AudioManager.RINGER_MODE_SILENT:
+ mAudioManager.setRingerModeInternal(AudioManager.RINGER_MODE_NORMAL);
+ getQsTile().setIcon(Icon.createWithResource(this, R.drawable.ic_volume_ringer));
+ getQsTile().setLabel(getString(R.string.volume_mode));
+ break;
+ case AudioManager.RINGER_MODE_VIBRATE:
+ mAudioManager.setRingerModeInternal(AudioManager.RINGER_MODE_SILENT);
+ getQsTile().setIcon(Icon.createWithResource(this, R.drawable.ic_volume_ringer_mute));
+ getQsTile().setLabel(getString(R.string.mute_mode));
+ break;
+ case AudioManager.RINGER_MODE_NORMAL:
+ mAudioManager.setRingerModeInternal(AudioManager.RINGER_MODE_VIBRATE);
+ getQsTile().setIcon(Icon.createWithResource(this, R.drawable.ic_volume_ringer_vibrate));
+ getQsTile().setLabel(getString(R.string.vibrate_mode));
+ break;
+ }
+ getQsTile().updateTile();
+ }
+
+}
\ No newline at end of file