makaleler / Python Programlama / Android Ekran Kilidi Uygulaması

Android Ekran Kilidi Uygulaması

27.07.2015 14:39:03

Android Ekran Kilidi LOCK SCREEN Uygulaması

LockScreenActivity.java
package com.pythontr.ekrankiliti;


import com.pythontr.ekrankiliti.LockService;

import android.app.Activity;
import android.app.KeyguardManager;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.view.ViewGroup.MarginLayoutParams;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.RelativeLayout.LayoutParams;
// import android.widget.Toast;

public class LockScreenActivity extends Activity {
	KeyguardManager km;
	KeyguardManager.KeyguardLock kl;
	boolean inDragMode;
	int selectedImageViewX;
	int selectedImageViewY;
	int windowwidth;
	int windowheight;
	ImageView lock,phone,home;
	//int phone_x,phone_y;
	MarginLayoutParams marginParams2;
	int home_x,home_y;
	int[] droidpos;
	private LayoutParams layoutParams;
	
    @Override
    public void onWindowFocusChanged(boolean hasFocus) {  
    	
    	home =(ImageView)findViewById(R.id.home);
    	lock =(ImageView)findViewById(R.id.droid);

    	if(getIntent()!=null&&getIntent().hasExtra("kill")&&getIntent().getExtras().getInt("kill")==1){
    		// Toast.makeText(this, "" + "kill activityy", Toast.LENGTH_SHORT).show();
    		finish();
    	}   	
    	
    	try {
    		startService(new Intent(this,LockService.class));
    		StateListener phoneStateListener = new StateListener();
    		TelephonyManager telephonyManager =(TelephonyManager)getSystemService(TELEPHONY_SERVICE);
    		telephonyManager.listen(phoneStateListener,PhoneStateListener.LISTEN_CALL_STATE);
 		  
    		windowwidth=getWindowManager().getDefaultDisplay().getWidth();
    		// System.out.println("windowwidth"+windowwidth);
    		windowheight=getWindowManager().getDefaultDisplay().getHeight();
    		// System.out.println("windowheight"+windowheight);
 		  
 		   
    		MarginLayoutParams marginParams1 = new MarginLayoutParams(home.getLayoutParams()); 			
    		marginParams1.setMargins((windowwidth/24)*10,(windowheight/10)*8,0,0);
    		LinearLayout.LayoutParams layout = new LinearLayout.LayoutParams(marginParams1);

    		home.setLayoutParams(layout); 

    		marginParams2 = new MarginLayoutParams(lock.getLayoutParams());

    		marginParams2.setMargins((windowwidth/24)*10 + (home.getWidth() / 2) - (lock.getWidth()/2), (windowheight/10)*8 + 6, 0, 0);
    		RelativeLayout.LayoutParams layoutdroid = new RelativeLayout.LayoutParams(marginParams2);

    		// Toast.makeText(getApplicationContext(), "Deneme", Toast.LENGTH_SHORT).show();
 		   
    		lock.setLayoutParams(layoutdroid);

    		lock.setOnTouchListener(new View.OnTouchListener() { 			  
    			@Override
    			public boolean onTouch(View v, MotionEvent event) {
    				layoutParams = (LayoutParams) v.getLayoutParams();
    				switch(event.getAction())
    				{	
    					case MotionEvent.ACTION_DOWN:
    						int[] hompos=new int[2];
 	    					// int[] phonepos=new int[2];
 				   			droidpos=new int[2];
 				   			//phone.getLocationOnScreen(phonepos);
 				   			home.getLocationOnScreen(hompos);
 				   			home_x=hompos[0]; 				   			
 				   			home_y=hompos[1];
 				   			//  phone_x=phonepos[0];
 				   			// phone_y=phonepos[1];
 				   			break;

 	    				case MotionEvent.ACTION_MOVE:

 				   			int x_cord = (int)event.getRawX();
 				   			int y_cord = (int)event.getRawY();

 				   			if(x_cord>windowwidth-(windowwidth/24)){x_cord=windowwidth-(windowwidth/24)*2;}
 				   			if(y_cord>windowheight-(windowheight/32)){y_cord=windowheight-(windowheight/32)*2;}

 				   			layoutParams.leftMargin = x_cord ;
 				   			layoutParams.topMargin = y_cord;

 				   			lock.getLocationOnScreen(droidpos);
 				   			v.setLayoutParams(layoutParams);

 				   			if(x_cord<home_x - 100)
 				   			{
 				   				v.setVisibility(View.GONE);
 				   				finish();
 				   				Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("/"));
 				   				startActivity(intent);
 				   			}
 				   			else if(x_cord>home_x + 100)
 				   			{
 				   				// v.setVisibility(View.GONE);
 				   				finish();
 	 				   		}
 				   			break;
 	    				case MotionEvent.ACTION_UP:
 				   			int x_cord1 = (int)event.getRawX();
 				   			// int y_cord2 = (int)event.getRawY();
 				   			if(x_cord1<home_x - 100)
 				   			{
 				   				//v.setVisibility(View.GONE);
 				   				//Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("[url]http://www.google.com/[/url]"));
 				   				//startActivity(intent);
 				   				//finish();
 				   			}
 				   			else 
 				   			{
 				   				layoutParams.leftMargin = (windowwidth/24)*10 + (home.getWidth() / 2) - (lock.getWidth()/2);
 				   				// layoutParams.topMargin = (windowheight/32)*8;
 				   				layoutParams.topMargin = (windowheight/10)*8 + 6;
 				   				v.setLayoutParams(layoutParams);
 				   			}
 				   			break;
 	    			}
 	    			return true;
 	    		}
 	    	}); 
	 		   
 	   }catch (Exception e) {
 		   // TODO: handle exception
 	   }

    }
	
	@Override
	public void onAttachedToWindow() {
		this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG|WindowManager.LayoutParams.FLAG_FULLSCREEN);
		super.onAttachedToWindow();
	}
	
	public void onCreate(Bundle savedInstanceState) {
    	super.onCreate(savedInstanceState);    	
    	getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON|WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED|WindowManager.LayoutParams.FLAG_FULLSCREEN);
    	setContentView(R.layout.lock_screen);
 	}
    
    class StateListener extends PhoneStateListener{
        @Override
        public void onCallStateChanged(int state, String incomingNumber) {

            super.onCallStateChanged(state, incomingNumber);
            switch(state){
                case TelephonyManager.CALL_STATE_RINGING:
                    break;
                case TelephonyManager.CALL_STATE_OFFHOOK:
                    System.out.println("call Activity off hook");
                	finish();
                    break;
                case TelephonyManager.CALL_STATE_IDLE:
                    break;
            }
        }
    };
    
    public void onSlideTouch( View view, MotionEvent event )
    {
    	 switch(event.getAction())
         {
         case MotionEvent.ACTION_DOWN:
        	 break;
         case MotionEvent.ACTION_MOVE:
        	 
             int x_cord = (int)event.getRawX();
             int y_cord = (int)event.getRawY();

             if(x_cord>windowwidth){x_cord=windowwidth;}
             if(y_cord>windowheight){y_cord=windowheight;}

             layoutParams.leftMargin = x_cord -25;
             layoutParams.topMargin = y_cord - 75;

             view.setLayoutParams(layoutParams);
             
             break;
         default:
             break;
         }

    }

    @Override
    public void onBackPressed() {
        // Don't allow back to dismiss.
        return;
    }

    //only used in lockdown mode
    /*
    @Override
    protected void onPause() {
    	// System.exit(0);
        super.onPause();

        // Don't hang around.
       // finish();
    }
	*/
    
    // @Override
    protected void onStop() {
    	super.onStart();
    	// super.onStop();

        // Don't hang around.
       // finish();
    }
    

    @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)) {
    	    //this is where I can do my stuff
    		// Toast.makeText(this, "Denem", Toast.LENGTH_LONG).show();
    		Log.e("test1", "Tıklandı ama açılmadı");
    	    return true; //because I handled the event
    	}
    	if((keyCode == KeyEvent.KEYCODE_HOME)){
    		// Toast.makeText(this, "Denem1", Toast.LENGTH_LONG).show();
    		Log.e("HomeButonu", "Tıklandı ama açılmadı");
    		return true;
    	}
    	return false;

    }
    

    @Override
    public boolean dispatchKeyEvent(KeyEvent event) {
    	if (event.getKeyCode() == KeyEvent.KEYCODE_POWER ||(event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_DOWN)||(event.getKeyCode() == KeyEvent.KEYCODE_POWER)) {
    	    //Intent i = new Intent(this, NewActivity.class);
    	    //startActivity(i);
    		// Toast.makeText(this, "Denem2", Toast.LENGTH_LONG).show();
    		Log.e("test1", "Tıklandı ama açılmadı");
    	    return false;
    	}
    	 if((event.getKeyCode() == KeyEvent.KEYCODE_HOME)){
    		 // Toast.makeText(this, "Denem3", Toast.LENGTH_LONG).show(); 
    		 Log.e("HomeButonu", "Tıklandı ama açılmadı");
           // System.out.println("alokkkkkkkkkkkkkkkkk");
      	   return true;
         }
    	 // return false;
    	 return super.dispatchKeyEvent(event);
    }
    
    @Override
    protected void onUserLeaveHint() {   	
        super.onUserLeaveHint();
        // Log.i("LOG", "onUserLeaveHint");
        //this.startActivity(this.getIntent());    	
          // startActivity(new Intent(Intent.ACTION_VIEW, LockScreenActivity.class));
        // System.exit(0);
        //startActivity(getIntent());
        //finish();
        // startActivity(getIntent());
       // Intent intent = new Intent(Intent.ACTION_VIEW,
       // 	    Uri.parse("/"));
       //  	startActivity(intent);
    }

    @Override
    protected void onResume() {
    	super.onResume();
    }
    
	/*public void unloack(){
          finish();
	}*/
    
    @Override
    public void onDestroy(){
    	// k1.reenableKeyguard();
    	super.onDestroy();
        
    }

}



