summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanesh M <daneshm90@gmail.com>2012-11-29 22:26:21 -0500
committerDanesh Mondegarian <daneshm90@gmail.com>2012-12-01 12:11:11 -0500
commit15661444ae1faea831218f0c936b756de2f0698b (patch)
tree4d48a05744611ee7290ab2a066cf378252243496
parentbf79e387e59813060b2b0b36d954c110c91c790c (diff)
downloadframeworks_base-15661444ae1faea831218f0c936b756de2f0698b.zip
frameworks_base-15661444ae1faea831218f0c936b756de2f0698b.tar.gz
frameworks_base-15661444ae1faea831218f0c936b756de2f0698b.tar.bz2
Camera : Powerkey shutter (1/2)
Allows user to take use power key to take pictures/videos Change-Id: I85a1e1761199f4604672be42a3a5005227f5451a
-rw-r--r--core/java/android/view/Window.java8
-rw-r--r--core/java/android/view/WindowManager.java4
-rw-r--r--core/res/AndroidManifest.xml10
-rwxr-xr-xcore/res/res/values/strings.xml5
-rwxr-xr-xpolicy/src/com/android/internal/policy/impl/PhoneWindowManager.java4
5 files changed, 30 insertions, 1 deletions
diff --git a/core/java/android/view/Window.java b/core/java/android/view/Window.java
index 06974d3..fcf0924 100644
--- a/core/java/android/view/Window.java
+++ b/core/java/android/view/Window.java
@@ -740,6 +740,10 @@ public abstract class Window {
* @see #clearFlags
*/
public void setFlags(int flags, int mask) {
+ if ((flags & mask & WindowManager.LayoutParams.PREVENT_POWER_KEY) != 0){
+ mContext.enforceCallingOrSelfPermission("android.permission.PREVENT_POWER_KEY",
+ "No permission to prevent power key");
+ }
final WindowManager.LayoutParams attrs = getAttributes();
attrs.flags = (attrs.flags&~mask) | (flags&mask);
if ((mask&WindowManager.LayoutParams.FLAG_NEEDS_MENU_KEY) != 0) {
@@ -779,6 +783,10 @@ public abstract class Window {
* current values.
*/
public void setAttributes(WindowManager.LayoutParams a) {
+ if ((a.flags & WindowManager.LayoutParams.PREVENT_POWER_KEY) != 0) {
+ mContext.enforceCallingOrSelfPermission("android.permission.PREVENT_POWER_KEY",
+ "No permission to prevent power key");
+ }
mWindowAttributes.copyFrom(a);
if (mCallback != null) {
mCallback.onWindowAttributesChanged(mWindowAttributes);
diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java
index 3b31ff6..bb859ed 100644
--- a/core/java/android/view/WindowManager.java
+++ b/core/java/android/view/WindowManager.java
@@ -804,6 +804,10 @@ public interface WindowManager extends ViewManager {
* {@hide} */
public static final int FLAG_SYSTEM_ERROR = 0x40000000;
+ /** Window flag: Overrides default power key behavior
+ @{hide} */
+ public static final int PREVENT_POWER_KEY = 0x80000000;
+
/**
* Various behavioral options/flags. Default is none.
*
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 7eddc85..3c083ac 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -739,7 +739,15 @@
android:description="@string/permdesc_changeWifiMulticastState"
android:label="@string/permlab_changeWifiMulticastState" />
- <!-- Allows access to the vibrator -->
+ <!-- Allows an application to override the power key action
+ @hide -->
+ <permission android:name="android.permission.PREVENT_POWER_KEY"
+ android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
+ android:protectionLevel="signatureOrSystem"
+ android:label="@string/permlab_preventpower"
+ android:description="@string/permdesc_preventpower" />
+
+<!-- Allows access to the vibrator -->
<permission android:name="android.permission.VIBRATE"
android:permissionGroup="android.permission-group.AFFECTS_BATTERY"
android:protectionLevel="normal"
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 2930e56..2f7fda3 100755
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -1073,6 +1073,11 @@
<string name="permdesc_movePackage">Allows the app to move app resources from internal to external media and vice versa.</string>
<!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permlab_preventpower">prevent power key</string>
+ <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permdesc_preventpower">Allows an application to override the power key</string>
+
+ <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permlab_readLogs">read sensitive log data</string>
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permdesc_readLogs" product="tablet">Allows the app to read from the
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
index ff7bdb0..725977d 100755
--- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -3676,6 +3676,10 @@ public class PhoneWindowManager implements WindowManagerPolicy {
}
case KeyEvent.KEYCODE_POWER: {
+ if ((mTopFullscreenOpaqueWindowState.getAttrs().flags
+ & WindowManager.LayoutParams.PREVENT_POWER_KEY) != 0){
+ return result;
+ }
result &= ~ACTION_PASS_TO_USER;
if (down) {
if (isScreenOn && !mPowerKeyTriggered