--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <item
+ android:state_enabled="true"
+ android:state_active="false"
+ android:state_focused="false"
+ android:drawable="@drawable/ic_lockscreen_camera_normal" />
+
+ <item
+ android:state_enabled="true"
+ android:state_active="true"
+ android:state_focused="false"
+ android:drawable="@drawable/ic_lockscreen_camera_activated" />
+
+</selector>
import com.android.internal.widget.multiwaveview.MultiWaveView;
import android.app.ActivityManager;
+import android.content.ActivityNotFoundException;
import android.content.Context;
+import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.view.KeyEvent;
UnlockWidgetCommonMethods {
private final MultiWaveView mMultiWaveView;
+ private boolean mCameraDisabled;
MultiWaveViewMethods(MultiWaveView multiWaveView) {
mMultiWaveView = multiWaveView;
+ final boolean cameraDisabled = mLockPatternUtils.getDevicePolicyManager()
+ .getCameraDisabled(null);
+ if (cameraDisabled) {
+ Log.v(TAG, "Camera disabled by Device Policy");
+ mCameraDisabled = true;
+ } else {
+ // Camera is enabled if resource is initially defined for MultiWaveView
+ // in the lockscreen layout file
+ mCameraDisabled = mMultiWaveView.getTargetResourceId()
+ != R.array.lockscreen_targets_with_camera;
+ }
}
public void updateResources() {
- mMultiWaveView.setTargetResources(mSilentMode ? R.array.lockscreen_targets_when_silent
- : R.array.lockscreen_targets_when_soundon);
+ int resId;
+ if (mCameraDisabled) {
+ // Fall back to showing ring/silence if camera is disabled by DPM...
+ resId = mSilentMode ? R.array.lockscreen_targets_when_silent
+ : R.array.lockscreen_targets_when_soundon;
+ } else {
+ resId = R.array.lockscreen_targets_with_camera;
+ }
+ mMultiWaveView.setTargetResources(resId);
}
public void onGrabbed(View v, int handle) {
}
public void onTrigger(View v, int target) {
- if (target == 0) { // TODO: Use resources to determine which handle was used
+ if (target == 0 || target == 1) { // 0 = unlock/portrait, 1 = unlock/landscape
mCallback.goToUnlockScreen();
- } else if (target == 2) {
- toggleRingMode();
- mUnlockWidgetMethods.updateResources();
- mCallback.pokeWakelock();
+ } else if (target == 2 || target == 3) { // 2 = alt/portrait, 3 = alt/landscape
+ if (!mCameraDisabled) {
+ // Broadcast an intent to start the Camera
+ Intent intent = new Intent(Intent.ACTION_CAMERA_BUTTON, null);
+ mContext.sendOrderedBroadcast(intent, null);
+ mCallback.goToUnlockScreen();
+ } else {
+ toggleRingMode();
+ mUnlockWidgetMethods.updateResources();
+ mCallback.pokeWakelock();
+ }
}
}