Repository: Joisar/LockScreenApp
Branch: master
Commit: 2470502ba5ae
Files: 20
Total size: 18.5 KB
Directory structure:
gitextract_y21tkzuy/
├── LockScreenApp/
│ ├── .classpath
│ ├── .project
│ ├── .settings/
│ │ └── org.eclipse.jdt.core.prefs
│ ├── AndroidManifest.xml
│ ├── libs/
│ │ └── android-support-v4.jar
│ ├── proguard.cfg
│ ├── project.properties
│ ├── res/
│ │ ├── color/
│ │ │ └── selector_txt_btn_unlock.xml
│ │ ├── drawable/
│ │ │ └── selector_bg_btn_unlock.xml
│ │ ├── layout/
│ │ │ └── activity_lockscreen.xml
│ │ ├── values/
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── strings.xml
│ │ │ └── style.xml
│ │ └── values-w820dp/
│ │ └── dimens.xml
│ └── src/
│ └── com/
│ └── mehuljoisar/
│ └── lockscreen/
│ ├── LockScreenActivity.java
│ └── utils/
│ ├── LockscreenIntentReceiver.java
│ ├── LockscreenService.java
│ └── LockscreenUtils.java
└── README.md
================================================
FILE CONTENTS
================================================
================================================
FILE: LockScreenApp/.classpath
================================================
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="gen"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
<classpathentry kind="output" path="bin/classes"/>
</classpath>
================================================
FILE: LockScreenApp/.project
================================================
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>LockScreenApp</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
================================================
FILE: LockScreenApp/.settings/org.eclipse.jdt.core.prefs
================================================
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.6
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.6
================================================
FILE: LockScreenApp/AndroidManifest.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mehuljoisar.lockscreen"
android:versionCode="3"
android:versionName="1.2" >
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name="com.mehuljoisar.lockscreen.LockScreenActivity"
android:excludeFromRecents="true"
android:label="@string/app_name"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name=".utils.LockscreenService" >
</service>
<receiver
android:name=".utils.LockscreenIntentReceiver"
android:enabled="true" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
</manifest>
================================================
FILE: LockScreenApp/proguard.cfg
================================================
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
================================================
FILE: LockScreenApp/project.properties
================================================
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system use,
# "ant.properties", and override values to adapt the script to your
# project structure.
# Project target.
target=Google Inc.:Google APIs:22
================================================
FILE: LockScreenApp/res/color/selector_txt_btn_unlock.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="@color/white"/>
<item android:color="@color/black"/>
</selector>
================================================
FILE: LockScreenApp/res/drawable/selector_bg_btn_unlock.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/black" android:state_pressed="true"/>
<item android:drawable="@color/white"/>
</selector>
================================================
FILE: LockScreenApp/res/layout/activity_lockscreen.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/yellow"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" >
<TextView
android:id="@+id/tvInstructions"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/instructions"
android:textAppearance="@android:style/TextAppearance.Medium"
android:textColor="@color/black" />
<Button
android:id="@+id/btnUnlock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="15dp"
android:layout_below="@id/tvInstructions"
android:layout_centerHorizontal="true"
android:background="@drawable/selector_bg_btn_unlock"
android:text="@string/unlock"
android:textAppearance="@android:style/TextAppearance.Large"
android:textColor="@color/selector_txt_btn_unlock" />
</RelativeLayout>
================================================
FILE: LockScreenApp/res/values/colors.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="yellow">#F5DC49</color>
<color name="black">#000000</color>
<color name="white">#FFFFFF</color>
</resources>
================================================
FILE: LockScreenApp/res/values/dimens.xml
================================================
<resources>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
</resources>
================================================
FILE: LockScreenApp/res/values/strings.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">LockScreenApp</string>
<string name="instructions">Click on UNLOCK button to unlock the screen</string>
<string name="unlock">UNLOCK</string>
</resources>
================================================
FILE: LockScreenApp/res/values/style.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="OverlayDialog" parent="@android:style/Theme.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">false</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
</resources>
================================================
FILE: LockScreenApp/res/values-w820dp/dimens.xml
================================================
<resources>
<!--
Example customization of dimensions originally defined in res/values/dimens.xml
(such as screen margins) for screens with more than 820dp of available width. This
would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively).
-->
<dimen name="activity_horizontal_margin">64dp</dimen>
</resources>
================================================
FILE: LockScreenApp/src/com/mehuljoisar/lockscreen/LockScreenActivity.java
================================================
package com.mehuljoisar.lockscreen;
import android.app.Activity;
import android.app.KeyguardManager;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
import android.widget.Button;
import com.mehuljoisar.lockscreen.utils.LockscreenService;
import com.mehuljoisar.lockscreen.utils.LockscreenUtils;
public class LockScreenActivity extends Activity implements
LockscreenUtils.OnLockStatusChangedListener {
// User-interface
private Button btnUnlock;
// Member variables
private LockscreenUtils mLockscreenUtils;
// Set appropriate flags to make the screen appear over the keyguard
@Override
public void onAttachedToWindow() {
this.getWindow().setType(
WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
this.getWindow().addFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN
| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
);
super.onAttachedToWindow();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lockscreen);
init();
// unlock screen in case of app get killed by system
if (getIntent() != null && getIntent().hasExtra("kill")
&& getIntent().getExtras().getInt("kill") == 1) {
enableKeyguard();
unlockHomeButton();
} else {
try {
// disable keyguard
disableKeyguard();
// lock home button
lockHomeButton();
// start service for observing intents
startService(new Intent(this, LockscreenService.class));
// listen the events get fired during the call
StateListener phoneStateListener = new StateListener();
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
telephonyManager.listen(phoneStateListener,
PhoneStateListener.LISTEN_CALL_STATE);
} catch (Exception e) {
}
}
}
private void init() {
mLockscreenUtils = new LockscreenUtils();
btnUnlock = (Button) findViewById(R.id.btnUnlock);
btnUnlock.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// unlock home button and then screen on button press
unlockHomeButton();
}
});
}
// Handle events of calls and unlock screen if necessary
private class StateListener extends PhoneStateListener {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
switch (state) {
case TelephonyManager.CALL_STATE_RINGING:
unlockHomeButton();
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
break;
case TelephonyManager.CALL_STATE_IDLE:
break;
}
}
};
// Don't finish Activity on Back press
@Override
public void onBackPressed() {
return;
}
// Handle button clicks
@Override
public boolean onKeyDown(int keyCode, android.view.KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)
|| (keyCode == KeyEvent.KEYCODE_POWER)
|| (keyCode == KeyEvent.KEYCODE_VOLUME_UP)
|| (keyCode == KeyEvent.KEYCODE_CAMERA)) {
return true;
}
if ((keyCode == KeyEvent.KEYCODE_HOME)) {
return true;
}
return false;
}
// handle the key press events here itself
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_UP
|| (event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_DOWN)
|| (event.getKeyCode() == KeyEvent.KEYCODE_POWER)) {
return false;
}
if ((event.getKeyCode() == KeyEvent.KEYCODE_HOME)) {
return true;
}
return false;
}
// Lock home button
public void lockHomeButton() {
mLockscreenUtils.lock(LockScreenActivity.this);
}
// Unlock home button and wait for its callback
public void unlockHomeButton() {
mLockscreenUtils.unlock();
}
// Simply unlock device when home button is successfully unlocked
@Override
public void onLockStatusChanged(boolean isLocked) {
if (!isLocked) {
unlockDevice();
}
}
@Override
protected void onStop() {
super.onStop();
unlockHomeButton();
}
@SuppressWarnings("deprecation")
private void disableKeyguard() {
KeyguardManager mKM = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
KeyguardManager.KeyguardLock mKL = mKM.newKeyguardLock("IN");
mKL.disableKeyguard();
}
@SuppressWarnings("deprecation")
private void enableKeyguard() {
KeyguardManager mKM = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
KeyguardManager.KeyguardLock mKL = mKM.newKeyguardLock("IN");
mKL.reenableKeyguard();
}
//Simply unlock device by finishing the activity
private void unlockDevice()
{
finish();
}
}
================================================
FILE: LockScreenApp/src/com/mehuljoisar/lockscreen/utils/LockscreenIntentReceiver.java
================================================
package com.mehuljoisar.lockscreen.utils;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import com.mehuljoisar.lockscreen.LockScreenActivity;
public class LockscreenIntentReceiver extends BroadcastReceiver {
// Handle actions and display Lockscreen
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)
|| intent.getAction().equals(Intent.ACTION_SCREEN_ON)
|| intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
start_lockscreen(context);
}
}
// Display lock screen
private void start_lockscreen(Context context) {
Intent mIntent = new Intent(context, LockScreenActivity.class);
mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(mIntent);
}
}
================================================
FILE: LockScreenApp/src/com/mehuljoisar/lockscreen/utils/LockscreenService.java
================================================
package com.mehuljoisar.lockscreen.utils;
import android.app.Notification;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Bitmap;
import android.os.IBinder;
import android.provider.SyncStateContract.Constants;
import android.support.v4.app.NotificationCompat;
import com.mehuljoisar.lockscreen.R;
public class LockscreenService extends Service {
private BroadcastReceiver mReceiver;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
}
// Register for Lockscreen event intents
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
mReceiver = new LockscreenIntentReceiver();
registerReceiver(mReceiver, filter);
startForeground();
return START_STICKY;
}
// Run service in foreground so it is less likely to be killed by system
private void startForeground() {
Notification notification = new NotificationCompat.Builder(this)
.setContentTitle(getResources().getString(R.string.app_name))
.setTicker(getResources().getString(R.string.app_name))
.setContentText("Running")
.setSmallIcon(R.drawable.ic_launcher)
.setContentIntent(null)
.setOngoing(true)
.build();
startForeground(9999,notification);
}
// Unregister receiver
@Override
public void onDestroy() {
super.onDestroy();
unregisterReceiver(mReceiver);
}
}
================================================
FILE: LockScreenApp/src/com/mehuljoisar/lockscreen/utils/LockscreenUtils.java
================================================
package com.mehuljoisar.lockscreen.utils;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.KeyguardManager;
import android.content.Context;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
import com.mehuljoisar.lockscreen.R;
public class LockscreenUtils {
// Member variables
private OverlayDialog mOverlayDialog;
private OnLockStatusChangedListener mLockStatusChangedListener;
// Interface to communicate with owner activity
public interface OnLockStatusChangedListener
{
public void onLockStatusChanged(boolean isLocked);
}
// Reset the variables
public LockscreenUtils() {
reset();
}
// Display overlay dialog with a view to prevent home button click
public void lock(Activity activity) {
if (mOverlayDialog == null) {
mOverlayDialog = new OverlayDialog(activity);
mOverlayDialog.show();
mLockStatusChangedListener = (OnLockStatusChangedListener) activity;
}
}
// Reset variables
public void reset() {
if (mOverlayDialog != null) {
mOverlayDialog.dismiss();
mOverlayDialog = null;
}
}
// Unlock the home button and give callback to unlock the screen
public void unlock() {
if (mOverlayDialog != null) {
mOverlayDialog.dismiss();
mOverlayDialog = null;
if(mLockStatusChangedListener!=null)
{
mLockStatusChangedListener.onLockStatusChanged(false);
}
}
}
// Create overlay dialog for lockedscreen to disable hardware buttons
private static class OverlayDialog extends AlertDialog {
public OverlayDialog(Activity activity) {
super(activity, R.style.OverlayDialog);
WindowManager.LayoutParams params = getWindow().getAttributes();
params.type = LayoutParams.TYPE_SYSTEM_ERROR;
params.dimAmount = 0.0F;
params.width = 0;
params.height = 0;
params.gravity = Gravity.BOTTOM;
getWindow().setAttributes(params);
getWindow().setFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED | LayoutParams.FLAG_NOT_TOUCH_MODAL,
0xffffff);
setOwnerActivity(activity);
setCancelable(false);
}
// consume touch events
public final boolean dispatchTouchEvent(MotionEvent motionevent) {
return true;
}
}
}
================================================
FILE: README.md
================================================
LockScreenApp
=============
Features:
- Lockscreen over the screen
- Hardware home button disabled
- On-going notification to prevent app being killed by OS
It provides lockscreen in API 8 or above.
Initial