LockService.java
package com.pythontr.ekrankiliti;

import receiver.lockScreenReeiver;
import android.app.KeyguardManager;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.IBinder;

public class LockService extends Service{
	 BroadcastReceiver mReceiver;
	// Intent myIntent;
	@Override
	public IBinder onBind(Intent intent) {
		// TODO Auto-generated method stub
		return null;
	}


@Override
public void onCreate() {
	KeyguardManager.KeyguardLock k1;

	 //getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON|WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);

	 KeyguardManager km =(KeyguardManager)getSystemService(KEYGUARD_SERVICE);
     k1= km.newKeyguardLock("IN");
     k1.disableKeyguard();




     /*try{
     StateListener phoneStateListener = new StateListener();
     TelephonyManager telephonyManager =(TelephonyManager)getSystemService(TELEPHONY_SERVICE);
     telephonyManager.listen(phoneStateListener,PhoneStateListener.LISTEN_CALL_STATE);
     }catch(Exception e){
    	 System.out.println(e);
     }*/

    /* myIntent = new Intent(MyService.this,LockScreenAppActivity.class);
     myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
     Bundle myKillerBundle = new Bundle();
     myKillerBundle.putInt("kill",1);
     myIntent.putExtras(myKillerBundle);*/

     IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
     filter.addAction(Intent.ACTION_SCREEN_OFF);

     mReceiver = new lockScreenReeiver();
     registerReceiver(mReceiver, filter);


    super.onCreate();


}
@Override
public void onStart(Intent intent, int startId) {
	// TODO Auto-generated method stub

	super.onStart(intent, startId);
}

/*class StateListener extends PhoneStateListener{
    @Override
    public void onCallStateChanged(int state, String incomingNumber) {

        super.onCallStateChanged(state, incomingNumber);
        switch(state){
            case TelephonyManager.CALL_STATE_RINGING:
                break;
            case TelephonyManager.CALL_STATE_OFFHOOK:
                System.out.println("call Activity off hook");
            	getApplication().startActivity(myIntent);



                break;
            case TelephonyManager.CALL_STATE_IDLE:
                break;
        }
    }
};*/


@Override
public void onDestroy() {
	unregisterReceiver(mReceiver);
	super.onDestroy();
}
}