Locked

Unlocked

gitextract_y21tkzuy/ ├── LockScreenApp/ │ ├── .classpath │ ├── .project │ ├── .settings/ │ │ └── org.eclipse.jdt.core.prefs │ ├── AndroidManifest.xml │ ├── libs/ │ │ └── android-support-v4.jar │ ├── proguard.cfg │ ├── project.properties │ ├── res/ │ │ ├── color/ │ │ │ └── selector_txt_btn_unlock.xml │ │ ├── drawable/ │ │ │ └── selector_bg_btn_unlock.xml │ │ ├── layout/ │ │ │ └── activity_lockscreen.xml │ │ ├── values/ │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ ├── strings.xml │ │ │ └── style.xml │ │ └── values-w820dp/ │ │ └── dimens.xml │ └── src/ │ └── com/ │ └── mehuljoisar/ │ └── lockscreen/ │ ├── LockScreenActivity.java │ └── utils/ │ ├── LockscreenIntentReceiver.java │ ├── LockscreenService.java │ └── LockscreenUtils.java └── README.md
SYMBOL INDEX (35 symbols across 4 files)
FILE: LockScreenApp/src/com/mehuljoisar/lockscreen/LockScreenActivity.java
class LockScreenActivity (line 19) | public class LockScreenActivity extends Activity implements
method onAttachedToWindow (line 29) | @Override
method onCreate (line 43) | @Override
method init (line 80) | private void init() {
class StateListener (line 94) | private class StateListener extends PhoneStateListener {
method onCallStateChanged (line 95) | @Override
method onBackPressed (line 112) | @Override
method onKeyDown (line 118) | @Override
method dispatchKeyEvent (line 137) | public boolean dispatchKeyEvent(KeyEvent event) {
method lockHomeButton (line 151) | public void lockHomeButton() {
method unlockHomeButton (line 156) | public void unlockHomeButton() {
method onLockStatusChanged (line 161) | @Override
method onStop (line 168) | @Override
method disableKeyguard (line 174) | @SuppressWarnings("deprecation")
method enableKeyguard (line 181) | @SuppressWarnings("deprecation")
method unlockDevice (line 189) | private void unlockDevice()
FILE: LockScreenApp/src/com/mehuljoisar/lockscreen/utils/LockscreenIntentReceiver.java
class LockscreenIntentReceiver (line 9) | public class LockscreenIntentReceiver extends BroadcastReceiver {
method onReceive (line 12) | @Override
method start_lockscreen (line 24) | private void start_lockscreen(Context context) {
FILE: LockScreenApp/src/com/mehuljoisar/lockscreen/utils/LockscreenService.java
class LockscreenService (line 15) | public class LockscreenService extends Service {
method onBind (line 19) | @Override
method onCreate (line 24) | @Override
method onStartCommand (line 30) | @Override
method startForeground (line 41) | private void startForeground() {
method onDestroy (line 54) | @Override
FILE: LockScreenApp/src/com/mehuljoisar/lockscreen/utils/LockscreenUtils.java
class LockscreenUtils (line 15) | public class LockscreenUtils {
type OnLockStatusChangedListener (line 22) | public interface OnLockStatusChangedListener
method onLockStatusChanged (line 24) | public void onLockStatusChanged(boolean isLocked);
method LockscreenUtils (line 28) | public LockscreenUtils() {
method lock (line 33) | public void lock(Activity activity) {
method reset (line 42) | public void reset() {
method unlock (line 50) | public void unlock() {
class OverlayDialog (line 62) | private static class OverlayDialog extends AlertDialog {
method OverlayDialog (line 64) | public OverlayDialog(Activity activity) {
method dispatchTouchEvent (line 80) | public final boolean dispatchTouchEvent(MotionEvent motionevent) {
Condensed preview — 20 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (22K chars).
[
{
"path": "LockScreenApp/.classpath",
"chars": 475,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<classpath>\r\n\t<classpathentry kind=\"con\" path=\"com.android.ide.eclipse.adt.ANDRO"
},
{
"path": "LockScreenApp/.project",
"chars": 849,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<projectDescription>\r\n\t<name>LockScreenApp</name>\r\n\t<comment></comment>\r\n\t<proje"
},
{
"path": "LockScreenApp/.settings/org.eclipse.jdt.core.prefs",
"chars": 598,
"preview": "eclipse.preferences.version=1\r\norg.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled\r\norg.eclipse.jdt.core.com"
},
{
"path": "LockScreenApp/AndroidManifest.xml",
"chars": 1733,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\r\n packag"
},
{
"path": "LockScreenApp/proguard.cfg",
"chars": 1248,
"preview": "-optimizationpasses 5\n-dontusemixedcaseclassnames\n-dontskipnonpubliclibraryclasses\n-dontpreverify\n-verbose\n-optimization"
},
{
"path": "LockScreenApp/project.properties",
"chars": 377,
"preview": "# This file is automatically generated by Android Tools.\n# Do not modify this file -- YOUR CHANGES WILL BE ERASED!\n#\n# T"
},
{
"path": "LockScreenApp/res/color/selector_txt_btn_unlock.xml",
"chars": 239,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\r\n\r\n <it"
},
{
"path": "LockScreenApp/res/drawable/selector_bg_btn_unlock.xml",
"chars": 245,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\r\n\r\n <it"
},
{
"path": "LockScreenApp/res/layout/activity_lockscreen.xml",
"chars": 1320,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\r\n "
},
{
"path": "LockScreenApp/res/values/colors.xml",
"chars": 197,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<resources>\r\n\r\n <color name=\"yellow\">#F5DC49</color>\r\n <color name=\"black\""
},
{
"path": "LockScreenApp/res/values/dimens.xml",
"chars": 220,
"preview": "<resources>\r\n\r\n <!-- Default screen margins, per the Android Design guidelines. -->\r\n <dimen name=\"activity_horizo"
},
{
"path": "LockScreenApp/res/values/strings.xml",
"chars": 256,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<resources>\r\n\r\n <string name=\"app_name\">LockScreenApp</string>\r\n\r\n <string"
},
{
"path": "LockScreenApp/res/values/style.xml",
"chars": 532,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<resources>\r\n\r\n <style name=\"OverlayDialog\" parent=\"@android:style/Theme.Dial"
},
{
"path": "LockScreenApp/res/values-w820dp/dimens.xml",
"chars": 381,
"preview": "<resources>\r\n\r\n <!--\r\n Example customization of dimensions originally defined in res/values/dimens.xml\n "
},
{
"path": "LockScreenApp/src/com/mehuljoisar/lockscreen/LockScreenActivity.java",
"chars": 4939,
"preview": "package com.mehuljoisar.lockscreen;\n\nimport android.app.Activity;\nimport android.app.KeyguardManager;\nimport android.con"
},
{
"path": "LockScreenApp/src/com/mehuljoisar/lockscreen/utils/LockscreenIntentReceiver.java",
"chars": 864,
"preview": "package com.mehuljoisar.lockscreen.utils;\r\n\r\nimport android.content.BroadcastReceiver;\r\nimport android.content.Context;\r"
},
{
"path": "LockScreenApp/src/com/mehuljoisar/lockscreen/utils/LockscreenService.java",
"chars": 1659,
"preview": "package com.mehuljoisar.lockscreen.utils;\r\n\r\nimport android.app.Notification;\r\nimport android.app.Service;\r\nimport andro"
},
{
"path": "LockScreenApp/src/com/mehuljoisar/lockscreen/utils/LockscreenUtils.java",
"chars": 2353,
"preview": "package com.mehuljoisar.lockscreen.utils;\r\n\r\nimport android.app.Activity;\r\nimport android.app.AlertDialog;\r\nimport andro"
},
{
"path": "README.md",
"chars": 466,
"preview": "LockScreenApp\n=============\n\n\nFeatures:\n- Lockscreen over the screen\n- Hardware home button disabled\n- On-going notifica"
}
]
// ... and 1 more files (download for full content)
About this extraction
This page contains the full source code of the Joisar/LockScreenApp GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 20 files (18.5 KB), approximately 5.2k tokens, and a symbol index with 35 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.