StartLockScreen.java
package com.pythontr.ekrankiliti;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

public class StartLockScreen extends Activity {
/*	 KeyguardManager.KeyguardLock k1;

	 public void onAttachedToWindow() {
			// TODO Auto-generated method stub
			 this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
			super.onAttachedToWindow();
		}*/
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		startService(new Intent(this,LockService.class));
		finish();


		/*getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON|WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
	        KeyguardManager km =(KeyguardManager)getSystemService(KEYGUARD_SERVICE);
	        k1 = km.newKeyguardLock("IN");
	        k1.disableKeyguard();*/


	}

}


lockScreenReceiver.java
package receiver;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

import com.pythontr.ekrankiliti.LockScreenActivity;

public class lockScreenReceiver extends BroadcastReceiver  {
	 public static boolean wasScreenOn = true;

	@Override
	public void onReceive(Context context, Intent intent) {

		//Toast.makeText(context, "" + "enterrrrrr", Toast.LENGTH_SHORT).show();
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
        	//Toast.makeText(context, "" + "screeen off", Toast.LENGTH_SHORT).show();

        	wasScreenOn=false;
        	Intent intent11 = new Intent(context,LockScreenActivity.class);
        	intent11.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        	context.startActivity(intent11);

            // do whatever you need to do here
            //wasScreenOn = false;
        } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {

        	wasScreenOn=true;
        	Intent intent11 = new Intent(context,LockScreenActivity.class);
        	intent11.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        	//context.startActivity(intent11);
        	//Toast.makeText(context, "" + "start activity", Toast.LENGTH_SHORT).show();
            // and do whatever you need to do here
           // wasScreenOn = true;
        }
       else if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED))
        {
      /*  	KeyguardManager.KeyguardLock k1;
        	KeyguardManager km =(KeyguardManager)context.getSystemService(context.KEYGUARD_SERVICE);
            k1 = km.newKeyguardLock("IN");
            k1.disableKeyguard();
*/
        	Intent intent11 = new Intent(context, LockScreenActivity.class);

        	intent11.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
           context.startActivity(intent11);

        	//  Intent intent = new Intent(context, LockPage.class);
	        //  context.startActivity(intent);
	        //  Intent serviceLauncher = new Intent(context, UpdateService.class);
	        //  context.startService(serviceLauncher);
	        //  Log.v("TEST", "Service loaded at start");
       }

    }


}

lock_screen.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="[url]http://schemas.android.com/apk/res/android[/url]"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
	android:background="@color/mycolor1"
    android:orientation="vertical">


   <RelativeLayout
       android:layout_width="fill_parent"
        android:layout_height="fill_parent">
   	<ImageView
     	android:id="@+id/droid"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:src="@drawable/unlock" /> 
	</RelativeLayout>
    
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/homelinearlayout" >        
                   
        <ImageView
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@drawable/locknob"
            android:visibility="visible"
            android:scaleType="fitXY"
            android:id="@+id/home" />
    </LinearLayout>

</RelativeLayout>

AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="[url]http://schemas.android.com/apk/res/android[/url]"
    package="com.pythontr.ekrankiliti"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity android:label="@string/app_name"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
          	android:screenOrientation="portrait"
            android:name=".LockScreenActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
                     
            </intent-filter>
            
        </activity>
        <activity
            android:name=".StartLockScreen"
            android:launchMode="singleInstance"
            android:theme="@style/Theme.Transparent" >
           <!-- 
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
                <category android:name="android.intent.category.HOME" />
                <category android:name="android.intent.category.DEFAULT" />


            </intent-filter>
             -->
        </activity>

        <service android:name=".LockService" >
        </service>

        <receiver
            android:enabled="true"
            android:name="receiver.lockScreenReceiver" >
            <intent-filter >
                <action android:name="android.intent.action.BOOT_COMPLETED" />

            </intent-filter>
        </receiver>
        
    </application>

    <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"/>
    
</manifest>


Kaynak: http://playingwithandroid.blogspot.com.tr/2012/07/making-customize-lock-screen.html [playingwithandroid.blogspot.com.tr]
yazar husonet

Yorumlar

Bu içerik için sizde yorum yapabilirsiniz!
anasayfa | makaleler | haberler | dosyalar | linkler | hakkımızda